From 58854c632183ef70d57ca76a7c9320172a275035 Mon Sep 17 00:00:00 2001 From: luzhisheng Date: Fri, 10 Feb 2023 15:29:47 +0800 Subject: [PATCH] =?UTF-8?q?60js=E5=8A=A0=E5=AF=86=E8=BD=BB=E6=B7=B7url?= =?UTF-8?q?=E5=8A=A0=E5=AF=86-AES?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../60js加密轻混url加密-AES/aes-test.js | 23 ++++++++++++ .../60js加密轻混url加密-AES/aes_encrypt.py | 26 ++++++++++++++ 猿人学练习/60js加密轻混url加密-AES/main.py | 35 +++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 猿人学练习/60js加密轻混url加密-AES/aes-test.js create mode 100644 猿人学练习/60js加密轻混url加密-AES/aes_encrypt.py create mode 100644 猿人学练习/60js加密轻混url加密-AES/main.py diff --git a/猿人学练习/60js加密轻混url加密-AES/aes-test.js b/猿人学练习/60js加密轻混url加密-AES/aes-test.js new file mode 100644 index 0000000..b2013fe --- /dev/null +++ b/猿人学练习/60js加密轻混url加密-AES/aes-test.js @@ -0,0 +1,23 @@ +const CryptoJS = require("crypto-js"); + +let value = "5"; //待加密的字符串 +let secret_value = "aiding88"; + +// 密匙和向量处理 +let secret = CryptoJS.enc.Utf8.parse(secret_value); + +// 加密 +let encrypted = CryptoJS.AES.encrypt(value, secret, { + // mode 支持 CBC, CFB,CTB,ECB,OFB,OFB, 默认CBC + mode: CryptoJS.mode.ECB, + + // NoPadding, zeropadding 默认Pkcs7 即 pkcs5 + padding: CryptoJS.pad.Pkcs7 +}); + +// 将加密结果转换为字符串 +encrypted = encrypted.toString(); + +console.log(secret); +console.log(value); +console.log(encrypted); \ No newline at end of file diff --git a/猿人学练习/60js加密轻混url加密-AES/aes_encrypt.py b/猿人学练习/60js加密轻混url加密-AES/aes_encrypt.py new file mode 100644 index 0000000..6f56d38 --- /dev/null +++ b/猿人学练习/60js加密轻混url加密-AES/aes_encrypt.py @@ -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 diff --git a/猿人学练习/60js加密轻混url加密-AES/main.py b/猿人学练习/60js加密轻混url加密-AES/main.py new file mode 100644 index 0000000..e131353 --- /dev/null +++ b/猿人学练习/60js加密轻混url加密-AES/main.py @@ -0,0 +1,35 @@ +import requests +from aes_encrypt import decrypt, encrypt + + +def challenge60(page, encrypted_text): + url = f"https://www.python-spider.com/api/challenge60/{encrypted_text}" + print(url) + payload = f"page={page}" + session = requests.session() + headers = { + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + session.headers = headers + response = session.request("POST", url, data=payload) + return response.json() + + +def run(): + data_num = 0 + for page in range(5, 101): + print('aiding88', str(page)) + encrypted_text = encrypt('aiding88', str(page)) + print(encrypted_text) + response_json = challenge60(page, encrypted_text) + data_list = response_json.get('data') + print(data_list) + exit() + for data in data_list: + data_num += int(data.get('value')) + print(data_num) + print(data_num) + + +if __name__ == '__main__': + run()