首页
社区
课程
招聘
[原创]趣智校园 app 分析
发表于: 2025-11-29 22:37 1638

[原创]趣智校园 app 分析

2025-11-29 22:37
1638

笔者由于学校热水器费用过高 :( 所以想看看热水器是如何工作的 :D ,故有此篇文章

JEB 使用无静态读取解密

不知道为什么程序采用了非 BLE 的蓝牙(普通蓝牙),所以程序代码要看 bt 的而不是 ble 的

似乎是 btBLE 的代码写反了(?

特别感谢:

ca1K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5k6i4q4S2j5X3I4W2i4K6u0W2j5$3!0E0i4K6u0r3P5X3S2Q4x3X3c8o6e0W2)9J5c8R3`.`. 提供的免费支持!(好用)

使用 wx sdk,获取 code 之后访问 oauth2 获取 identifier 值登录

e4eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0K6i4K6u0W2N6$3g2A6P5r3W2F1i4K6u0W2M7i4q4Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8$3y4Q4x3V1k6G2M7r3I4S2N6r3k6G2M7X3#2Q4x3V1k6y4L8$3u0A6L8r3g2Q4y4h3k6m8M7s2m8Q4x3V1k6i4k6f1y4Z5j5i4c8Q4y4h3k6x3L8$3N6A6L8W2)9J5c8V1c8W2N6X3g2D9L8%4m8E0k6h3&6@1i4K6g2X3c8%4g2A6k6r3g2Q4x3X3g2Z5N6r3#2D9

MD5(input) 后取后十位

以以下字段举例,首先键需要按照字典序进行排序,然后字符串拼接,<> 是不需要的

以上文本做一次 md5 后再做一次 md5,其中两次 md5 都是小写 32 长度

广告屏蔽

开发者开启 HCI 蓝牙日志,kill 一下蓝牙的进程,看看有没有该文件

/data/misc/bluetooth/logs/btsnoop_hci.log

提取出来之后放到 wireshark 里面,可能需要安装 620K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6D9k6h3q4J5L8W2)9J5k6h3#2A6j5%4u0G2M7$3!0X3N6q4)9J5k6h3y4G2L8g2)9J5c8Y4A6Z5i4K6u0V1j5$3&6Q4x3V1k6%4K9h3&6V1L8%4N6K6i4K6u0V1K9r3q4J5k6s2N6S2M7X3g2Q4x3V1k6V1M7X3W2$3k6i4u0K6i4K6u0r3j5X3I4#2k6i4c8G2L8%4c8Z5i4K6u0r3N6r3g2K6N6r3W2F1k6#2)9J5k6r3u0@1M7q4)9J5k6s2y4W2N6s2g2H3i4K6u0V1M7r3q4U0K9$3q4Y4k6b7`.`.、wireshark,使用 "C:\BTP\v1.14.0\x86\btvs.exe" 工具打开进行分析

wireshark 筛选通信

bluetooth.dst==<hide> || bluetooth.src == <hide>

没什么难点,主要是代码量确实大

BathingBtActivity.r3 重写 com.klcxkj.zqxy.ui.device.base.BaseDeviceActivity.r3

最主要的处理接收数据的地方是 case 2,即 AnalyTools.analyWaterDatas

通过分析,我们可以解析蓝牙设备返回的数据

解析完成之后,大多数都会执行 waterCodeListener0 的函数,这些函数定义在上面的 BathingBtActivity 类中

以查询设备信息举例,当 AnalyTools.analyWaterDatas 分析完查询设备的数据之后会调用

chaxueNewshebeiOnback ,该函数会按照 deviceStatemayDeviceType 的值来执行不同的功能(逻辑派发)

例如当 deviceState 为 0 且 mayDeviceType 为 0 时,下订单然后开启设备(开启热水),即

api 请求均在 BaseDeviceActivity 中实现

请求无误后执行 this.ac.parseDownRate(downRateResponse0);

该函数位于 BathingBtActivity

可以看到接收到数据之后执行 sendCommandOpenWater()

最终我们定位到一个发送数据的类,这里定义了数据如何被发送

当向热水器设备发送 downFateToDev 生成的数据之后,热水器被开启

同理,调用 caijishuju 获取返回数据之后上传数据到 upload api 即可结束计费

s 固定为

返回数据

111K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6A6b7$3!0V1K9h3&6Y4b7X3!0&6P5g2)9J5c8V1E0x3b7#2S2w2d9W2)9J5k6q4N6S2N6r3g2J5i4K6u0r3j5X3I4G2j5W2)9J5c8X3#2S2M7%4c8W2M7W2)9J5c8W2!0q4z5q4)9&6x3#2)9&6c8q4!0q4y4#2)9^5z5g2)9&6z5g2!0q4y4W2)9&6x3#2)9^5c8q4!0q4y4q4!0n7c8q4)9&6b7#2!0q4z5q4!0m8c8W2!0n7y4q4!0q4y4W2)9&6z5q4)9^5c8g2)9J5k6i4c8^5N6l9`.`.

e77K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6*7K9r3W2I4N6h3q4F1L8r3!0Q4x3V1k6e0c8p5E0c8h3V1&6W2N6s2N6G2M7X3E0a6k6X3k6D9K9h3&6W2

POST /user/login HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: v3-api.china-qzxy.cn
User-Agent: okhttp/4.2.2
 
identifier=oxxxxx-PXXXX&password=98ECF8427E&phoneSystem=android&type=1&version=<hide>
POST /user/login HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: v3-api.china-qzxy.cn
User-Agent: okhttp/4.2.2
 
identifier=oxxxxx-PXXXX&password=98ECF8427E&phoneSystem=android&type=1&version=<hide>
POST /user/login HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: v3-api.china-qzxy.cn
User-Agent: okhttp/4.2.2
 
identifier=&password=XXXXXXXXXX&phoneSystem=android&telephone=1xxxxxxxxxx&type=0&version=<hide>
POST /user/login HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: v3-api.china-qzxy.cn
User-Agent: okhttp/4.2.2
 
identifier=&password=XXXXXXXXXX&phoneSystem=android&telephone=1xxxxxxxxxx&type=0&version=<hide>
{
  "success": true,
  "errorCode": 0,
  "errorMessage": "成功",
  "data": {
    "userId": <hide>,
    "telephone": "<hide>",
    "alias": "<hide>",
    "loginCode": "<hide>",
    "tags": "<hide>",
    "ioaw": 0,
    "userAccount": {
      "projectId": <hide>,
      "accountId": <hide>,
      "userId": <hide>,
      "name": null,
      "gender": 0,
      "genderName": "未知",
      "idCardNumber": null,
      "gradeId": null,
      "gradeName": null,
      "deptType": null,
      "classId": null,
      "className": null,
      "gradeClassFullName": "",
      "oneCardAuthInfo": null,
      "accountStatus": 0,
      "accountRealMoney": <hide>,
      "accountGivenMoney": 0,
      "isCard": 0,
      "cardStatus": -1
    },
    "quZhiCoin": null,
    "aliPayAccount": null,
    "aliPayName": null,
    "loginType": 1,
    "loginTime": "<hide>",
    "phoneSystem": "android",
    "version": "<hide>",
    "loginIp": "<hide>"
  }
}
{
  "success": true,
  "errorCode": 0,
  "errorMessage": "成功",
  "data": {
    "userId": <hide>,
    "telephone": "<hide>",
    "alias": "<hide>",
    "loginCode": "<hide>",
    "tags": "<hide>",
    "ioaw": 0,
    "userAccount": {
      "projectId": <hide>,
      "accountId": <hide>,
      "userId": <hide>,
      "name": null,
      "gender": 0,
      "genderName": "未知",
      "idCardNumber": null,
      "gradeId": null,
      "gradeName": null,
      "deptType": null,
      "classId": null,
      "className": null,
      "gradeClassFullName": "",
      "oneCardAuthInfo": null,
      "accountStatus": 0,
      "accountRealMoney": <hide>,
      "accountGivenMoney": 0,
      "isCard": 0,
      "cardStatus": -1
    },
    "quZhiCoin": null,
    "aliPayAccount": null,
    "aliPayName": null,
    "loginType": 1,
    "loginTime": "<hide>",
    "phoneSystem": "android",
    "version": "<hide>",
    "loginIp": "<hide>"
  }
}
GET /device/info/mac?macAddress=<hide>&phoneSystem=android&loginCode=<hide>&projectId=<hide>&version=<hide>&userId=<hide> HTTP/1.1
Host: v3-api.china-qzxy.cn
User-Agent: okhttp/4.2.2
 
>>>
{
  "success": true,
  "errorCode": 0,
  "errorMessage": "成功",
  "data": {
    "deviceId": <hide>,
    "deviceName": "<hide>",
    "deviceDesc": "<hide>",
    "areaId": 1,
    "areaName": "<hide>",
    "buildingId": <hide>,
    "buildingName": "<hide>",
    "floorId": <hide>,
    "floorName": "<hide>",
    "roomId": <hide>,
    "roomName": "<hide>",
    "isUse": 1,
    "smallTypeId": 1,
    "smallTypeName": "<hide>",
    "bigTypeId": 4,
    "bigTypeName": "<hide>",
    "projectId": <hide>,
    "projectName": "<hide>",
    "ownStatusId": 0,
    "isUpdateProtocol": null,
    "isNewDryer": 0,
    "snCode": "<hide>",
    "macAddress": "<hide>",
    "communicationTypeId": 0,
    "onlineStatusId": 0,
    "keyStatus": null,
    "keyNo": null,
    "deductionMethod": 0,
    "withholdMoney": <hide>,
    "modelCode": null,
    "imei": null,
    "isMigrated": 1,
    "bindDeviceSnCode": null,
    "leftGoodsId": null,
    "rightGoodsId": null,
    "leftGoodsMiss": null,
    "leftGoodsVol": null,
    "leftCodeNo": null,
    "rightCodeNo": null,
    "rightGoodsMiss": null,
    "rightGoodsVol": null,
    "timestamp": "<hide>",
    "modeId": null,
    "modeTime": null,
    "deviceOrderPagePromptText": null,
    "DevID": <hide>
  }
}
GET /device/info/mac?macAddress=<hide>&phoneSystem=android&loginCode=<hide>&projectId=<hide>&version=<hide>&userId=<hide> HTTP/1.1
Host: v3-api.china-qzxy.cn
User-Agent: okhttp/4.2.2
 
>>>
{
  "success": true,
  "errorCode": 0,
  "errorMessage": "成功",
  "data": {
    "deviceId": <hide>,
    "deviceName": "<hide>",
    "deviceDesc": "<hide>",
    "areaId": 1,
    "areaName": "<hide>",
    "buildingId": <hide>,
    "buildingName": "<hide>",
    "floorId": <hide>,
    "floorName": "<hide>",
    "roomId": <hide>,
    "roomName": "<hide>",
    "isUse": 1,
    "smallTypeId": 1,
    "smallTypeName": "<hide>",
    "bigTypeId": 4,
    "bigTypeName": "<hide>",
    "projectId": <hide>,
    "projectName": "<hide>",
    "ownStatusId": 0,
    "isUpdateProtocol": null,
    "isNewDryer": 0,
    "snCode": "<hide>",
    "macAddress": "<hide>",
    "communicationTypeId": 0,
    "onlineStatusId": 0,
    "keyStatus": null,
    "keyNo": null,
    "deductionMethod": 0,
    "withholdMoney": <hide>,
    "modelCode": null,
    "imei": null,
    "isMigrated": 1,
    "bindDeviceSnCode": null,
    "leftGoodsId": null,
    "rightGoodsId": null,
    "leftGoodsMiss": null,
    "leftGoodsVol": null,
    "leftCodeNo": null,
    "rightCodeNo": null,
    "rightGoodsMiss": null,
    "rightGoodsVol": null,
    "timestamp": "<hide>",
    "modeId": null,
    "modeTime": null,
    "deviceOrderPagePromptText": null,
    "DevID": <hide>
  }
}
POST /order/downRate/bluetooth/rateOrder HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: v3-api.china-qzxy.cn
User-Agent: okhttp/4.2.2
 
macType=0001&signature=<hide>&loginCode=<hide>&telephone=<hide>&protocolType=<hide>&deviceId=<hide>&userId=<hide>&version=<hide>&xfModel=0&bigTypeId=4&accountId=<hide>&macAddress=<hide>&telPhone=<hide>&phoneSystem=android&smallTypeId=1&randomNumber=<hide>&projectId=<hide>
 
>>>
{
  "success": true,
  "errorCode": 0,
  "errorMessage": "成功",
  "data": {
    "accountId": <hide>,
    "realMoney": "<hide>",
    "givenMoney": "0.0",
    "preDeductMoney": "<hide>",
    "useCount": 1,
    "downData": "<hide>",
    "rate": <hide>,
    "minTime": 0,
    "minMoney": 0,
    "chargeMethod": <hide>,
    "minChargeUnit": <hide>,
    "autoDisConTime": <hide>,
    "consumeDate": "<hide>",
    "liquidOrderNo": null,
    "orderNo": null,
    "preDeductMoneySend": "<hide>"
  }
}
POST /order/downRate/bluetooth/rateOrder HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: v3-api.china-qzxy.cn
User-Agent: okhttp/4.2.2
 
macType=0001&signature=<hide>&loginCode=<hide>&telephone=<hide>&protocolType=<hide>&deviceId=<hide>&userId=<hide>&version=<hide>&xfModel=0&bigTypeId=4&accountId=<hide>&macAddress=<hide>&telPhone=<hide>&phoneSystem=android&smallTypeId=1&randomNumber=<hide>&projectId=<hide>
 
>>>
{
  "success": true,
  "errorCode": 0,
  "errorMessage": "成功",
  "data": {
    "accountId": <hide>,
    "realMoney": "<hide>",
    "givenMoney": "0.0",
    "preDeductMoney": "<hide>",
    "useCount": 1,
    "downData": "<hide>",
    "rate": <hide>,
    "minTime": 0,
    "minMoney": 0,
    "chargeMethod": <hide>,
    "minChargeUnit": <hide>,
    "autoDisConTime": <hide>,
    "consumeDate": "<hide>",
    "liquidOrderNo": null,
    "orderNo": null,
    "preDeductMoneySend": "<hide>"
  }
}
POST /order/upload/bluetooth/data HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: v3-api.china-qzxy.cn
User-Agent: okhttp/4.2.2
 
accountId=<hide>&telPhone=<hide>&signature=<hide>&phoneSystem=android&randomNumber=<hide>&loginCode=<hide>&telephone=<hide>&protocolType=<hide>&xfData=<hide>&projectId=<hide>&userId=<hide>&version=<hide>
 
>>>
{
  "success": true,
  "errorCode": 0,
  "errorMessage": "成功",
  "data": {
    "consumeTime": "<hide>",
    "preDeductMoney": <hide>,
    "preDeductMoneyAfter": <hide>,
    "consumeMoney": <hide>,
    "orderAccountId": <hide>,
    "clData": "<hide>",
    "telephone": "<hide>",
    "createTime": "<hide>",
    "modeName": null,
    "liquidModeName": null,
    "liquidConsumeMoney": null,
    "deviceSnCode": "<hide>",
    "orderNo": "<hide>",
    "leftModeMoney": null,
    "rightModeMoney": null,
    "leftModeName": null,
    "rightModeName": null
  }
}
POST /order/upload/bluetooth/data HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: v3-api.china-qzxy.cn
User-Agent: okhttp/4.2.2
 
accountId=<hide>&telPhone=<hide>&signature=<hide>&phoneSystem=android&randomNumber=<hide>&loginCode=<hide>&telephone=<hide>&protocolType=<hide>&xfData=<hide>&projectId=<hide>&userId=<hide>&version=<hide>
 
>>>
{
  "success": true,
  "errorCode": 0,
  "errorMessage": "成功",
  "data": {
    "consumeTime": "<hide>",
    "preDeductMoney": <hide>,
    "preDeductMoneyAfter": <hide>,
    "consumeMoney": <hide>,
    "orderAccountId": <hide>,
    "clData": "<hide>",
    "telephone": "<hide>",
    "createTime": "<hide>",
    "modeName": null,
    "liquidModeName": null,
    "liquidConsumeMoney": null,
    "deviceSnCode": "<hide>",
    "orderNo": "<hide>",
    "leftModeMoney": null,
    "rightModeMoney": null,
    "leftModeName": null,
    "rightModeName": null
  }
}
LoginCode
Phone
xfData
loginCode<LoginCode>telephone<Phone>xfData<xfData>&key=<LoginCode>
loginCode<LoginCode>telephone<Phone>xfData<xfData>&key=<LoginCode>
Md5
Key
<Md5><Key>
<Md5><Key>
clData native aes 解密(见下)
Mode ECB
Key
IV
# API Docs: 636K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5k6i4q4S2j5X3I4W2i4K6u0W2j5$3!0E0i4K6u0r3k6r3!0U0M7#2)9J5c8X3y4S2M7s2c8#2M7X3g2Q4x3V1k6S2k6r3c8G2L8Y4x3`.
 
from reqable import *
import re
 
ad_regex_list = [
    r'.*\.anythinktech.com',
    r'.*-toutiao.*\.com',
    r'.*\.umeng.com',
    r'.*\.umengcloud.com',
    r'.*\.yfanads.com',
    r'.*\.gdt.qq.com',
    r'.*\.netease.im',
    r'.*\.beizi.biz',
    r'.*\.zijieapi.com',
    r'.*yunxin.*\.com',
    r'open.e.kuaishou.c.*',
    r'open.kuaishouzt.com',
    r'open.kwaizt.com',
    r'w1.kskwai.com',
    r'webcast-open.douyin.com',
    r'lf-cdn-tos.bytescm.com',
    r'sdk.e.qq.com',
    r'sdktmp.hubcloud.com.cn',
    r'mdap.mpaas.cn-hangzhou.aliyuncs.com',
    r'sdkoptedge.chinanetcenter.com', # 网宿
    r'pgdt.ugdtimg.com',
    r'mssdk.volces.com' # 字节
]
 
def onRequest(context, request):
  # 获取当前请求的域名
  host = context.host
   
  # 遍历正则列表进行匹配
  for pattern in ad_regex_list:
      # 使用 re.search 查找匹配项
      if re.search(pattern, host):
          # 【关键点】
          # 这里可以打印日志方便调试(在Reqable控制台查看)
          print(f"Blocked Domain: {host} (Matched: {pattern})")
           
          # 返回 None 表示中断请求,不再向服务器发送
          # 客户端会收到连接断开或类似的错误
          return None
           
          # 备选方案:如果你不想断开连接,而是想返回一个 404 或空数据,可以用下面这行代替:
          # return Response(404, headers=[], body=b'')
 
  # Print url to console
  # print('request url ' + context.url)
 
  # Update or add a query parameter
  # request.queries['foo'] = 'bar'
 
  # Update or add a http header
  # request.headers['foo'] = 'bar'
 
  # Replace http body with a text
  # request.body = 'Hello World'
 
  # Map with a local file
  # request.body.file('~/Desktop/body.json')
 
  # Convert to dict if the body is a JSON
  # request.body.jsonify()
  # Update the JSON content
  # request.body['foo'] = 'bar'
 
  # Done
  return request
 
def onResponse(context, response):
  # Update status code
  # response.code = 404
 
  # APIs are same as `onRequest`
 
  # Done
  return response
# API Docs: 509K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5k6i4q4S2j5X3I4W2i4K6u0W2j5$3!0E0i4K6u0r3k6r3!0U0M7#2)9J5c8X3y4S2M7s2c8#2M7X3g2Q4x3V1k6S2k6r3c8G2L8Y4x3`.
 
from reqable import *
import re
 
ad_regex_list = [
    r'.*\.anythinktech.com',
    r'.*-toutiao.*\.com',
    r'.*\.umeng.com',
    r'.*\.umengcloud.com',
    r'.*\.yfanads.com',
    r'.*\.gdt.qq.com',
    r'.*\.netease.im',
    r'.*\.beizi.biz',
    r'.*\.zijieapi.com',
    r'.*yunxin.*\.com',
    r'open.e.kuaishou.c.*',
    r'open.kuaishouzt.com',
    r'open.kwaizt.com',
    r'w1.kskwai.com',
    r'webcast-open.douyin.com',
    r'lf-cdn-tos.bytescm.com',
    r'sdk.e.qq.com',
    r'sdktmp.hubcloud.com.cn',
    r'mdap.mpaas.cn-hangzhou.aliyuncs.com',
    r'sdkoptedge.chinanetcenter.com', # 网宿
    r'pgdt.ugdtimg.com',
    r'mssdk.volces.com' # 字节
]
 
def onRequest(context, request):
  # 获取当前请求的域名
  host = context.host
   
  # 遍历正则列表进行匹配
  for pattern in ad_regex_list:
      # 使用 re.search 查找匹配项
      if re.search(pattern, host):
          # 【关键点】
          # 这里可以打印日志方便调试(在Reqable控制台查看)
          print(f"Blocked Domain: {host} (Matched: {pattern})")
           
          # 返回 None 表示中断请求,不再向服务器发送
          # 客户端会收到连接断开或类似的错误
          return None
           
          # 备选方案:如果你不想断开连接,而是想返回一个 404 或空数据,可以用下面这行代替:
          # return Response(404, headers=[], body=b'')
 
  # Print url to console
  # print('request url ' + context.url)
 
  # Update or add a query parameter
  # request.queries['foo'] = 'bar'
 
  # Update or add a http header
  # request.headers['foo'] = 'bar'
 
  # Replace http body with a text
  # request.body = 'Hello World'
 
  # Map with a local file
  # request.body.file('~/Desktop/body.json')
 
  # Convert to dict if the body is a JSON
  # request.body.jsonify()
  # Update the JSON content
  # request.body['foo'] = 'bar'
 
  # Done
  return request
 
def onResponse(context, response):
  # Update status code
  # response.code = 404
 
  # APIs are same as `onRequest`
 
  # Done
  return response
public BathingBtActivity() {
    super();
    this.protocolType = "";
    this.x0 = false;
    this.y0 = false;
    this.z0 = false;
    this.exist_deviceInfoKeyNo = false;
    this.B0 = new c(this);
    this.handleD_ = new Handler(new handleD(this));
    this.mayAccountId_ = 0L;
    this.K0 = 0;
}
public BathingBtActivity() {
    super();
    this.protocolType = "";
    this.x0 = false;
    this.y0 = false;
    this.z0 = false;
    this.exist_deviceInfoKeyNo = false;
    this.B0 = new c(this);
    this.handleD_ = new Handler(new handleD(this));
    this.mayAccountId_ = 0L;
    this.K0 = 0;
}
public class handleD implements Handler.Callback {
    public final BathingBtActivity n;
 
    public handleD(BathingBtActivity bathingBtActivity0) {
        this.n = bathingBtActivity0;
        super();
    }
 
    @Override  // android.os.Handler$Callback
    public boolean handleMessage(@NonNull Message message0) {
        switch(message0.what) {
            case 1: {
                switch(message0.arg1) {
                    case 2: {
                        this.n.K5(37);
                        return false;
                    }
                    case 3: {
                        this.n.D5();
                        this.n.K5(34);
                        return false;
                    }
                    case 4: {
                        this.n.K5(38);
                        return false;
                    }
                    case 5: {
                        this.n.K5(33);
                        return false;
                    }
                    default: {
                        return false;
                    }
                }
            }
            case 2: {
                AnalyTools.analyWaterDatas(((byte[])message0.obj));
                return false;
            }
            case 6: {
                if(this.n.blueService != null && this.n.blueService.getState() == 3) {
                    this.n.blueService.stop();
                    this.n.z = 0;
                    return false;
                }
 
                return false;
            }
            case 20: {
                this.n.F5(false);
                return false;
            }
            default: {
                return false;
            }
        }
    }
}
public class handleD implements Handler.Callback {
    public final BathingBtActivity n;
 
    public handleD(BathingBtActivity bathingBtActivity0) {
        this.n = bathingBtActivity0;
        super();
    }
 
    @Override  // android.os.Handler$Callback
    public boolean handleMessage(@NonNull Message message0) {
        switch(message0.what) {
            case 1: {
                switch(message0.arg1) {
                    case 2: {
                        this.n.K5(37);
                        return false;
                    }
                    case 3: {
                        this.n.D5();
                        this.n.K5(34);
                        return false;
                    }
                    case 4: {
                        this.n.K5(38);
                        return false;
                    }
                    case 5: {
                        this.n.K5(33);
                        return false;
                    }
                    default: {
                        return false;
                    }
                }
            }
            case 2: {
                AnalyTools.analyWaterDatas(((byte[])message0.obj));
                return false;
            }
            case 6: {
                if(this.n.blueService != null && this.n.blueService.getState() == 3) {
                    this.n.blueService.stop();
                    this.n.z = 0;
                    return false;
                }
 
                return false;
            }
            case 20: {
                this.n.F5(false);
                return false;
            }
            default: {
                return false;
            }
        }
    }
}
public class AnalyTools {
    private static WaterCodeListener waterCodeListeners;
    private static int projectId;
    private static int deviceId;
    private static int lastAccoundId;
    private static byte[] snCode;
    private static byte[] randomNumber;
    private static int failedUnpackCount;
 
    private static byte[] removeStartEndAndUnpackPayload(byte[] arr_b) {
        String s = DigitalTrans.bytesToHexStringLower(arr_b);
        return !s.startsWith("23") || !s.endsWith("0a") ? AnalyTools.unpackData(DigitalTrans.AsciiStringToString(null)) : AnalyTools.unpackData(DigitalTrans.AsciiStringToString(s.substring(2, s.length() - 2)));
    }
 
    public static void analyWaterDatas(byte[] arr_b) {
        String partConsumeDate;
        boolean z1;
        int accountType;
        int consumeMoney;
        int v37;
        int v36;
        String s2;
        int v31;
        int v10;
        int v9;
        int v8;
        int v7;
        int v6;
        int v30;
        int v29;
        int mayDeviceType2;
        int mayDeviceType;
        boolean querySuccess;
        String protocolType;
        int deviceState;
        byte[] payload = AnalyTools.removeStartEndAndUnpackPayload(arr_b);
        byte[] twoComplement = AnalyTools.removeStartEndAndConvTwoComplement(arr_b);
        if (twoComplement != null && payload != null) {
            String s = "";
            int v = 0;
            if (twoComplement[4] == 35) {
                if (payload.length <= 0 || payload[0] != 0xFFFFFF80) {
                    label_195:
                    protocolType = "";
                    querySuccess = false;
                    deviceState = 0;
                    label_198:
                    mayDeviceType = 0;
                    mayDeviceType2 = 0;
                    v29 = 0;
                    v30 = 0;
                } else {
                    switch (payload.length) {
                        case 23: {
                            byte[] arr_b9 = new byte[4];
                            for (int v11 = 0; v11 < 4; ++v11) {
                                arr_b9[v11] = payload[v11 + 1];
                            }
 
                            AnalyTools.projectId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b9));
                            byte[] arr_b10 = new byte[4];
                            for (int v12 = 0; v12 < 4; ++v12) {
                                arr_b10[v12] = payload[v12 + 5];
                            }
 
                            AnalyTools.deviceId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b10));
                            byte[] arr_b11 = new byte[4];
                            for (int v13 = 0; v13 < 4; ++v13) {
                                arr_b11[v13] = payload[v13 + 9];
                            }
 
                            AnalyTools.lastAccoundId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b11));
                            AnalyTools.snCode = new byte[6];
                            for (int v14 = 0; true; ++v14) {
                                byte[] arr_b12 = AnalyTools.snCode;
                                if (v14 >= arr_b12.length) {
                                    break;
                                }
 
                                arr_b12[v14] = payload[v14 + 13];
                            }
 
                            AnalyTools.randomNumber = new byte[2];
                            for (int v15 = 0; true; ++v15) {
                                byte[] arr_b13 = AnalyTools.randomNumber;
                                if (v15 >= arr_b13.length) {
                                    break;
                                }
 
                                arr_b13[v15] = payload[v15 + 21];
                            }
 
                            deviceState = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[19]}));
                            protocolType = "";
                            querySuccess = true;
                            mayDeviceType = 0;
                            mayDeviceType2 = 0;
                            v29 = 0;
                            v30 = 0;
                        }
                        case 28: {
                            byte[] arr_b14 = new byte[4];
                            for (int v17 = 0; v17 < 4; ++v17) {
                                arr_b14[v17] = payload[v17 + 1];
                            }
 
                            AnalyTools.projectId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b14));
                            byte[] arr_b15 = new byte[4];
                            for (int v18 = 0; v18 < 4; ++v18) {
                                arr_b15[v18] = payload[v18 + 5];
                            }
 
                            AnalyTools.deviceId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b15));
                            byte[] arr_b16 = new byte[4];
                            for (int v19 = 0; v19 < 4; ++v19) {
                                arr_b16[v19] = payload[v19 + 9];
                            }
 
                            AnalyTools.lastAccoundId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b16));
                            AnalyTools.snCode = new byte[6];
                            for (int v20 = 0; true; ++v20) {
                                byte[] arr_b17 = AnalyTools.snCode;
                                if (v20 >= arr_b17.length) {
                                    break;
                                }
 
                                arr_b17[v20] = payload[v20 + 13];
                            }
 
                            AnalyTools.randomNumber = new byte[2];
                            for (int v21 = 0; true; ++v21) {
                                byte[] arr_b18 = AnalyTools.randomNumber;
                                if (v21 >= arr_b18.length) {
                                    break;
                                }
 
                                arr_b18[v21] = payload[v21 + 21];
                            }
 
                            v6 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[19]}));
                            v7 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[23]}));
                            v8 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[24]}));
                            v9 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[25]}));
                            byte[] arr_b19 = new byte[2];
                            while (v < 2) {
                                arr_b19[v] = payload[v + 26];
                                ++v;
                            }
 
                            v10 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b19));
                            deviceState = v6;
                            mayDeviceType = v7;
                            mayDeviceType2 = v8;
                            v29 = v9;
                            protocolType = s;
                            v30 = v10;
                            querySuccess = true;
                            break;
                        }
                        case 0x30: {
                            byte[] arr_b20 = new byte[4];
                            for (int v22 = 0; v22 < 4; ++v22) {
                                arr_b20[v22] = payload[v22 + 1];
                            }
 
                            AnalyTools.projectId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b20));
                            byte[] arr_b21 = new byte[4];
                            for (int v23 = 0; v23 < 4; ++v23) {
                                arr_b21[v23] = payload[v23 + 5];
                            }
 
                            AnalyTools.deviceId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b21));
                            byte[] arr_b22 = new byte[4];
                            for (int v24 = 0; v24 < 4; ++v24) {
                                arr_b22[v24] = payload[v24 + 9];
                            }
 
                            AnalyTools.lastAccoundId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b22));
                            AnalyTools.snCode = new byte[6];
                            for (int v25 = 0; true; ++v25) {
                                byte[] arr_b23 = AnalyTools.snCode;
                                if (v25 >= arr_b23.length) {
                                    break;
                                }
 
                                arr_b23[v25] = payload[v25 + 13];
                            }
 
                            s = DigitalTrans.bytesToHexStringLower(new byte[]{payload[19]});
                            AnalyTools.randomNumber = new byte[4];
                            for (int v26 = 0; true; ++v26) {
                                byte[] arr_b24 = AnalyTools.randomNumber;
                                if (v26 >= arr_b24.length) {
                                    break;
                                }
 
                                arr_b24[v26] = payload[v26 + 24];
                            }
 
                            v6 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[28]}));
                            v7 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[29]}));
                            v8 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[30]}));
                            v9 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[0x1F]}));
                            byte[] arr_b25 = new byte[2];
                            while (v < 2) {
                                arr_b25[v] = payload[v + 0x20];
                                ++v;
                            }
 
                            v10 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b25));
                            label_187:
                            deviceState = v6;
                            mayDeviceType = v7;
                            mayDeviceType2 = v8;
                            v29 = v9;
                            protocolType = s;
                            v30 = v10;
                            querySuccess = true;
                            break;
                        }
                        default: {
                            if (payload.length >= 49) {
                                byte[] arr_b3 = new byte[4];
                                for (int v1 = 0; v1 < 4; ++v1) {
                                    arr_b3[v1] = payload[v1 + 1];
                                }
 
                                AnalyTools.projectId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b3));
                                byte[] arr_b4 = new byte[4];
                                for (int v2 = 0; v2 < 4; ++v2) {
                                    arr_b4[v2] = payload[v2 + 5];
                                }
 
                                AnalyTools.deviceId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b4));
                                byte[] arr_b5 = new byte[4];
                                for (int v3 = 0; v3 < 4; ++v3) {
                                    arr_b5[v3] = payload[v3 + 9];
                                }
 
                                AnalyTools.lastAccoundId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b5));
                                AnalyTools.snCode = new byte[6];
                                for (int v4 = 0; true; ++v4) {
                                    byte[] arr_b6 = AnalyTools.snCode;
                                    if (v4 >= arr_b6.length) {
                                        break;
                                    }
 
                                    arr_b6[v4] = payload[v4 + 13];
                                }
 
                                s = DigitalTrans.bytesToHexStringLower(new byte[]{payload[19]});
                                AnalyTools.randomNumber = new byte[4];
                                for (int v5 = 0; true; ++v5) {
                                    byte[] arr_b7 = AnalyTools.randomNumber;
                                    if (v5 >= arr_b7.length) {
                                        break;
                                    }
 
                                    arr_b7[v5] = payload[v5 + 24];
                                }
 
                                v6 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[28]}));
                                v7 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[29]}));
                                v8 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[30]}));
                                v9 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[0x1F]}));
                                byte[] arr_b8 = new byte[2];
                                while (v < 2) {
                                    arr_b8[v] = payload[v + 0x20];
                                    ++v;
                                }
 
                                v10 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b8));
                                deviceState = v6;
                                mayDeviceType = v7;
                                mayDeviceType2 = v8;
                                v29 = v9;
                                protocolType = s;
                                v30 = v10;
                                querySuccess = true;
                                break;
                            } else {
                                protocolType = "";
                                querySuccess = false;
                                deviceState = 0;
                                label_198:
                                mayDeviceType = 0;
                                mayDeviceType2 = 0;
                                v29 = 0;
                                v30 = 0;
                            }
                        }
                    }
                }
 
                WaterCodeListener waterCodeListener0 = AnalyTools.waterCodeListeners;
                if (waterCodeListener0 != null) {
                    waterCodeListener0.chaxueNewshebeiOnback(querySuccess,         // arg1:boolean
                            deviceState,          // arg2:int
                            AnalyTools.deviceId,  // arg3:int
                            AnalyTools.projectId, // arg4:int
                            AnalyTools.lastAccoundId, // arg5:int
                            AnalyTools.snCode,    // arg6:byte[]
                            AnalyTools.randomNumber, // arg7:byte[]
                            mayDeviceType,        // arg8:int
                            mayDeviceType2,       // arg9:int
                            v29,                  // arg10:int
                            v30,                  // arg11:int
                            protocolType          // arg12:java.lang.String
                    );
                }
            } else {
                switch (twoComplement[4]) {
                    case -8: {
                        if (payload.length <= 0 || payload[0] != 0xFFFFFF80) {
                            v31 = 0;
                        } else {
                            byte[] arr_b26 = new byte[1];
                            System.arraycopy(payload, 1, arr_b26, 0, 1);
                            v31 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b26));
                            byte[] arr_b27 = new byte[1];
                            System.arraycopy(payload, 2, arr_b27, 0, 1);
                            s = DigitalTrans.bytesToHexStringLower(arr_b27);
                            v = 1;
                        }
 
                        AnalyTools.waterCodeListeners.settingKeyCallback(v != 0, v31, s);
                        return;
                    }
                    case -6: {
                        if (payload.length > 0 && payload[0] == 0xFFFFFF80) {
                            v = 1;
                        }
 
                        AnalyTools.waterCodeListeners.fanhuicunchuOnback((v != 0));
                        return;
                    }
                    case -5: {
                        if (payload.length <= 0 || payload[0] != 0xFFFFFF80) {
                            errPath:
                            partConsumeDate = null;
                            z1 = false;
                            accountType = 2;
                            consumeMoney = 0;
                        } else if (payload.length == 42) {
                            byte[] arr_b28 = new byte[6];
                            for (int v32 = 0; v32 < 6; ++v32) {
                                arr_b28[v32] = payload[v32 + 1];
                            }
 
                            s2 = DigitalTrans.bytesToHexStringLower(arr_b28);
                            byte[] arr_b29 = new byte[4];
                            for (int v33 = 0; v33 < 4; ++v33) {
                                arr_b29[v33] = payload[v33 + 7];
                            }
 
                            AnalyTools.projectId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b29));
                            byte[] arr_b30 = new byte[4];
                            for (int v34 = 0; v34 < 4; ++v34) {
                                arr_b30[v34] = payload[v34 + 11];
                            }
 
                            AnalyTools.deviceId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b30));
                            byte[] arr_b31 = new byte[4];
                            for (int v35 = 0; v35 < 4; ++v35) {
                                arr_b31[v35] = payload[v35 + 15];
                            }
 
                            AnalyTools.lastAccoundId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b31));
                            v36 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[19]}));
                            byte[] arr_b32 = new byte[4];
                            while (v < 4) {
                                arr_b32[v] = payload[v + 28];
                                ++v;
                            }
 
                            v37 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b32));
                            consumeMoney = v37;
                            accountType = v36;
                            z1 = true;
                            partConsumeDate = s2;
                            AnalyTools.waterCodeListeners.caijishujuOnback(z1, partConsumeDate, AnalyTools.projectId, AnalyTools.lastAccoundId, accountType, consumeMoney, payload);
                            return;
                        } else {
                            if (payload.length >= 62) {
                                byte[] arr_b33 = new byte[6];
                                for (int v38 = 0; v38 < 6; ++v38) {
                                    arr_b33[v38] = payload[v38 + 1];
                                }
 
                                s2 = DigitalTrans.bytesToHexStringLower(arr_b33);
                                byte[] arr_b34 = new byte[4];
                                for (int v39 = 0; v39 < 4; ++v39) {
                                    arr_b34[v39] = payload[v39 + 7];
                                }
 
                                AnalyTools.projectId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b34));
                                byte[] arr_b35 = new byte[4];
                                for (int v40 = 0; v40 < 4; ++v40) {
                                    arr_b35[v40] = payload[v40 + 11];
                                }
 
                                AnalyTools.deviceId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b35));
                                byte[] arr_b36 = new byte[4];
                                for (int v41 = 0; v41 < 4; ++v41) {
                                    arr_b36[v41] = payload[v41 + 15];
                                }
 
                                AnalyTools.lastAccoundId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b36));
                                v36 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[19]}));
                                byte[] arr_b37 = new byte[4];
                                while (v < 4) {
                                    arr_b37[v] = payload[v + 28];
                                    ++v;
                                }
 
                                v37 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b37));
                                label_298:
                                consumeMoney = v37;
                                accountType = v36;
                                z1 = true;
                                partConsumeDate = s2;
                                AnalyTools.waterCodeListeners.caijishujuOnback(z1, partConsumeDate, AnalyTools.projectId, AnalyTools.lastAccoundId, accountType, consumeMoney, payload);
                                return;
                            }
                            partConsumeDate = null;
                            z1 = false;
                            accountType = 2;
                            consumeMoney = 0;
                        }
 
                        AnalyTools.waterCodeListeners.caijishujuOnback(z1, partConsumeDate, AnalyTools.projectId, AnalyTools.lastAccoundId, accountType, consumeMoney, payload);
                        return;
                    }
                    case 33: {
                        if (payload.length > 0 && payload[0] == 0xFFFFFF80) {
                            v = 1;
                        }
 
                        AnalyTools.waterCodeListeners.xiafafeilvOnback(v != 0, payload);
                        return;
                    }
                    case 34: {
                        if (payload.length > 0 && payload[0] == 0xFFFFFF80) {
                            v = 1;
                        }
 
                        AnalyTools.waterCodeListeners.jieshufeilvOnback(v != 0, AnalyTools.lastAccoundId);
                        return;
                    }
                    case 49: {
                        if (payload.length > 0 && payload[0] == 0xFFFFFF80) {
                            v = 1;
                        }
 
                        AnalyTools.waterCodeListeners.startDeal(v != 0, payload);
                        return;
                    }
                    case 50: {
                        if (payload.length > 0 && payload[0] == 0xFFFFFF80) {
                            v = 1;
                        }
 
                        AnalyTools.waterCodeListeners.stopDeal(v != 0);
                        return;
                    }
                    case 80: {
                        byte[] arr_b38 = new byte[1];
                        System.arraycopy(payload, 1, arr_b38, 0, 1);
                        int v44 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b38));
                        byte[] arr_b39 = new byte[1];
                        System.arraycopy(payload, 2, arr_b39, 0, 1);
                        String s4 = DigitalTrans.bytesToHexStringLower(arr_b39);
                        AnalyTools.waterCodeListeners.settingKeyCallback(true, v44, s4);
                        break;
                    }
                }
            }
        }
    }
 
    private static byte[] removeStartEndAndConvTwoComplement(byte[] arr_b) {
        String s = DigitalTrans.bytesToHexStringLower(arr_b);
        return !s.startsWith("23") || !s.endsWith("0a") ? DigitalTrans.hexStringToByte(DigitalTrans.AsciiStringToString(null)) : DigitalTrans.hexStringToByte(DigitalTrans.AsciiStringToString(s.substring(2, s.length() - 2)));
    }
 
    private static byte[] unpackData(String s) {
        byte[] arr_b = DigitalTrans.hexStringToBytes(s);
        if (arr_b != null && arr_b.length >= 9) {
            int v = ((arr_b[1] & 0xFF) << 8 | arr_b[2] & 0xFF) - 3;
            if (v > 0) {
                byte[] arr_b1 = new byte[v];
                int v2 = 0;
                for (int v1 = 0; v1 < v; ++v1) {
                    arr_b1[v1] = arr_b[v1 + 6];
                    v2 += arr_b[v1 + 6];
                }
 
                if (((byte) (v2 + arr_b[3] + arr_b[4] + arr_b[5] & 0xFF)) != arr_b[arr_b.length - 2]) {
                    int v3 = AnalyTools.failedUnpackCount + 1;
                    AnalyTools.failedUnpackCount = v3;
                    return v3 >= 5 ? arr_b1 : new byte[0];
                }
 
                return arr_b1;
            }
 
            return new byte[0];
        }
 
        return null;
    }
 
    public static void setWaterCodeListener(WaterCodeListener waterCodeListener0) {
        AnalyTools.waterCodeListeners = waterCodeListener0;
    }
}
public class AnalyTools {
    private static WaterCodeListener waterCodeListeners;
    private static int projectId;
    private static int deviceId;
    private static int lastAccoundId;
    private static byte[] snCode;
    private static byte[] randomNumber;
    private static int failedUnpackCount;
 
    private static byte[] removeStartEndAndUnpackPayload(byte[] arr_b) {
        String s = DigitalTrans.bytesToHexStringLower(arr_b);
        return !s.startsWith("23") || !s.endsWith("0a") ? AnalyTools.unpackData(DigitalTrans.AsciiStringToString(null)) : AnalyTools.unpackData(DigitalTrans.AsciiStringToString(s.substring(2, s.length() - 2)));
    }
 
    public static void analyWaterDatas(byte[] arr_b) {
        String partConsumeDate;
        boolean z1;
        int accountType;
        int consumeMoney;
        int v37;
        int v36;
        String s2;
        int v31;
        int v10;
        int v9;
        int v8;
        int v7;
        int v6;
        int v30;
        int v29;
        int mayDeviceType2;
        int mayDeviceType;
        boolean querySuccess;
        String protocolType;
        int deviceState;
        byte[] payload = AnalyTools.removeStartEndAndUnpackPayload(arr_b);
        byte[] twoComplement = AnalyTools.removeStartEndAndConvTwoComplement(arr_b);
        if (twoComplement != null && payload != null) {
            String s = "";
            int v = 0;
            if (twoComplement[4] == 35) {
                if (payload.length <= 0 || payload[0] != 0xFFFFFF80) {
                    label_195:
                    protocolType = "";
                    querySuccess = false;
                    deviceState = 0;
                    label_198:
                    mayDeviceType = 0;
                    mayDeviceType2 = 0;
                    v29 = 0;
                    v30 = 0;
                } else {
                    switch (payload.length) {
                        case 23: {
                            byte[] arr_b9 = new byte[4];
                            for (int v11 = 0; v11 < 4; ++v11) {
                                arr_b9[v11] = payload[v11 + 1];
                            }
 
                            AnalyTools.projectId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b9));
                            byte[] arr_b10 = new byte[4];
                            for (int v12 = 0; v12 < 4; ++v12) {
                                arr_b10[v12] = payload[v12 + 5];
                            }
 
                            AnalyTools.deviceId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b10));
                            byte[] arr_b11 = new byte[4];
                            for (int v13 = 0; v13 < 4; ++v13) {
                                arr_b11[v13] = payload[v13 + 9];
                            }
 
                            AnalyTools.lastAccoundId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b11));
                            AnalyTools.snCode = new byte[6];
                            for (int v14 = 0; true; ++v14) {
                                byte[] arr_b12 = AnalyTools.snCode;
                                if (v14 >= arr_b12.length) {
                                    break;
                                }
 
                                arr_b12[v14] = payload[v14 + 13];
                            }
 
                            AnalyTools.randomNumber = new byte[2];
                            for (int v15 = 0; true; ++v15) {
                                byte[] arr_b13 = AnalyTools.randomNumber;
                                if (v15 >= arr_b13.length) {
                                    break;
                                }
 
                                arr_b13[v15] = payload[v15 + 21];
                            }
 
                            deviceState = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[19]}));
                            protocolType = "";
                            querySuccess = true;
                            mayDeviceType = 0;
                            mayDeviceType2 = 0;
                            v29 = 0;
                            v30 = 0;
                        }
                        case 28: {
                            byte[] arr_b14 = new byte[4];
                            for (int v17 = 0; v17 < 4; ++v17) {
                                arr_b14[v17] = payload[v17 + 1];
                            }
 
                            AnalyTools.projectId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b14));
                            byte[] arr_b15 = new byte[4];
                            for (int v18 = 0; v18 < 4; ++v18) {
                                arr_b15[v18] = payload[v18 + 5];
                            }
 
                            AnalyTools.deviceId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b15));
                            byte[] arr_b16 = new byte[4];
                            for (int v19 = 0; v19 < 4; ++v19) {
                                arr_b16[v19] = payload[v19 + 9];
                            }
 
                            AnalyTools.lastAccoundId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b16));
                            AnalyTools.snCode = new byte[6];
                            for (int v20 = 0; true; ++v20) {
                                byte[] arr_b17 = AnalyTools.snCode;
                                if (v20 >= arr_b17.length) {
                                    break;
                                }
 
                                arr_b17[v20] = payload[v20 + 13];
                            }
 
                            AnalyTools.randomNumber = new byte[2];
                            for (int v21 = 0; true; ++v21) {
                                byte[] arr_b18 = AnalyTools.randomNumber;
                                if (v21 >= arr_b18.length) {
                                    break;
                                }
 
                                arr_b18[v21] = payload[v21 + 21];
                            }
 
                            v6 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[19]}));
                            v7 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[23]}));
                            v8 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[24]}));
                            v9 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[25]}));
                            byte[] arr_b19 = new byte[2];
                            while (v < 2) {
                                arr_b19[v] = payload[v + 26];
                                ++v;
                            }
 
                            v10 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b19));
                            deviceState = v6;
                            mayDeviceType = v7;
                            mayDeviceType2 = v8;
                            v29 = v9;
                            protocolType = s;
                            v30 = v10;
                            querySuccess = true;
                            break;
                        }
                        case 0x30: {
                            byte[] arr_b20 = new byte[4];
                            for (int v22 = 0; v22 < 4; ++v22) {
                                arr_b20[v22] = payload[v22 + 1];
                            }
 
                            AnalyTools.projectId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b20));
                            byte[] arr_b21 = new byte[4];
                            for (int v23 = 0; v23 < 4; ++v23) {
                                arr_b21[v23] = payload[v23 + 5];
                            }
 
                            AnalyTools.deviceId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b21));
                            byte[] arr_b22 = new byte[4];
                            for (int v24 = 0; v24 < 4; ++v24) {
                                arr_b22[v24] = payload[v24 + 9];
                            }
 
                            AnalyTools.lastAccoundId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b22));
                            AnalyTools.snCode = new byte[6];
                            for (int v25 = 0; true; ++v25) {
                                byte[] arr_b23 = AnalyTools.snCode;
                                if (v25 >= arr_b23.length) {
                                    break;
                                }
 
                                arr_b23[v25] = payload[v25 + 13];
                            }
 
                            s = DigitalTrans.bytesToHexStringLower(new byte[]{payload[19]});
                            AnalyTools.randomNumber = new byte[4];
                            for (int v26 = 0; true; ++v26) {
                                byte[] arr_b24 = AnalyTools.randomNumber;
                                if (v26 >= arr_b24.length) {
                                    break;
                                }
 
                                arr_b24[v26] = payload[v26 + 24];
                            }
 
                            v6 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[28]}));
                            v7 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[29]}));
                            v8 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[30]}));
                            v9 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[0x1F]}));
                            byte[] arr_b25 = new byte[2];
                            while (v < 2) {
                                arr_b25[v] = payload[v + 0x20];
                                ++v;
                            }
 
                            v10 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b25));
                            label_187:
                            deviceState = v6;
                            mayDeviceType = v7;
                            mayDeviceType2 = v8;
                            v29 = v9;
                            protocolType = s;
                            v30 = v10;
                            querySuccess = true;
                            break;
                        }
                        default: {
                            if (payload.length >= 49) {
                                byte[] arr_b3 = new byte[4];
                                for (int v1 = 0; v1 < 4; ++v1) {
                                    arr_b3[v1] = payload[v1 + 1];
                                }
 
                                AnalyTools.projectId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b3));
                                byte[] arr_b4 = new byte[4];
                                for (int v2 = 0; v2 < 4; ++v2) {
                                    arr_b4[v2] = payload[v2 + 5];
                                }
 
                                AnalyTools.deviceId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b4));
                                byte[] arr_b5 = new byte[4];
                                for (int v3 = 0; v3 < 4; ++v3) {
                                    arr_b5[v3] = payload[v3 + 9];
                                }
 
                                AnalyTools.lastAccoundId = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b5));
                                AnalyTools.snCode = new byte[6];
                                for (int v4 = 0; true; ++v4) {
                                    byte[] arr_b6 = AnalyTools.snCode;
                                    if (v4 >= arr_b6.length) {
                                        break;
                                    }
 
                                    arr_b6[v4] = payload[v4 + 13];
                                }
 
                                s = DigitalTrans.bytesToHexStringLower(new byte[]{payload[19]});
                                AnalyTools.randomNumber = new byte[4];
                                for (int v5 = 0; true; ++v5) {
                                    byte[] arr_b7 = AnalyTools.randomNumber;
                                    if (v5 >= arr_b7.length) {
                                        break;
                                    }
 
                                    arr_b7[v5] = payload[v5 + 24];
                                }
 
                                v6 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[28]}));
                                v7 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[29]}));
                                v8 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[30]}));
                                v9 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(new byte[]{payload[0x1F]}));
                                byte[] arr_b8 = new byte[2];
                                while (v < 2) {
                                    arr_b8[v] = payload[v + 0x20];
                                    ++v;
                                }
 
                                v10 = DigitalTrans.hexStringToAlgorism(DigitalTrans.bytesToHexStringLower(arr_b8));
                                deviceState = v6;
                                mayDeviceType = v7;
                                mayDeviceType2 = v8;
                                v29 = v9;
                                protocolType = s;
                                v30 = v10;
                                querySuccess = true;
                                break;
                            } else {
                                protocolType = "";
                                querySuccess = false;
                                deviceState = 0;
                                label_198:
                                mayDeviceType = 0;
                                mayDeviceType2 = 0;
                                v29 = 0;
                                v30 = 0;
                            }

传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2025-11-29 22:48 被mb_jepgtozh编辑 ,原因:
收藏
免费 65
支持
分享
最新回复 (33)
雪    币: 9
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
来了
2025-11-29 22:58
0
雪    币: 7
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2025-11-30 10:11
0
雪    币: 3789
活跃值: (4090)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
6
2025-11-30 12:49
0
雪    币: 5744
活跃值: (6145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
来看看,学习。
2025-11-30 14:36
0
雪    币: 0
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6

6
2025-11-30 14:48
0
雪    币: 374
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
学习学习
2025-11-30 15:19
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
666

2025-11-30 15:24
0
雪    币: 397
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
看看分析过程,学习一下
2025-11-30 16:04
0
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
666
2025-11-30 19:40
0
雪    币: 925
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
66
2025-11-30 20:13
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
666
2025-11-30 22:20
0
雪    币: 223
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
大佬tql
2025-11-30 22:33
0
雪    币: 52
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
太强了
2025-11-30 22:49
0
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
6666
2025-12-1 08:22
0
雪    币: 141
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
666
2025-12-1 09:01
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
666
2025-12-1 09:47
0
雪    币: 6125
活跃值: (5910)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
66
2025-12-1 10:35
0
雪    币: 1
活跃值: (1000)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
6
2025-12-1 11:37
0
雪    币: 1495
活跃值: (3698)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
20
666
2025-12-1 16:00
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
6
2025-12-1 16:37
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
666
2025-12-1 17:09
0
雪    币: 178
活跃值: (3066)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
23
2025-12-1 17:11
0
雪    币: 293
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
6666666666
2025-12-1 17:41
0
雪    币: 203
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25
感谢分享
2025-12-1 20:13
0
游客
登录 | 注册 方可回帖
返回