← 全部文章
逆向加密分析

某 App 会员校验逻辑分析(AES-ECB)

约 11 分钟SIKUAI

脱敏说明:AES 密钥、设备 ID 与 token 已脱敏,仅保留分析方法与流程。

2025-03-25

AES-ECB-PKCS5
密钥REDACTED

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from binascii import b2a_hex, a2b_hex

class AES_ECB_PKCS5Padding:
    def __init__(self, key):
        self.key = key
        self.mode = AES.MODE_ECB

    def encrypt(self, text):
        cipher = AES.new(self.key, self.mode)
        # 使用PKCS5Padding进行填充
        padded_text = pad(text.encode(), AES.block_size)
        cipher_text = cipher.encrypt(padded_text)
        # 将加密后的字符串转换为十六进制
        return b2a_hex(cipher_text)

    def decrypt(self, text):
        cipher = AES.new(self.key, self.mode)
        # 将十六进制字符串转换为字节
        cipher_text = a2b_hex(text)
        # 解密并进行unpadding
        plain_text = unpad(cipher.decrypt(cipher_text), AES.block_size)
        return plain_text.decode()

def aes_encrypt(key, text):
    aes = AES_ECB_PKCS5Padding(key)
    return aes.encrypt(text)

def aes_decrypt(key, text):
    aes = AES_ECB_PKCS5Padding(key)
    return aes.decrypt(text)

# 使用示例

if __name__ == '__main__':

    key = b'REDACTED'  # AES密钥长度必须是16、24或32字节

    # text = 'Hello, World!'

    text_hex = 'FC CB B1 22 C0 31 C6 62 21 38 DB 7D 18 0C 3A 1B BA 29 21 0A 23 A1 C7 23 46 34 B1 88 3A B5 B3 A4 C3 2B A3 04 2A 8B BE 65 3D 61 B7 FB EB 64 7C E4 18 D3 69 22 8E 74 A6 5E 46 AE 5B 5A F1 DE E0 8F 65 CA 28 A8 E0 92 1B 45 7B 3D BB 96 A3 39 CE C7 8A 78 CC 45 3D 69 48 1C 52 B3 06 CD 1C 38 FB E9 A5 31 8E FA 6F B8 B0 4F 49 D2 88 DA C5 56 9C 07 00 D2 60 79 21 81 29 A4 6A 99 94 B6 07 F0 A3 32 05 41 AC C7 AA 3A 6C B3 19 3D 82 27 20 31 02 5B 53 5B 5C 1C 6E 3B 85 0C A4 8E B8 55 57 5C F8 10 98 B8 C2 DD 4F 94 AB F9 14 FE 73 D8 EC 48 D8 A4 E9 0C EC 58 09 CD F4 26 A6 5F 90 6A AC 44 75 A4 33 62 CD 72 16 58 6F 70 58 01 FA A9 67 1C EA 9F 90 E3 5B 17 3E 06 79 78 F3 F9 DE C6 9A 9D 99 E9 04 10 C4 48 B9 31 33 3D 06 33 7D E6 06 27 44 E1 F0 8F 01 F4 77 50 CF 6D 69 E0 5C 7F 86 80 FB CF 14 67 38 F2 D9 69 D4 51 09 49 E5 FE BA 06 85 2B 4E 96 4E 50 72 96 11 EB 71 74 29 9F E9 80 4C 4D 37 E1 FC 24 6E 34 6E 06 2E F0 20 65 BE 99 99 51 57 8C B2 CC B8 52 95 56 68 0F 03 1A AC CE 8B 26 6E 5C C3 BB C3 95 8C 4D 9C 23 35 EA 38 39 A8 93 82 34 45 1F 28 B2 C1 8D BD E9 CA C6 10 0B 60 36 84 80 B5 DE D6 D4 54 E3 C8 4A 25 A5 9E 49 55 7C DD 02 26 6D 2C 25 CB FA 2D 36 E7 4B F8 76 84 64 BF 8B 63 40 FE 9B 2A 6D 55 1E 6D 38 69 44 53 E0 F2 9A 74 40 16 F8 EB C4 EA 94 9D 25 03 59 AC 0E A3 D6 DF 68 9C 84 3A E8 41 33 1C 0D E5 0C F4 5D 98 AB CE 84 E7 8C F6 46 A6 87 CF 54 AD 67 94 59 D6 36 A9 E3 E4 1D 30 FE 84 F7 B9 DE F9 52 16 B4 E5 1A 9E E5 F5 88 9E 25 94 DC 11 63 1B F2 60 AA A1 44 D3 B1 54 E9 A7 2C DE DD A0 E6 9F F9 FF E7 82 F1 59 8F 1D 48 33 A4 44 95 04 7E CC 68 8E 77 24 A2 46 5D A2 0E 58 D3 5F C4 13 E7 6C F6 3D 99 14 8A 7B 1B B8 31 A7 84 A3 AD E5 DF A5 0E A3 C9'

    # 解密

    text = aes_decrypt(key, str(text_hex).replace(' ', ''))

    print(text)

首次打开ping/index

curl -X POST 'http://api.e73xb8hagpgg.com/tkapi/ping/index' -H 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleDart/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' -H 'Connection: Keep-Alive' -H 'Accept-Encoding: gzip' -H 'Content-Type: application/octet-stream' -H 'deviceType: android' -H 'version: 3.1' -H 'time: 2025-03-25 14:49:44' --data-binary @"C:\Users\sikuai\AppData\Roaming\Reqable\tmp\e6c3c5a6-03ba-46a5-9530-eeb6d6c03a91" --http1.1

请求体Hex

09 F9 85 3A 94 0A 54 F2 FC E7 21 DE B2 EC 27 5B 3F 75 07 68 44 0B 36 05 70 F8 CE 8C 00 24 30 73 7C FC 81 31 59 27 46 A7 7C 69 00 C2 5D A7 97 CC 46 35 46 89 E0 CC 7A 47 2C B4 52 25 2F 5D D6 5A

{"deviceId":"REDACTED","token":"null_null"}

响应体Hex

C1 3C FD 88 9B 09 EF 66 40 15 59 B3 74 04 38 D6 05 A4 48 D1 FE 49 0B 93 1A EA AD 60 52 66 D0 90 A0 80 84 AF E2 DB 8B 0B 4C 8F CA 5F FC A8 74 C5 3B F0 15 B4 B2 79 2D 2B 40 35 54 AD F8 A4 2F 3E

{"status":"y","data":null,"time":"2025-03-25 14:49:43"}

上传邀请码system/info

curl -X POST 'http://api.e73xb8hagpgg.com/tkapi/system/info' -H 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleDart/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' -H 'Connection: Keep-Alive' -H 'Accept-Encoding: gzip' -H 'Content-Type: application/octet-stream' -H 'deviceType: android' -H 'version: 3.1' -H 'time: 2025-03-25 14:49:44' --data-binary @"C:\Users\sikuai\AppData\Roaming\Reqable\tmp\55bf7608-c363-45c7-b81d-f367713b81e9" --http1.1

请求体Hex

FC CB B1 22 C0 31 C6 62 21 38 DB 7D 18 0C 3A 1B BA 29 21 0A 23 A1 C7 23 46 34 B1 88 3A B5 B3 A4 C3 2B A3 04 2A 8B BE 65 3D 61 B7 FB EB 64 7C E4 18 D3 69 22 8E 74 A6 5E 46 AE 5B 5A F1 DE E0 8F 65 CA 28 A8 E0 92 1B 45 7B 3D BB 96 A3 39 CE C7 8A 78 CC 45 3D 69 48 1C 52 B3 06 CD 1C 38 FB E9 A5 31 8E FA 6F B8 B0 4F 49 D2 88 DA C5 56 9C 07 00 D2 60 79 21 81 29 A4 6A 99 94 B6 07 F0 A3 32 05 41 AC C7 AA 3A 6C B3 19 3D 82 27 20 31 02 5B 53 5B 5C 1C 6E 3B 85 0C A4 8E B8 55 57 5C F8 10 98 B8 C2 DD 4F 94 AB F9 14 FE 73 D8 EC 48 D8 A4 E9 0C EC 58 09 CD F4 26 A6 5F 90 6A AC 44 75 A4 33 62 CD 72 16 58 6F 70 58 01 FA A9 67 1C EA 9F 90 E3 5B 17 3E 06 79 78 F3 F9 DE C6 9A 9D 99 E9 04 10 C4 48 B9 31 33 3D 06 33 7D E6 06 27 44 E1 F0 8F 01 F4 77 50 CF 6D 69 E0 5C 7F 86 80 FB CF 14 67 38 F2 D9 69 D4 51 09 49 E5 FE BA 06 85 2B 4E 96 4E 50 72 96 11 EB 71 74 29 9F E9 80 4C 4D 37 E1 FC 24 6E 34 6E 06 2E F0 20 65 BE 99 99 51 57 8C B2 CC B8 52 95 56 68 0F 03 1A AC CE 8B 26 6E 5C C3 BB C3 95 8C 4D 9C 23 35 EA 38 39 A8 93 82 34 45 1F 28 B2 C1 8D BD E9 CA C6 10 0B 60 36 84 80 B5 DE D6 D4 54 E3 C8 4A 25 A5 9E 49 55 7C DD 02 26 6D 2C 25 CB FA 2D 36 E7 4B F8 76 84 64 BF 8B 63 40 FE 9B 2A 6D 55 1E 6D 38 69 44 53 E0 F2 9A 74 40 16 F8 EB C4 EA 94 9D 25 03 59 AC 0E A3 D6 DF 68 9C 84 3A E8 41 33 1C 0D E5 0C F4 5D 98 AB CE 84 E7 8C F6 46 A6 87 CF 54 AD 67 94 59 D6 36 A9 E3 E4 1D 30 FE 84 F7 B9 DE F9 52 16 B4 E5 1A 9E E5 F5 88 9E 25 94 DC 11 63 1B F2 60 AA A1 44 D3 B1 54 E9 A7 2C DE DD A0 E6 9F F9 FF E7 82 F1 59 8F 1D 48 33 A4 44 95 04 7E CC 68 8E 77 24 A2 46 5D A2 0E 58 D3 5F C4 13 E7 6C F6 3D 99 14 8A 7B 1B B8 31 A7 84 A3 AD E5 DF A5 0E A3 C9

{"data":{"clipboard_text":"share://BYSB","device_info":"{\"product\":\"PDRM00\",\"display\":\"PDRM00_11_A.29\",\"version.sdkInt\":\"30\",\"isPhysicalDevice\":\"true\",\"manufacturer\":\"OPPO\",\"version.codename\":\"REL\",\"bootloader\":\"unknown\",\"host\":\"ubuntu-9-169\",\"model\":\"PDRM00\",\"id\":\"RKQ1.200903.002\",\"version.release\":\"11\",\"brand\":\"OPPO\",\"device\":\"OP4EA7\",\"board\":\"kona\",\"hardware\":\"qcom\"}","channel_code":"channel://jhly155","app_code":"hw1"},"deviceId":"REDACTED","token":"null_null"} 

响应体Hex

{  
    "status": "y",  
    "data": {
		"token": {
            "token": "REDACTED",  
            "user_id": "676180",  
            "username": "BYSB",  
            "expired_at": "28800",  
            "ip": ""  
        }
	}
}

获取用户信息user/info

curl -X POST 'http://api.e73xb8hagpgg.com/tkapi/user/info' -H 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleDart/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' -H 'Connection: Keep-Alive' -H 'Accept-Encoding: gzip' -H 'Content-Type: application/octet-stream' -H 'deviceType: android' -H 'version: 3.1' -H 'time: 2025-03-25 14:49:54' --data-binary @"C:\Users\sikuai\AppData\Roaming\Reqable\tmp\d103389c-578b-4a9f-89cd-db8223cb27d2" --http1.1

请求体

{"deviceId":"REDACTED","token":"REDACTED"}

响应体

{"status":"y","data":{"user_id":"676180","img":"https:\/\/vvai.lzuy.xyz\/ce218\/common_file\/headico\/nn1\/26.bnc","username":"BYSB","nickname":"\u91d1\u6bdb\u4e0e\u6469\u6258","sign":"\u6211\u4e0d\u662f\u6765\u6551\u4f60\u7684\uff0c\u6211\u662f\u6765\u7231\u4f60\u7684","phone":"","account_name":"device_67e24ee15f2ab","account_slat":"BYSB==>REDACTED","sex":"0","is_vip":"n","is_cy_vip":"n","is_up":"n","level":"0","group_style":"0","parent_name":"","group_name":"\u6e38\u5ba2","vip_buy_tips":"\u65b0\u4ebaVIP\u9650\u65f6\u6298\u6263||23:46:24","group_end_time":"","balance":"0","income":"0","integral":"0","is_new":"y"},"time":"2025-03-25 14:49:53"}

首页请求

curl -X POST 'http://api.e73xb8hagpgg.com/tkapi/movie/home' -H 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleDart/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' -H 'Connection: Keep-Alive' -H 'Accept-Encoding: gzip' -H 'Content-Type: application/octet-stream' -H 'deviceType: android' -H 'version: 3.1' -H 'time: 2025-03-25 14:49:54' --data-binary @"C:\Users\sikuai\AppData\Roaming\Reqable\tmp\acc2ef3a-6855-407f-afa8-d60c5b77e114" --http1.1

请求体

{"data":{"code":"shiping_jingxuan","position":"normal","page":1},"deviceId":"REDACTED","token":"REDACTED"}

响应体

省略