TP Tron Type-Confusion (所见非所签) — 单文件版
等待 tronWeb...
源码已证TP白名单含approve/increaseAllowance/setApproveAll/permit2/transferFrom等,这些会被识别为授权。要测盲签必须用白名单外的自定义方法,如 withdrawTo/claim/execute/0xdeadbeef。看TP显示"Contract Call"(盲签面成立)还是"Unknown data,please upgrade"(兜底警示)。
JSON层=TransferContract 转账伪装; txID/raw_data_hex=USDT approve(DRAIN)。弹窗出现请截图: 显示"转账/TRX"=读JSON(所见≠所签); 显示"approve/授权/USDT合约"=读hex(安全)。
用 real approve 体 + TP签名广播。result/BANDWIDTH/CONTRACT_VALIDATE=签的是approve(WYSINWYS闭环); SIGERROR=TP重算签了transfer(安全); EXPIRATION=太慢重试。
构建真实 USDT approve(DRAIN, 额度), 不动JSON。截图弹窗: 是否清楚显示"授权/approve/spender=DRAIN/额度"? 若只显示"合约调用/0 TRX"而不译data => 用户看不懂=WYSINWYS风险面。
把伪装的 TransferContract 只传 raw_data, 删掉 raw_data_hex 和 txID。若TP接受并签名 => 它信任JSON自行序列化(签的是transfer); 据此探 protobuf层歧义。
raw_data=hex一致(过txCheck), 但用TP可能不认识的授权方法。截图弹窗: 显示"未知合约调用/不译方法"=盲签面成立(看不懂在授权); 仍红色识别为授权=TP有通用授权检测。截图后拒绝。