Untitled
unknown
plain_text
2 months ago
5.1 kB
3
Indexable
import os import sys import json import requests from argparse import ArgumentParser try: from utils import crypto from utils import data from utils.logger import Logger from utils.request import Request except ImportError: from realme_ota.utils import crypto from realme_ota.utils import data from realme_ota.utils.request import Request from realme_ota.utils.logger import Logger def main(): parser = ArgumentParser() verbosity = parser.add_mutually_exclusive_group() verbosity.add_argument("-v", "--verbosity", type=int, choices=range(0, 6), default=4, help="Set the verbosity level. Range: 0 (no logging) to 5 (debug). Default: 4 (info).") verbosity.add_argument("-s", "--silent", action='store_true', help="Enable silent output (purge logging). Shortcut for '-v0'.") parser.add_argument("product_model", type=str, help="Product Model (ro.product.name).") parser.add_argument("ota_version", help="OTA Version (ro.build.version.ota).") parser.add_argument("rui_version", type=int, choices=[1, 2, 3, 4, 5], help="RealmeUI Version (ro.build.version.realmeui).") parser.add_argument("nv_identifier", type=str, nargs='?', help="NV (carrier) identifier (ro.build.oplus_nv_id) (if none, provide 0 or omit).") req_opts = parser.add_argument_group("request options") req_opts.add_argument("-r", "--region", type=int, choices=[0, 1, 2, 3], default=0, help="Use custom region for the request (GL = 0, CN = 1, IN = 2, EU = 3).") req_opts.add_argument("-g", "--guid", type=str, default="0", help="The guid of the third line in the file /data/system/openid_config.xml (only required to extract 'CBT' in China).") req_opts.add_argument("-i", "--imei", type=str, nargs='+', help="Specify one or two IMEIs for the request.") req_opts.add_argument("-b", "--beta", action='store_true', help="Try to get a test version (IMEI probably required).") req_opts.add_argument("-l", "--language", type=str, default=None, help="Specify the language of response (en-EN by default, zh-CN in China).") req_opts.add_argument("--old-method", action='store_true', help="Use old method for the request (only applies if rui_version >= 2).") out_opts = parser.add_argument_group("output options") out_opts.add_argument("-d", "--dump", type=str, help="Save request response into a file.") out_opts.add_argument("-o", "--only", type=str, help="Only show the desired value from the response.") args = parser.parse_args() logger = Logger(level=0 if args.silent else args.verbosity) request = Request( req_version=1 if (args.old_method or args.rui_version == 1) else 2, model=args.product_model, ota_version=args.ota_version, rui_version=args.rui_version, nv_identifier=args.nv_identifier, region=args.region, deviceId=args.guid, imei0=args.imei[0] if args.imei and len(args.imei) > 0 else None, imei1=args.imei[1] if args.imei and len(args.imei) > 1 else None, beta=args.beta, language=args.language ) logger.log(f"Load payload for {args.product_model} (RealmeUI V{args.rui_version})") try: request.set_vars() req_body, req_hdrs, plain_body = request.set_body_headers() except Exception as e: logger.die(f"Error setting request variables: {e}", 2) logger.log("Waiting for the server response...") try: response = requests.post(request.url, data=request.body, headers=request.headers, timeout=30) response.raise_for_status() except Exception as e: logger.die(f"Request failed: {e}", 1) try: json_response = json.loads(response.content) server_data = json.loads(request.decrypt(json_response[request.resp_key])) except Exception as e: logger.die(f"Failed to parse server response: {e}", 2) logger.log("Data received successfully!") # Обработка и запись данных в текстовый файл try: version_name = server_data.get("versionName", "Unknown Version") description_url = server_data.get("description", {}).get("url", "No Description URL") update_url = server_data.get("components", [{}])[0].get("componentPackets", {}).get("url", "No Update URL") phone_model = args.product_model output_text = f""" ---------------------------------- *{phone_model}* Версия: {version_name} Изменения: {description_url} Ссылка: {update_url} ---------------------------------- """.strip() with open("update_info.txt", "w", encoding="utf-8") as file: file.write(output_text + "\n") logger.log("Data successfully saved to update_info.txt!") except Exception as e: logger.die(f"Error writing to file: {e}", 1) if __name__ == "__main__": main()
Editor is loading...
Leave a Comment