日期:2014-05-18  浏览次数:21273 次

请问如何破解网上银行的安全控件!
呃,其实我是标题党!严重声明俺不是要干犯法的事!

某银行有个项目想外包给我们做,业务流程简单的说就是银行把客户提交的申请资料给我们,我们来进行电话或上门核实资料是否有效,最终把结果反馈给银行。

由于银行对数据安全的要求非常高,我几乎是无计可施。银行不允许上网、不公开数据接口、不允许修改他们的系统、不允许动他们一切东西。

银行想让我们实现2个功能:
  一、导出资料。银行的系统没有批量导出的功能,也就是说一天几千份的资料要手工一个个的点击导出,所以他们想有个什么东西可以帮助他们自动的完成这个导出工作。
  二、反馈结果。银行希望我们能将结果生成固定格式的文档,然后批量自动的导入到他们的系统中。

由于上面提到一系列不允许,除了直接控制网页操作我实在想不出别的办法。

银行的业务系统我还没见到,只知道是java开发的网页,于是,拿着中行的网上银行开始做测试:

VB.NET code
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        WebBrowser1.Url = New Uri("https://ebs.boc.cn/BocnetClient/PreLogin.do?_locale=zh_CN")
    End Sub

    Dim b As Boolean = False

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        Try
            Dim tbUserid As HtmlElement = WebBrowser1.Document.All("LoginName")
            Dim tbvalida As HtmlElement = WebBrowser1.Document.All("ValidationChar")
            Dim tbPasswd As HtmlElement = WebBrowser1.Document.All("pass")
            tbUserid.SetAttribute("value", "帐号")
            tbvalida.SetAttribute("value", "验证码") '只是测试,俺也不会识别验证码
            tbPasswd.SetAttribute("value", "密码") '提示参数数目与需要的数据不符
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub


这个代码可以正确的把账号跟验证码填到网页上,但密码填不上,提示错误“参数数目与需要的数据不符”, 查了一下网页的代码:

HTML code
        <tr>
                                            <td>&nbsp;</td>
                                            <td height="30" class="input_font">用 户 名:</td>
                                            <td valign="bottom"><input type="text" name="LoginName" class="login" maxlength="20" /></td>
                                            <td rowspan="2" align="left" valign="top" class="input_font2">用户名和密码对大小写字母敏感,请注意区分</td>
                                        </tr>
                                        <tr>
                                            <td>&nbsp;</td>
                                            <td height="30" class="input_font">密  码:</td>
                                            <td>
                                            <div id="passobject" class="login">
                                                <script language="JavaScript">
                                                passr = CreateControl("passobject", "document.form1", "pass", "0", "zh_CN");
                                                </script>
                                            </div>
                                            </td>
                                        </tr>


密码框是CreateControl("passobject", "document.form1", "pass", "0", "zh_CN")建立的,跟踪了一下pass,发现没有value属性,正常输入密码后,继续跟踪发现pass下有个Expandos属性下有value,值应该是加密后的密码,银行的安全控件确实很牛啊,到这里我就不知道怎么办了,其实我平时主要是做winform,就是在这瞎胡闹下。。。

所以,请教一下大伙,有没有可能破解类似的安全控件实现自动操作的功能啊?  

或者,就上面的需求,有没有什么其他的解决办法啊???

做网页游戏外挂的高手,能不能帮个忙啊。。。


------解决方案--------------------