酷安App V2 Token逆向分析
仅用于研究和学习使用,禁止将相关技术应用到不正当途径,如侵犯隐私或权益,请联系我立即删除
前言
最近网上冲浪的时候,看到一篇关于酷安Token逆向的文章,闲着没事就抓包了最新版酷安,发现酷安已经更换Token算法了。
旧token:
c1c8fbb158ddf11f698ee7e545f5ea2b34de7eef-8400-3300-8922-a1a34e7b9b4f0x5fc50882
新token:
v2JDJ5JDEwJE1UWTJNVFV4TWpNM013LzU1MjI0NXVFMlRWWUROYVFNQnZRL0NOMDUyUHNxQ0JaN3BYZGdh
新Token代码
逆向经过就不多写了,跟上面所提到的文章差不多,Token算法在native层,native分析完了就解出来了。
用Python简单实现了下:
import hashlib
import datetime
import base64
import re
import bcrypt
def get_v2_token(device_code: str):
format_base64 = re.compile('\\r\\n|\\r|\\n|=')
token_part1 = "token://com.coolapk.market/dcf01e569c1e3db93a3d0fcf191a622c?"
device_code_md5 = hashlib.md5(device_code.encode('utf-8')).hexdigest()
timestamp = int(datetime.datetime.now().timestamp())
timestamp_md5 = hashlib.md5(str(timestamp).encode('utf-8')).hexdigest()
timestamp_base64 = re.sub(format_base64, '', base64.b64encode(str(timestamp).encode('utf-8')).decode())
token = f'{token_part1}{timestamp_md5}${device_code_md5}&com.coolapk.market'
token_base64 = re.sub(format_base64, '', base64.b64encode(token.encode('utf-8')).decode())
token_base64_md5 = hashlib.md5(token_base64.encode('utf-8')).hexdigest()
token_md5 = hashlib.md5(token.encode('utf-8')).hexdigest()
arg = f'$2y$10${timestamp_base64}/{token_md5}'
salt = (arg[:31] + 'u').encode('utf-8')
crypt = bcrypt.hashpw(token_base64_md5.encode('utf-8'), salt)
crypt_base64 = base64.b64encode(crypt).decode()
return f'v2{crypt_base64}' // token