A. discuz驗證碼背景的圖片在哪個文件夾下
那個圖片是不存在的,只是臨時生成的而已,不知道對不對?
我的窩居鄭州也是用DISCUZ做的,有空可以交流一下
B. 圖片驗證碼和文字驗證碼的區別
很多吧都這樣的!這個驗證碼被稱為貼吧神獸,是減緩爆吧速度的,可以去
貼吧
吧申請的
C. 驗證碼圖片製作
隨機圖片驗證碼的製作
以前寫的一個生成彩色驗證碼的例子。重載了makeCode()函數,即可以生成本地圖片,又可生成基於輸出流的圖片。
package smart.gui.util;
。。。
public class ColoredCodeMaker {
private final static String letterCollection =
"";
private String randomStr = "";
private RenderedImage renderedImg = null;
public ColoredCodeMaker(int width, int height, int letterCount) {
init(letterCount);
makeRenderedImage(width, height);
}
public String makeCode(OutputStream os) {
String formatName = "JPEG";
try {
ImageIO.write(this.renderedImg, formatName, os);
}
catch (Exception ex) {
return "";
}
return randomStr;
}
public String makeCode(File outputFileName) {
String formatName = "JPEG";
try {
ImageIO.write(this.renderedImg, formatName, outputFileName);
}
catch (Exception ex) {
return "";
}
return randomStr;
}
private void makeRenderedImage(int width, int height) {
if (width <= 0) {
width = 60;
}
if (height <= 20) {
height = 20;
}
/**
* TYPE_INT_RGB Represents an image with 8-bit RGB color components packed into integer pixels.
* The image has a DirectColorModel without alpha.
*/
BufferedImage bufImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
/**
* 獲取圖形上下文
*/
Graphics g = bufImage.createGraphics();
/**
* 設置背景色
*/
g.setColor(new Color(0xDCDCDC));
g.fillRect(0, 0, width, height);
/**
* 畫邊框
*/
g.setColor(Color.black);
g.drawRect(0,0,width-1,height-1);
/**
* 將認證碼顯示到圖像中
*/
g.setColor(Color.black);
g.setFont(new Font("Atlantic Inline",Font.PLAIN,18));
for (int i = 0; i < randomStr.length(); i++) {
g.drawString(randomStr.charAt(i)+"", width/(randomStr.length()+2)*(i+1), height/2 + 10);
}
Random random = new Random();
for (int i = 0; i < width/2; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
g.drawOval(x,y,1,1);
}
g.dispose();
this.renderedImg = bufImage;
}
private void init(int letterCount) {
if (randomStr.length() != letterCount) {
randomStr = "";
for (int i = 0; i < letterCount; i++) {
randomStr +=
letterCollection.charAt( (int) (letterCollection.length() *
Math.random()));
}
}
}
}
////////測試代碼,圖片寬150,高40,圖片上共8個隨機字元,保存在C盤下
ColoredCodeMaker ccm = new ColoredCodeMaker(150,40,8);
ccm.makeCode(new java.io.File("C:\\aaa.jpeg"));
----------------------------------------------------------------------------------------------------------------------------------------------用VB製作驗證碼生成器
演算法設計
1.窗體設計
啟動VB6並新建一個標准EXE工程,布置好控制項並設置好名稱。
接著將兩個圖片框的AutoRedraw屬性設置成True,txt_inp、cmd_browse的Enabled屬性設置為False,txt_inp的Maxlength屬性設置成10。然後單擊「工程→部件」,勾選「Microsoft CommonDialog Control 6.0」。
2.演算法
加密過程是程序的重點。在這里我們運用畫線和畫點函數來處理圖片,在圖片框上隨機選兩個點畫直線,同時用隨機函數確定它的顏色;再隨機點一個點,同樣用隨機函數確定它的顏色。在這里我們還用隨機取字體樣式和背景色,不過要注意的是,背景和字體顏色的差別要搞大一些,由於每個RBG分量值越大顏色越深,因此我們用下面兩條語句就可以增強顏色的對比度:
pic_las.ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
pic_las.BackColor = RGB(Rnd * 55, Rnd * 55, Rnd * 55)
繪制圖像的具體的代碼如下:
Sub AddPas()
On Error GoTo Err1
pic_las.Print Space(10 - Len(Result)); Result
Dim x, y, x1, x2, i As Integer
'隨機決定輸出字體樣式
pic_las.FontItalic = Int(Rnd * 2)
pic_las.FontUnderline = Int(Rnd * 2)
pic_las.ForeColor = RGB(Rnd * 155 + 100, Rnd * 155 + 100, Rnd * 155 + 100)
'為驗證碼添加隨機直線
For i = 1 To (Int(Rnd(1) * 8) + 1)
x = Int(Rnd * pic_las.Width): y = Int(Rnd * pic_las.Height)
x1 = Int(Rnd * pic_las.Width): Y1 = Int(Rnd * pic_las.Height)
pic_las.Line (x, y)-(x1, Y1), RGB(Rnd * 255, Rnd * 255, Rnd * 255)
Next i
'為驗證碼隨機添加圓點
For i = 1 To (Int(Rnd(1) * 200) + 100)
pic_las.PSet (pic_las.Width * Rnd, pic_las.Height * Rnd), _
RGB(Rnd * 255, Rnd * 255, Rnd * 255)
Next i
'寫入輸出文件
If chk_file.Value = 1 Then
SavePicture pic_las.Image, txt_outfile.Text
MsgBox "驗證碼已經保存在:" & txt_outfile.Text, VBInformation
End If
Exit Sub
Err1: '產生了錯誤
MsgBox Err.Number & ":" & Err.Description, VBExclamation
End Sub
內容處理好了,接下來就只要簡單響應用戶的操作即可。在這里我們還需要解決隨機生成驗證碼的問題,我們可以把需要生成的驗證碼每一位都放入一個字元串,再用隨機函數以及字元串截取函數Mid(String,Start As Long,[Length])讀入每一位驗證碼。另外為了增強程序的功能,我還允許用戶保存和拷貝驗證碼以及允許用戶自行定義驗證碼。由於版面有限,這里就不給出完整的源程序了,你可以從http://www.cfan.com.cn/11program/200513/VBpass.zip下載到完整的源代碼。
總結
運行一下程序,「加密」效果還不錯吧。
這可不是一般的破解機器能識別得了的哦!當然你也可以將這個加密演算法運用到你個人的程序和論壇上去,它為程序的安全性提供了很好的保證呢!
D. checkcode.asp 如何生成透明背景的驗證碼圖片
打開這個文件,找一下:Response.ContentType = "Image/BMP"
有沒有這行,如果有改為Response.ContentType = "Image/GIF"
或者PNG試一下!
E. thinkphp3.2.3驗證碼在伺服器只顯示背景圖不顯示數字是怎麼回事
//thinkphp3.2.3默認驗證碼生成方法
$Verify=newThinkVerify();
$Verify->entry($id);
//thinkphp3.2.3默認驗證碼驗證方法
$Verify=newThinkVerify();
if(!$Verify->check($code,$id))$this->error('驗證碼錯誤');
驗證碼生成entry($id)中的$id必須和 驗證方法中check($code,$id)中的$id必須相同
這個是系統默認自帶的方法,注意,Verify() ,V是大寫的
F. 電腦進入所有有驗證碼的地方都有背景圖案,導致驗證碼不完整,看不到的現象,求高手解決!
可能是你不注意把系統的字體刪除了
G. 如何用c或c++生成類似驗證碼的圖片
博文還是挺多的,比方你搜
" c#圖片隨機驗證碼的實現",就是一篇
希望對你有幫助。
H. 在網頁中,伺服器端生成的驗證碼圖片有什麼要求,比如字體,顏色,圖片大小,干擾線等等
一.常見的驗證碼
1,四位數字,隨機的一數字字元串,最原始的驗證碼,驗證作用幾乎為零。
2,CSDN網站用戶登錄用的是GIF格式,目前常用的隨機數字圖片驗證碼。圖片上的字元比較中規中矩,驗證作用比上一個好。沒有基本圖形圖像學知識的人,不可破!可惜讀取它的程序,在CSDN使用它的第一天,好像就在論壇里發布了,真是可憐!
3,QQ網站用戶登錄用的是PNG格式,圖片用的隨機數字+隨機大寫英文字母,整個構圖有點張揚,每刷新一次,每個字元還會變位置呢!有時候出來的圖片,人眼都識別不了,厲害啊…
4,MS的hotmail申請時候的是BMP格式, 隨機數字+隨機大寫英文字母+隨機干擾像素+隨機位置。
5,Google的Gmail注冊時候的是JPG格式,隨機英文字母+隨機顏色+隨機位置+隨機長度。
6,其他各大論壇的是XBM格式,內容隨機。
二.驗證碼作用分析
驗證碼起源:因為攻擊者會使用有害程序注冊大量的 Web 服務帳戶(如 Passport)。攻擊者可以使用這些帳戶為其他的用戶製造麻煩,如發送垃圾郵件或通過同時反復登錄多個帳戶來延緩服務的速度。在大多數情況下,自動注冊程序不能識別此圖片中的字元。簡單的說呢,就是防止攻擊者編寫程序,自動注冊,重復登錄暴力破解密碼。驗證碼技術應運而生。
驗證碼實現流程:伺服器端隨機生成驗證碼字元串,保存在內存中,並寫入圖片,發送給瀏覽器端顯示,瀏覽器端輸入驗證碼圖片上字元,然後提交伺服器端,提交的字元和伺服器端保存的該字元比較是否一致。一致就繼續,否則返回提示。攻擊者編寫的robot程序,很難識別驗證碼字元,順利的完成自動注冊,登錄。。。。。。。。。而用戶可以識別填寫,所以這就實現了阻擋攻擊的作用。而圖片的字元識別,就是看圖片上的干擾強度了。就實際的效果來說,驗證碼只是增加攻擊者的難度,而不可能完全的防止。
1,論壇中的驗證碼的作用
目前,不少網站為了防止用戶利用機器人自動注冊、登錄、灌水,都採用了驗證碼技術。所謂驗證碼,就是將一串隨機產生的數字或符號,生成一幅圖片,圖片里加上一些干擾象素(防止OCR),由用戶肉眼識別其中的驗證碼信息,輸入表單提交網站驗證,驗證成功後才能使用某項功能。
因為你的WEB站有時會碰到客戶機惡意攻擊,其中一種很常見的攻擊手段就是身份欺騙它通過在客戶端腳本寫入一些代碼,然後利用其客戶機在網站論壇反復登陸,或者攻擊者創建一個HTML窗體,其窗體如果包含了你注冊窗體或發帖窗體等相同的欄位,然後利用"http-post"傳輸數據到伺服器,伺服器會執行相應的創建帳戶,提交垃圾數據等操作,如果伺服器本身不能有效驗證並拒絕此非法操作,它會很嚴重耗費其系統資源,降低網站性能甚至使程序崩潰.
而現在流行的判斷訪問WEB程序是合法用戶還是惡意操作的方式,就是採用 一種叫 "字元校驗"的技術.WEB網站像現在的動網論壇,他採用達到方法是為客戶提供一個包含隨即字元串的圖片,用戶必須讀取這些字元串,然後隨 登陸窗體或者發帖窗體等用戶創建的窗體一起提交.因為人的話,可以很容易讀出圖片中的數字,但如果是一段客戶端攻擊代碼,通過一般手段是很難識別驗證碼的.這樣可以確保當前訪問是來自一個人而非機器.
編程實現原理:使用某種動態編程語言,比如PHP,ASP,隨即生成一個隨機數,大多為4位數字和字母,或者是數字和字母的組合,生成以後,用GD庫的支持生成一張根據隨機數來確定的圖片,把隨機數寫入到session中,傳遞到要驗證的頁面,生成的圖片顯示給登陸著,並要求登陸者輸入該隨機數內容,提交到驗證頁面,驗證session的內容和提交的內容是否一致,這就是大致的思路!那麼怎麼編寫驗證碼程序呢,相信Google一下,就有很多現成的代碼。
2,申請QQ號時候驗證碼的作用
如今你要申請一個QQ號,需要輸入很復雜的驗證碼:驗證碼由若干個漢字組成,還加上了花哩唬哨的背景,使得有些漢字實在難以辨認。騰訊這么做,是為了防止有人利用軟體批量獲取QQ號碼----每次提交都要輸入隨機生成的驗證碼,這是軟體難以做到的。
三.圖片驗證碼技術之一:利用Xbm格式圖片
生成驗證代碼的技術有很多,這里只說與我們論壇有關系的這項技術。
x-xbitmap格式的圖片(以下簡稱為Xbm格式)特殊,就在於它並不跟gif,jpg等圖片格式一樣,是一個真正的純2進制圖片格式,而是ascii碼文件--換句話說,它是一個純文本文件,在Windows系統下,系統瀏覽器將它翻譯成圖片來進行顯示。
下面讓我們先來製作一個Xbm圖形格式圖片:
新建一個文本文件,將以下內容復制進去:
#define counter_width 48
#define counter_height 9
static unsigned charcounter_bits[]={ff,3c,7c,3c,70,3c,fe,7c,fe,7c,78,7c,ee,ee,ee,ee,7c,ee,e0,ee,60,ee,74,ee,70,fe,30,
fe,70,fe,38,ec,e0,ec,70,ec,1c,e0,ee,e0,70,e0,fe,7e,fe,7e,70,7e,fe,3c,7c,3c,70,3c}
然後,將此文本文件保存為名字為 test.Xbm的文件。
接下來,讓我們看看如果在ie中打開它,會出現什麼情形??(新開一個ie,然後將test.Xbm直接拖拽到它上面),哈,出現了如下圖一樣的情景,在瀏覽器中出來的,已經不是我們的文本,而是一個黑白的圖片了!
讓我們看看上面那代碼中,每一行的意義:
#define counter_width 48 這里定義了圖片的寬度,一般都設置為8的整數倍,因為我們想顯示的是6個數字,所以就設置成了8*6=48的寬度
#define counter_height 9 這里設置了圖片的高度,可以任意設置,但是注意,這里的數字直接決定了下面的數組中,是用幾組數來表示一個顯示出的數字
static unsigned char counter_bits[]={7c,3c,7c,3c,70,3c,fe,7c,fe,7c,78,7c,ee,ee,ee,ee,7c,ee,e0,ee,60,ee,74,ee,70,fe,30,
fe,70,fe,38,ec,e0,ec,70,ec,1c,e0,ee,e0,70,e0,fe,7e,fe,7e,70,7e,fe,3c,7c,3c,70,3c}
在這里,是圖片用來顯示內容的十六進制的代碼,在這里,是9*6=54個數字來表示,值得一提的是,由於在圖片顯示中,是顯示完了一行後,再顯示第2行,直到最後一行,因此更為准確的描述是6*9顯示,每6個數表示一行(因為我們顯示了6個數字),一共9行(我們的定義中,是採用的高度為9的數組)
正如static unsigned char英文意思為靜態的,無符號的,燒焦的。它只能用來顯示黑白兩種顏色。二進制中的1將來用顯示為黑色,0為白色。
因此,上面的7c、3c這樣的數字,就是一個256位的2進制,其中的1表示黑色,0表示白色,由此繪制出每個數字的圖形。
由於Xbm文件的性質決定,它只能顯示黑/白兩種顏色,而且以數組的方式來表現每個要顯示的圖形,註定了不能用它生成太復雜的圖案。那麼,這樣的圖片格式到底有什麼用呢??當然有的,不少asp論壇/聊天室的登陸驗證碼,就是用這樣的方法在asp中動態生成的。
四.為什麼要打補丁才能正常顯示呢?
在WindowsXP SP2更改後的安全策略中,因為基於安全因素的考慮,默認去掉了對 image/x-xbitmap 圖片格式的支持(該圖片的後綴名為Xbm)。,為什麼微軟在XP的SP2升級包中又要禁止掉它呢??這是因為Xbm的漏洞。
Microsoft Internet EXPlorer和Outlook EXPress在處理WEB頁,HTML郵件,EMAIL附件中畸形Xbm圖象文件會導致崩潰,問題存在於對Xbm文件中的內容缺少檢查,MSIE按照圖象規定的長度和寬度分配內存,攻擊者可以提高超大的長度和寬度數值導致系統消耗內存或者訪問沖突。
換句話說,如果構造一個長寬的尺寸特別大的Xbm文件,很容易導致Windows的內存耗盡,導致程序無響應或者死機。本身來說,這不算一個特別嚴重的漏洞,因為根據安全公告,無法造成溢出,不會存在太大的許可權漏洞。但是由於XP的SP2強調安全性,因此將Xbm功能禁用了。從這點上可以看出,SP2對於安全的確比較重視,將有漏洞的功能基本上都補上或禁用了,作為網路管理員,我對微軟的做法表示支持,因為操作系統默認設置的不安全,常常是造成非專業用戶被攻擊的首要因素。
解禁方法:
由此看出,以後我們訪問某些採用生成Xbm作為驗證代碼的站點的時候,就相當不方便了,如果有必要,可以通過簡單的操作注冊表恢復我們需要的功能。
打開注冊表(開始---運行---regedit----回車),然後進到鍵值[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet EXPlorer\Security]
將blockXbm的值改為00000000(dword,雙位元組),沒有的話新建立一個就可以了。
之後重新IE或者重新啟動機器,則Xbm格式的圖片就可以看到了。
五,Xbm的趨勢
從SP2禁止Xbm的趨勢看出,微軟打算似乎已經開始打算放棄對Xbm格式的支持了。那麼,作為程序編寫者,有必要未雨綢繆,尋找其他生成驗證碼的途徑。在php中,可以通過調用gd庫等方式生成jpg/gif等圖形格式的注冊驗證碼,那麼在asp中有其他的辦法么?
事實上圖片驗證密碼的關鍵是--不能在客戶端留下圖片的真實url,或可對應反推源地址的信息,因此asp可以採用以下2種方式實現支持SP2的圖形驗證碼。
如果是購買的虛擬主機,那麼可以採用將jpg/gif圖片放到資料庫,然後用session傳值的方式,最後利用asp直接從資料庫中輸出圖片,這方法的好處是不需要特別設置伺服器端,壞處則是每次生成驗證圖片時都會需要與資料庫連接,增加了開銷。
I. 為什麼驗證碼總是背景圖很亂
為了干擾軟體的自動識別,就是這樣。把字體無規律扭曲,背景弄花,就是防止用戶的密碼被暴力破解。也就是窮舉破解。
大家不要罵,站長也是有苦衷的。
J. php驗證碼圖片的背景色設置不了
$im=imagecreate(120,40);