記一次測試網站關於登錄頁面為AES加密

滲透逆向 · 09-24 · 199 人浏览
記一次測試網站關於登錄頁面為AES加密

找登錄包后看到三個參數:
1.token(網頁刷新直接頁面就可以通過f12搜尋到)
2.email
3.password(加密)
2024-09-24T07:00:02.png

剩下就是尋找加密函數了,搜索token后看到頁面加密的位置,encryptPass('emailPwdInp'),那麽接下來搜索 encryptPass
2024-09-24T07:03:21.png
找到加密函數了
2024-09-24T07:08:02.png


function encrypt (str) {
  const key = CryptoJS.enc.Utf8.parse("idcsmart.finance")
  const iv = CryptoJS.enc.Utf8.parse("9311019310287172")
  var encrypted = CryptoJS.AES.encrypt(str, key, {
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7,
    iv: iv,
  }).toString()
  return encrypted
}

function encryptPass (id) {
  let pwd = document.getElementById(id)
  pwd.value = encrypt(pwd.value)
  return true
}

既然有了加密函數,那麽剩下的交給gpt來生成python代碼,如下:

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64

def encrypt_aes(data, key, iv):
  """
  使用 AES 加密數據

  Args:
      data: 需要加密的數據 (bytes)
      key: 密鑰 (bytes)
      iv: 初始化向量 (bytes)

  Returns:
      加密後的 Base64 編碼字串
  """

  cipher = AES.new(key, AES.MODE_CBC, iv)
  ciphertext = cipher.encrypt(pad(data, AES.block_size))
  return base64.b64encode(ciphertext).decode('utf-8')

def encrypt_password(password, key, iv):
  """
  加密密碼

  Args:
      password: 需要加密的密碼 (str)
      key: 密鑰 (bytes)
      iv: 初始化向量 (bytes)

  Returns:
      加密後的 Base64 編碼字串
  """

  return encrypt_aes(password.encode('utf-8'), key, iv)

# 示例用法
key = b'idcsmart.finance'  # 密鑰 (bytes)
iv = b'9311019310287172'  # 初始化向量 (bytes)
password = "[email protected]"  # 需要加密的密碼 (str)

encrypted_password = encrypt_password(password, key, iv)
print(encrypted_password)

這是python生成的和原網站生成的
2024-09-24T07:18:55.png
2024-09-24T07:19:16.png
教程結束。

本站立足于美利堅合衆國,請讀者自覺遵守當地法律!如有違規,本站不承擔任何法律責任! This site is based in the United States of America, readers are requested to abide by local laws! If there are any violations, this site does not bear any legal responsibility! Theme Jasmine by Kent Liao