<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-TW">
    <title>Hackz</title>
    <subtitle>Let the hacking began.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://blog.2ac.io/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://blog.2ac.io"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-06-02T00:00:00+08:00</updated>
    <id>https://blog.2ac.io/atom.xml</id>
    <entry xml:lang="zh-TW">
        <title>用 MTools BLE 一鍵升級 GAT562 的 Meshtastic 韌體</title>
        <published>2026-06-02T00:00:00+08:00</published>
        <updated>2026-06-02T00:00:00+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/mtools-ble-gat562/"/>
        <id>https://blog.2ac.io/mtools-ble-gat562/</id>
        
        <summary type="html">&lt;p&gt;GAT562 是基於 nRF52 的 Meshtastic 節點，韌體升級走 Legacy DFU。傳統做法是去 Meshtastic 官網翻對應的 UF2 &#x2F; Zip，再開 nRF Connect 配對、進 DFU mode、推 package。每次升級重複一遍，挺煩。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;apps.apple.com&#x2F;jp&#x2F;app&#x2F;mtools-ble-rfid-reader&#x2F;id1531345398&quot;&gt;MTools BLE&lt;&#x2F;a&gt; 把整個流程壓成一鍵，從打開 App 到升完大概 3 分鐘。&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>用 Cloudflare Workers 自動簽到 PTT 並推送到 Telegram</title>
        <published>2026-05-06T00:00:00+08:00</published>
        <updated>2026-05-06T00:00:00+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/ptt-autosign-worker/"/>
        <id>https://blog.2ac.io/ptt-autosign-worker/</id>
        
        <summary type="html">&lt;p&gt;PTT 的鄉民大概都遇過：太久沒登入帳號就被砍。社群早期有 &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;tasi788&#x2F;PTTAutoSign&quot;&gt;PTTAutoSign&lt;&#x2F;a&gt; 這類工具，跑在 VPS 或 Raspberry Pi 上排程登入。可是為了一個每天只跑一次的小腳本去顧一台機器，實在不太划算。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;7a6163&#x2F;ptt-autosign-worker&quot;&gt;ptt-autosign-worker&lt;&#x2F;a&gt; 把這件事搬到 Cloudflare Workers 上：每天 02:30 UTC 由 Cron Trigger 觸發，自動登入 PTT、抓登入資訊、丟到 Telegram。不用 VPS，不用 Docker，crontab 也省了，Free plan 就跑得起來。&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>gem-audit — 用 Rust 打造的 Ruby 相依套件安全稽核工具</title>
        <published>2026-04-15T00:00:00+08:00</published>
        <updated>2026-04-15T00:00:00+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/gem-audit/"/>
        <id>https://blog.2ac.io/gem-audit/</id>
        
        <summary type="html">&lt;p&gt;Ruby 專案要做相依套件安全稽核，大多數人第一個想到的就是 &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rubysec&#x2F;bundler-audit&quot;&gt;bundler-audit&lt;&#x2F;a&gt;，1.27 億次下載算是 Ruby 生態系的標配。不過用久了會發現幾個痛點：要完整的 Ruby 執行環境、要系統 git、啟動慢，而且 exit code 只有兩種，沒辦法分「有漏洞」跟「指令掛了」。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;7a6163&#x2F;gem-audit&quot;&gt;gem-audit&lt;&#x2F;a&gt; 是 Rust 重寫的版本，編譯成單一 binary，Ruby、Bundler、git 都不用，掃描速度快了 &lt;strong&gt;15 到 41 倍&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>rubyfast — 用 Rust 重寫的 Ruby 效能 Linter，比原版快 162 倍</title>
        <published>2026-04-14T00:00:00+08:00</published>
        <updated>2026-04-14T00:00:00+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/rubyfast/"/>
        <id>https://blog.2ac.io/rubyfast/</id>
        
        <summary type="html">&lt;p&gt;寫 Ruby 的人大概都認識 &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;DamirSvrtan&#x2F;fasterer&quot;&gt;fasterer&lt;&#x2F;a&gt; 這個 gem，會幫你找出常見的效能反模式。但專案越長越大之後，fasterer 自己的執行速度反而變成痛點。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;7a6163&#x2F;rubyfast&quot;&gt;rubyfast&lt;&#x2F;a&gt; 是用 Rust 把 fasterer 重寫了一次，19 條偵測規則照搬，但速度差異很有感：2,235 個 Ruby 檔案，原本 34.1 秒，現在 0.21 秒，&lt;strong&gt;快了 162 倍&lt;&#x2F;strong&gt;。&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>用 Cloudflare Workers 打造 1min.ai API Relay</title>
        <published>2026-04-12T00:00:00+08:00</published>
        <updated>2026-04-12T00:00:00+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/1min-relay-worker/"/>
        <id>https://blog.2ac.io/1min-relay-worker/</id>
        
        <summary type="html">&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;1min.ai&#x2F;&quot;&gt;1min.ai&lt;&#x2F;a&gt; 是一個 AI 聚合平台，一個訂閱就能用 GPT、Claude、Mistral 等多家模型。可惜它的 API 格式跟 OpenAI 不完全相容，所以現成的工具和 SDK 多半沒辦法直接串。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;7a6163&#x2F;1min-relay-worker&quot;&gt;1min-relay-worker&lt;&#x2F;a&gt; 就是針對這件事的 workaround：跑在 Cloudflare Workers 上的中繼服務，把 1min.ai 的 API 包成 OpenAI API 格式。&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>Reset navicat trial</title>
        <published>2024-05-16T03:11:27+08:00</published>
        <updated>2024-05-16T03:11:27+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/reset-navicat-trial/"/>
        <id>https://blog.2ac.io/reset-navicat-trial/</id>
        
        <content type="html" xml:base="https://blog.2ac.io/reset-navicat-trial/">&lt;p&gt;Reset the Navicat trial time on Mac.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;#!&#x2F;bin&#x2F;bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -uo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; pipefail&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# ==========================================&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# 變數定義 &#x2F; Variables Definition&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# ==========================================&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;readonly&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; APP_NAME&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;Navicat Premium&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;readonly&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; APP_SUPPORT_DIR&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&#x2F;Library&#x2F;Application Support&#x2F;PremiumSoft CyberTech&#x2F;Navicat CC&#x2F;Navicat Premium&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;readonly&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; PLIST_FILE&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&#x2F;Library&#x2F;Preferences&#x2F;com.navicat.NavicatPremium.plist&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;readonly&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; KEYCHAIN_SERVICE&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;com.navicat.NavicatPremium&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;readonly&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; HASH_REGEX&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;^[0-9A-F]{32}$&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# ==========================================&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# 日誌函數 &#x2F; Logging Functions&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# ==========================================&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;log_info&lt;&#x2F;span&gt;&lt;span&gt;()    {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;[\033[34mINFO\033[0m] &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;; }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;log_success&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;[\033[32mSUCCESS\033[0m] &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;; }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;log_warn&lt;&#x2F;span&gt;&lt;span&gt;()    {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;[\033[33mWARN\033[0m] &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;; }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# ==========================================&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# 功能函數 &#x2F; Functional Modules&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# ==========================================&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# 1. 終止應用程式 &#x2F; Terminate Application&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;terminate_app&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    log_info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;正在檢查並終止 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$APP_NAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; 程序... &#x2F; Checking and terminating &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$APP_NAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; process...&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; pkill&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$APP_NAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; 2&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&#x2F;dev&#x2F;null&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;        log_success&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;已成功終止正在執行的 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$APP_NAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; 程序。&#x2F; Successfully terminated running process.&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    else&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;        log_info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$APP_NAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; 程序未在執行。&#x2F; Process is not running.&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# 2. 清理應用程式支援目錄的雜湊檔案 &#x2F; Clean hash files in App Support&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;clean_support_files&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    log_info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;清理應用程式支援目錄的雜湊檔案... &#x2F; Cleaning hash files in app support directory...&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span&gt; [[ ! -d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$APP_SUPPORT_DIR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;        log_warn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;目錄不存在，跳過: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$APP_SUPPORT_DIR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &#x2F; Directory not found, skipping.&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; deleted_count&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5CEA8;&quot;&gt;0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    while&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; IFS&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; read&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; file&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;        local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; filename&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;        filename&lt;&#x2F;span&gt;&lt;span&gt;=$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;basename&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;        # 匹配以 . 開頭且後面跟著 32 位大寫十六進位字元的檔案&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;filename&lt;&#x2F;span&gt;&lt;span&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;.}&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; grep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -Eq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$HASH_REGEX&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;            rm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;            log_info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;已刪除雜湊檔案: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$filename&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &#x2F; Deleted hash file: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$filename&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            ((&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;deleted_count&lt;&#x2F;span&gt;&lt;span&gt;++))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;        fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    done&lt;&#x2F;span&gt;&lt;span&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;lt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;find&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$APP_SUPPORT_DIR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -maxdepth&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5CEA8;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;.[0-9A-F]*&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt; 2&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&#x2F;dev&#x2F;null)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    log_success&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;應用程式支援目錄清理完成，共刪除 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$deleted_count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; 個檔案。&#x2F; Cleaned &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$deleted_count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; files.&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# 3. 處理偏好設定檔案 &#x2F; Clean preferences plist file&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;clean_plist_keys&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    log_info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;處理偏好設定檔案... &#x2F; Processing preferences plist file...&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span&gt; [[ ! -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$PLIST_FILE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;        log_warn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;偏好設定檔案不存在: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$PLIST_FILE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &#x2F; Plist file not found.&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;    # 獲取所有符合 32 位元雜湊格式的頂層鍵值&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; keys_to_delete&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;    keys_to_delete&lt;&#x2F;span&gt;&lt;span&gt;=$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;&#x2F;usr&#x2F;libexec&#x2F;PlistBuddy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;Print&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$PLIST_FILE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; 2&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&#x2F;dev&#x2F;null&lt;&#x2F;span&gt;&lt;span&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; grep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -Eoa&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;^\s{4}[0-9A-F]{32}&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; tr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt; ||&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span&gt; [[ -z&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$keys_to_delete&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;        log_info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;未找到需要刪除的 32 位元雜湊鍵值。&#x2F; No 32-character hash keys found.&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; deleted_count&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5CEA8;&quot;&gt;0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    while&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; IFS&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; read&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; key&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; &#x2F;usr&#x2F;libexec&#x2F;PlistBuddy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;Delete :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$PLIST_FILE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; 2&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&#x2F;dev&#x2F;null&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;            log_info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;已刪除 Plist 鍵值: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &#x2F; Deleted Plist key: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            ((&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;deleted_count&lt;&#x2F;span&gt;&lt;span&gt;++))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;        fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    done&lt;&#x2F;span&gt;&lt;span&gt; &amp;lt;&amp;lt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$keys_to_delete&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    log_success&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;偏好設定清理完成，共刪除 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$deleted_count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; 個鍵值。&#x2F; Cleaned &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$deleted_count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; keys.&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# 4. 清理鑰匙圈中的試用期追蹤項目 &#x2F; Clean Keychain entries&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;clean_keychain&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    log_info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;清理鑰匙圈中的試用期追蹤項目... &#x2F; Cleaning trial tracking entries in Keychain...&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; keychain_accounts&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;    keychain_accounts&lt;&#x2F;span&gt;&lt;span&gt;=$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;security&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; dump-keychain ~&#x2F;Library&#x2F;Keychains&#x2F;login.keychain-db&lt;&#x2F;span&gt;&lt;span&gt; 2&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&#x2F;dev&#x2F;null&lt;&#x2F;span&gt;&lt;span&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D7BA7D;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;        awk&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;&#x2F;0x00000007.*&amp;#39;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$KEYCHAIN_SERVICE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&amp;#39;&#x2F;{found=1} found &amp;amp;&amp;amp; &#x2F;&amp;quot;acct&amp;quot;&#x2F;{print; found=0}&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D7BA7D;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;        sed&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;s&#x2F;.*&amp;lt;blob&amp;gt;=&amp;quot;\([^&amp;quot;]*\)&amp;quot;.*&#x2F;\1&#x2F;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span&gt; [[ -z&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$keychain_accounts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;        log_info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;未找到需要刪除的鑰匙圈項目。&#x2F; No keychain entries found.&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; deleted_count&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5CEA8;&quot;&gt;0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    while&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; IFS&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; read&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; account&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$account&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; grep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -Eq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$HASH_REGEX&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;            if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; security&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; delete-generic-password&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$KEYCHAIN_SERVICE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$account&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&#x2F;dev&#x2F;null&lt;&#x2F;span&gt;&lt;span&gt; 2&amp;gt;&amp;amp;1;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;                log_info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;已刪除鑰匙圈項目: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$account&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &#x2F; Deleted keychain entry: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$account&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                ((&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;deleted_count&lt;&#x2F;span&gt;&lt;span&gt;++))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;            fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;        fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;    done&lt;&#x2F;span&gt;&lt;span&gt; &amp;lt;&amp;lt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$keychain_accounts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    log_success&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;鑰匙圈清理完成，共刪除 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$deleted_count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; 個項目。&#x2F; Deleted &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$deleted_count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; keychain entries.&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# ==========================================&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# 主程式執行 &#x2F; Main Execution&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# ==========================================&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;main&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;==================================================&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;  Navicat Premium 重設腳本 &#x2F; Reset Script&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;==================================================&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    terminate_app&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    clean_support_files&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    clean_plist_keys&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    clean_keychain&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;==================================================&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;    log_success&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;所有清理任務已完成！&#x2F; All cleaning tasks completed!&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;# 執行主程式&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;main&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>picoCTF - Super Serial</title>
        <published>2022-01-18T03:11:27+08:00</published>
        <updated>2022-01-18T03:11:27+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/picoctf-super-serial/"/>
        <id>https://blog.2ac.io/picoctf-super-serial/</id>
        
        <content type="html" xml:base="https://blog.2ac.io/picoctf-super-serial/">&lt;p&gt;先檢查 robots.txt 發現有 &lt;code&gt;Disallow: &#x2F;admin.phps&lt;&#x2F;code&gt;
接下來就檢查 &lt;code&gt;&#x2F;index.phps&lt;&#x2F;code&gt; ，可以看到 Source Code，接下檢查發現他引用了兩隻 php
&lt;code&gt;authentication.php&lt;&#x2F;code&gt; &lt;code&gt;cookie.php&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;一樣先檢查他們的 Source code，會發現有一隻從 Cookie 可以反序列化的函式&lt;&#x2F;p&gt;
&lt;p&gt;以下是 payload，將得到的 Token 塞進 Cookie 就拿到 Flag。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;php&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;?php&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #4EC9B0;&quot;&gt; access_log&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;	public&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; $log_file&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;	function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; __construct&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$lf&lt;&#x2F;span&gt;&lt;span&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;		$this&lt;&#x2F;span&gt;&lt;span&gt;-&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;log_file&lt;&#x2F;span&gt;&lt;span&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; $lf&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;	function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; __toString&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;		return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; $this&lt;&#x2F;span&gt;&lt;span&gt;-&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;read_log&lt;&#x2F;span&gt;&lt;span&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;	function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; read_log&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;		return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; file_get_contents&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;$this&lt;&#x2F;span&gt;&lt;span&gt;-&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;log_file&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$perm&lt;&#x2F;span&gt;&lt;span&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #4EC9B0;&quot;&gt; access_log&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;..&#x2F;flag&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;echo base64_encode&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;serialize&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$perm&lt;&#x2F;span&gt;&lt;span&gt;));&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;?&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>picoCTF - caas</title>
        <published>2021-07-03T23:11:27+08:00</published>
        <updated>2021-07-03T23:11:27+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/picoctf-caas/"/>
        <id>https://blog.2ac.io/picoctf-caas/</id>
        
        <summary type="html">&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;7a6163.github.io&#x2F;assets&#x2F;images&#x2F;20210703230955.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;https:&#x2F;&#x2F;picoctf&#x2F;cowsay&#x2F;{message}&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;蠻簡單的一題，一隻牛會說出您輸入的訊息。這題有提供 index.js，不過我沒注意到就直接解了。&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>picoCTF - More Cookies 150 points</title>
        <published>2021-07-03T03:11:27+08:00</published>
        <updated>2021-07-03T03:11:27+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/picoctf-more-cookies/"/>
        <id>https://blog.2ac.io/picoctf-more-cookies/</id>
        
        <content type="html" xml:base="https://blog.2ac.io/picoctf-more-cookies/">&lt;p&gt;Cookies 的進階題，還有一個同名版本是 2021 年的 More Cookies 90 points 但那題感覺難上很多。&lt;&#x2F;p&gt;
&lt;p&gt;這次作者有提供 server 的 source code ，簡單來說就是直接 Open Book，他使用了一套叫做 Flask 的 Web framework。&lt;&#x2F;p&gt;
&lt;p&gt;服務啟動會隨機挑選餅乾名當作 Secret key，當使用 Session 時，去產生出加密後的 Cookies。&lt;&#x2F;p&gt;
&lt;p&gt;所以我們先照慣例，直接搜尋 snickerdoodle，從開發者模式取得 Cookie，原本想自己照他的模式，寫類似的 python 來跑，不過從 Google 發現這個有人已經寫出加解密套件。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;noraj&#x2F;flask-session-cookie-manager&quot;&gt;GitHub - noraj&#x2F;flask-session-cookie-manager: Flask Session Cookie Decoder&#x2F;Encoder&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;cookies&lt;&#x2F;span&gt;&lt;span&gt;=(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;a b c&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;cookies&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;]}&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; do&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; python&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; .&#x2F;flask_session_cookie_manager3.py decode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -c&lt;&#x2F;span&gt;&lt;span&gt; [cookies];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; done&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;順利的話會找到對應的 Secret key，也可以稍微看一下解密出來的明文的樣子，再把內文改成 admin，再用 Key 拿去加密，組成 Cookies 回寫瀏覽器就解了。&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>picoCTF - Cookies</title>
        <published>2021-07-01T20:09:27+08:00</published>
        <updated>2021-07-01T20:09:27+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/picoctf-cookies/"/>
        <id>https://blog.2ac.io/picoctf-cookies/</id>
        
        <content type="html" xml:base="https://blog.2ac.io/picoctf-cookies/">&lt;p&gt;這一題標題就非常明示的，這是跟 Cookies 有關係。
打開網址首先會看到一個輸入框跟搜尋按鈕，輸入框裡還有 placeholder 寫著 snickerdoodle。直接輸入 snickerdoodle&lt;&#x2F;p&gt;
&lt;p&gt;會出現 I love snickerdoodle cookies!&lt;&#x2F;p&gt;
&lt;p&gt;打開瀏覽器開發工具，找出 Cookies 會發現寫了一筆 &lt;code&gt;name = 0&lt;&#x2F;code&gt; 的 Cookie ，以此類推，可能會有 1, 2, 3... 的 cookies。&lt;&#x2F;p&gt;
&lt;p&gt;接下來 curl 是工程師的好朋友，寫一隻 Shell Script。因為 Flag 有某些特徵，所以我用 Grep 去過濾掉不要的資訊。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt;#!&#x2F;bin&#x2F;bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -B&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;0..28}&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;  curl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -v --silent&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;http:&#x2F;&#x2F;picoctf&#x2F;check&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;User-Agent: Mozilla&#x2F;5.0 (Windows NT 10.0; rv:78.0) Gecko&#x2F;20100101 Firefox&#x2F;78.0&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;Accept: text&#x2F;html,application&#x2F;xhtml+xml,application&#x2F;xml;q=0.9,image&#x2F;webp,*&#x2F;*;q=0.8&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;Accept-Language: en-US,en;q=0.5&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; --compressed -H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;DNT: 1&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;Connection: keep-alive&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;Referer: http:&#x2F;&#x2F;picoctf&#x2F;check&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;Cookie: name=&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;$i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;Upgrade-Insecure-Requests: 1&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;Pragma: no-cache&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; -H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;#39;Cache-Control: no-cache&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt; 2&amp;gt;&amp;amp;1 |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; grep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; pico&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt;done&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;這題分數雖然不高，其實也真的不難，但寫 Shell Script 蠻有趣的。&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>自行升級 Docker</title>
        <published>2021-06-27T20:09:27+08:00</published>
        <updated>2021-06-27T20:09:27+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/docker-force-upgrade/"/>
        <id>https://blog.2ac.io/docker-force-upgrade/</id>
        
        <content type="html" xml:base="https://blog.2ac.io/docker-force-upgrade/">&lt;p&gt;最近遇到一個 Bug，實際追下去後才發現是 AWS 提供的 Docker 版本不是最新的。Docker 網站有提供編譯好的執行檔，可以直接下載覆蓋原有執行檔，之後套件更新也會一併升上去。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; wget https:&#x2F;&#x2F;download.docker.com&#x2F;linux&#x2F;static&#x2F;stable&#x2F;x86_64&#x2F;docker-20.10.7.tgz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; tar zxvf docker-20.10.7.tgz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; sudo cp docker-20.10.7&#x2F;docker &#x2F;usr&#x2F;bin&#x2F;docker&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>暴力破解加密的 dmg</title>
        <published>2021-06-19T20:09:27+08:00</published>
        <updated>2021-06-19T20:09:27+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/brute-force-to-crack-dmg/"/>
        <id>https://blog.2ac.io/brute-force-to-crack-dmg/</id>
        
        <content type="html" xml:base="https://blog.2ac.io/brute-force-to-crack-dmg/">&lt;p&gt;首先先安裝 john-jumbo&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; brew install john-jumbo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;先產生 hashes，注意程式版本是否不同&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &#x2F;usr&#x2F;local&#x2F;Cellar&#x2F;john-jumbo&#x2F;1.9.0&#x2F;share&#x2F;john&#x2F;dmg2john target.dmg&lt;&#x2F;span&gt;&lt;span&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; target.dmg.hash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;開始暴力破解&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; john target.dmg.hash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;如果明確知道密碼組成，可以使用 &lt;code&gt;--mask&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; john&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; --mask=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;&amp;quot;[0-9a-z][0-9a-z][0-9a-z]&amp;quot; target.dmg.hash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;如果要多開 processes，可以使用 &lt;code&gt;--fork&lt;&#x2F;code&gt;，最高不要超過 CPU Core 數&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; john&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; --fork=8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; target.dmg.hash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>DNS Override in DHCP Mode</title>
        <published>2018-11-06T00:37:27+08:00</published>
        <updated>2018-11-06T00:37:27+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/dns-override-in-dhcp-mode/"/>
        <id>https://blog.2ac.io/dns-override-in-dhcp-mode/</id>
        
        <content type="html" xml:base="https://blog.2ac.io/dns-override-in-dhcp-mode/">&lt;p&gt;原因是 Vultr DNS 會不定期爛掉，一個新的 instance 預設是 DHCP。發 Ticket 去問客服，他會教你如何採用固定 IP 配置。
不過如果不想跟客服周旋，可以自己 Override DNS 設定。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; cat &#x2F;etc&#x2F;network&#x2F;interfaces&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt; # 確認 interface&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# This file describes the network interfaces available on your system&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# and how to activate them. For more information, see interfaces(5).&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;#source &#x2F;etc&#x2F;network&#x2F;interfaces.d&#x2F;*&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;auto lo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;iface lo inet loopback&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;allow-hotplug ens3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;iface ens3 inet dhcp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;iface ens3 inet6 auto&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; vi &#x2F;etc&#x2F;dhcp&#x2F;dhclient.conf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A9955;&quot;&gt; # 修改 DHCP 設定&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;interface &amp;quot;ens3&amp;quot; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    supersede domain-name-servers 1.1.1.1, 1.0.0.1;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; reboot&lt;&#x2F;span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt; cat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &#x2F;etc&#x2F;resolv.conf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;nameserver 2001:19f0:300:1704::6&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;nameserver 1.1.1.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;nameserver 1.0.0.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="zh-TW">
        <title>Miniflux 自建 RSS 閱讀器服務</title>
        <published>2018-11-04T13:52:07+08:00</published>
        <updated>2018-11-04T13:52:07+08:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.2ac.io/miniflux/"/>
        <id>https://blog.2ac.io/miniflux/</id>
        
        <summary type="html">&lt;p&gt;在 Google Reader 收攤後，我後來嘗試了不少的 RSS 閱讀器服務，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;feedly.com&#x2F;&quot;&gt;Feedly&lt;&#x2F;a&gt; 、&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;flipboard.com&#x2F;&quot;&gt;Flipboard&lt;&#x2F;a&gt; 和 &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.feedspot.com&#x2F;&quot;&gt;Feedspot&lt;&#x2F;a&gt;。嚴格來說 &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;flipboard.com&#x2F;&quot;&gt;Flipboard&lt;&#x2F;a&gt; 不算是 RSS 閱讀器，比較像是社群內容雜誌，但不可否認的它是個好 APP，以前甚至為了 &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;flipboard.com&#x2F;&quot;&gt;Flipboard&lt;&#x2F;a&gt; 買 iPad。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.feedspot.com&#x2F;&quot;&gt;Feedspot&lt;&#x2F;a&gt; 感覺介面很像 Google Reader，又有計劃推出 iOS APP，中間有推出終生 Gold 方案，我也購買了。Gold 只差在通知，可以自訂時間區間而已，真的蠻雞肋的，有些 Bug 回報，官方似乎沒在維護，iOS APP. 也難產，讓我一直有想出走的想法，爾後又接觸到 Tiny Tiny RSS、&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;freshrss.org&#x2F;&quot;&gt;FreshRSS&lt;&#x2F;a&gt; 和 &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;miniflux.app&#x2F;&quot;&gt;Miniflux&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;</summary>
        
    </entry>
</feed>
