c驗證碼識別源碼
① 用c語言編寫驗證碼
個人覺得,提問者的難點應該是在隨機生成4個漢字,至於驗證什麼的應該不是問題。
4個漢字其實就是8個位元組,主要是得搞清楚漢字是擴展ascii嘛的取值范圍,然後用隨機函數生成這個范圍的值就OK了。
② 急求!1急求!!用c語言實現類似網頁驗證碼的演算法。拜託啦!!!
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intisright()
{
inti,input,letter,flag=0;
intt[4],num,upper,lower;
chara,b,c,d;
//隨機數產生
srand((unsigned)time(NULL));
for(i=0;i<4;i++)
{
input=rand()%3;//驗證碼可能為:數字、大寫字母、小寫字母
if(input==0){num=rand()%10+48;printf("%c",num);t[i]=num;}//數字
letter=rand()%26;
if(input==1)//大寫字母
{upper=letter+65;printf("%c",upper);t[i]=upper;}
if(input==2)//小寫字母
{lower=letter+97;printf("%c",lower);t[i]=lower;}
}
printf(" ");
//for(i=0;i<4;i++)
//printf("%c",t[i]);
scanf("%c%c%c%c",&a,&b,&c,&d);//輸入驗證碼
if(a==t[0]&&b==t[1]&&c==t[2]&&d==t[3])
printf("驗證碼正確 ");//驗證碼匹配
else{printf("驗證碼錯誤 ");flag=1;}
returnflag;//錯誤則返回1,正確返回0
}
main()
{
intsum=0,i,error;
for(i=0;;i++)
{
error=isright();
sum=sum+error;//統計錯誤次數
if(sum==3){printf("輸入次數達上限! ");break;}//錯誤3次,程序結束
}
}
③ C語言識別驗證碼
用PHP或ASP應該可以識別,C語言網上的資料是少的可憐。換種思路就好了
④ c#, 網頁驗證碼, 漢字計算邏輯驗證碼源碼。
定義a,b,c
隨機生成a,b
判斷a
>=b?c=1:c=-1
session["c"]=a+(b*c);
string
str=a.ToString()+(c>0?"加":"減")+b.ToString()+"=?";
然後把str畫出圖片
至於將字元串畫到圖像里
你自己去
網路吧
⑤ 如何用c語言實現驗證碼的校驗
什麼校驗方法?
CRC檢驗如下:
#include<stdio.h>
int binaryToDec(char *str)
{
unsigned n=0;
while(*str!='\0')
{
if(*str<'0'||*str>'9')return -1;
n=n*2+(*str-'0');
str++;
}
return n;
}
void printBinary(int n)
{
if(n>1)printBinary(n/2);
printf("%d",n%2);
}
void main()
{
unsigned n,m,CRC=0x1A8000,fD=0x100000;
char CRC16[32];
while(1)
{
printf("輸入16位校驗碼:");
gets(CRC16);
n=binaryToDec(CRC16);
if(n>65535)
printf("輸入值過長,請重新輸入\n");
else break;
}
n<<=5;//n左移5位
m=n;//m等於n
while(fD>0x20)
{
while( !(m&fD) && !(CRC&1) )//保證被除數第一位為1
{
CRC>>=1;//除數右移一位
fD>>=1;//被除數首位的標志位右移一位
}
m=m^CRC;//被除數與除數相異或
}
n+=m;//模二餘數相加
printf("輸出21位校驗碼:");
printBinary(n);
printf("\n");
getchar();
}
⑥ 我想實現一個簡單的驗證碼驗證,請問如何在javascript中使用EL表達式
把這個session的值讀到html裡面即可
比如:
var x=<c:out value="${驗證碼session名}" />;
然後再把x和用戶輸入的驗證碼比較
--------
問題是你這樣的做法完全忽視了驗證碼的本質,為什麼存在圖片驗證碼,而不是在html中顯示文字驗證碼呢?就是怕被別人獲取源代碼識別驗證碼,而識別圖片就要難一些。
因此你這樣的做法欠妥。
⑦ 如何利用python做簡單的驗證碼識別
1摘要
驗證碼是目前互聯網上非常常見也是非常重要的一個事物,充當著很多系統的防火牆功能,但是隨時OCR技術的發展,驗證碼暴露出來的安全問題也越來越嚴峻。本文介紹了一套字元驗證碼識別的完整流程,對於驗證碼安全和OCR識別技術都有一定的借鑒意義。
然後經過了一年的時間,筆者又研究和get到了一種更強大的基於CNN卷積神經網路的直接端到端的驗證識別技術(文章不是我的,然後我把源碼整理了下,介紹和源碼在這裡面):
基於python語言的tensorflow的『端到端』的字元型驗證碼識別源碼整理(github源碼分享)
2關鍵詞
關鍵詞:安全,字元圖片,驗證碼識別,OCR,Python,SVM,PIL
3免責聲明
本文研究所用素材來自於某舊Web框架的網站完全對外公開的公共圖片資源。
本文只做了該網站對外公開的公共圖片資源進行了爬取,並未越權做任何多餘操作。
本文在書寫相關報告的時候已經隱去漏洞網站的身份信息。
本文作者已經通知網站相關人員此系統漏洞,並積極向新系統轉移。
本報告的主要目的也僅是用於OCR交流學習和引起大家對驗證安全的警覺。
4引言
關於驗證碼的非技術部分的介紹,可以參考以前寫的一篇科普類的文章:
互聯網安全防火牆(1)--網路驗證碼的科普
裡面對驗證碼的種類,使用場景,作用,主要的識別技術等等進行了講解,然而並沒有涉及到任何技術內容。本章內容則作為它的技術補充來給出相應的識別的解決方案,讓讀者對驗證碼的功能及安全性問題有更深刻的認識。
5基本工具
要達到本文的目的,只需要簡單的編程知識即可,因為現在的機器學習領域的蓬勃發展,已經有很多封裝好的開源解決方案來進行機器學習。普通程序員已經不需要了解復雜的數學原理,即可以實現對這些工具的應用了。
主要開發環境:
python3.5
python SDK版本
PIL
圖片處理庫
libsvm
開源的svm機器學習庫
准備原始圖片素材
圖片預處理
圖片字元切割
圖片尺寸歸一化
圖片字元標記
字元圖片特徵提取
生成特徵和標記對應的訓練數據集
訓練特徵標記數據生成識別模型
使用識別模型預測新的未知圖片集
達到根據「圖片」就能返回識別正確的字元集的目標
- def get_feature(img): """
- 獲取指定圖片的特徵值,
- 1. 按照每排的像素點,高度為10,則有10個維度,然後為6列,總共16個維度
- :param img_path:
- :return:一個維度為10(高度)的列表 """
- width, height = img.size
- pixel_cnt_list = []
- height = 10 for y in range(height):
- pix_cnt_x = 0 for x in range(width): if img.getpixel((x, y)) == 0: # 黑色點
- pix_cnt_x += 1
- pixel_cnt_list.append(pix_cnt_x) for x in range(width):
- pix_cnt_y = 0 for y in range(height): if img.getpixel((x, y)) == 0: # 黑色點
- pix_cnt_y += 1
- pixel_cnt_list.append(pix_cnt_y) return pixel_cnt_list
關於環境的安裝,不是本文的重點,故略去。
6基本流程
一般情況下,對於字元型驗證碼的識別流程如下:
7素材准備
7.1素材選擇
由於本文是以初級的學習研究目的為主,要求「有代表性,但又不會太難」,所以就直接在網上找個比較有代表性的簡單的字元型驗證碼(感覺像在找漏洞一樣)。
最後在一個比較舊的網站(估計是幾十年前的網站框架)找到了這個驗證碼圖片。
原始圖:
然後就將圖片素材特徵化,按照libSVM指定的格式生成一組帶特徵值和標記值的向量文
⑧ 請問C語言驗證碼代碼怎麼打
用strcmp函數比較兩個字元串,你上圖一個生成的字元串,另一個輸入的字元串,把這兩個傳遞到函數里,函數返回0就說明兩個字元串相等,輸入正確,反之輸入錯誤。(頭文件導入string.h)。
⑨ 怎樣實現輸入驗證碼呢要用C語言的
#include <stdio.h>
#include <string.h>
main()
{
char a[15],i=3;
do{
printf("Password:");
gets(a);
if(strcmp(a,"hello")==0) break;//這里請連到你的密碼文件或者是連接到資料庫驗證,這里是 hello
}while(--i);
if(i==0) printf("Input errer 3 num.System close!\n");
else
{
//這里寫入你密碼正確要執行的代碼
}
}