【JS逆向】探索文章链接地址AES加密后如何再次替换变形

一、加密后的数据变形

二、加密函数的定义

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'

找到新的地址

验证成功,打开页面

  • 27
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青龙摄影

你的鼓励是我创作的动力,支持下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值