57js加密AES返回数据加密第三弹

This commit is contained in:
luzhisheng 2023-02-10 15:30:06 +08:00
parent 58854c6321
commit 09d854f001
3 changed files with 56 additions and 20 deletions

View File

@ -0,0 +1,23 @@
const CryptoJS = require("crypto-js");
let secret_value = 'gRBuPrLd';
let secret = CryptoJS.enc.Utf8.parse(secret_value);
// 将加密结果转换为字符串
encrypted = "dQhIGlAcTdnWU456K3rsppWw0VNONWNuZC3Vm5+lvF8MGUUiQvGHMX6cRwlIgWM9K1Y+RU/AE9ZSin7zATIVEJK8A7spmboKSEA3833MZUOC/H+XmhrTVdwHDKpFhRlcUgaOTOqPql1X0im5TApZNgZDV0ZK3wT/FUxT9GGMT1545vFA0VmqQENhq94DtNiTivJP755tmpEjGCNMOCsPlC9LK51s4lEDBWVppHoUq1VolAhMmJH8+TKXTHbFXYbb1SVBIx2KNyPREP2/oeBv4KWXNiUUjseJK1Y+RU/AE9aoSPRsedoeBJK8A7spmboKOddnNI53/c5r+lQbS7KxsQ==";
// 解密,传入密文,密钥盒向量设置加密与填充模式
let decrypted = CryptoJS.AES.decrypt(encrypted, secret, {
// mode 支持 CBC, CFB,CTB,ECB,OFB,OFB, 默认CBC
mode: CryptoJS.mode.ECB,
// NoPadding, zeropadding 默认Pkcs7 即 pkcs5
padding: CryptoJS.pad.Pkcs7
});
console.log(secret);
console.log(decrypted);
// 将解密结果转换为utf8字符串
d = CryptoJS.enc.Utf8.stringify(decrypted);
console.log(d);

View File

@ -0,0 +1,26 @@
import base64
from Crypto.Cipher import AES
# AES
# 需要补位str不是16的倍数那就补足为16的倍数
def add_to_16(value):
while len(value) % 16 != 0:
value += '\0'
return str.encode(value) # 返回bytes
# 加密方法
def encrypt(key, text):
aes = AES.new(add_to_16(key), AES.MODE_ECB) # 初始化加密器
encrypt_aes = aes.encrypt(add_to_16(text)) # 先进行aes加密
encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8')
return encrypted_text
# 解密方法
def decrypt(key, text):
aes = AES.new(add_to_16(key), AES.MODE_ECB) # 初始化加密器
base64_decrypted = base64.decodebytes(text.encode(encoding='utf-8'))
decrypted_text = str(aes.decrypt(base64_decrypted), encoding='utf-8').replace('\0', '') # 执行解密密并转码返回str
return decrypted_text

View File

@ -1,19 +1,5 @@
import json
import requests import requests
import base64 from aes_encrypt import decrypt
from Crypto.Cipher import AES
def decrypt_aes(key, data):
"""AES解密"""
print(key)
print(data)
real_data = base64.b64decode(data)
my_aes = AES.new(str(key).encode('utf-8'), AES.MODE_ECB)
decrypt_data = my_aes.decrypt(real_data)
decrypt_data_str = str(decrypt_data, 'utf-8').replace('\\r', '').replace('', '').replace('', '')\
.replace('', '').replace('', '')
return json.loads(decrypt_data_str)
def challenge57(page): def challenge57(page):
@ -25,18 +11,19 @@ def challenge57(page):
} }
session.headers = headers session.headers = headers
response = session.request("POST", url, data=payload) response = session.request("POST", url, data=payload)
print(response.text) return response.json()
return response.text
def run(): def run():
data_num = 0 data_num = 0
for page in range(1, 101): for page in range(1, 101):
response_text = challenge57(page) response_json = challenge57(page)
result = json.loads(response_text).get('result') print(response_json)
result = response_json.get('result')
key = result[0:8] key = result[0:8]
data = result[8:] data = result[8:]
decrypt_data_dict = decrypt_aes(key, data)
decrypt_data_dict = decrypt(key, data)
data_list = decrypt_data_dict.get('data') data_list = decrypt_data_dict.get('data')
print(data_list) print(data_list)
for data in data_list: for data in data_list: