在瀏覽器中執行 Adobe 1991 年 PostScript 直譯器:retro-ps 的 M68K 模擬與 LaserJet III 硬體仿製
pagetable.com · 2026-05-01
pagetable.com 的 Michael Steil 完成了 retro-ps 專案,將 Adobe 為 HP LaserJet III 所撰寫的 1991 年 PostScript 直譯器(以 ROM 形式存在的 Cartridge 版本)在瀏覽器中完整執行,無需伺服器介入。
技術架構
retro-ps 並未反組譯或改寫 Adobe 的程式碼,而是重建了原始執行環境:
- CPU 模擬:模擬 Motorola 68020(原 LaserJet III 使用 68000,但 Cartridge ROM 支援 68020 擴充指令集),分配 16 MB RAM。
- 硬體仿製:仿製 LaserJet III 主板的記憶體映射暫存器(memory-mapped registers),包括印表機模型位元組、IPC 位元組串流介面、引擎狀態輪詢介面。
- Soft-trap 重建:Cartridge ROM 依賴 LaserJet 主韌體的 soft-trap 函式(類似 BIOS 中斷呼叫),retro-ps 重新實作這些函式以提供正確的呼叫介面。
- 半色調修正:Adobe 的原始實作針對 300 DPI 調校,retro-ps 注入了一個 DPI 縮放的半色調前置腳本(halftone prologue),使輸出在任意解析度下正確渲染。
瀏覽器部署
整個模擬器以 WebAssembly 形式在瀏覽器中執行(透過 Emscripten 或等效工具鏈編譯 C 模擬器)。使用者將 .ps 檔案拖曳至 retro-ps 頁面,Cartridge 的 PostScript 光柵化器在用戶端完整處理,轉換為可預覽的影像輸出——無伺服器、無外部 API。像素裁剪限制約每軸 16,000 個設備像素,適應架構的歷史性限制。
工程意義
此專案展示了商業封閉軟體透過環境重建而非逆向工程保全的可行路徑,同時也是在瀏覽器中完整重建 1990 年代嵌入式系統的實例——包含 CPU、記憶體地圖、I/O 介面,以及與韌體的界面協定。
原始來源:pagetable.com — Running Adobe's 1991 PostScript Interpreter in the Browser、retro-ps Live Demo
Zig 禁止 AI 貢獻:貢獻者撲克框架與開源維護的理性計算
kristoff.it(Loris Cro, Zig Software Foundation)· 2026-04-29
Zig 語言核心貢獻者 Loris Cro 以「貢獻者撲克」框架解釋 Zig 明確禁止 AI 生成程式碼貢獻的理由,以及這個決策背後的開源經濟學。
貢獻者撲克框架
Cro 將開源維護比喻為撲克牌局:「你押注的是人,而非牌。」維護者接受一個新貢獻者的 PR,表面上是審查一份程式碼,實質上是在押注這個人未來成為核心貢獻者的潛力。即使自己直接實作某個功能比審查 PR 更快,接受外部 PR 仍可能是理性的——因為在此過程中建立了關係與信任,為後續更大規模的合作奠基。Zig 的歷史佐證了這個理論:對 Ryan Liptak(Windows 資源指令碼)和 Frank Denis(密碼學)等人的早期投資,帶來了後續無法替代的深度貢獻。
AI 貢獻破壞模型的三個機制
- 幻覺與無效提交:浪費維護者的審查週期而無相應回報,LLM 生成的 PR 往往含有不存在的 API 呼叫或錯誤的假設。
- 違反漸進式信任建立的超大 PR:初次貢獻者提交 10,000+ 行的 LLM 輸出,跳過了建立信任所必需的小規模迭代互動。
- 欺騙性實踐:部分貢獻者宣稱未使用 LLM,但 PR 中出現 AI 典型錯誤模式,令維護者難以信任後續互動。
理性計算
Cro 的核心論點:「從貢獻者撲克的角度,在有人類替代方案的情況下,押注 LLM 使用者根本不理性。」AI 貢獻者無法參與需要相互問責與共享問題空間知識的迭代關係。這個限制不是意識形態立場,而是對維護者有限資源的效用最大化。
SIMD Quad 演算法超越二元搜尋:四元插值搜尋 + SIMD 並行比較,Intel/Apple Silicon 均 2× 加速
lemire.me(Daniel Lemire)· 2026-04-27
Daniel Lemire 展示了一個稱為「SIMD Quad」的演算法,在有序 16 位整數陣列中的搜尋效能全面超越傳統二元搜尋,適用於暖快取與冷快取場景,並已在 Intel Emerald Rapids 與 Apple M4 上驗證。
演算法設計
SIMD Quad 採用兩階段分層搜尋:
- 四元插值搜尋:對陣列 block 邊界使用插值定位目標 block,每次迭代排除 3/4 的搜尋空間(vs. 二元搜尋的 1/2)。
- SIMD 並行比較:在找到目標 block(16 個 16 位整數)後,使用單條 SIMD 指令同時比較全部 16 個元素與目標值(ARM NEON 或 x86-64 SSE2/AVX2)。
基準測試結果
| 硬體 | 暖快取 | 冷快取 |
|---|---|---|
| Intel Emerald Rapids + GCC | SIMD Quad > 2× 快 | SIMD Quad 輕微優勢 |
| Apple M4 + LLVM | SIMD Quad 輕微優勢 | SIMD Quad > 2× 快 |
在所有測試條件下,SIMD Quad 均優於二元搜尋。SIMD Quad 同時利用兩種處理器能力:資料並行指令(SIMD)一次比較多個值;以及記憶體層級並行(Memory-Level Parallelism)——四元搜尋的多個 prefetch 請求可被硬體並行處理,比二元搜尋的依序存取模式更有效率。
信用卡暴力猜測攻擊:PCI DSS 部分揭露 + 支付閘道資訊洩漏,9900 萬次嘗試足以枚舉
metin.nextc.org · 2026-05-02
一篇技術分析揭露信用卡號的系統性暴力猜測攻擊路徑,利用 PCI DSS 允許揭露卡號首 6 位與末 4 位的規範,結合支付閘道的資訊洩漏行為,縮小暴力猜測的搜尋空間至可行範圍。
攻擊數學
對於標準 16 位信用卡,PCI DSS 允許揭露首 6 位(BIN)與末 4 位,中間 6 位未知。Luhn 演算法校驗碼從末位推算,進一步縮減有效候選數量至約 100,000 組。CVV 碼(3 位)提供 1,000 個可能性,組合共約 9,900 萬次嘗試。以每秒 6 次請求的速率,理論上可在數月內完成枚舉——實際上攻擊者透過多個商家 API 與 IP 輪換加速。
資訊洩漏:支付閘道的錯誤訊息
攻擊的關鍵加速因素是支付閘道的細粒度錯誤回應。許多支付驗證端點(常見於電商註冊流程)回傳:「該卡已過期」或「CVV 不正確」——而非通用的「付款資訊無效」。這些細粒度訊息相當於引導式神諭(oracle),讓攻擊者可逐一確認卡號有效性,再單獨攻擊 CVV,大幅降低搜尋空間。
3D Secure 豁免的漏洞
部分商家豁免於 3D Secure 強制驗證(基於交易金額、商家風險評等),在這些商家的支付端點上,攻擊者可不需觸發額外身分驗證。
防禦建議
回傳通用錯誤訊息(不區分卡號錯誤、CVV 錯誤、過期等);實作速率限制與異常行為偵測;對高風險交易強制 3D Secure;考慮在驗證端點實作 CAPTCHA 或 Token 機制。
原始來源:metin.nextc.org — Credit Cards Are Vulnerable To Brute Force Kind Attacks