1. 程式人生 > >驗證碼的識別的幾種思路

驗證碼的識別的幾種思路

驗證碼的識別隨著時間的變換。進攻方與防守方的技術水平也在不斷提高。簡單來說就是一個無休止的拳擊賽,你當唱罷我方登場。對於hardAI的研究完全沒有任何價值。

早期簡單驗證碼的識別,大概思路是通過切割圖片然後匯入ocr圖片識別技術。通過比較驗證碼的畫素點。然後進行驗證碼的識別。不過隨著時間的過度。簡單的驗證碼已經無法從事於過度危險的網路環境。所以在形成了許多人類自己都難以辨識的的驗證碼。比如說各種各樣的干擾線和扭曲。

google公司的驗證碼提供了驗證碼防禦的一種很好的思路,通過扭曲驗證碼同時連結。可以很有效的阻止他人驗證碼的搜尋。同時以往的切割驗證碼的識別對此的研究基本上沒有太多的作用。所以可以視為一種安全的驗證碼。通過神經網路演算法不斷模擬該類驗證碼。在此類驗證碼的庫有限的情況下。或許有20的可能性實現。

接著是討論一種china gov網站大多數使用的不同顏色的驗證碼。可以通過提取色彩。比如說一個4位驗證碼。通過提取前五種顏色。然後hash到陣列中。通過分辨rgb值分開來

形成新的影象,接著對影象進行讀取並識別。在這個過程中需要在影象的位置上加一定標記。然後進行讀取。(程式碼還沒研究怎麼貼。先發著。有機會把程式碼貼上去)

然後是12306的網站驗證碼破解。先是從12306上驗證碼驗證識別框中。切出一定的區域。然後劃分為8快。讀取圖片。傳到百度識圖的api介面。進行識別。然後識別出來的圖片對12306的網站驗證碼輸入。或者執行點選操作。

至於干擾線這種噁心人的驗證碼。本身人類就不號識別。如果使用影象腐蝕的話。對影象本身的形態結構造成改變。這種需要建立大規模的字型檔。對此種影象進行識別。而且成功率也僅有49%。

國外的CAPTCHA研究找到一個開源專案/。pwntcha。作者說看到那些賣驗證碼的太噁心。就把程式碼公開出來。他實現了許多簡單驗證碼的實現。並對許多複雜驗證碼的弱點進行了提示。並且實現了許多驗證碼的高效識別。

連結:http://caca.zoy.org/wiki/PWNtcha

裡面詳細說明了驗證碼的識別。不過做這個沒有太大的意義。因為以前上資訊保安的課上。聽老師說中國有那麼多黑市。這些資料的獲得。很多都可以通過黑客的移庫進行操作。本來驗證碼的目的就是識別你是不是人類。為了保護網站的承載。你非要通過識別的這種手段,很有可能違反法律。更何況驗證碼識別的進攻方對防守方的實力差距不是一般的大。所以可以放棄這個沒有太大利潤的專案。