開啟某銀行 WebATM 網站,裝好 ActiveX 元件,接妥讀卡機,插入金融卡,網頁卻彈出 Smart Card 服務未啟動訊息。網站貼心地將我導到 FAQ,教導如何開啟 Smart Card 服務… 我確認 Windows 8 上的Smart Card 服務處於開啟狀態,但銀行 WebATM 元件就是一口咬定服務沒開。明明要轉帳,一回神,已捲好袖子準備射茶包… orz

由網站 JavaSript 追到以下邏輯:

      bRdrReady = XCsp.ConnectReader();
      if (bRdrReady != 0)
         { 
            if (bRdrReady==-2146435043){
                if(BrowserDetect.OS=="Linux"){
                    alert("請確認 pcscd 是否已啓動!");
                    window.location="/webatm/Q&A_016.htm";
                }else{
                    if(BrowserDetect.OS=="Mac"){
                        alert("請確認 pcscd 是否已啓動!");
                        window.location="/webatm/Q&A_017.htm";
                    }else{
                        alert("請確認Smart Card Service是否已啓動!");
                        window.location="/webatm/Q&A_012.htm#10";
                    }
                }
            }else{
                 alert("讀卡機連線失敗,Rtn=" + bRdrReady); 
            }
             hidePinRow(2);
             return;
         }

這裡面有個關鍵字 –2146435043,換算成 16 進位是 8010001d(可用 string.Format("{0:x4}", -2146435043)轉換)。以 Card Service 跟 0x8010001d 關鍵字爬文,大多是服務未啟動案例,但有一篇符合我的情境。我透過遠端桌面連上NB讀取讀卡機,文中提到 RDP Client 6.0 Smart Card Redirection 功能有個 Bug 會導致 0x8010001d。

改為直接操作後,問題排除!


Comments

Be the first to post a comment

Post a comment