⑴ 用PHP、js寫判斷驗證碼是否正確,不要alert彈出框,我要的是在輸入之後顯示是否正確。
注冊按鈕綁定click 事件 事件開頭判斷 Checkvar();
如果是FORM 要在 聲明onsubmit="Checkvar();"
functionCheckvar(){
varvarcode=$("#vc");//這里獲取輸入的注冊碼
vartipsmsg=$("#msg")//提示框對象
$.ajax({
url:"checkcode.php?code="+varcode+"&",
async:false,//關閉非同步
success:function(data){用回調函數檢查伺服器返回的結果
if(data=="0"){未通過
tipsmsg.html('驗證碼錯誤');
returnfalse;
}else{//通過
tipsmsg.html('成功');
returntrue;
}
}
});
}
checkcode.php
<?
session_start();
if($code==$_SESSION["code"]){
echo"1";
}else{
echo"0";
}
?>
⑵ js逆向——驗證碼案例【極驗3滑動模式】
生成w以及相關參數
演算法包括RSA,AES,MD5
驗證流程分析
首先,分析抓包,只需請求1到6步驟
獲取驗證碼圖片
第一步:獲取gt和challenge,直接請求
第二步:帶上gt、challenge、w置空請求介面,返回slide類型驗證碼
第三步:再次請求,獲取驗證碼信息,包括背景圖、缺口圖,取出新c、s、challenge(c不變)
注意:返回的challenge與前值尾部多兩個字元
圖片亂碼,需要還原底圖
識別方式:觀察使用canvas繪圖(F12查看元素)
方法一:打上canvas斷點,觀察繪制過程
方法二:hook canvas對象創建,直接網路參考代碼
還原後圖片類似下圖
識別缺口距離,可手動或第三方平台,選擇dddocr識別
生成軌跡:參考緩動函數,上代碼
加密軌跡提交:搜索w,JS內部編碼,查找編碼,參考JS逆向實戰
解密u參數:滑塊操作後,進入查看,發現生成隨機數加密
使用python實現RSA解密
L參數解析:分析參數對象,找出關鍵參數,通過方法實現
V方法解析:AES加密,通過庫實現
h參數解析:m['$_FEE']加密l參數,進入$_FEE查看,發現返回參數
進入e查看,返回res和end
完成混淆還原
w計算:w = h + u
結果展示
總結:流程分析抓包,獲取驗證碼信息,還原底圖,識別缺口,生成軌跡,加密提交,完成驗證
過程中遇到坑點,扣演算法和js帶來便利性,但需有經驗,全扣法可簡化,推薦新手嘗試
⑶ 基於Node.js要怎麼寫一個圖形驗證碼
要在Node.js中創建一個圖形驗證碼,可以使用canvas和crypto庫。首先,確保已經安裝了這兩個庫。在項目目錄中運行以下命令:
npm install canvas
接下來,創建一個名為captcha.js的文件,並按照以下步驟編寫代碼:
引入所需的庫:
const { createCanvas } = require('canvas');
const crypto = require('crypto');
創建一個生成隨機字元串的函數:
function generateRandomString(length) {
const characters = '';
let result = '';
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * characters.length));
}
return result;
}
創建一個生成驗證碼的函數:
function generateCaptcha(width, height) {
const canvas = createCanvas(width, height);
const ctx = canvas.getContext('2d');
// 設置背景色
ctx.fillStyle = '#f0f0f0';
ctx.fillRect(0, 0, width, height);
// 設置字體樣式
ctx.font = '24px Arial';
ctx.fillStyle = 'black';
// 生成隨機字元串
const captchaText = generateRandomString(6);
// 在畫布上繪制文本
ctx.fillText(captchaText, 10, 30);
// 添加一些干擾線
for (let i = 0; i < 5; i++) {
ctx.beginPath();
ctx.moveTo(Math.random() * width, Math.random() * height);
ctx.lineTo(Math.random() * width, Math.random() * height);
ctx.strokeStyle = `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})`;
ctx.stroke();
}
// 將驗證碼圖片轉換為DataURL
const dataUrl = canvas.toDataURL();
return { captchaText, dataUrl };
}
使用生成的驗證碼:
const { captchaText, dataUrl } = generateCaptcha(150, 50);
console.log(`Captcha Text: ${captchaText}`);
console.log(`Captcha Image (DataURL): ${dataUrl}`);
現在,可以運行captcha.js文件以生成圖形驗證碼:
node captcha.js
這將生成一個隨機的驗證碼文本和對應的圖像DataURL。你可以將此圖像DataURL插入到HTML的<img>標簽中以顯示驗證碼圖像,或者將其發送給客戶端以進行驗證。