Advertisement
xtekky_

Untitled

Jul 27th, 2022
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.94 KB | None | 0 0
  1. import random, time, json, requests, uuid, hashlib, urllib.parse
  2.  
  3. class Xgorgon:
  4.     def __init__(self, params: str, data: str, cookies: str) -> None:
  5.  
  6.         self.params  = params
  7.         self.data    = data
  8.         self.cookies = cookies
  9.  
  10.     def hash(self, data: str) -> str:
  11.         _hash = str(
  12.             hashlib.md5(
  13.                 data.encode()
  14.             ).hexdigest()
  15.         )
  16.  
  17.         return _hash
  18.  
  19.     def get_base_string(self) -> str:
  20.         base_str = self.hash(self.params)
  21.         base_str = (
  22.             base_str + self.hash(self.data)
  23.             if self.data
  24.             else base_str + str(
  25.                 "0"
  26.                 *
  27.                 32
  28.             )
  29.         )
  30.         base_str = (
  31.             base_str + self.hash(self.cookies)
  32.             if self.cookies
  33.             else base_str + str(
  34.                 "0"
  35.                 *
  36.                 32
  37.             )
  38.         )
  39.  
  40.         return base_str
  41.  
  42.     def get_value(self) -> json:
  43.         base_str = self.get_base_string()
  44.  
  45.         return self.encrypt(base_str)
  46.  
  47.     def encrypt(self, data: str) -> json:
  48.         unix = int(time.time())
  49.         len = 0x14
  50.         key = [0xDF ,0x77 ,0xB9 ,0x40 ,0xB9 ,0x9B ,0x84 ,0x83 ,0xD1 ,0xB9 ,0xCB ,0xD1 ,0xF7 ,0xC2 ,0xB9 ,0x85 ,0xC3 ,0xD0 ,0xFB ,0xC3]
  51.  
  52.         param_list = []
  53.  
  54.         for i in range(0, 12, 4):
  55.             temp = data[8 * i : 8 * (i + 1)]
  56.             for j in range(4):
  57.                 H = int(temp[j * 2 : (j + 1) * 2], 16)
  58.                 param_list.append(H)
  59.  
  60.         param_list.extend([0x0, 0x6, 0xB, 0x1C])
  61.  
  62.         H = int(hex(unix), 16)
  63.  
  64.         param_list.append(
  65.             (
  66.                 H & 0xFF000000
  67.                 )
  68.             >> 24
  69.         )
  70.         param_list.append(
  71.             (
  72.                 H & 0x00FF0000
  73.                 )
  74.             >> 16
  75.         )
  76.         param_list.append(
  77.             (
  78.                 H & 0x0000FF00
  79.                 )
  80.             >> 8
  81.         )
  82.         param_list.append(
  83.             (
  84.                 H & 0x000000FF
  85.                 )
  86.             >> 0
  87.         )
  88.  
  89.         eor_result_list = []
  90.  
  91.         for A, B in zip(param_list, key):
  92.             eor_result_list.append(A ^ B)
  93.  
  94.         for i in range(len):
  95.  
  96.             C = self.reverse(eor_result_list[i])
  97.             D = eor_result_list[
  98.                 (
  99.                     i + 1
  100.                     )
  101.                 % len
  102.             ]
  103.             E = C ^ D
  104.  
  105.             F = self.rbit_algorithm(E)
  106.             H = (
  107.                 (
  108.                     F ^ 0xFFFFFFFF
  109.                     )
  110.                 ^ len
  111.             ) & 0xFF
  112.             eor_result_list[i] = H
  113.  
  114.         result = ""
  115.         for param in eor_result_list:
  116.             result += self.hex_string(param)
  117.  
  118.         return {
  119.             "X-Gorgon": (
  120.                 "0404b0d30000"
  121.                 + result
  122.             ),
  123.             "X-Khronos": str(unix)
  124.         }
  125.  
  126.     def rbit_algorithm(self, num):
  127.         result = ""
  128.         tmp_string = bin(num)[2:]
  129.  
  130.         while len(tmp_string) < 8:
  131.             tmp_string = (
  132.                 "0"
  133.                 + tmp_string
  134.             )
  135.  
  136.         for i in range(0, 8):
  137.             result = (
  138.                 result
  139.                 + tmp_string[
  140.                     7 - i
  141.                 ]
  142.             )
  143.  
  144.         return int(result, 2)
  145.  
  146.     def hex_string(self, num):
  147.         tmp_string = hex(num)[2:]
  148.  
  149.         if len(tmp_string) < 2:
  150.             tmp_string = "0" + tmp_string
  151.  
  152.         return tmp_string
  153.  
  154.     def reverse(self, num):
  155.         tmp_string = self.hex_string(num)
  156.  
  157.         return int(tmp_string[1:] + tmp_string[:1], 16)
  158.    
  159. class Applog():
  160.    
  161.     def __init__(self) -> None:
  162.         self.mc         = f'{random.randint(1, 9)}{random.randint(1, 9)}:{random.randint(1, 9)}9:8A:7{random.randint(1, 9)}:{random.randint(1, 9)}{random.randint(1, 9)}:{random.randint(1, 9)}{random.randint(1, 9)}'
  163.         self.serialnum  = f'{random.randint(1, 9)}abd{random.randint(1, 9)}ec{random.randint(1, 9)}{random.randint(1, 9)}{random.randint(1, 9)}{random.randint(1, 9)}{random.randint(1, 9)}{random.randint(1, 9)}{random.randint(1, 9)}{random.randint(1, 9)}f'
  164.         self.googleaid  = str(uuid.uuid4())
  165.         self.clientudid = str(random.randint(100000000000000, 999999999999999))
  166.         self.openudid  = str(random.randint(1000000000000000, 9999999999999999))
  167.         self.osversion  = f'{random.randint(4, 5)}.{random.randint(0, 9)}.{random.randint(0, 9)}'
  168.         self.appversion = '19.3.3'
  169.         self.dev_brand  = 'motorola'
  170.         self.dev_model  = 'XT1069'
  171.         self.aid = "1233"
  172.         self.version_code = "2021903030"
  173.         self.timezone = "America/Sao_Paulo"
  174.         self.offset = "3600"
  175.         self.res = "720x1280"
  176.         self.lang = 'pt'
  177.         self.region = "BR"
  178.         self.dpi = "320"
  179.         self.build = "MPB24.65-34-3"
  180.  
  181.     def get_payload(self) -> dict:
  182.  
  183.         data = {
  184.             "header": {
  185.                 "serial_number": self.serialnum,
  186.                 "display_density": "mdpi",
  187.                 "tz_name": self.timezone,
  188.                 "resolution": self.res,
  189.                 "timezone": "1",
  190.                 "carrier": "Lycamobile",
  191.                 "sim_serial_number": {},
  192.                 "rom_version": self.build, #"MPB24.65-34-3",
  193.                 "density_dpi": self.dpi,
  194.                 "device_brand": self.dev_brand,
  195.                 "manifest_version_code": self.version_code,
  196.                 "device_manufacturer": self.dev_brand,
  197.                 "clientudid": self.clientudid,
  198.                 "openudid": self.openudid,
  199.                 "update_version_code": self.version_code,
  200.                 "os_api": "23",
  201.                 "display_name": "musical_ly",
  202.                 "app_version": self.appversion,
  203.                 "version_code": str(self.appversion).replace(".", "0"),
  204.                 "mc": self.mc,
  205.                 "language": self.lang, #"pt_BR",
  206.                 "build_serial": self.serialnum,
  207.                 "device_model": self.dev_model,
  208.                 "google_aid": self.googleaid,
  209.                 "region": self.region,
  210.                 "package": "com.zhiliaoapp.musically",
  211.                 "tz_offset": self.offset,
  212.                 "sim_region": "ru",
  213.                 "access": "wifi",
  214.                 "os_version": self.osversion,
  215.                 "sdk_version": "4",
  216.                 "cpu_abi": "armeabi-v7a",
  217.                 "aid": self.aid,
  218.                 "os": "Android",
  219.                 "not_request_sender": 0,
  220.                 "channel": "wandoujia"
  221.             },
  222.             "_gen_time": int(time.time()),
  223.             "magic_tag": "ss_app_log"
  224.         }
  225.  
  226.         return json.dumps(data)
  227.    
  228.     def get_params(self):
  229.         params = {
  230.             "ac": "wifi",
  231.             "channel": "googleplay",
  232.             "aid": self.aid,
  233.             "app_name": "musical_ly",
  234.             "version_code": str(self.appversion).replace('.', '0'),
  235.             "version_name": self.appversion,
  236.             "device_platform": "android",
  237.             "ab_version": self.appversion,
  238.             "ssmix": "a",
  239.             "device_type": self.dev_model, #"XT1069",
  240.             "device_brand": self.dev_brand, #"motorola",
  241.             "language": self.lang,
  242.             "os_api": "23",
  243.             "os_version": "6.0",
  244.             "openudid": self.openudid, #"a08b76606458ca0d",
  245.             "manifest_version_code": self.version_code,
  246.             "resolution": "720*1184",
  247.             "dpi": self.dpi,
  248.             "update_version_code": self.version_code,
  249.             "_rticket": str(int(time.time())) + "000",
  250.             "app_type": "normal",
  251.             "sys_region": self.region,
  252.             "timezone_name": self.timezone,
  253.             "ts": int(time.time()),
  254.             "timezone_offset": self.offset,
  255.             "build_number": self.appversion,
  256.             "region": self.region,
  257.             "uoo": "1",
  258.             "app_language": self.lang,
  259.             "locale": f"{self.lang}-{self.region}",
  260.             "op_region": self.region,
  261.             "ac2": "wifi",
  262.             "cdid": self.googleaid #"8e90c714-5b9e-4f23-b1b8-fbedeecb8884"
  263.         }
  264.        
  265.         return urllib.parse.urlencode(params)
  266.    
  267.     def get_headers(self, params: str, payload: dict):
  268.         sig = Xgorgon(params, payload, None).get_value()
  269.        
  270.         headers = {
  271.             "x-ss-stub": str(hashlib.md5(payload.encode()).hexdigest()).upper(),
  272.             "accept-encoding": "gzip",
  273.             "passport-sdk-version": "19",
  274.             "sdk-version": "2",
  275.             "x-ss-req-ticket": str(int(time.time())) + "000",
  276.             "x-tt-dm-status": "login=0;ct=0",
  277.             "host": "log-va.tiktokv.com",
  278.             "connection": "Keep-Alive",
  279.             "user-agent": (
  280.                 f"com.zhiliaoapp.musically/{self.version_code} "
  281.                 + f"(Linux; U; Android 6.0; pt_BR; {self.dev_model}; "
  282.                 + f"Build/{self.build}; "
  283.                 + "Cronet/TTNetVersion:5f9640e3 2021-04-21 QuicVersion:47946d2a 2020-10-14)"
  284.             ),
  285.             'X-Gorgon': sig["X-Gorgon"],
  286.             'X-Khronos': sig["X-Khronos"]
  287.         }
  288.        
  289.         return headers
  290.  
  291.     def get_device(self) -> dict:
  292.         payload = self.get_payload()
  293.         params = self.get_params()
  294.        
  295.         req = requests.post(
  296.             url = (
  297.                 'http://'
  298.                 + 'log-va.tiktokv.com'
  299.                 + '/service/2/device_register/?'
  300.                 + params
  301.             ),
  302.             headers = self.get_headers(params, payload),
  303.             data = payload
  304.         )
  305.         return json.dumps(req.json(), indent=4)
  306.  
  307. if __name__ == "__main__":
  308.     applog = Applog()
  309.     device_id = applog.get_device()
  310.  
  311.     a = json.loads(device_id)
  312.     print(
  313.         str(
  314.                 {
  315.                 'device_id': a['device_id'],
  316.                 'install_id': a['install_id']
  317.             }
  318.         )
  319.     )
  320.  
  321.  
  322.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement