国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于字符特征的文本驗(yàn)證碼破解

2012-04-23 10:13:14
電子科技 2012年6期
關(guān)鍵詞:個(gè)字符字符識(shí)別字符

高 原

(江蘇省邳州市機(jī)動(dòng)車綜合性能檢測(cè)站,江蘇邳州 221300)

字符識(shí)別技術(shù)[1-2]是破解驗(yàn)證碼過程中的一項(xiàng)關(guān)鍵技術(shù),而基于特征的字符識(shí)別技術(shù)相比其他識(shí)別技術(shù)具有識(shí)別速度快的優(yōu)勢(shì),在驗(yàn)證碼識(shí)別過程中,速度越快,其價(jià)值越高?;谔卣鞯淖址R(shí)別技術(shù),可通過字符的結(jié)構(gòu)特征,來定義可行的區(qū)分方法,這種識(shí)別方法可根據(jù)字符的特征定義不同的算法。在驗(yàn)證碼識(shí)別過程中,由于驗(yàn)證碼是被人識(shí)別的,為提高驗(yàn)證碼的可用性,驗(yàn)證字符大多使用那些特征明顯,不容出現(xiàn)混淆的字符,所以驗(yàn)證碼中所用的字符是有限制的,字符集較小,利用結(jié)構(gòu)特征的字符識(shí)別技術(shù),特征更加容易辨別,識(shí)別速率也更快。

驗(yàn)證碼[3-4]作為一種在網(wǎng)頁上使用的安全機(jī)制,可防止惡意程序自行的注冊(cè)賬號(hào)、發(fā)送免費(fèi)郵件、論壇灌水,有效防止黑客對(duì)某一特定注冊(cè)用戶使用特定程序暴力破解方式進(jìn)行不斷的登陸嘗試。驗(yàn)證碼是現(xiàn)在眾多網(wǎng)站通行的方式如某銀行的網(wǎng)上個(gè)人銀行、百度社區(qū)等是一種簡單的區(qū)分人與機(jī)器的方法。對(duì)驗(yàn)證碼進(jìn)行破解研究,發(fā)現(xiàn)其設(shè)計(jì)過程中的漏洞和弱點(diǎn),對(duì)提高驗(yàn)證碼的安全性具有重要意義。2004年Dontnod公司的Hocevar S[5]在網(wǎng)絡(luò)上發(fā)布了其驗(yàn)證碼識(shí)別程序PWNtcha(Pretend We’re Not a Turing Computer but a Human Antagonist),以證明驗(yàn)證碼不是一種安全的交互驗(yàn)證手段,現(xiàn)在這個(gè)項(xiàng)目已經(jīng)開源。Hocevar同時(shí)還在網(wǎng)站上發(fā)布了多個(gè)驗(yàn)證碼的識(shí)別結(jié)果,識(shí)別率從49% ~100%,其中有著名的電子支付公司Paypal的驗(yàn)證碼。PWNtcha針對(duì)的驗(yàn)證碼主要是背景容易分離和非粘連的驗(yàn)證碼,網(wǎng)站也給出了一些難以識(shí)別的驗(yàn)證碼樣本,但未能給出識(shí)別結(jié)果。2003年 Mori G和Malik J利用形狀上下文對(duì)Gimpy和EZ—Gimpy驗(yàn)證碼進(jìn)行了識(shí)別,識(shí)別率分別達(dá)到33% ~92%[6]。2008年英國紐卡斯?fàn)柎髮W(xué)的Yah J,AHMAD A S E等對(duì)Microsoft的驗(yàn)證碼進(jìn)行了成功分割,并通過多分類器進(jìn)行識(shí)別,識(shí)別率達(dá)到 60%[7-8]。

文中針對(duì)某銀行的驗(yàn)證碼,首先根據(jù)其特點(diǎn)將驗(yàn)證碼中的干擾色去掉并且提取出目的字符,然后基于字符與數(shù)字內(nèi)部和外部特征,采用顏色填充法,三線條法,全面掃描法對(duì)單個(gè)字符進(jìn)行識(shí)別,識(shí)別率可達(dá)到95%以上。相比于模板匹配算法,在時(shí)間上也有大的縮減。最壞情況,識(shí)別的字符的時(shí)間是215 ms,平均識(shí)別時(shí)間為187 ms。

1 驗(yàn)證碼機(jī)制

網(wǎng)絡(luò)中常用的驗(yàn)證碼是基于文本圖像的驗(yàn)證碼,基于文本圖像的驗(yàn)證碼又可分為字符分離和采用粘連機(jī)制兩大類。文中所述的破解方法都是針對(duì)字符分離的驗(yàn)證碼。

圖1 某銀行驗(yàn)證碼

某銀行的驗(yàn)證碼在字符分離驗(yàn)證碼中具有代表性。由于無法得知其驗(yàn)證碼生成的原理和代碼,于是先從其網(wǎng)上銀行中隨機(jī)獲取100個(gè)驗(yàn)證碼,通過對(duì)這100個(gè)樣本驗(yàn)證碼的觀察和分析,發(fā)現(xiàn)其驗(yàn)證碼具有以下特點(diǎn)。

(1)背景色以淺灰色為主,有大量隨機(jī)的某種色彩線條隨機(jī)分布在整個(gè)驗(yàn)證碼中,且彩色線條和前景色的字符重疊時(shí)像素值是前景色和背景色疊加而成的。

(2)字符均有不同程度的扭曲和變形,字符的扭曲和變形使得商用的一般OCR軟件對(duì)字符無法正確識(shí)別。

(3)字符位置固定在水平方向上和豎直方向上是隨機(jī)分布的,因?yàn)轵?yàn)證碼輸入是有順序限制的,所以在水平方向字符之間是不可交錯(cuò)的,而豎直方向上的隨機(jī)分布影響了字符破解時(shí)對(duì)字符的準(zhǔn)確定位。

(4)每個(gè)驗(yàn)證碼都是由固定數(shù)目字母或數(shù)字構(gòu)成的,固定的字符數(shù)使破解工作相對(duì)容易,在分割字符時(shí)可以確切的了解需要提取幾個(gè)字符,而驗(yàn)證碼中都采用了6個(gè)字符。

(5)每種驗(yàn)證碼采用的字符集是相同的,不是所有的字符都會(huì)出現(xiàn)在驗(yàn)證碼中,因?yàn)闀?huì)降低驗(yàn)證碼的可用性。例如,在有背景色干擾的情況下,肉眼較難分清1和I。驗(yàn)證碼中共有19個(gè)數(shù)字和字母出現(xiàn),8個(gè)數(shù)字,11個(gè)小寫字母。

文中以某銀行驗(yàn)證碼為例,介紹了破解此類字符分離驗(yàn)證碼的詳細(xì)過程。

2 破解過程

破解驗(yàn)證碼分為兩個(gè)步驟,分割和識(shí)別。利用前節(jié)分析驗(yàn)證碼得到的特點(diǎn),可利用一種簡單有效的方法破解驗(yàn)證碼。

破解過程可以概括為下面的步驟:

(1)對(duì)驗(yàn)證碼進(jìn)行預(yù)處理,去除背景色和干擾色。

(2)用顏色填充算法提取驗(yàn)證碼中的字符。

(3)根據(jù)每種字符特征對(duì)單個(gè)字符識(shí)別。

破解工作是建立在100個(gè)樣本驗(yàn)證碼基礎(chǔ)上的,為確保研究的正確性和適用性,對(duì)另外100個(gè)在破解工作中未能用到的驗(yàn)證碼進(jìn)行了實(shí)驗(yàn)。

2.1 預(yù)處理

該階段主要目的是去除驗(yàn)證碼中背景色,將字符像素全部置為黑色,其他背景顏色全部置為白色,也可稱為二值化處理。

驗(yàn)證碼中字符的顏色是灰色與噪音顏色疊加的色彩,而灰色與噪音顏色疊加的色彩與灰色極為相似,只將原本灰色的RGB值進(jìn)行了微調(diào)。所以,本節(jié)的目的是將驗(yàn)證碼中灰色的像素與灰色相近的像素置為黑色,其他顏色置為白色。

通過大量的實(shí)驗(yàn)和觀察,發(fā)現(xiàn)RGB值中至少有一個(gè)分量值>170的像素必定是背景色和噪音色,以170為閾值對(duì)圖片進(jìn)行處理,當(dāng)一個(gè)像素點(diǎn)的RGB值分量中有一個(gè)>170就將其置為白色,相反則置為黑色。部分結(jié)果如圖2所示。

用這一方法對(duì)100個(gè)驗(yàn)證碼進(jìn)行二值化,效果表明這種方法對(duì)驗(yàn)證碼有較好的去噪點(diǎn)效果。圖像的二值化,對(duì)于這種不粘連的驗(yàn)證碼,本身就是分割的過程。

圖2 二值化后的驗(yàn)證碼

2.2 提取字符

在這一階段,可用連通域法提取圖片中的字符。連通域法就是將一個(gè)連通域里的所有像素提取出來當(dāng)作一個(gè)字符。具體實(shí)現(xiàn)使用了顏色填充算法。這里,用一個(gè)寬40,高為字符高度的圖像存儲(chǔ)提取出來的字符。

圖3 被提取的6個(gè)字符

2.3 字符識(shí)別

常用的識(shí)別方法是模板匹配,在模板集合中依次用模板圖片和提取出來的字符進(jìn)行匹配,選取匹配率最高的字符作為識(shí)別結(jié)果。模板匹配對(duì)扭曲的字符有較大的局限性,字符是隨機(jī)扭曲的,若要得到理想的結(jié)果,就需要一個(gè)較大的模板庫,但模板庫的龐大必然使匹配所用的時(shí)間更長。

文中所用的識(shí)別方法是基于字符特征的,對(duì)單個(gè)字符識(shí)別的準(zhǔn)確率達(dá)97%,對(duì)100個(gè)樣本驗(yàn)證碼的識(shí)別成功率達(dá)到82%。

在整個(gè)識(shí)別過程中,采用了3種方法:顏色填充、三線條和全面掃描法,確保識(shí)別結(jié)果在準(zhǔn)確率和速度上都取得理想的效果。

2.3.1 基于顏色填充的字符識(shí)別

在驗(yàn)證碼中出現(xiàn)的19個(gè)字符中,有9個(gè)字符有封閉的區(qū)域,這里稱為閉環(huán)。如圖4所示。通過判斷各自閉環(huán)的位置,可以結(jié)合使用顏色填充算法來識(shí)別這些字符。

圖4 含有閉環(huán)的字符

如4的閉環(huán)位置相對(duì)在中間,閉環(huán)的形狀為三角形。6的閉環(huán)位置在圖片的下部。b與6相似,閉環(huán)位置在圖片的下部,閉環(huán)上方無黑色像素。9的閉環(huán)位置在圖片的上部。a的閉環(huán)位置在圖片的下部,與d類似,不同點(diǎn)在于a的閉環(huán)上方有黑色像素。d與a相似,閉環(huán)位置在圖片的下部,閉環(huán)上方無黑色像素。e的閉環(huán)位置在圖片的上部,與p類似,不同點(diǎn)是閉環(huán)的下方有黑色像素。p與e相似,閉環(huán)位置在圖片的上部,閉環(huán)下方無黑色像素。

圖5 顏色填充

根據(jù)以上特征,4,6,9,a,b,d,e,p 這 8 個(gè)字符被成功地識(shí)別。加上已經(jīng)識(shí)別出的8,驗(yàn)證碼中出現(xiàn)的19個(gè)字符中的9個(gè)已經(jīng)被區(qū)分出來,經(jīng)過實(shí)驗(yàn)證明,這種方法的識(shí)別正確率在98%以上。

2.3.2 基于三線條法識(shí)別字符

三線條法,是針對(duì)驗(yàn)證碼中字符識(shí)別提出的新方法,分別在圖片的1/3高度,1/2高度和2/3高度處掃描,記錄遇到的黑色像素位置,通過這些黑色像素的位置識(shí)別字符。該方法針對(duì)的是驗(yàn)證碼中的字符m,字符n和字符w。相比于整體掃描得到全部特征的方法,三線條法只通過局部掃描得到局部特征就可識(shí)別相應(yīng)的字符,在速度上具有較大優(yōu)勢(shì),而準(zhǔn)確率依然理想。

在經(jīng)過顏色填充識(shí)別字符后,驗(yàn)證碼中還有10個(gè)字符未被成功識(shí)別,分別是 2,3,5,7,k,m,n,s,w,x。在這10個(gè)字符中,應(yīng)用三線條法,m,n,w的特征被明顯的體現(xiàn)出來,詳細(xì)描述如下。

m三個(gè)線條上的黑色像素都呈三段分布,中間段的黑色像素與兩邊段黑色像素中間的非黑色像素?cái)?shù)目接近并>3,三個(gè)線條上的像素都符合這一特點(diǎn)。

n三個(gè)線條上的黑色像素都呈兩段分布,兩段黑色像素之間的非黑色像素的數(shù)目>3,三個(gè)線條上的像素都符合這一特點(diǎn)。

w在1/3高度的線條上,黑色像素呈三段分布且中間段黑色像素與兩邊段黑色像素之間的非黑色像素?cái)?shù)目>3,在1/2高度的線條上則呈現(xiàn)三段分布,但是黑色像素之間的非黑色像素的數(shù)目<1/3高度上的線條,而在2/3高度上的線條,黑色像素可能呈兩段或三段分布,呈兩段分布時(shí)可被確認(rèn)為w,呈三段分布只要黑色像素中間的非黑色像素的數(shù)目遠(yuǎn)<1/3高度和1/2高度的線條也可被確認(rèn)為w。

圖6 三線條法

對(duì)100個(gè)驗(yàn)證碼樣本中出現(xiàn)的字符m,n和w進(jìn)行了實(shí)驗(yàn),其識(shí)別正確率達(dá)到97%。在算法執(zhí)行時(shí),如果某種字符已經(jīng)被識(shí)別,在后面識(shí)別剩余字符時(shí)就不去識(shí)別該種字符,顏色填充法和三線條法對(duì)字符識(shí)別的高準(zhǔn)確率,保證了算法可行性。

經(jīng)過顏色填充法和三線條法的處理之后,驗(yàn)證碼中的19個(gè)字符被識(shí)別出來12個(gè),還有7個(gè)字符未被識(shí)別出來,分別是 2,3,5,7,k,s,x。對(duì)于這幾個(gè)字符,三線條法可以識(shí)別出部分,但準(zhǔn)確率不高且不能完全識(shí)別,因此采用后面的全面掃描觀察其特征的方法識(shí)別這7個(gè)字符。

2.3.3 基于全面掃描識(shí)別字符

全面掃描是從上往下,對(duì)字符的每一行像素進(jìn)行掃描,通過每行像素點(diǎn)的分布,行與行之間像素點(diǎn)移動(dòng)的趨勢(shì),判斷其是否屬于某個(gè)特定字符的特征。該方法基本可以識(shí)別剩下的7個(gè)字符。

比如字符7,掃描圖像下半部分的每一行,如果每行的黑色像素都<4,且只有一段連續(xù)的黑色像素,符合這一條件的像素被認(rèn)為是字符7。其他的6個(gè)字符也有各自的全局特征,可以通過類似的方法予以識(shí)別。

圖7 剩下的7個(gè)字符

經(jīng)過全面掃描方法處理之后,驗(yàn)證碼中的19個(gè)字符已被全部成功識(shí)別。對(duì)100個(gè)樣本驗(yàn)證碼中的600個(gè)字符進(jìn)行實(shí)驗(yàn),全面掃描方法對(duì)這7個(gè)字符的識(shí)別成功率達(dá)97%。

3 實(shí)驗(yàn)結(jié)果

對(duì)作為樣本的100個(gè)驗(yàn)證碼的實(shí)驗(yàn)結(jié)果進(jìn)行分析,并且用文中的算法對(duì)另外的100個(gè)驗(yàn)證碼進(jìn)行了測(cè)試,主要測(cè)試了破解成功率和破解時(shí)間,并對(duì)破解失敗的原因作出進(jìn)一步分析和討論。另外,用同樣的方法對(duì)同類驗(yàn)證碼進(jìn)行破解,結(jié)果證明文中的方法具有一般性。

3.1 成功率

驗(yàn)證碼的破解主要分為分割和識(shí)別兩個(gè)階段,在100個(gè)樣本中,算法的分割成功率是94%。這表明,在這100個(gè)驗(yàn)證碼中,有94個(gè)驗(yàn)證碼的字符都能被提取出來。對(duì)另外100個(gè)驗(yàn)證碼用同樣的算法進(jìn)行了實(shí)驗(yàn),這100個(gè)驗(yàn)證碼從未在研究過程中用到,算法的分割成功率為96%,這充分說明算法在預(yù)處理和提取這一階段具有較好的通用性。對(duì)100個(gè)樣本驗(yàn)證碼的最后識(shí)別成功率為83%,對(duì)另外100個(gè)未在研究過程中使用的驗(yàn)證碼識(shí)別成功率為78%,與樣本驗(yàn)證碼的成功率相比略有降低,但結(jié)果仍較為理想。

3.2 速度

對(duì)作為樣本的100個(gè)某銀行驗(yàn)證碼破解,破解一個(gè)驗(yàn)證碼的平均速度只有187 ms,破解最快的是170 ms,破解最慢的為215 ms。以平均速度計(jì)算,一秒鐘可以破解5個(gè)驗(yàn)證碼,破解成功率為78%,則每秒鐘可正確識(shí)別4個(gè)驗(yàn)證碼,遠(yuǎn)快于人類輸入驗(yàn)證碼的時(shí)間。

以平均時(shí)間計(jì)算,一秒鐘破解4個(gè)驗(yàn)證碼,一分鐘就是240個(gè),一天24小時(shí)總共可以破解345600個(gè)驗(yàn)證碼,如果使用多個(gè)機(jī)器同時(shí)灌水或者發(fā)送免費(fèi)郵件,將會(huì)消耗極大的網(wǎng)站資源,會(huì)對(duì)其他用戶正常使用造成影響。

3.3 對(duì)同類驗(yàn)證碼的破解效果

用文中的算法對(duì)多個(gè)字符分離的驗(yàn)證碼進(jìn)行破解實(shí)驗(yàn),破解對(duì)象分別為中國農(nóng)業(yè)銀行和交通銀行的驗(yàn)證碼,如圖8所示。破解結(jié)果如表1所示,結(jié)果表明,文中的方法對(duì)于識(shí)別同類驗(yàn)證碼具有較好的通用性。都采用基于字符特征的識(shí)別方法時(shí),驗(yàn)證碼采用的字符集越大,識(shí)別時(shí)間越長,并且呈線性增長,某農(nóng)業(yè)銀行的字符集只有9個(gè)數(shù)字,所以識(shí)別速度較快,而某交通銀行的字符集有27個(gè),則識(shí)別速度相對(duì)較慢。

圖8 某農(nóng)業(yè)銀行和某交通銀行的驗(yàn)證碼

表1 對(duì)同類驗(yàn)證碼的破解結(jié)果

3.4 改進(jìn)建議

文中對(duì)字符分離驗(yàn)證碼的破解工作及結(jié)果表明此類驗(yàn)證碼在設(shè)計(jì)過程中存在極大的缺點(diǎn)和漏洞,針對(duì)文中的破解方法,可在諸多方面做出改進(jìn)使這種破解方法無效。

采用與前景色相似甚至相同的顏色作為噪點(diǎn),在預(yù)處理階段的算法會(huì)失去作用,尤其當(dāng)噪點(diǎn)與字符相交時(shí),這些噪點(diǎn)在字符提取階段會(huì)與字符同時(shí)被提取,將會(huì)嚴(yán)重的干擾到字符的識(shí)別,尤其對(duì)于算法所用的基于字符特征的識(shí)別方法,對(duì)字符的完整性要求較高,筆畫的缺失和多余都將影響到算法的成功率。

使用粘連機(jī)制,字符與字符相連,簡單連通域算法是無法將單個(gè)字符提取出的,這樣在分割字符時(shí)增加了難度,Yahoo和Google的驗(yàn)證碼均采用粘連機(jī)制,現(xiàn)在還未出現(xiàn)有效的方法破解采用該機(jī)制的驗(yàn)證碼。使用連機(jī)制時(shí),若字符長度不定,將會(huì)取得更為理想的防機(jī)器識(shí)別能力。

4 結(jié)束語

文中分析了字符分離驗(yàn)證碼的普遍特點(diǎn),針對(duì)這些特點(diǎn)提出了破解方法,并在識(shí)別時(shí)介紹了一種基于字符特征破解驗(yàn)證碼的方法,通過進(jìn)行實(shí)驗(yàn)得出該方法具有較高準(zhǔn)確率和較快速度的特點(diǎn),最終提出了對(duì)此類驗(yàn)證碼的改進(jìn)方法。

[1] MOIL S,SUEN C Y,YAMAMOTO K.Historical review of OCR research and development[J].Proceedings of IEEE,1992,80(7):1029 -1058.

[2] SIMARD P,STEINKRAUS D,PLATT J.Best practice for convolutional neural networks applied to visual document analysis[C].Los Alamitos:International Conference on Document Analysis and Recognition(ICDAR),IEEE Computer Society,2003:958 -962.

[3] AHN L,BLUM M,HOPPER N J,et al.The CAPTCHA web page[EB/OL].(2011 -03 -26)[2012 -03 -19]www.captcha.net.

[4] AHN L B,HOPPER M N.CAPTCHA:Using hard AI problems for security[J].Lecture Notes in Computer Sconce,2003,26(9):294 -311.

[5] HOCEVAR S.PWNtcha[EB/OL].(2010 -09 -08)[2012-02 -26]http://caca.Zoy.org.

[6] GREG M,JITENDRA M.Recognising objects in adversarial clutter:breaking a visual CAPTCHA[C].IEEE Conference on Computer Vision and Pattern Recognition(CVPR'03),2003,1:134 -141.

[7] HELLAPILLA K,LARSON K,SIMARD P,et a1.Computers beat humans at single character recognition in readingbased human interaction proofs[C].Stanford University,CA,USA:In Proceedings of the second Conference on Email and Anti-Spam,2005.

[8] YAN J,AHMAD A S E.A low - cost attack on a microsoft CAPTCHA[C].New York,USA:Proceedings of the ACM Conference Off Computer and Communications Security,ACM Press,2008:543 -554.

猜你喜歡
個(gè)字符字符識(shí)別字符
尋找更強(qiáng)的字符映射管理器
字符代表幾
一種USB接口字符液晶控制器設(shè)計(jì)
電子制作(2019年19期)2019-11-23 08:41:50
消失的殖民村莊和神秘字符
一種改進(jìn)深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)的英文字符識(shí)別
儀表字符識(shí)別中的圖像處理算法研究
基于CUDA和深度置信網(wǎng)絡(luò)的手寫字符識(shí)別
基于CUDA和深度置信網(wǎng)絡(luò)的手寫字符識(shí)別
不讓長文件名成為“絆腳石”
電腦迷(2014年8期)2014-04-29 07:37:40
機(jī)加工件點(diǎn)陣字符識(shí)別研究
河南科技(2014年3期)2014-02-27 14:05:36
邵东县| 桐乡市| 娄底市| 宿松县| 康保县| 长武县| 金华市| 湖南省| 乌兰浩特市| 方山县| 桃江县| 抚宁县| 吕梁市| 新密市| 安丘市| 双桥区| 桐柏县| 齐齐哈尔市| 珲春市| 双城市| 馆陶县| 应城市| 东港市| 西盟| 桑植县| 临汾市| 年辖:市辖区| 海口市| 河东区| 遂川县| 志丹县| 崇礼县| 含山县| 泌阳县| 敦煌市| 尉氏县| 绵阳市| 桂林市| 日照市| 都昌县| 新闻|