最近找工作被问到,就试试吧:
WX20220628-110049@2x.png
感觉。。。有时候挺重要的
WX20220628-111106@2x.png WX20220628-111655@2x.png
在getData()上面每一步细看看,在1680行这里断下,一步一步走到1674:
WX20220628-112437@2x.png明文数据获取到了,接下来就要找到加密的位置
这次从上往下找initiator
WX20220628-115014@2x.png WX20220628-123829@2x.png断点设在这里一步一步调可以找到,不赘述了
其实更简单的方法是搜索关键字,加密就搜索encrypted,decrypt,aes,md5,key。。。试试,竟然发现了:
WX20220628-124149@2x.png
WX20220628-124306@2x.png
那我们就来测试一下:
把请求里的data拿出来解密一下:
WX20220628-124357@2x.png
转成Python代码
from pyDes import des, CBC, PAD_PKCS5,ECB
from Crypto.Cipher import DES,AES
def add_to_16(text):
if len(text.encode('utf-8')) % 16:add = 16 - (len(text.encode('utf-8')) % 16)
else:add = 0
text = text + ('\0' * add)
return text.encode('utf-8')
def encryt_cbc(text, key, iv):
'''CBC '''
cipher = AES.new(key, AES.MODE_CBC,iv)
x = AES.block_size - (len(text) % AES.block_size)
if x != 0:text = text + chr(x)*x
msg = cipher.encrypt(text)
# msg = base64.urlsafe_b64encode(msg).replace('=', '')
msg = base64.b64encode(msg)
return msg.decode()
def decrypt_cbc(data, key,iv):
try:
aes = AES.new(key, AES.MODE_CBC,iv) # 初始化加密器
decrypted_text = aes.decrypt(base64.decodebytes(bytes(data, encoding='utf8'))).decode("utf8") # 解密
decrypted_text = decrypted_text[:-ord(decrypted_text[-1])] # 去除多余补位
except Exception as e:
pass
return decrypted_text
iv='c558Gq0YQK2QUlMc'.encode()
text='太长了,不复制了'
key = 'C0FQvqYZuR+f2lnWnDKo+d5w5OXgy=Jf'.encode('utf-8')
text=decrypt_cbc(text,key,iv)
把response的data粘过来运行一下:
WX20220628-124934@2x.png
网友评论