一、加密后的数据变形
二、加密函数的定义
def encrypt_message(message):
cipher = AES.new(key, AES.MODE_ECB)
padded_message = pad(message.encode(), AES.block_size, style='pkcs7')
cliphertext = cipher.encrypt(padded_message)
return cliphertext
首先要调用
from Crypto.Cipher import AES from Crypto.Util.Padding import pad
这里要说的是pkcs7的使用
三、页面调用

页面公告的内自动化找到标题和链接
from DrissionPage import ChromiumPage, ChromiumOptions
from Crypto.Cipher import AES
import base64
# chrome:version
co=ChromiumOptions().set_paths(browser_path=r"C:\Users\lenovo\AppData\Local\Google\Chrome\Application\chrome.exe")
page = ChromiumPage(co)
page.get("http://ggzy.zwfwb.tj.gov.cn/")
page.wait.load_start()
for art in page.eles('x://div[@id="message-shu1"]/ul/li', timeout=5):
art_name = art.ele('x://div[@class="xw-w"]/a').text
art_url = art.ele('x://div[@class="xw-w"]/a').attr("href")
art_time = art.ele('x://div[@class="xw-time"]').text
print(art_name, art_url, art_time)
s = art_url.split('/')[4].split('.')[0]
四、分析链接
# http://ggzy.zwfwb.tj.gov.cn /zwyw/ZX8N+%5EdXMw4NiFQnAayv%5Ew.jhtml # http://ggzy.zwfwb.tj.gov.cn:80/zwyw/1147530.jhtml
地址域名是去掉80端口1147530加密成了ZX8N+%5EdXMw4NiFQnAayv%5Ew
五、代码实现
从获取的地址 s = art_url.split('/')[4].split('.')[0]找到加密的数据源

通过点击事件找到函数
这段代码中找到key ,转换成二进制encode('utf-8')
key = 'qnbyzzwmdgghmcnm'.encode('utf-8')
def encrypt_message(message):
cipher = AES.new(key, AES.MODE_ECB)
padded_message = pad(message.encode(), AES.block_size, style='pkcs7')
cliphertext = cipher.encrypt(padded_message)
return cliphertext
cs = s
print(cs)
encs=base64.b64encode(encrypt_message(cs)).decode("utf-8")
print(str(encs))
加密后的数据是二进制 通过b64变成字符再decode变成字符串
# b'ZX8N+ / dXMw4NiFQnAayv / w==' # ZX8N+ %5EdXMw4NiFQnAayv %5Ew
比较两个加密数据进行分割变将/替换成%5E
encs_spl=encs.rstrip('=').replace('/','%5E')
print(encs_spl)
newurl = f'http://ggzy.zwfwb.tj.gov.cn/zwyw/' + encs_spl + '.jhtml'
找到新的地址

验证成功,打开页面
992

被折叠的 条评论
为什么被折叠?



