Initialize encryption and JavaScript reverse-engineering study repository

Document the project structure and setup while excluding local dependencies and IDE settings.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-10-09 23:25:05 +08:00
commit 418a0411d1
34 changed files with 1544 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
var crypro_js = require("crypto-js");
var source_data = "你好,世界!"
var aes_key = "1234567890abcdef"
var iv = "abcdef1234567890";
var byte_iv = crypro_js.enc.Utf8.parse(iv);
var key = crypro_js.enc.Utf8.parse(aes_key);
var data = crypro_js.enc.Utf8.parse(source_data);
function aes_ecb_encrypt() {
var encrypted = crypro_js.AES.encrypt(data, key, {
mode: crypro_js.mode.ECB, // 工作模式
padding: crypro_js.pad.Pkcs7 // 填充模式
})
return btoa(encrypted.toString()); // base64 返回
}
function aes_ecb_decrypt() {
var encrypt_data = atob(aes_ecb_encrypt());
var decrypted = crypro_js.AES.decrypt(encrypt_data, key, {
mode: crypro_js.mode.ECB, // 工作模式
padding: crypro_js.pad.Pkcs7 // 填充模式
})
return decrypted.toString(crypro_js.enc.Utf8);
}
console.log("密文结果: ", aes_ecb_encrypt())
console.log("明文结果: ", aes_ecb_decrypt())
function aes_cbc_encrypt() {
var encrypted = crypro_js.AES.encrypt(data, key, {
iv: byte_iv,
mode: crypro_js.mode.CBC, // 工作模式
padding: crypro_js.pad.Pkcs7 // 填充模式
})
return btoa(encrypted.toString());
}
function aes_cbc_decrypt() {
var encrypt_data = atob(aes_cbc_encrypt());
var decrypted = crypro_js.AES.decrypt(encrypt_data, key, {
iv: byte_iv,
mode: crypro_js.mode.CBC, // 工作模式
padding: crypro_js.pad.Pkcs7 // 填充模式
})
return decrypted.toString(crypro_js.enc.Utf8);
}
console.log("CBC 密文结果: ", aes_cbc_encrypt());
console.log("CBC 明文结果: ", aes_cbc_decrypt());

View File

@@ -0,0 +1,31 @@
import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
"""
des加解密,key长度有要求
key长度必须8字节(64bit)
aes加解密,key长度有要求
key长度必须16字节(128bit), 24字节(192bit), 32字节(256bit)
"""
def aes_encrypt(plain_text):
cipher = AES.new(des_key, AES.MODE_CBC, iv)
encrypted = cipher.encrypt(pad(plain_text.encode("utf-8"), AES.block_size))
return base64.b64encode(encrypted)
def aes_decrypt(cipher_text):
cipher = AES.new(des_key, AES.MODE_CBC, iv)
decrypt_byte_data = base64.b64decode(cipher_text)
decrypted = unpad(cipher.decrypt(decrypt_byte_data), AES.block_size)
return decrypted.decode("utf-8")
source_data = "你好,世界!"
des_key = "1234567890abcdef".encode("utf-8")
iv = "abcdef1234567890".encode("utf-8")
if __name__ == "__main__":
enc_data = aes_encrypt(source_data)
print(enc_data)
print(aes_decrypt(aes_encrypt(source_data)))

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,37 @@
import requests
import execjs
import time
headers = {
"Accept": "application/json, text/plain, */*",
"Accept-Language": "zh-CN,zh;q=0.9",
"Connection": "keep-alive",
"Referer": "https://jzsc.mohurd.gov.cn/data/company",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-origin",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36",
"accessToken;": "",
"sec-ch-ua": "\"Chromium\";v=\"152\", \"Not?A_Brand\";v=\"24\", \"Google Chrome\";v=\"152\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"timeout": "30000",
"v": "231012"
}
with open("js解密.js", "r", encoding="utf-8") as f:
js_code = f.read()
code = execjs.compile(js_code)
url = 'https://jzsc.mohurd.gov.cn/APi/webApi/dataservice/query/comp/list'
for page in range(1, 11):
params = {
"pg": str(page),
"pgsz": "15",
"total": "450"
}
response = requests.get(url, headers=headers, params=params)
# print(response.text)
result = code.call("g", response.text)
print(result)
time.sleep(1)