今天有這樣一需求,要求能夠查詢盛付通卡的狀態(tài),官網(wǎng)如下http://www.801335.com/status/index.htm
剛一打開網(wǎng)址,發(fā)現(xiàn)兩個(gè)輸入框加一個(gè)驗(yàn)證碼,心中一喜不是小 case 驗(yàn)證碼沒有粘貼也沒怎么變形手到擒來,三五兩下識(shí)別做完了 正確率還不錯(cuò),90+%..
驗(yàn)證碼做發(fā)了,開始抓包,一下就懵了,發(fā)現(xiàn)他的數(shù)據(jù)好像被加密了,先上一張圖

回過頭來后,仔細(xì)看了下他的界面,發(fā)現(xiàn)了貓膩,他卡號(hào)和密碼輸入的地方是 Flash UesTextInput-1.4.swf 文件名是這個(gè),再看了看,他的 JS代碼發(fā)現(xiàn)關(guān)鍵的幾行
// 獲取加密Keyvar encryptedKey = document.getElementById(swfObjId).GetKey($("#base64Cert").val());$("#"+keyEleId).val(encryptedKey);// 獲取加密數(shù)據(jù)var encryptedData = document.getElementById(swfObjId).GetValue();$("#"+dataEleId).val(encryptedData);
原來,他是通過 flash把輸入的文本加密后再賦值給 input 輸入框. 即然知道他的現(xiàn)實(shí),我馬上就有思路了
方案一
C# 調(diào)用 flash 的Com組件來實(shí)現(xiàn),通過模擬鍵盤來輸入卡號(hào)和密碼來實(shí)現(xiàn)加密并批量查. 具體的實(shí)現(xiàn)這里不講了,
程序是跑起來了,但是發(fā)現(xiàn)一個(gè)問題.在多線程的情況下,flash加密存在一個(gè)問題,不能同步,沒辦法,你不同步我給你同步吧,加了一個(gè)同步機(jī)制,可以了沒問題了 一是一 二是二,但是同步后,查詢的速度下來了,差不多 1-2秒才能查一張卡,奶奶的受不了,還不如我手工查得快,沒辦法是 革命沒有成功,還是繼續(xù)
方案二
你不是用的flash加密嗎 你加密碼再厲害還不是在客戶端完成的,只要是在客戶端完成的 我就不信我拿你沒辦法,呵呵, 經(jīng)過幾年的開發(fā)積累,什么都沒有,有的就是積累的小工具,
flash是吧,把我N年前有的 閃客精靈用上試下

比較古老的一個(gè)版本,沒關(guān)系,只要能派上有場(chǎng)就行....

歐啦 ,什么出來了,現(xiàn)在要做的 就是 A3代碼轉(zhuǎn)成我們可愛 C#代碼,就一切搞定了
其實(shí)需要重寫的方法也只有兩個(gè),剛才在上面就是JS調(diào)的那兩個(gè)
GetKeyGetValue 就這兩個(gè),重寫的代碼就不貼了,最后再上張軟件的效果圖

開 10個(gè)線程,速度杠杠的.............
--幸福海
博客地址:http://m.survivalescaperooms.com/ningqhai/
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注