顯示具有 CAPTCHA 標籤的文章。 顯示所有文章
顯示具有 CAPTCHA 標籤的文章。 顯示所有文章

2025年12月2日 星期二

Spotlight CAPTCHA 腳本輸入參數定義與公用


此腳本是一個用於生成**「聚光燈驗證碼 (Spotlight CAPTCHA)」**GIF 動畫的工具,其輸入參數通過命令行傳遞給 main() 函數。


💡 Spotlight CAPTCHA 腳本輸入參數定義與公用

腳本執行時需要提供 7 個參數,用於控制驗證碼的視覺複雜度和時序行為。

執行語法:

Bash
python <腳本名> <陣列模式> <密碼> <干擾數> <字體模式> <背景模式> <閃動模式> <顯示模式>
序號參數名稱 (程式變數)允許值描述 (公用)
1陣列模式 (rc_mode)定義字符陣列的尺寸:3x3, 4x4, 5x5, 或 6x6
2密碼 (password) 位大寫字母用戶需要識別並輸入的目標字符序列。字符將隨機分佈在陣列中。
3干擾數 (distractor_count)序列閃動階段(Phase 1)中,非密碼球同時被混淆(color_mode="null")的數量。用來增加視覺混淆。
4字體模式 (font_mode)

控制字符的視覺干擾等級:


• 常規文字(無干擾)。


• 變形旋轉ASPECT_RATIO_RANGEROTATION_ANGLE_RANGE)。


• 變形旋轉 + 線條 + 雜訊塊最高干擾,還會加入NUM_NOISE_LINES_RANGENOISE_DENSITY等)。

5背景模式 (background_mode)

選擇驗證碼的背景樣式:


• 純黑背景。


• 雜訊亮點背景(由BACKGROUND_NOISE_DENSITY控制)。


• : 隨機從 bg_image 資料夾中選取 Logo 圖作為背景。

6閃動模式 (flash_mode)

控制密碼字符的「聚光燈」時序行為:


• 單點依序閃動(每次只點亮一個密碼球,然後熄滅)。


• 接龍依序閃動(已點亮的密碼球保持點亮狀態,形成持續亮起的序列)。

7顯示模式 (showtype)

定義圓球在畫布上的排列方式:


• 規則圓球陣列(網格排列,間距固定)。


• 隨機重疊圓球(散佈在畫布上,並透過中心點最小距離()限制遮蔽率小於 50%,以增加定位和分割難度)。


關鍵設計參數(補充)

腳本中還定義了一些控制動畫和干擾效果的常量:

  • 球體和間距: IMAGE_SIZEBALL_PADDING

  • 動畫時間: INITIAL_PAUSE_MSSEQ_FLASH_ON_MSSEQ_FLASH_OFF_MS 等,控制閃動的節奏。

  • 字體干擾細節 (Font Mode 1 & 2): ASPECT_RATIO_RANGEROTATION_ANGLE_RANGE

  • 雜訊干擾細節 (Font Mode 2): NUM_NOISE_LINES_RANGENOISE_DENSITYNOISE_BLOCK_SIZE

您希望對這些參數的組合效果進行進一步的分析或生成一個示例嗎?

2025年10月13日 星期一

GIF 檔案在網頁中的處理與拆幀 (Frame Extraction)

 在處理像 CAPTCHA 這樣的動態圖像(GIF 檔案)並將其用於 Gemini 多模態 API 進行視覺分析時,確實需要經過特定的處理步驟。

我將為您詳細分析動態網頁中處理 GIF 的方法、上傳格式要求,以及可用的模型。


GIF 檔案在網頁中的處理與拆幀 (Frame Extraction)

由於 GIF 本質上是多個靜態圖片(影格, Frames)的連續播放,Gemini API (以及大多數視覺 AI 模型) 無法直接接受一個 GIF 檔案作為單一輸入

在您提供的 openai_gifpath_client12.html 範例中,前端 JavaScript 使用了開源函式庫 omggif 來實現「拆幀」流程,這是動態網頁中處理 GIF 的標準方法。

步驟說明程式碼對應位置 (在 handleSingleAnalysis 函數中)
1. 讀取檔案使用 FileReader 將使用者上傳的本地 GIF 檔案讀取為 ArrayBuffer 原始數據。reader.readAsArrayBuffer(file);
2. 解析 GIF 結構使用 omggif 函式庫解析 ArrayBuffer,獲取 GIF 的長寬和總影格數。const gifReader = new GifReader(intArray);
3. 提取關鍵影格選擇性地從總影格中抽取具代表性的 個影格。這是關鍵步驟,因為 API 對輸入圖片數量有上限。範例中使用了 maxFrames = 10for (let i = 0; i < numFrames; i += frameInterval)
4. 轉換為圖像格式每個提取出的影格(原始像素數據)必須通過 HTML <canvas> 轉換成標準的圖像格式(如 JPEGPNG)。ctx.putImageData(imageData, 0, 0);
5. 轉 Base64將 Canvas 上的圖像數據轉換為 Base64 編碼的 Data URL 字符串,這是 API 傳輸圖像數據的標準格式。canvas.toDataURL('image/jpeg', 0.8)

總結:上傳給 API 的實際數據是多張靜態圖片(JPEG/PNG),而非單一 GIF 檔案。


呼叫 Gemini API 時的上傳格式 (Inline Data)

當您將這些拆分出來的靜態圖片傳輸給 Gemini API 時,您必須遵循 JSON 格式,將每張圖片作為一個獨立的 part 嵌入到 contents 陣列中。

1. 圖片的格式要求

API 要求圖片數據以 Base64 編碼的字串形式傳輸,並包含在 inlineData 物件中。

  • mimeType: 必須指定圖片的 MIME 類型 (例如:image/jpeg, image/png)。

  • data: 圖片的 Base64 編碼字串(不包含 Data URL 前綴,例如不包含 data:image/jpeg;base64,)。

2. 完整的多模態 Payload 結構

由於 GIF 序列是一個時間軸上的動作,因此您需要將文字提示 (Prompt)所有圖片影格依序傳入單一的 contents 陣列中。

JavaScript
// 核心 Payload 範例結構
const payload = {
    contents: [{
        parts: [
            { text: userPrompt },               // 第一個 part: 你的提示詞
            { inlineData: { mimeType: 'image/jpeg', data: base64_frame_1 } }, // 第二個 part: 影格 1
            { inlineData: { mimeType: 'image/jpeg', data: base64_frame_2 } }, // 第三個 part: 影格 2
            // ... 繼續加入其他所有影格
        ]
    }],
    // 其他配置,例如 temperature, maxOutputTokens...
    generationConfig: { ... } 
};

可用於處理 GIF 影格分析的 Gemini 模型

Gemini 系列的多模態模型非常適合處理此類包含多張圖片的視覺分析任務。

模型名稱特點與建議應用
gemini-2.5-flash-preview-05-20推薦模型。速度快、成本效益高,且擅長處理多模態輸入,是分析 CAPTCHA 序列、提取文字和識別動作的理想選擇。
gemini-2.5-pro-preview-05-20速度較慢但能力更強大。如果您的 CAPTCHA 具有極高的複雜性、混淆或需要更深入的推理(例如複雜的邏輯問題),可以考慮使用此模型。

重要注意事項

  1. 輸入限制 (Input Limit): 儘管 Gemini 可以接受多張圖片輸入,但單次 API 請求的整體輸入量(包括所有圖片和文字)有大小限制。這就是為什麼您需要在拆幀時限制提取的影格數量(例如 10 幀)。

  2. 時序推理 (Temporal Reasoning): 在您的提示詞中,應明確指示模型圖片是依序出現的。例如:"這些圖片是按時間順序排列的連續影格。請分析...",以幫助模型進行正確的時序推理。

我們可以繼續討論您的論文的「方法論」章節,將這個 GIF 處理和 API 整合的流程以學術語言進行專業撰寫,並翻譯成英文。您覺得如何?

2025年7月1日 星期二

互動報告:驗證碼與AI的攻防戰

互動報告:驗證碼與AI的攻防戰

驗證碼與AI的攻防戰

這是一場持續升級的數位軍備競賽。隨著人工智慧(AI)的飛速發展,傳統用於區分人機的驗證碼(CAPTCHA)正瀕臨失效。本互動報告將帶您深入探索這場攻防戰的演進、剖析關鍵技術,並展望下一代安全驗證的未來。

開始探索 ↓

演進戰場:一場貓捉老鼠的遊戲

本節將帶您回顧驗證碼的發展歷程。點擊左側的時間軸,了解各個時期的主流防禦技術,以及AI攻擊者如何一次次地突破防線。這段歷史揭示了單純依賴視覺複雜性的策略已然過時。

  • 第一階段:文字扭曲

    ~2010s - 扭曲、雜訊、重疊文字

  • 第二階段:動態挑戰

    2010s中期 - 動畫、3D、手勢

  • 第三階段:行為分析

    2010s晚期至今 - 隱形、風險評分

深度剖析:關鍵攻防技術

在這裡,我們將深入探討兩種核心的視覺混淆策略:動畫與雜訊。透過互動圖表,您可以比較不同技術的有效性,並了解為何AI最終能「看穿」這些防禦。點擊圖表中的區塊以查看詳細說明。

時間維度的挑戰

動畫驗證碼試圖引入「時間」作為新的防禦維度,其核心思想是動態變化的內容對AI的影格捕捉與分析構成挑戰。然而,AI發展出多階段攻擊策略,能有效重建靜態圖像並破解。點擊左方圖表中的長條,查看各類動畫技術的原理與其弱點。

新世代策略:超越視覺的防禦

純粹的視覺挑戰已不再可靠。未來的驗證碼正轉向多模態、隱形化和基於使用者行為的綜合範式。本節將介紹幾種前瞻性的解決方案,它們重新定義了人機驗證的邊界,但也帶來了新的挑戰,如使用者隱私問題。

🕵️

行為分析

如 reCAPTCHA v3,在背景中無縫分析滑鼠移動、打字速度等行為數據,生成風險評分,無需使用者互動。高效但引發隱私擔憂。

🎮

遊戲化

將挑戰轉化為簡單有趣的迷你遊戲,如拖放物體或解謎。提升使用者體驗,但對能學習遊戲規則的AI仍是考驗。

💻

工作量證明 (PoW)

要求使用者設備在背景完成微小的加密運算。對人類無感,但對發動大規模攻擊的機器人來說成本高昂。

🔊

多模態與新感官

探索音訊、觸覺等非視覺管道。例如,利用對抗性機器學習生成AI難以識別但人類可辨的音訊,開闢新的防禦戰線。

實踐藍圖:AI時代的設計準則

建構一個真正有效的AI抵抗驗證碼系統,需要系統性的思考。這不僅是技術選擇,更是策略平衡。以下是基於OWASP和NIST等行業標準總結的關鍵設計原則。點擊各項原則以展開詳細建議。

基於「CAPTCHA 對抗 AI 策略」報告生成的互動式體驗。

互動式報告:次世代驗證碼技術解析(CAPTCHA)

互動式報告:次世代驗證碼技術解析

不斷演進的攻防戰

本報告深入分析兩種前沿的驗證碼技術:利用 AI 視覺盲點的「對抗性驗證碼」,以及透過藝術風格混淆機器的「風格轉換式驗證碼」。

兩大核心攻防策略

🛡️

對抗性驗證碼

如同一把精準的「手術刀」。在圖像中加入人類難以察覺的微小數學擾動,直接攻擊 AI 模型的決策邏輯,使其產生錯誤判斷。

🎨

風格轉換式驗證碼

像一把改變戰場的「重錘」。將圖像的內容與藝術風格結合,使其脫離 AI 所熟悉的數據領域,利用其泛化能力的不足。

技術深究:原理與演進

核心原理:以子之矛,攻子之盾

系統主動生成對抗性樣本,在清晰圖像上添加對人類無感、但對 AI「致命」的微小擾動。這種擾動是基於梯度計算的,旨在最大化 AI 模型的分類錯誤。

生成流程示意

2bN4
原始圖像
+ ε·sign(∇)
添加微小擾動
2bN4
最終驗證碼
AI 識別為: 8cM5

技術演進

適應階段: aCAPTCHA

+

最早的系統性框架之一,將已知的白箱攻擊方法(如JSMA)直接應用於防禦,證明了該路線的可行性。

特化階段: Robust Text CAPTCHA (RTC)

+

為解決「可轉移性」不足的問題,設計了如 SGTCS 等新攻擊算法,並引入「偽對抗性前景」等技術,能將主流破解器成功率降至百萬分之一以下。

生成階段: Unsourced (UAC)

+

利用擴散模型和LLM,無需源圖像即可根據文本提示直接生成對抗性驗證碼,極大提升了多樣性和靈活性。

正面對決:全方位比較

綜合能力雷達圖

從五個維度評估兩種技術的綜合表現。

核心弱點分析

每種防禦都有其「天敵」,了解它們的致命弱點至關重要。

🛡️ 對抗性驗證碼之弱點

易受**對抗性訓練**反制。攻擊者可收集大量樣本,手動標註後訓練出能「免疫」該特定擾動的破解器。

🎨 風格轉換式驗證碼之弱點

易受**「去風格化」**攻擊。攻擊者可訓練GANs等模型,將圖像「翻譯」回自然域,或直接在新風格域上訓練模型。

人機區分的未來軌跡

隨著 GPT-4o 等大型多模態模型的出現,基於靜態圖像的挑戰正走向極限。未來的驗證將更加隱蔽、智能和多樣化。

🕵️

隱式行為驗證

如 reCAPTCHA v3,在後台靜默分析用戶的鼠標軌跡、點擊速度等行為特徵來評估風險,做到對用戶「無感」。

🧠

LLM 的雙重角色

LLM 既是能破解幾乎所有現存驗證碼的「終極之矛」,也能被用來生成無限多樣、基於推理的新型驗證碼,成為「未來之盾」。

🔗

去中心化與權益證明

將驗證負擔從認知謎題轉向經濟成本或可信身份。如要求客戶端進行少量計算(PoW)或驗證去中心化身份(DID)。

© 2025 互動式技術報告。基於學術研究報告生成。