您的位置:首页 > 财经 > 产业 > 搜索引擎优化特点_宁波谷歌优化_网络市场调研的方法_东莞网站建设

搜索引擎优化特点_宁波谷歌优化_网络市场调研的方法_东莞网站建设

2024/12/23 8:00:38 来源:https://blog.csdn.net/weixin_43845191/article/details/142524108  浏览:    关键词:搜索引擎优化特点_宁波谷歌优化_网络市场调研的方法_东莞网站建设
搜索引擎优化特点_宁波谷歌优化_网络市场调研的方法_东莞网站建设

此分享只用于学习用途,不作商业用途,若有冒犯,请联系处理

反爬前置信息

站点:aHR0cHM6Ly96d2Z3LmNxLmdvdi5jbi9pY2l0eS9pY2l0eS9lbmdpbmVlcmluZy9uYXZpZ2F0aW9u
接口:/icity/api-v2/cq.app.icity.engineering.EngineeringCmd/getBusinessList
加密点:
在这里插入图片描述
在这里插入图片描述

逆向研究

老样子,看调用堆栈,直接进去红框的代码处
在这里插入图片描述

从这些代码我们可以拿到请求体原文,肯定是用它进行加密的,然后锁定cmd.setData(data);,大胆猜测加密就是在这里处理的
在这里插入图片描述

打上断点然后跟进去:cmd.setData(data);->$.extend(this.paramsObj, obj);
发现其实只是对请求体原文做一个处理,都没进行加密,不用说那就是cmd.executeAsync("getBusinessList")这个位置了

cmd.executeAsync("getBusinessList")打上断点跟进去,再进入红框代码
在这里插入图片描述

这里就能看到所有加解密操作了
在这里插入图片描述

addUrlAuth方法没啥难点,可以直接算法破解,其中__signature其实是在首页返回的,在整个破解过程中,我们需要从首页拿到XSRF-TOKENcookie和__signature
在这里插入图片描述

接下来看下加解密
在这里插入图片描述

使用文本解码就可以看到实际的文本代码了
在这里插入图片描述

其实就是原生的AES加密,这个也可以直接使用算法破解,注意加解密的key值是XSRF-TOKENcookie取十六位

算法破解

依赖包

import base64
import json
import random
import time
from binascii import hexlify
from binascii import unhexlify
from hashlib import md5import requests
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Util.Padding import unpad

addUrlAuth

def get_auth_params():sig = '__signature'chars = "0123456789abcdef"key = ''key_index = -1for i in range(6):c = sig[key_index + 1]key += ckey_index = chars.index(c)if key_index < 0 or key_index >= len(sig):key_index = itimestamp = str(int(random.random() * (9999 - 1000 + 1) + 1000)) + "_" + key + "_" + str(int(time.time() * 1000))tkey = md5((timestamp + base64.b64decode('eWVVUkx5VFpvdW00SzI3ZA==').decode()).encode()).hexdigest()return {'s': sig,'t': timestamp,'o': tkey,}

encrypt_a

def encrypt_a(plaintext, xsrf_token_prefix):key = xsrf_token_prefix.encode('utf-8')[:16]cipher = AES.new(key, AES.MODE_ECB)padded_data = pad(plaintext.encode('utf-8'), AES.block_size)encrypted_data = cipher.encrypt(padded_data)hex_encrypted_data = hexlify(encrypted_data).decode('utf-8')return hex_encrypted_data

decrypt_a

def decrypt_a(hex_encrypted_data, xsrf_token_prefix):encrypted_data = unhexlify(hex_encrypted_data)key = xsrf_token_prefix.encode('utf-8')cipher = AES.new(key, AES.MODE_ECB)decrypted_padded = cipher.decrypt(encrypted_data)return unpad(decrypted_padded, AES.block_size).decode('utf-8')

破解结果

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com