import hashlib import json import random import re import time import uuid from datetime import datetime, timedelta, timezone from html.parser import HTMLParser import pybase64 from utils.Logger import logger from utils.configs import conversation_only cores = [8, 16, 24, 32] timeLayout = "%a %b %d %Y %H:%M:%S" cached_scripts = [] cached_dpl = "" cached_time = 0 cached_require_proof = "" navigator_key = [ "registerProtocolHandler−function registerProtocolHandler() { [native code] }", "storage−[object StorageManager]", "locks−[object LockManager]", "appCodeName−Mozilla", "permissions−[object Permissions]", "share−function share() { [native code] }", "webdriver−false", "managed−[object NavigatorManagedData]", "canShare−function canShare() { [native code] }", "vendor−Google Inc.", "vendor−Google Inc.", "mediaDevices−[object MediaDevices]", "vibrate−function vibrate() { [native code] }", "storageBuckets−[object StorageBucketManager]", "mediaCapabilities−[object MediaCapabilities]", "getGamepads−function getGamepads() { [native code] }", "bluetooth−[object Bluetooth]", "share−function share() { [native code] }", "cookieEnabled−true", "virtualKeyboard−[object VirtualKeyboard]", "product−Gecko", "mediaDevices−[object MediaDevices]", "canShare−function canShare() { [native code] }", "getGamepads−function getGamepads() { [native code] }", "product−Gecko", "xr−[object XRSystem]", "clipboard−[object Clipboard]", "storageBuckets−[object StorageBucketManager]", "unregisterProtocolHandler−function unregisterProtocolHandler() { [native code] }", "productSub−20030107", "login−[object NavigatorLogin]", "vendorSub−", "login−[object NavigatorLogin]", "getInstalledRelatedApps−function getInstalledRelatedApps() { [native code] }", "mediaDevices−[object MediaDevices]", "locks−[object LockManager]", "webkitGetUserMedia−function webkitGetUserMedia() { [native code] }", "vendor−Google Inc.", "xr−[object XRSystem]", "mediaDevices−[object MediaDevices]", "virtualKeyboard−[object VirtualKeyboard]", "virtualKeyboard−[object VirtualKeyboard]", "appName−Netscape", "storageBuckets−[object StorageBucketManager]", "presentation−[object Presentation]", "onLine−true", "mimeTypes−[object MimeTypeArray]", "credentials−[object CredentialsContainer]", "presentation−[object Presentation]", "getGamepads−function getGamepads() { [native code] }", "vendorSub−", "virtualKeyboard−[object VirtualKeyboard]", "serviceWorker−[object ServiceWorkerContainer]", "xr−[object XRSystem]", "product−Gecko", "keyboard−[object Keyboard]", "gpu−[object GPU]", "getInstalledRelatedApps−function getInstalledRelatedApps() { [native code] }", "webkitPersistentStorage−[object DeprecatedStorageQuota]", "doNotTrack", "clearAppBadge−function clearAppBadge() { [native code] }", "presentation−[object Presentation]", "serial−[object Serial]", "locks−[object LockManager]", "requestMIDIAccess−function requestMIDIAccess() { [native code] }", "locks−[object LockManager]", "requestMediaKeySystemAccess−function requestMediaKeySystemAccess() { [native code] }", "vendor−Google Inc.", "pdfViewerEnabled−true", "language−zh-CN", "setAppBadge−function setAppBadge() { [native code] }", "geolocation−[object Geolocation]", "userAgentData−[object NavigatorUAData]", "mediaCapabilities−[object MediaCapabilities]", "requestMIDIAccess−function requestMIDIAccess() { [native code] }", "getUserMedia−function getUserMedia() { [native code] }", "mediaDevices−[object MediaDevices]", "webkitPersistentStorage−[object DeprecatedStorageQuota]", "sendBeacon−function sendBeacon() { [native code] }", "hardwareConcurrency−32", "credentials−[object CredentialsContainer]", "storage−[object StorageManager]", "cookieEnabled−true", "pdfViewerEnabled−true", "windowControlsOverlay−[object WindowControlsOverlay]", "scheduling−[object Scheduling]", "pdfViewerEnabled−true", "hardwareConcurrency−32", "xr−[object XRSystem]", "webdriver−false", "getInstalledRelatedApps−function getInstalledRelatedApps() { [native code] }", "getInstalledRelatedApps−function getInstalledRelatedApps() { [native code] }", "bluetooth−[object Bluetooth]" ] document_key = ['_reactListeningo743lnnpvdg', 'location'] window_key = [ "0", "window", "self", "document", "name", "location", "customElements", "history", "navigation", "locationbar", "menubar", "personalbar", "scrollbars", "statusbar", "toolbar", "status", "closed", "frames", "length", "top", "opener", "parent", "frameElement", "navigator", "origin", "external", "screen", "innerWidth", "innerHeight", "scrollX", "pageXOffset", "scrollY", "pageYOffset", "visualViewport", "screenX", "screenY", "outerWidth", "outerHeight", "devicePixelRatio", "clientInformation", "screenLeft", "screenTop", "styleMedia", "onsearch", "isSecureContext", "trustedTypes", "performance", "onappinstalled", "onbeforeinstallprompt", "crypto", "indexedDB", "sessionStorage", "localStorage", "onbeforexrselect", "onabort", "onbeforeinput", "onbeforematch", "onbeforetoggle", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontentvisibilityautostatechange", "oncontextlost", "oncontextmenu", "oncontextrestored", "oncuechange", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "onformdata", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onmousedown", "onmouseenter", "onmouseleave", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onresize", "onscroll", "onsecuritypolicyviolation", "onseeked", "onseeking", "onselect", "onslotchange", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "ontoggle", "onvolumechange", "onwaiting", "onwebkitanimationend", "onwebkitanimationiteration", "onwebkitanimationstart", "onwebkittransitionend", "onwheel", "onauxclick", "ongotpointercapture", "onlostpointercapture", "onpointerdown", "onpointermove", "onpointerrawupdate", "onpointerup", "onpointercancel", "onpointerover", "onpointerout", "onpointerenter", "onpointerleave", "onselectstart", "onselectionchange", "onanimationend", "onanimationiteration", "onanimationstart", "ontransitionrun", "ontransitionstart", "ontransitionend", "ontransitioncancel", "onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onlanguagechange", "onmessage", "onmessageerror", "onoffline", "ononline", "onpagehide", "onpageshow", "onpopstate", "onrejectionhandled", "onstorage", "onunhandledrejection", "onunload", "crossOriginIsolated", "scheduler", "alert", "atob", "blur", "btoa", "cancelAnimationFrame", "cancelIdleCallback", "captureEvents", "clearInterval", "clearTimeout", "close", "confirm", "createImageBitmap", "fetch", "find", "focus", "getComputedStyle", "getSelection", "matchMedia", "moveBy", "moveTo", "open", "postMessage", "print", "prompt", "queueMicrotask", "releaseEvents", "reportError", "requestAnimationFrame", "requestIdleCallback", "resizeBy", "resizeTo", "scroll", "scrollBy", "scrollTo", "setInterval", "setTimeout", "stop", "structuredClone", "webkitCancelAnimationFrame", "webkitRequestAnimationFrame", "chrome", "caches", "cookieStore", "ondevicemotion", "ondeviceorientation", "ondeviceorientationabsolute", "launchQueue", "documentPictureInPicture", "getScreenDetails", "queryLocalFonts", "showDirectoryPicker", "showOpenFilePicker", "showSaveFilePicker", "originAgentCluster", "onpageswap", "onpagereveal", "credentialless", "speechSynthesis", "onscrollend", "webkitRequestFileSystem", "webkitResolveLocalFileSystemURL", "sendMsgToSolverCS", "webpackChunk_N_E", "__next_set_public_path__", "next", "__NEXT_DATA__", "__SSG_MANIFEST_CB", "__NEXT_P", "_N_E", "regeneratorRuntime", "__REACT_INTL_CONTEXT__", "DD_RUM", "_", "filterCSS", "filterXSS", "__SEGMENT_INSPECTOR__", "__NEXT_PRELOADREADY", "Intercom", "__MIDDLEWARE_MATCHERS", "__STATSIG_SDK__", "__STATSIG_JS_SDK__", "__STATSIG_RERENDER_OVERRIDE__", "_oaiHandleSessionExpired", "__BUILD_MANIFEST", "__SSG_MANIFEST", "__intercomAssignLocation", "__intercomReloadLocation" ] class ScriptSrcParser(HTMLParser): def handle_starttag(self, tag, attrs): global cached_scripts, cached_dpl, cached_time if tag == "script": attrs_dict = dict(attrs) if "src" in attrs_dict: src = attrs_dict["src"] cached_scripts.append(src) match = re.search(r"c/[^/]*/_", src) if match: cached_dpl = match.group(0) cached_time = int(time.time()) def get_data_build_from_html(html_content): global cached_scripts, cached_dpl, cached_time parser = ScriptSrcParser() parser.feed(html_content) if not cached_scripts: cached_scripts.append("https://chatgpt.com/backend-api/sentinel/sdk.js") if not cached_dpl: match = re.search(r']*data-build="([^"]*)"', html_content) if match: data_build = match.group(1) cached_dpl = data_build cached_time = int(time.time()) logger.info(f"Found dpl: {cached_dpl}") async def get_dpl(service): global cached_scripts, cached_dpl, cached_time if int(time.time()) - cached_time < 15 * 60: return True headers = service.base_headers.copy() cached_scripts = [] cached_dpl = "" try: if conversation_only: return True r = await service.s.get(f"{service.host_url}/", headers=headers, timeout=5) r.raise_for_status() get_data_build_from_html(r.text) if not cached_dpl: raise Exception("No Cached DPL") else: return True except Exception as e: logger.info(f"Failed to get dpl: {e}") cached_dpl = None cached_time = int(time.time()) return False def get_parse_time(): now = datetime.now(timezone(timedelta(hours=-5))) return now.strftime(timeLayout) + " GMT-0500 (Eastern Standard Time)" def get_config(user_agent): config = [ random.randint(1080, 1440+1080), get_parse_time(), 4294705152, 0, user_agent, "", cached_dpl, "en-US", "en-US,es-US,en,es", 0, random.choice(navigator_key), random.choice(document_key), random.choice(window_key), time.perf_counter(), str(uuid.uuid4()), "", random.choice(cores), ] return config def get_answer_token(seed, diff, config): start = time.time() answer, solved = generate_answer(seed, diff, config) end = time.time() logger.info(f'diff: {diff}, time: {int((end - start) * 1e6) / 1e3}ms, solved: {solved}') return "gAAAAAB" + answer, solved def generate_answer(seed, diff, config): diff_len = len(diff) seed_encoded = seed.encode() static_config_part1 = (json.dumps(config[:3], separators=(',', ':'), ensure_ascii=False)[:-1] + ',').encode() static_config_part2 = (',' + json.dumps(config[4:9], separators=(',', ':'), ensure_ascii=False)[1:-1] + ',').encode() static_config_part3 = (',' + json.dumps(config[10:], separators=(',', ':'), ensure_ascii=False)[1:]).encode() target_diff = bytes.fromhex(diff) for i in range(500000): dynamic_json_i = str(i).encode() dynamic_json_j = str(i >> 1).encode() final_json_bytes = static_config_part1 + dynamic_json_i + static_config_part2 + dynamic_json_j + static_config_part3 base_encode = pybase64.b64encode(final_json_bytes) hash_value = hashlib.sha3_512(seed_encoded + base_encode).digest() if hash_value[:diff_len] <= target_diff: return base_encode.decode(), True return "wQ8Lk5FbGpA2NcR9dShT6gYjU7VxZ4D" + pybase64.b64encode(f'"{seed}"'.encode()).decode(), False def get_requirements_token(config): require, solved = generate_answer(format(random.random()), "0fffff", config) return 'gAAAAAC' + require if __name__ == "__main__": # cached_scripts.append( # "https://cdn.oaistatic.com/_next/static/cXh69klOLzS0Gy2joLDRS/_ssgManifest.js?dpl=453ebaec0d44c2decab71692e1bfe39be35a24b3") # cached_dpl = "453ebaec0d44c2decab71692e1bfe39be35a24b3" # cached_time = int(time.time()) # for i in range(10): # seed = format(random.random()) # diff = "000032" # config = get_config("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome") # answer = get_answer_token(seed, diff, config) cached_scripts.append( "https://cdn.oaistatic.com/_next/static/cXh69klOLzS0Gy2joLDRS/_ssgManifest.js?dpl=453ebaec0d44c2decab71692e1bfe39be35a24b3") cached_dpl = "dpl=453ebaec0d44c2decab71692e1bfe39be35a24b3" config = get_config("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36") get_requirements_token(config)