1完整的AES加解密网页
使用步骤
-
保存HTML代码为
.html文件并在浏览器打开 -
打开开发者工具(F12)→ Console(控制台)
-
复制Hook代码到控制台执行
-
点击页面的"解密数据"按钮
-
观察控制台输出
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>AES加解密演示</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
.container { max-width: 800px; margin: 0 auto; }
.section { margin: 20px 0; padding: 20px; border: 1px solid #ddd; border-radius: 8px; }
textarea { width: 100%; height: 80px; margin: 10px 0; }
button { padding: 10px 20px; margin: 5px; background: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer; }
button:hover { background: #0056b3; }
.result { background: #f8f9fa; padding: 10px; border-radius: 4px; margin: 10px 0; }
.hook-info { background: #fff3cd; border-left: 4px solid #ffc107; padding: 10px; margin: 10px 0; }
</style>
</head>
<body>
<div class="container">
<h1>AES加解密演示 + Hook拦截</h1>
<!-- 加密区域 -->
<div class="section">
<h3>1. 填入需要加密的数据和密钥</h3>
<div>
<textarea id="plainText" placeholder="输入要加密的文本">这是秘密数据123</textarea>
<br>
<input type="password" id="encryptKey" placeholder="加密密钥" value="mySecretKey123">
<br>
<button onclick="encryptData()">加密数据</button>
</div>
<div class="result" id="encryptedResult"></div>
</div>
<!-- 解密区域 -->
<div class="section">
<h3>2. 解密数据</h3>
<div>
<textarea id="cipherText" placeholder="加密后的数据"></textarea>
<br>
<input type="password" id="decryptKey" placeholder="解密密钥" value="mySecretKey123">
<br>
<button onclick="decryptData()">解密数据</button>
<button onclick="autoTest()">自动测试</button>
</div>
<div class="result" id="decryptedResult"></div>
</div>
<!-- Hook区域 -->
<div class="section">
<h3>3. Hook拦截演示</h3>
<div class="hook-info">
<p>打开浏览器控制台(F12),粘贴下面的Hook代码,然后点击"解密数据"</p>
<button onclick="copyHookCode()">复制Hook代码到剪贴板</button>
</div>
<pre id="hookCode"></pre>
</div>
</div>
<script>
// AES加密函数
function encryptData() {
const plainText = document.getElementById('plainText').value;
const key = document.getElementById('encryptKey').value;
if (!plainText || !key) {
alert('请输入文本和密钥');
return;
}
try {
// 使用CryptoJS进行AES加密
const encrypted = CryptoJS.AES.encrypt(plainText, key).toString();
document.getElementById('encryptedResult').innerHTML =
`<strong>加密结果:</strong> ${encrypted}`;
document.getElementById('cipherText').value = encrypted;
} catch (error) {
alert('加密失败: ' + error.message);
}
}
// 原始的解密函数 - 这是我们要Hook的目标
function decryptData() {
const cipherText = document.getElementById('cipherText').value;
const key = document.getElementById('decryptKey').value;
if (!cipherText || !key) {
alert('请输入加密数据和密钥');
return;
}
try {
// 使用CryptoJS进行AES解密
const decryptedBytes = CryptoJS.AES.decrypt(cipherText, key);
const decryptedText = decryptedBytes.toString(CryptoJS.enc.Utf8);
if (!decryptedText) {
throw new Error('解密失败,可能是密钥错误');
}
document.getElementById('decryptedResult').innerHTML =
`<strong>解密结果:</strong> ${decryptedText}`;
return decryptedText;
} catch (error) {
alert('解密失败: ' + error.message);
return null;
}
}
// 网站内部使用的解密函数(模拟)
function internalDecrypt(data, secretKey) {
console.log('🔐 内部解密函数被调用');
const decrypted = CryptoJS.AES.decrypt(data, secretKey);
return decrypted.toString(CryptoJS.enc.Utf8);
}
// 自动测试函数
function autoTest() {
document.getElementById('plainText').value = '自动测试数据:' + new Date().toLocaleTimeString();
encryptData();
setTimeout(() => {
decryptData();
}, 500);
}
// 复制Hook代码到剪贴板
function copyHookCode() {
const hookCode = `// =====================
// Hook拦截解密函数代码
// 复制这段代码到控制台执行
// =====================
console.log('🔧 开始安装Hook...');
// 保存原始解密函数引用
const originalDecrypt = window.decryptData;
// Hook解密函数
window.decryptData = function(cipherText, key) {
// 获取参数(如果没有传入,从页面获取)
const actualCipherText = cipherText || document.getElementById('cipherText').value;
const actualKey = key || document.getElementById('decryptKey').value;
console.log('🚨 HOOK拦截到解密请求!');
console.log('📥 解密前数据:', actualCipherText);
console.log('🔑 使用的密钥:', actualKey);
console.log('📊 数据长度:', actualCipherText.length);
// 调用原始解密函数
const result = originalDecrypt.call(this, cipherText, key);
console.log('📤 解密后数据:', result);
console.log('✅ Hook拦截完成!');
console.log('----------------------------------------');
return result;
};
// 也Hook内部解密函数
const originalInternalDecrypt = window.internalDecrypt;
window.internalDecrypt = function(data, secretKey) {
console.log('🔍 拦截到内部解密函数调用!');
console.log('📥 解密前:', data);
console.log('🔑 密钥:', secretKey);
const result = originalInternalDecrypt.call(this, data, secretKey);
console.log('📤 解密后:', result);
console.log('----------------------------------------');
return result;
};
console.log('✅ Hook安装完成!现在尝试点击"解密数据"按钮');`;
navigator.clipboard.writeText(hookCode).then(() => {
alert('Hook代码已复制到剪贴板!请到控制台(F12)粘贴执行');
});
}
// 初始化显示Hook代码
document.getElementById('hookCode').textContent = `// =====================
// Hook拦截解密函数代码
// 复制这段代码到控制台执行
// =====================
console.log('🔧 开始安装Hook...');
// 保存原始解密函数引用
const originalDecrypt = window.decryptData;
// Hook解密函数
window.decryptData = function(cipherText, key) {
// 获取参数
const actualCipherText = cipherText || document.getElementById('cipherText').value;
const actualKey = key || document.getElementById('decryptKey').value;
console.log('🚨 HOOK拦截到解密请求!');
console.log('📥 解密前数据:', actualCipherText);
console.log('🔑 使用的密钥:', actualKey);
// 调用原始解密函数
const result = originalDecrypt.call(this, cipherText, key);
console.log('📤 解密后数据:', result);
console.log('✅ Hook拦截完成!');
return result;
};
console.log('✅ Hook安装完成!');`;
// 页面加载时自动加密一些数据
window.onload = function() {
setTimeout(autoTest, 1000);
};
</script>
</body>
</html>
2185

被折叠的 条评论
为什么被折叠?



