fix: return aes_key to frontend

This commit is contained in:
H3CoF6
2026-02-28 00:11:07 +08:00
Unverified
parent 2990e22001
commit a4c8d580eb
4 changed files with 15 additions and 14 deletions
+3 -3
View File
@@ -459,8 +459,8 @@ export const useApi = () => {
}
// 获取数据库密钥
const getDbKey = async () => {
return await request('/get_db_key')
const getKeys = async () => {
return await request('/get_keys')
}
// 获取图片密钥
@@ -509,7 +509,7 @@ export const useApi = () => {
getWrappedAnnual,
getWrappedAnnualMeta,
getWrappedAnnualCard,
getDbKey,
getKeys,
getImageKey,
getWxStatus,
}
+4 -6
View File
@@ -434,7 +434,7 @@
import { ref, reactive, computed, onMounted, onBeforeUnmount } from 'vue'
import { useApi } from '~/composables/useApi'
const { decryptDatabase, saveMediaKeys, getSavedKeys, getDbKey, getImageKey, getWxStatus } = useApi()
const { decryptDatabase, saveMediaKeys, getSavedKeys, getKeys, getImageKey, getWxStatus } = useApi()
const loading = ref(false)
const error = ref('')
@@ -541,7 +541,7 @@ const handleGetDbKey = async () => {
warning.value = '正在启动微信,请确保微信未开启“自动登录”,并在弹窗中正常登录。'
const res = await getDbKey()
const res = await getKeys()
if (res && res.status === 0) {
if (res.data?.db_key) {
@@ -703,13 +703,13 @@ const handleDecrypt = async () => {
if (!validateForm()) {
return
}
loading.value = true
error.value = ''
warning.value = ''
resetDbDecryptProgress()
try {
const canSse = process.client && typeof window !== 'undefined' && typeof EventSource !== 'undefined'
@@ -730,7 +730,6 @@ const handleDecrypt = async () => {
if (accounts.length > 0) mediaAccount.value = accounts[0]
} catch (e) {}
clearManualKeys()
currentStep.value = 1
await prefillKeysForAccount(mediaAccount.value)
@@ -827,7 +826,6 @@ const handleDecrypt = async () => {
loading.value = false
if (data.status === 'completed') {
clearManualKeys()
currentStep.value = 1
await prefillKeysForAccount(mediaAccount.value)
+4 -1
View File
@@ -204,13 +204,16 @@ class WeChatKeyFetcher:
logger.info("Cleaning up hook...")
wx_key.cleanup_hook()
aes_key = None # gemini !!! ???
xor_key = None
if found_md5_data and "|" in found_md5_data:
_, xor_key_dec = found_md5_data.split("|")
aes_key, xor_key_dec = found_md5_data.split("|")
xor_key = f"0x{int(xor_key_dec):02X}"
return {
"db_key": found_db_key,
"aes_key": aes_key,
"xor_key": xor_key
}
+4 -4
View File
@@ -53,14 +53,14 @@ async def get_saved_keys(account: Optional[str] = None):
}
@router.get("/api/get_db_key", summary="自动获取微信数据库与图片密钥")
@router.get("/api/get_keys", summary="自动获取微信数据库与图片密钥")
async def get_wechat_db_key():
"""
自动流程:
1. 结束微信进程
2. 启动微信
3. 根据版本注入双 Hook
4. 抓取 DB 与 图片密钥并返回
4. 抓取 DB 与 图片密钥(AES + XOR)并返回
"""
try:
keys_data = get_db_key_workflow()
@@ -68,7 +68,7 @@ async def get_wechat_db_key():
return {
"status": 0,
"errmsg": "ok",
"data": keys_data # 包含 db_key xor_key
"data": keys_data # 现在完美包含 db_key, aes_key, xor_key
}
except TimeoutError:
@@ -84,7 +84,7 @@ async def get_wechat_db_key():
"data": {}
}
@router.get("/api/get_image_key", summary="获取并保存微信图片密钥")
async def get_image_key(account: Optional[str] = None):