Code Monkey home page Code Monkey logo

oplusupdater's Introduction

Oplus Updater

Use Oplus official api to query OPlus,OPPO and Realme Mobile 's OS version update.

How to use?

oplus-updater --help                     Use Oplus official api to query OPlus,OPPO and Realme Mobile 's OS version update.

Usage:
  oplus-updater [flags]

Flags:
  -a, --android-version string   Android version (optional), e.g., --android-version=Android14 (default "nil")
  -c, --colorOS-version string   ColorOS version (optional), e.g., --colorOS-version=ColorOS14.1.0 (default "nil")
  -h, --help                     help for oplus-updater
  -o, --ota-version string       OTA version (required), e.g., --ota-version=RMX3820_11.A.00_0000_000000000000 (default "RMX3350_11.F.25_3250_202403011232")

Update request headers

header getter example Required
language Local.getDefault().getLanguageTag() zh-CN
newLanguage Local.getDefault().getLanguageTag() zh-CN
romVersion ro.build.display.id RMX3350_13.1.0.400(CN01)
androidVersion "Android" + Build.VERSION.RELEASE Android 13
colorOSVersion "ColorOS" + ro.build.version.oplusrom ColorOS13.1.0
infVersion magic value: 1 1
otaVersion ro.build.version.ota RMX3350_11.F.25_3250_202403011232
model Build.MODEL rmx3350
mode client_auto or server_auto or manual or ??? manual
nvCarrier ro.build.oplus_nv_id
pipelineKey ro.oplus.pipeline_key
companyId ro.oplus.company_id is empty?
prjNum ro.separate.soft
brand Build.BRAND realme
brandSota ro.product.brand realme
osType ro.oplus.image.my_stock.type domestic_realme
deviceId OPPO Framework provide GUID and SHA
protectedKey

Simple

# Headers
language: zh-CN
newLanguage: zh-CN
romVersion: RMX3350_13.1.0.400(CN01)
androidVersion: Android13
colorOSVersion: ColorOS13.1.0
infVersion: 1
otaVersion: RMX3350_11.F.00_0000_000000000000
model: RMX3350
mode: manual
nvCarrier: 10010111
pipelineKey: ALLNET
companyId: 
prjNum: 21609
brand: realme
brandSota: realme
osType: domestic_realme
version: 2
deviceId: 628A6A292C3274921C497UW27DH201ODU17484CA5630345B24D20DAE1C792B90
protectedKey: {"SCENE_1":{"protectedKey":"VU0P4dUKr9gPQdiDdLI1QpV2e2K39D\/rGge4BCfQ5ZgreUJr\/QyvUx5wZrZKBff3NvMfeU9f3TIiPBxESELLW+\/GdSjuuHYr2yg??????????\/xyAH8K74HKj+OWSh8eRhi\/U3pti8T1sqPVLAXlvnrh\/3QBzaYCXuaXn823TNE+5Scnl0VaXjWwf2siNsKKAZUpeef3xCwn\/u8ILhYfTOCzOVNX+ZVXF8OW+RbhFZX9cff4y6RG943gHZyYI+H67UWnY2TjW8VP1\/FPHdx4bFLMRphE6psXYXY\/HAWLRqTZVilT\/BHWYM7HpD26lTmbb4oyfzcEy+vVo+YsGQXCZg==","version":"1717246406204","negotiationVersion":"1615879139745"}}
Content-Type: application/json; charset=utf-8
Content-Length: 1928
Host: component-ota-cn.allawntech.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.12.2

protectedKey

type: CryptoConfig

  • version: timestamp
  • negotiationVersion: pref, name: app_feature
{
  "SCENE_1": {
    "protectedKey": "VU0P4dUKr9gPQdiDdLI1QpV2e2K39D\/rGge4BCfQ5ZgreUJr\/QyvUx5wZrZKBff3NvMfeU9f3TIiPBxESELLW+\/GdSjuuHYr2yg??????????\/xyAH8K74HKj+OWSh8eRhi\/U3pti8T1sqPVLAXlvnrh\/3QBzaYCXuaXn823TNE+5Scnl0VaXjWwf2siNsKKAZUpeef3xCwn\/u8ILhYfTOCzOVNX+ZVXF8OW+RbhFZX9cff4y6RG943gHZyYI+H67UWnY2TjW8VP1\/FPHdx4bFLMRphE6psXYXY\/HAWLRqTZVilT\/BHWYM7HpD26lTmbb4oyfzcEy+vVo+YsGQXCZg==",
    "version": "1717246406204",
    "negotiationVersion": "1615879139745"
  }
}

Update Request body raw data

{
  "params": "{\"cipher\":\"dGnvtjHkz8HQzG0o74PECl1JAfXSdk\\\/gx0ykJqqqGh4rJSO3cpPskGASfCAxwgMiCfB7I9pLKXq2kjzH82ItvQAfvwvzAb9VFKyrYsYTDV5TrdrGgmZCzjCcBba6qkXfAhJrEPXii4mLtl+YZDe47ff04abgEoi4nU33KXxw87xH+opJZTR3aQasUtG5xci+QDelsSYqslAnZ7CSbMTv5oEWfuUKrNMYH8Tjayn5tUWuswRv8H7CjR+anw8\\\/dHrRxyFOpYWNhwcorp7NAq5R99Zn5ZO+0ETDS3tcjLjc66YyiSyq0eXHw5pX4+HdQAUcs9PMo8HYVehh4IPHDpH8npcnKuVbOry2O4gKsUyOfnNNq9ua4MD5eV7qplRRI7kJ9JwbeM9oBOlJr1F4WjSHL7xKiFBFrybUlB+xXdKUO+OA4Fy0OCVsor4vo7r3RH0+Yvu99aiQg92ppCLL7CLbZpl62vwq2+e5aUfARBbTr8HSv5RJPSNY1ryIRE+j3QKViBtufIyYJHllnQYTmKWiO8AQdeL\\\/oIq4nuYXYeekwEoyfPzajvjOo9FdQ\\\/\\\/jMx+CW5JLIhDa6yVfo700txNPgqvXziYpalGYx2qTI2HvHtyjmXwTn7FEYcOjJ7SDofLZR\\\/Z8iTQ\\\/FJNaF20OVDxhJqT\\\/lHikPOsDxHHw1OM3v2W+kAUeRejT56rq6EMQgp9U09y1S8lCYIGWHnQvznB2gny3lvRUxUf5WEa7cvcmx3\\\/PgVo0N5EE9N1kX05vuvPWqc7ugzEDS9r2i4bWA9ttvt6++SJHRDEBejTVpvUC\\\/KhlDDH\\\/XA8yY9MM0XlMl3phDRBpXbzg0v84F\\\/QWJvQ+LjExEN9naRi\\\/Hu\\\/LKcg\\\/QTWUtu8OJHWDOaGnkZ1NB9pwWysvv6aRCrS6RAlEby5avAT+gvndn0NBed9pE1om7Fi9vruSMiT0ebyM5lgpvs2iDFiHIKca8TjdgmjyNYeAX6kDyl9WksZE7q4sCgvqHpPuDJVbtjMHawupcyHhW83MogZWJhTd0U98Y9Kq+rNMT\\\/hZEp\\\/dA+Dd\\\/DU6KVsbWIcQzzUExf2PugW3lRTVPoCqhv\\\/0TQSut7VCUmRBy61Ake1lpVhIzNy8L+SjnBtgEAqr4VASgPVqvf0zU0cNSRZAHUlIhpLtwIT2lJ6InoneVFTLeRzSbFuWkdcjJnX\\\/wlyfMTDpQCYTPqOZHrs6BBC9Ow4hV4nOXDY0E9k+u0hllk14pq4Xz9VoSEQ2UO2aLaJG8uGbGUcUMi5\\\/TA0tAZ2TPbtOmdID4z2XglplAMXFCy8ZcT7JnVUBb85sII0KJMdv\\\/t\\\/j6\\\/bU5TRtMEJ58kOi\\\/LjRd4GY9KOmdVms5iYDvS9AxGYTMKgBHUlSZpIIoB9YdvJtkaf8uZIj0lzj+KAQd1ZFd+0Gc+M1D+G52o0wWV87XiqYgUAlaU1nYqZk7leefqGBq2LwDGW4PJ3VO8bDWGWlMjBpB06f0VdHEd7bLxSklo3XDmRvI0ny+mFJcy7Mdm1aiDzmQG9nu+HaGXFRPg\\\/1+UJF28Q9v88cyq\\\/\\\/NvwLHqNWnTHGjEr2\\\/5E2rGxFnDe8rBrGrfW6qyyDF5qCMhi1Pxrl+69cZZ9+una+oKYKDOfFUDG9YeSryGV1MBqnGvnNI1HTpw5RvgJhGM\\\/EnXNB3vrP8pMO1VVxD5+6FBcBA1nh3ew+X61yYsmavBrlq0nh8BBs5fJhBKexrNdbmOcZ48DIlU46lTNqpKhP\\\/+e5vdM1DVhyot6w+8A3HYRFqCLUzZtWnfJHuXVD92FEdzA=\",\"iv\":\"gUW5DpcsEyQ+xQpMwH53Eg==\"}"
}
{
  "params": {
    "cipher": {
      "components": [
        {
          "componentName": "system_vendor",
          "componentVersion": "00.3.00013103.2024022811453523784981.ac8fcd39"
        },
        {
          "componentName": "my_product",
          "componentVersion": "21609_1310_T.9.0.2024020804070123384722.ec4e3e75"
        },
        {
          "componentName": "my_heytap",
          "componentVersion": "11.9.6.0.2024020801000123375469.d935a743"
        },
        {
          "componentName": "my_stock",
          "componentVersion": "26.4.2.3.2024022816265923786726.8561c7ae"
        },
        {
          "componentName": "my_region",
          "componentVersion": "13.1.02331.2024020700002523354770.15bc037d"
        },
        {
          "componentName": "my_carrier",
          "componentVersion": "13.1.02331.2024020800002523375164.e151df65"
        },
        {
          "componentName": "my_bigball",
          "componentVersion": "21609_1310_T.0.0.2024020704012523361245.7bd48ce3"
        },
        {
          "componentName": "my_manifest",
          "componentVersion": "RMX3350_11.F.25_3250_202403011232.97.d78aa642"
        }
      ],
      "mode": 0,
      "time": 1716827580598,
      "isRooted": "1",
      "type": "1",
      "registrationId": "realme_CN_b397690c4935061a9b933ecae707cb07",
      "securityPatch": "2024-03-05",
      "securityPatchVendor": "2024-03-05",
      "strategyVersion": "9",
      "cota": {
        "cotaVersion": "",
        "cotaVersionName": "",
        "buildType": "user"
      },
      "opex": {
        "check": true
      },
      "sota": {
        "sotaProtocolVersion": "1",
        "sotaVersion": "new",
        "otaUpdateTime": -1,
        "updateViaReboot": 2
      },
      "deviceId": "eb7c6e6f57a623fd267c????????????????????002c25c0fb5c85eac1de2bbd",
      "duid": "BACB337B80074E64A3398AC????????????????????C9C5130BCF0053B63A428",
      "h5LinkVersion": 3
    },
    "iv": "kcolHbUsM0IdhDvIF499zA=="
  }
}

Oplus ota check rooted

    String verityMode = SystemProperties.get("ro.boot.veritymode", "");
    String deviceState = SystemProperties.get("ro.boot.vbmeta.device_state", "");
    return "enforcing".equals(verityMode) || ("eio".equals(verityMode) && "locked".equals(deviceState));

Response

Response Cipher

{
  "parent": "ota",
  "components": [
    {
      "componentId": "my_manifest_RMX3820_11.A.48_0480_202312191750.97.8acdd0e1",
      "componentName": "my_manifest",
      "componentVersion": "RMX3820_11.A.48_0480_202312191750.97.8acdd0e1",
      "componentPackets": {
        "size": "7567870840",
        "vabInfo": {
          "data": {
            "otaStreamingProperty": "payload_metadata.bin:2061:289585,payload.bin:2061:7567865232,payload_properties.txt:7567867351:357,metadata:69:1004,metadata.pb:1141:853",
            "vab_package_hash": "9dee63eec5dfbe0dc0912d1f9f4a49ac",
            "extra_params": "metadata_hash:4c53b6277db3711a797c5f6c4ef24ee16b85783c81344e4532eb18a11d1e8a22",
            "header": [
              "FILE_HASH=aE0Ij/TOUrVd/zrsHd2Rirj+Cm7XAXqmUIdGXotS6LI=",
              "FILE_SIZE=7567865232",
              "METADATA_HASH=A/nUVqGS82xpbbtNa9ERoignix3BTN3NZFQ27CtFvcs=",
              "METADATA_SIZE=289318",
              "security_patch_vendor=2023-10-05",
              "oplus_rom_version=V13.1.1",
              "ota_target_version=RMX3820_11.A.48_0480_202312191750",
              "oplus_separate_soft=22635",
              "oplus_update_engine_verify_disable=0",
              "security_patch=2023-10-05"
            ]
          }
        },
        "manualUrl": "https://gauss-componentotacostmanual-cn.allawnfs.com/remove-0e724850647faba7b84e96cc150c7f9c/component-ota/23/12/20/703c9a72c6684369ae2cbeea7dacf305.zip",
        "id": "domestic_my_manifest_RMX3820_11.A.48_0480_202312191750.97.8acdd0e1_1_9dee63eec5dfbe0dc0912d1f9f4a49ac",
        "type": "1",
        "url": "https://gauss-compotacostauto-cn.allawnfs.com/remove-0e724850647faba7b84e96cc150c7f9c/component-ota/23/12/20/703c9a72c6684369ae2cbeea7dacf305.zip",
        "md5": "9dee63eec5dfbe0dc0912d1f9f4a49ac"
      }
    }
  ],
  "securityPatch": "2023-10-05",
  "realVersionName": "RMX3820_13.1.1.148(CN01)",
  "otaVersion": "RMX3820_11.A.48_0480_202312191750",
  "isNvDescription": true,
  "description": {
    "opex": {},
    "share": ".",
    "panelUrl": "https://gauss-compotacostauto-cn.allawnfs.com/remove-0e724850647faba7b84e96cc150c7f9c/component-ota/24/01/05/eb67803529e24f49a4ea4b4ce5e0e7f2.html",
    "url": "https://h5fs.coloros.com/c1eeea21f88343e48612a8c5851cee23/static/index.html#/about",
    "firstTitle": "本次更新优化系统流畅性、优化续航表现、修复其他已知问题"
  },
  "versionName": "RMX3820_13.1.1.148(CN01)",
  "rid": "b542a90e-8213-4203-8f4f-63ea9a49d6f6",
  "reminderValue": {
    "download": {
      "notice": [
        1,
        3,
        5,
        7,
        7,
        7
      ],
      "pop": [
        1,
        1,
        1
      ],
      "version": "1703555533000"
    },
    "upgrade": {
      "notice": [
        3,
        5,
        7,
        7,
        7
      ],
      "pop": [
        3,
        3,
        3,
        3,
        3
      ],
      "version": "1703555533000"
    }
  },
  "isRecruit": false,
  "realAndroidVersion": "Android 13",
  "opexInfo": [],
  "isSecret": false,
  "realOsVersion": "ColorOS 13.1.1",
  "osVersion": "ColorOS 13.1",
  "componentAssembleType": true,
  "googlePatchInfo": "0",
  "id": "65977eee124eec011ace498a",
  "colorOSVersion": "ColorOS 13.1",
  "paramFlag": 1,
  "reminderType": 1,
  "noticeType": 0,
  "decentralize": {
    "strategyVersion": "9",
    "round": 28800,
    "offset": 24286
  },
  "versionCode": 480,
  "silenceUpdate": 0,
  "securityPatchVendor": "2023-10-05",
  "realOtaVersion": "RMX3820_11.A.48_0480_202312191750",
  "androidVersion": "Android 13",
  "nightUpdateLimit": "00-99",
  "versionTypeH5": "正式版",
  "aid": "RMX3820NV97_11.A",
  "nvId16": "NV97",
  "status": "published"
}

oplusupdater's People

Contributors

houvven avatar dependabot[bot] avatar

Stargazers

 avatar Bruce Teng avatar 余空 avatar

Watchers

 avatar

Forkers

hanajoruno

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.