萬盛學電腦網

 萬盛學電腦網 >> 加密技術 >> 破解圖片驗證碼限制的一般思路

破解圖片驗證碼限制的一般思路

  相信大家都有在論壇灌水的經歷吧?但是如果你連續發表統一內容的東西在論壇中,不久論壇的整個板塊就全是你發表的信息了,其他信息全被擠在了後面。假設你發表的信息夠多,版主都刪不完時,那麼這個論壇基本就報廢了!其他的商業論壇也意識到了防止惡意灌水的重要性,紛紛使用了一些防止惡意灌水的措施,有發貼間隔時間的限制、同一IP地址的發貼數限制、內容不能重復等,但是這些都不是今天的重點,由於論壇使用的是一個公用發貼表單,需要突破唯一的難點是驗證碼。(為了防止某個黑客對某一個特定注冊用戶用特定程序暴力破解方式進行不斷的登陸嘗試或是防止不斷提交某網絡信息而采用的一種網絡通行方式。隨機生成字符信息放入圖片中,防止計算機直接識別。比如招商銀行的網上個人銀行,騰訊的QQ社區等等)

  驗證碼分為如下幾類:數字型、字符型、符號型、綜合型。

  一般驗證碼屬於數字型的,不過有的圖片中生成了不少彩色和黑白的噪音點(指驗證圖片上的斑點)。那麼我們應該怎麼去識別呢?傳統的驗證碼識別方式很簡單,由於數字的位置是固定的,所以我們只需要提取每一幅數字的圖片(沒有噪音點的)然後把每一個特殊數字獨有的象素位置記錄下來,然後在網絡上提取需要破解的特征碼,祛除噪音點,對其位置和記錄位置進行比對,那就是麼就能確定相應的數字了。

  總結一下傳統的就是:

  1.先分析驗證碼,前景顏色是否不定

  2.然後把驗證碼的寬度/驗證碼文字個數,比如一驗證碼下載後寬度為60,有4個數字,那麼就60/4=15,然後保存每個字,如果只有數字保存0-9數字到位圖文件,如果英文那更麻煩點,0-9,A-Z都要保存到位圖,位圖的前景色都不變,保持一種顏色,背景隨便你改不改

  3.如果前景要變則將文字統一為同種顏色,每個數字0-9的點陣都有個公共點,取該公共點顏色然後把前景全部統一成一種顏色,比如白色{255,255,255},位圖的結構是BGR,而不是RGB

  4.然後進行比較,如果驗證碼的一點為白色,第2步保存的位圖同一點也是白色,那麼頻率增加1

  5.最後頻率最高的就是驗證碼了!

  接下來要做的就是做個post程序了,這個太簡單了,代碼你就自己寫吧!不過也要做到如下細節:做成多線程程序進行發貼,不然程序會失去響應的。最好是可以導入大量的代理IP的,然後就是發貼的內容最後加上幾個隨機字符,這樣可以防止重復貼的過濾!最重要的,只是做測試,發貼量不要太多、不要亂發廣告貼!

  其實上述方法已經不是只是對驗證碼進行識別了,完全可以用到現實生活中去,比如說手寫體識別、車牌識別等等,但是現實生活中我們還要進行更多的加工,比如說圓形檢測,多邊形檢測等等。所以說從網絡安全技術中,也有很多東西能造福社會,還等待我們繼續創造!

copyright © 萬盛學電腦網 all rights reserved