nig0s1992:最近做驗證碼識別的技術調查,看了幾篇不錯的文章。
一、驗證碼的基本知識
1. 驗證碼的主要目的是強制人機互動來抵禦機器自動化攻擊的。
2. 大部分的驗證碼設計者並不得要領,不了解影象處理,機器視覺,模式識別,人工智慧的基本概念。
3. 利用驗證碼,可以發財,當然要犯罪:比如招商銀行密碼只有6位,驗證碼形同虛設,計算機很快就能破解乙個有錢的賬戶,很多帳戶是可以網上交易的。
4. 也有設計的比較好的,比如yahoo,google,microsoft等。而國內tencent的中文驗證碼雖然難,但算不上好。
二、人工智慧,模式識別,機器視覺,影象處理的基本知識
1)主要流程:
比如我們要從一副中,識別出驗證碼;比如我們要從一副中,檢測並識別出一張人臉。 大概有哪些步驟呢?
2.預處理:檢測是正確的影象格式,轉換到合適的格式,壓縮,剪下出roi,去除噪音,灰度化,轉換色彩空間這些。
3.檢測:車牌檢測識別系統要先找到車牌的大概位置,人臉檢測系統要找出中所有的人臉(包括疑似人臉);驗證碼識別呢,主要是找出文字所在的主要區域。
4.前處理:人臉檢測和識別,會對人臉在識別前作一些校正,比如面內面外的旋轉,扭曲等。我這裡的驗證碼識別,「一般」要做文字的切割
5.訓練:通過各種模式識別,機器學習演算法,來挑選和訓練合適數量的訓練集。不是訓練的樣本越多越好。過學習,泛化能力差的問題可能在這裡出現。這一步不是必須的,有些識別演算法是不需要訓練的。
6.識別:輸入待識別的處理後的,轉換成分類器需要的輸入格式,然後通過輸出的類和置信度,來判斷大概可能是哪個字母。識別本質上就是分類。
2)關鍵概念:
影象處理:一般指針對數字影象的某種數學處理。比如投影,鈍化,銳化,細化,邊緣檢測,二值化,壓縮,各種資料變換等等。
1.二值化:一般都是彩色的,按照逼真程度,可能很多級別。為了降低計算複雜度,方便後續的處理,如果在不損失關鍵資訊的情況下,能將處理成黑白兩種顏色,那就最好不過了。
2.細化:找出影象的骨架,影象線條可能是很寬的,通過細化將寬度將為1,某些地方可能大於1。不同的細化演算法,可能有不同的差異,比如是否更靠近線條中間,比如是否保持聯通行等。
3.邊緣檢測:主要是理解邊緣的概念。邊緣實際上是影象中影象畫素屬性變化劇烈的地方。可能通過乙個固定的門限值來判斷,也可能是自適應的。門限可能是影象全域性的,也可能是區域性的。不能說那個就一定好,不過大部分時候,自適應的區域性的門限可能要好點。被分析的,可能是顏色,也可能是灰度影象的灰度。
機器視覺:利用計算機來模式實現人的視覺。 比如物體檢測,定位,識別。按照對影象理解的層次的差別,分高階和低階的理解。
模式識別:對事物或者現象的某種表示方式(數值,文字,我們這裡主要想說的是數值),通過一些處理和分析,來描述,歸類,理解,解釋這些事物,現象及其某種抽象。
三、常見的驗證碼的破解分析
以這裡pwntcha專案中的資料為例分析,各種驗證碼的破解。(方法很多,僅僅從我個人乍看之下覺得可行的方法來分析)
1)authimage
如何識別高階的驗證碼 三 常見的驗證碼的破解分析
三 常見的驗證碼的破解分析 以http libcaca.zoy.org wiki pwntcha這裡pwntcha專案中的資料為例分析,各種驗證碼的破解。方法很多,僅僅從我個人乍看之下覺得可行的方法來分析 1 authimage 使用的反破解技巧 1.不連續的點組成字元 2.有一定程度的傾斜 設計不...
驗證碼 簡單驗證碼識別
這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 興之所至之所以說簡單,我覺得是這樣的 抽了五張驗證碼扔進ps,50 透明度,長這樣 只有數字為內容 每張圖的數字都在固定位置 沒有太大的干擾因素 數字字型,形態完...
驗證碼識別
驗證碼識別過程好比人大腦的乙個識別過程 首先,我們的眼睛接收,並將這張的資訊輸送給大腦 然後,我們的大腦接收到這個資訊以後,對這個資訊作出處理 最後,將中的有效資訊提取出來再將其和大腦中儲存的資訊進行對應對比,確定對比結果。模擬驗證碼識別,大腦接受的處理過程就相當於電腦對的預處理,大腦對進行對比和確...