├── README.md ├── RSAUtil.py ├── akamai1.75 ├── 1.js ├── akamai1.75_ast.js └── test.py ├── gee4 ├── 1.js ├── bg.jpg ├── geet4.py └── slice.jpg ├── hlg.zip ├── 云汉芯城.js ├── 拼刀刀-店铺后台数据采集 ├── README.md ├── express_api.js ├── main.exe ├── pdd-易语言源码.e ├── pdd_anti-content.js └── python-demo.py ├── 数美ast.js ├── 数美滑块.py └── 豆瓣.py /README.md: -------------------------------------------------------------------------------- 1 | # JsReverse 2 | js逆向代码-成品 3 | -------------------------------------------------------------------------------- /RSAUtil.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @Time : 2023/9/26 4 | @Author : luoyu 5 | """ 6 | from Crypto.PublicKey import RSA 7 | from Crypto.Cipher import PKCS1_OAEP 8 | import base64 9 | import binascii 10 | 11 | 12 | class RSAUtil: 13 | def __init__(self, key_str: str = None, modulus: str | int = None, exponent: str | int = None): 14 | """ 15 | 参数样式 16 | :param key_str: 17 | 第一种: 18 | "-----BEGIN PUBLIC KEY-----\n" \ 19 | "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5gsH+AA4XWONB5TDcUd+xCz7ejOFHZKlcZDx+pF1i7Gsvi1vjyJoQhRtRSn950x498VUkx7rUxg1/ScBVfrRxQOZ8xFBye3pjAzfb22+RCuYApSVpJ3OO3KsEuKExftz9oFBv3ejxPlYc5yq7YiBO8XlTnQN0Sa4R4qhPO3I2MQIDAQAB\n" \ 20 | "-----END PUBLIC KEY-----" 21 | 第二种: 22 | 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5gsH+AA4XWONB5TDcUd+xCz7ejOFHZKlcZDx+pF1i7Gsvi1vjyJoQhRtRSn950x498VUkx7rUxg1/ScBVfrRxQOZ8xFBye3pjAzfb22+RCuYApSVpJ3OO3KsEuKExftz9oFBv3ejxPlYc5yq7YiBO8XlTnQN0Sa4R4qhPO3I2MQIDAQAB' 23 | 24 | :param modulus: 25 | 第一种(str类型): 26 | '00C1E3934D1614465B33053E7F48EE4EC87B14B95EF88947713D25EECBFF7E74C7977D02DC1D9451F79DD5D1C10C29ACB6A9B4D6FB7D0A0279B6719E1772565F09AF627715919221AEF91899CAE08C0D686D748B20A3603BE2318CA6BC2B59706592A9219D0BF05C9F65023A21D2330807252AE0066D59CEEFA5F2748EA80BAB81' 27 | 第二种(int类型): 28 | 136153462421446847404340432441046996374735571025589056967906613334049032306309642600950180794472974184474850029075084679952125029724775675860862428869529368335136951744118770626613042094193316007621445630035543273179259178158896311604233203144417656446177150555868699549873157540592293125574640692009097735041 29 | 30 | :param exponent: 31 | 第一种(str类型): 32 | "010001" 33 | 第二种(int类型): 34 | 65537 35 | """ 36 | if key_str and "-----" in key_str: 37 | key_str = key_str.replace("\n", "").replace(" ", "").split("-----") 38 | key_str = [x for x in key_str if len(x) > 25][0] 39 | key_bytes = base64.b64decode(key_str) 40 | public_key = RSA.importKey(key_bytes) 41 | elif key_str: 42 | key_bytes = base64.b64decode(key_str) 43 | public_key = RSA.importKey(key_bytes) 44 | elif modulus and exponent: 45 | if isinstance(modulus, str) and isinstance(exponent, str): 46 | modulus = int(modulus, 16) 47 | exponent = int(exponent, 16) 48 | public_key = RSA.construct((modulus, exponent)) 49 | else: 50 | raise Exception("搞什么,给的key不合符类型啊~") 51 | self.bits_len = int(public_key.size_in_bits() / 1024 * 100) 52 | self.cipher = PKCS1_OAEP.new(public_key) 53 | 54 | def __encrypt(self, plaintext: str) -> bytes: 55 | # 这里采用分段加密,防止明文太长 56 | ciphertext = b"" 57 | for i in range(0, len(plaintext), self.bits_len): 58 | ciphertext += self.cipher.encrypt(plaintext[i: i + self.bits_len].encode()) 59 | return ciphertext 60 | 61 | def encrypt_toString(self, plaintext: str) -> str: 62 | # 一般来说,都报错,因为不能保证你的结果就一定能转成str 63 | return self.__encrypt(plaintext).decode('utf-8') 64 | 65 | def encrypt_toBase64(self, plaintext: str) -> str: 66 | return base64.b64encode(self.__encrypt(plaintext)).decode('utf-8') 67 | 68 | def encrypt_toHexStr(self, plaintext: str) -> str: 69 | return binascii.b2a_hex(self.__encrypt(plaintext)).decode('utf-8') 70 | 71 | def encrypt_toBytes(self, plaintext: str) -> bytes: 72 | return self.__encrypt(plaintext) 73 | 74 | 75 | if __name__ == '__main__': 76 | # 使用示例 77 | plaintext = "Spider 乾坤!" 78 | 79 | public_key_str = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAok58IrYXjeFjb6hPgrcvKis43ARDVIqowS2AJKivDp4+8uKDCWnjzBZTsuVvwKPzvVCxBzON2/DPpHU3wnRtdKSVzWju7HMKhuLxe04FsVw8+xvZTmguBj4jTczNLSLjK13lQr46J8j7JrmVUlPqGxIL/Bd3HNAIFuarZQkDsgx5fvdNrMbmT4edr1b3A8wRkhfo9tuE5Tmlx0YVUwybzcI6hgLggCfNwwaClXyBt08NbGSIBcKYKjiQErND0EOnWcGyto7EhkpgGRfAeESo3hbmsiabThLd4t9iOWVHFSl+7B0q+1IGFjSo9qkvNdMUI4ZYdIKq+nCHufpuFMl7SwIDAQAB" 80 | # public_key_str = "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5gsH+AA4XWONB5TDcUd+xCz7ejOFHZKlcZDx+pF1i7Gsvi1vjyJoQhRtRSn950x498VUkx7rUxg1/ScBVfrRxQOZ8xFBye3pjAzfb22+RCuYApSVpJ3OO3KsEuKExftz9oFBv3ejxPlYc5yq7YiBO8XlTnQN0Sa4R4qhPO3I2MQIDAQAB\n-----END PUBLIC KEY-----" 81 | # public_key_str = """ 82 | # -----BEGIN PUBLIC KEY----- 83 | # MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxswpnvTGXHaDHawDl6Vs 84 | # wYeL3Y05jFB8JWpVSFqk6XzElvKOByeDx1CQ0J4T3L1wb3O35KkSb+37+cBFB0vj 85 | # E510/gQg3n1DLYGy2QYa7rJ5e0sCyHZZBL1f8cN5Ei1PemOCeEk8uKHUe50AEBpf 86 | # 4GsJMSJ2QdZ7Wn46hjex9J/nVi/OPgsLUwzL6Ty92kV/96dWypHxRqBqXsY1WOeZ 87 | # S6nIObKv+5/6nDoatEe5R8L0W7iCAwJbrCP4BsD/CAig0vlk12e0u+CRPJzg11KL 88 | # kIGFCTIY3SgLyAg8RYaP6WQkDrKBCdLqQITvo3KShA+UZM0ftToVqObCG7dspSW/ 89 | # CIiwq/RXX9D/PJkvFJjMrpC18yTUZFE0cjVmYh9fr8E3BZZFtgo1/Aoi62QCnK8F 90 | # vpv8hEN4b4m5pyM6WsXDZCmT1EPzCYJgYIaZHNC0eb9YVE3Wh/GAw7JhAsZXF4Ex 91 | # xkH2E1Hm13ae7xoF8ly4h1nsVi8+E80GyIvTHo3+mDD7qZOetQyxV5jG1fhFk+tD 92 | # uf7Jp4Ruu6YOmDT3jW8uSsLIMz9NiB7zunxj+nZU6a6GSgIdyE6gLKXhFQzA0M3d 93 | # kMjNflT2vUnrHocJl9v3EgJKJ/InY0qjFYCfQ2EZKHGwqDw2u0i/NBRzPlbcSClx 94 | # ekX0cxtzTKuVLhoMYrSrVNMCAwEAAQ== 95 | # -----END PUBLIC KEY----- 96 | # """ 97 | rsa = RSAUtil(key_str=public_key_str) 98 | # 99 | # e = "010001" 100 | # m = '00C1E3934D1614465B33053E7F48EE4EC87B14B95EF88947713D25EECBFF7E74C7977D02DC1D9451F79DD5D1C10C29ACB6A9B4D6FB7D0A0279B6719E1772565F09AF627715919221AEF91899CAE08C0D686D748B20A3603BE2318CA6BC2B59706592A9219D0BF05C9F65023A21D2330807252AE0066D59CEEFA5F2748EA80BAB81' 101 | # rsa = RSAUtil(modulus=m, exponent=e) 102 | 103 | # e = 65537 104 | # m = 136153462421446847404340432441046996374735571025589056967906613334049032306309642600950180794472974184474850029075084679952125029724775675860862428869529368335136951744118770626613042094193316007621445630035543273179259178158896311604233203144417656446177150555868699549873157540592293125574640692009097735041 105 | # rsa = RSAUtil(modulus=m, exponent=e) 106 | 107 | # 加密 108 | encrypted_text = rsa.encrypt_toBase64(plaintext) 109 | # encrypted_text = rsa.encrypt_toHexStr(plaintext) 110 | # encrypted_text = rsa.encrypt_toString(plaintext) 111 | # encrypted_text = rsa.encrypt_toBytes(plaintext) 112 | print("加密结果:", encrypted_text) 113 | -------------------------------------------------------------------------------- /akamai1.75/1.js: -------------------------------------------------------------------------------- 1 | window=global; 2 | location={ 3 | href:'https://www.koreanair.com/booking/select-flight/departure' 4 | } 5 | var document={ 6 | "URL":'https://www.koreanair.com/booking/select-flight/departure', 7 | "abck_old_cookie":'99D882422C9A970CB9EC64BA1B8E0EF6~0~YAAQD4yUGzbQKyKCAQAA4jAQVwg8pEwjmxZiqx68t6jfyAxBdlJiF4lDVkJi0L00iSyxxNmv9cyF1BMFfEfn5/bSV2MzWCJU9DcbuSFkHZnJf128HCUzKVGV9c65rF2ctwHu8d2UYRaa6ITvgPm854bclqbafAEchY/7vvsedsikk4/LLGXHxJA7thjcNZ6qARL2Nk+bTnZuXiblixm/ayhFBqMF+ubaiQ751KSjbnbr2BJdSUjwaydpYYoJ8P8fmKuK074QY6g8NNm59d36+NilLTw8Vou5n6LbIg/gLr1DfANdVCssuiL2kllN+CLrJn1EDfUWGGqqi17gKJfcLTgeUPSw9KBceBgvGge1VQ4QlBX/11jxuYExXBDBHggqR1y+7aNTZmSe4Se3sgeDl+b6cIkW4HXt9CQQ~-1~-1~-1', 8 | 9 | } 10 | var navigator={ 11 | "pua":"Mozilla/5.0 (Windows;14.0.0;x86;64;) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.115 Safari/537.36", 12 | "userAgent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36', 13 | "productSub": "20030107", 14 | "language": 'zh-CN', 15 | "product": 'Gecko', 16 | "plugins": {0: {},1: {},2: {},3: {}} 17 | } 18 | var screen = { 19 | "availHeight": 1104, 20 | "availWidth": 2048, 21 | "width": 2048, 22 | "height": 1152 23 | } 24 | window["navigator"]=navigator 25 | window["document"]=document 26 | 27 | window["screen"] = screen; 28 | window["innerHeight"] = 1002; 29 | window["innerWidth"] = 2048; 30 | window["outerWidth"] = 160; 31 | 32 | var bmak = { 33 | ver: 1.75, 34 | ke_cnt_lmt: 150, 35 | mme_cnt_lmt: 100, 36 | mduce_cnt_lmt: 75, 37 | pme_cnt_lmt: 25, 38 | pduce_cnt_lmt: 25, 39 | tme_cnt_lmt: 25, 40 | tduce_cnt_lmt: 25, 41 | doe_cnt_lmt: 10, 42 | dme_cnt_lmt: 10, 43 | vc_cnt_lmt: 100, 44 | doa_throttle: 0, 45 | dma_throttle: 0, 46 | session_id: "default_session", 47 | js_post: !1, 48 | loc: "", 49 | cf_url: "https://", 50 | params_url: 'https://www.koreanair.com/get_params', 51 | auth: "", 52 | api_public_key: "afSbep8yjnZUjq3aL010jO15Sawj2VZfdYK8uY90uxq", 53 | aj_lmt_doact: 1, 54 | aj_lmt_dmact: 1, 55 | aj_lmt_tact: 1, 56 | ce_js_post: 0, 57 | init_time: 0, 58 | informinfo: "", 59 | prevfid: -1, 60 | fidcnt: 0, 61 | sensor_data: 0, 62 | pua: "", 63 | ins: null, 64 | cns: null, 65 | enGetLoc: 0, 66 | enReadDocUrl: 1, 67 | disFpCalOnTimeout: 0, 68 | xagg: -1, 69 | pen: -1, 70 | brow: "", 71 | browver: "", 72 | psub: "-", 73 | lang: "-", 74 | prod: "-", 75 | plen: -1, 76 | doadma_en: 0, 77 | sdfn: [], 78 | d2: 0, 79 | d3: 0, 80 | thr: 0, 81 | cs: "0a46G5m17Vrp4o4c", 82 | hn: "unk", 83 | z1: 0, 84 | o9: 0, 85 | vc: "", 86 | y1: 2016, 87 | ta: 0, 88 | tst: -1, 89 | t_tst: 0, 90 | ckie: "_abck", 91 | n_ck: "0", 92 | ckurl: 0, 93 | bm: !1, 94 | mr: "-1", 95 | altFonts: !1, 96 | rst: !1, 97 | runFonts: !1, 98 | fsp: !1, 99 | firstLoad: !0, 100 | pstate: !1, 101 | mn_mc_lmt: 10, 102 | mn_state: 0, 103 | mn_mc_indx: 0, 104 | mn_sen: 0, 105 | mn_tout: 100, 106 | mn_stout: 1e3, 107 | mn_ct: 1, 108 | mn_cc: "", 109 | mn_cd: 1e4, 110 | mn_lc: [], 111 | mn_ld: [], 112 | mn_lcl: 0, 113 | mn_al: [], 114 | mn_il: [], 115 | mn_tcl: [], 116 | mn_r: [], 117 | mn_rt: 0, 118 | mn_wt: 0, 119 | mn_abck: "", 120 | mn_psn: "", 121 | mn_ts: "", 122 | mn_lg: [], 123 | ipr: !1, 124 | loap: 1, 125 | dcs: 0, 126 | fpcf:{ 127 | "td": Math.floor(Math.random() * (80 - 10)) + 10, 128 | "data":function (){ 129 | return '448809179;54595805;dis;,7;true;true;true;-480;true;24;24;true;false;-1' 130 | }, 131 | "fpValstr":'448809179;54595805;dis;,7;true;true;true;-480;true;24;24;true;false;-1' 132 | } 133 | , 134 | ir: function () { 135 | bmak["start_ts"] = Date["now"]() , bmak["kact"] = "", bmak["ke_cnt"] = 0, bmak["ke_vel"] = 0, bmak["mact"] = "", bmak["mme_cnt"] = 0, bmak["mduce_cnt"] = 0, bmak["me_vel"] = 0, bmak["pact"] = "", bmak["pme_cnt"] = 0, bmak["pduce_cnt"] = 0, bmak["pe_vel"] = 0, bmak["tact"] = "", bmak["tme_cnt"] = 0, bmak["tduce_cnt"] = 0, bmak["te_vel"] = 0, bmak["doact"] = "", bmak["doe_cnt"] = 0, bmak["doe_vel"] = 0, bmak["dmact"] = "", bmak["dme_cnt"] = 0, bmak["dme_vel"] = 0, bmak["vcact"] = "", bmak["vc_cnt"] = 0, bmak["aj_indx"] = 0, bmak["aj_ss"] = 0, bmak["aj_type"] = -1, bmak["aj_indx_doact"] = 0, bmak["aj_indx_dmact"] = 0, bmak["aj_indx_tact"] = 0, bmak["me_cnt"] = 0, bmak["pe_cnt"] = 0, bmak["te_cnt"] = 0, bmak["nav_perm"] = "", bmak["brv"] = 0, bmak["hbCalc"] = !1, bmak["fmh"] = "", bmak["fmz"] = "", bmak["ssh"] = "", bmak["wv"] = "", bmak["wr"] = "", bmak["weh"] = "", bmak["wl"] = 0, bmak["pdet"] = !0; 136 | }, 137 | get_cf_date: function () { 138 | return Date["now"]() ; 139 | }, 140 | uar: function () { 141 | return navigator["userAgent"]; 142 | }, 143 | gd: function () { 144 | var t = bmak["uar"](), 145 | a = "" + bmak["ab"](t), 146 | e = bmak["start_ts"] / 2, 147 | n = window["screen"]["availWidth"], 148 | o = window["screen"]["availHeight"], 149 | m = window["screen"]["width"], 150 | r = window["screen"]["height"], 151 | i = window["innerHeight"], 152 | c = window["innerWidth"], 153 | b = window["outerWidth"]; 154 | 155 | bmak["z1"] = parseInt(bmak["start_ts"] / (bmak["y1"] * bmak["y1"])); 156 | var d = Math["random"](), 157 | s = parseInt(1000 * d / 2), 158 | k = d + ""; 159 | return k = k["slice"](0, 11) + s, bmak["get_browser"](), bmak["bmisc"](), t + ",uaend," + 12147 + "," + bmak["psub"] + "," + bmak["lang"] + "," + bmak["prod"] + "," + bmak["plen"] + "," + bmak["pen"] + "," + bmak["wen"] + "," + bmak["den"] + "," + bmak["z1"] + "," + bmak["d3"] + "," + n + "," + o + "," + m + "," + r + "," + c + "," + i + "," + b + "," + bmak["bd"]() + "," + a + "," + k + "," + e + "," + bmak["brv"] + ",loc:" + bmak["loc"]; 160 | }, 161 | od: function (t, a) { 162 | try { 163 | t = String(t), a = String(a); 164 | var e = [], 165 | n = a["length"]; 166 | 167 | if (n > 0) { 168 | for (var o = 0; o < t["length"]; o++) { 169 | var m = t["charCodeAt"](o), 170 | r = t["charAt"](o), 171 | i = a["charCodeAt"](o % n); 172 | m = bmak["rir"](m, 47, 57, i), m != t["charCodeAt"](o) && (r = String["fromCharCode"](m)), e["push"](r); 173 | } 174 | 175 | if (e["length"] > 0) return e["join"](""); 176 | } 177 | } catch (t) {} 178 | 179 | return t; 180 | }, 181 | get_browser: function () { 182 | navigator["productSub"] && (bmak["psub"] = navigator["productSub"]), navigator["language"] && (bmak["lang"] = navigator["language"]), navigator["product"] && (bmak["prod"] = navigator["product"]), bmak["plen"] = 5; 183 | }, 184 | bmisc: function () { 185 | bmak["pen"] = 0, bmak["wen"] = 0, bmak["den"] =0; 186 | }, 187 | bd: function () { 188 | return ',cpen:0,i1:0,dm:0,cwen:0,non:1,opc:0,fc:0,sc:0,wrc:1,isc:0,vib:1,bat:1,x11:0,x12:1'; 189 | }, 190 | fas: function () { 191 | // return Boolean(navigator["credentials"]) + (Boolean(navigator["appMinorVersion"]) << 1) + (Boolean(navigator["bluetooth"]) << 2) + (Boolean(navigator["storage"]) << 3) + (Boolean(Math["imul"]) << 4) + (Boolean(navigator["getGamepads"]) << 5) + (Boolean(navigator["getStorageUpdates"]) << 6) + (Boolean(navigator["hardwareConcurrency"]) << 7) + (Boolean(navigator["mediaDevices"]) << 8) + (Boolean(navigator["mozAlarms"]) << 9) + (Boolean(navigator["mozConnection"]) << 10) + (Boolean(navigator["mozIsLocallyAvailable"]) << 11) + (Boolean(navigator["mozPhoneNumberService"]) << 12) + (Boolean(navigator["msManipulationViewsEnabled"]) << 13) + (Boolean(navigator["permissions"]) << 14) + (Boolean(navigator["registerProtocolHandler"]) << 15) + (Boolean(navigator["requestMediaKeySystemAccess"]) << 16) + (Boolean(navigator["requestWakeLock"]) << 17) + (Boolean(navigator["sendBeacon"]) << 18) + (Boolean(navigator["serviceWorker"]) << 19) + (Boolean(navigator["storeWebWideTrackingException"]) << 20) + (Boolean(navigator["webkitGetGamepads"]) << 21) + (Boolean(navigator["webkitTemporaryStorage"]) << 22) + (Boolean(Number["parseInt"]) << 23) + (Boolean(Math["hypot"]) << 24); 192 | return 30261693 193 | }, 194 | getmr: function () { 195 | bmak["mr"]= '20,20,40,20,20,40,40,20,20,20,20,20,20,100,' 196 | }, 197 | sed: function () { 198 | return '0,0,0,0,1,0,0' 199 | }, 200 | x2: function () { 201 | return Date.now() 202 | }, 203 | np: function () { 204 | bmak["nav_perm"]= '11321144241322243122' 205 | }, 206 | cpa: function (t, a) { 207 | try { 208 | var e = !1; 209 | 210 | if (1 == a && bmak["pme_cnt"] < bmak["pme_cnt_lmt"] || 1 != a && bmak["pduce_cnt"] < bmak["pduce_cnt_lmt"]) { 211 | var n = t || window["event"]; 212 | 213 | if (n && "mouse" != n["pointerType"]) { 214 | e = !0; 215 | var o = -1, 216 | m = -1; 217 | n && n["pageX"] && n["pageY"] ? (o = Math["floor"](n["pageX"]), m = Math["floor"](n["pageY"])) : n && n["clientX"] && n["clientY"] && (o = Math["floor"](n["clientX"]), m = Math["floor"](n["clientY"])); 218 | var r = bmak["get_cf_date"]() - bmak["start_ts"], 219 | i = bmak["pe_cnt"] + "," + a + "," + r + "," + o + "," + m; 220 | void 0 !== n["isTrusted"] && !1 === n["isTrusted"] && (i += ",0"), bmak["pe_vel"] = bmak["pe_vel"] + bmak["pe_cnt"] + a + r + o + m, bmak["pact"] = bmak["pact"] + i + ";", bmak["ta"] += r, 1 == a ? bmak["pme_cnt"]++ : bmak["pduce_cnt"]++; 221 | } 222 | } 223 | 224 | 1 == a ? bmak["pme_cnt"]++ : bmak["pduce_cnt"]++, bmak["pe_cnt"]++, bmak["js_post"] && 3 == a && e && (bmak["aj_type"] = 2, bmak["bpd"](), bmak["pd"](!0), bmak["ce_js_post"] = 1); 225 | } catch (t) {} 226 | }, 227 | ab: function (t) { 228 | if (null == t) return -1; 229 | 230 | try { 231 | for (var a = 0, e = 0; e < t["length"]; e++) { 232 | var n = t["charCodeAt"](e); 233 | n < 128 && (a += n); 234 | } 235 | 236 | return a; 237 | } catch (t) { 238 | return -2; 239 | } 240 | }, 241 | cal_dis: function (t) { 242 | var a = t[0] - t[1], 243 | e = t[2] - t[3], 244 | n = t[4] - t[5], 245 | o = Math["sqrt"](a * a + e * e + n * n); 246 | return Math["floor"](o); 247 | }, 248 | cc: function (t) { 249 | var a = t % 4; 250 | 2 == a && (a = 3); 251 | var e = 42 + a, 252 | n = function (t, a) { 253 | return 0; 254 | }; 255 | 256 | if (42 == e) var n = function (t, a) { 257 | return t * a; 258 | };else if (43 == e) var n = function (t, a) { 259 | return t + a; 260 | };else var n = function (t, a) { 261 | return t - a; 262 | }; 263 | return n; 264 | }, 265 | to: function () { 266 | var t = Date.now() % 10000000; 267 | bmak["d3"] = t; 268 | for (var a = t, e = 3, n = 0; n < 5; n++) { 269 | var o = parseInt(t / Math["pow"](10, n)) % 10, 270 | m = o + 1; 271 | a = bmak["cc"](o)(a, m); 272 | } 273 | bmak["o9"] = a * e; 274 | }, 275 | jrs: function (t) { 276 | for (var a = Math["floor"](1e5 * Math["random"]() + 1e4), e = String(t * a), n = 0, o = [], m = e["length"] >= 18; o["length"] < 6;) o["push"](parseInt(e["slice"](n, n + 2))), n = m ? n + 3 : n + 2; 277 | return [a, bmak["cal_dis"](o)]; 278 | }, 279 | rir: function(t, a, e, n) { 280 | return t > a && t <= e && (t += n % (e - a)) > e && (t = t - e + a), 281 | t 282 | }, 283 | fm: function () { 284 | bmak["fmz"] = 1.25; 285 | }, 286 | form_submit: function () { 287 | try { 288 | if (bmak["bpd"](), 0 == bmak["sdfn"]["length"]) { 289 | if (document["getElementById"]("bm-telemetry") && (document["getElementById"]("bm-telemetry")["value"] = bmak["sensor_data"]), void 0 !== document["getElementsByName"]("bm-telemetry")) for (var t = document["getElementsByName"]("bm-telemetry"), a = 0; a < t["length"]; a++) t[a]["value"] = bmak["sensor_data"]; 290 | } else for (var a = 0; a < bmak["sdfn"]["length"]; a++) document["getElementById"](bmak["sdfn"][a]) && (document["getElementById"](bmak["sdfn"][a])["value"] = bmak["sensor_data"]); 291 | } catch (t) { 292 | bmak["sd_debug"](",s7:" + t + "," + bmak["sensor_data"]); 293 | } 294 | }, 295 | get_telemetry: function () { 296 | return bmak["bpd"](), bmak["ir"](), bmak["sensor_data"]; 297 | }, 298 | getdurl: function () { 299 | return document["URL"] 300 | }, 301 | x1: function () { 302 | return Math["floor"](16777216 * (1 + Math["random"]()))["toString"](36); 303 | }, 304 | gck: function () { 305 | var t = bmak["x1"]() + bmak["x1"]() + bmak["x1"]() + bmak["x1"](); 306 | return bmak["set_cookie"](bmak["ckie"], t + "_" + bmak["ab"](t)), t; 307 | }, 308 | 309 | get_cookie: function () { 310 | var t = bmak["cookie_chk_read"](bmak["ckie"]); 311 | return t; 312 | }, 313 | cookie_chk_read: function (t) { 314 | return document.abck_old_cookie; 315 | }, 316 | build_pua: function () { 317 | try { 318 | navigator["userAgentData"]["getHighEntropyValues"](["architecture", "model", "platform", "platformVersion", "uaFullVersion", "bitness"])["then"](function (t) { 319 | var a = []; 320 | a["push"]("Mozilla/5.0 ("); 321 | var e = []; 322 | e["push"](t["platform"], t["platformVersion"], t["architecture"], t["bitness"], t["model"]), a["push"](e["join"](";") + ")"), a["push"](" AppleWebKit/537.36 (KHTML, like Gecko) Chrome/"), a["push"](t["uaFullVersion"]), navigator["userAgentData"]["mobile"] && a["push"](" Mobile"), a["push"](" Safari/537.36"), bmak["pua"] = a["join"](""); 323 | }); 324 | } catch (t) { 325 | bmak["pua"] = ""; 326 | } 327 | }, 328 | isChrome: function () { 329 | return true; 330 | }, 331 | updatet: function () { 332 | return bmak["get_cf_date"]() - bmak["start_ts"]; 333 | }, 334 | bpd: function () { 335 | var t = 0; 336 | 337 | try { 338 | t = bmak["get_cf_date"](); 339 | var a = bmak["updatet"](), 340 | e = "3"; 341 | bmak["ckie"] && (e = bmak["get_cookie"]()); 342 | var n = bmak["gd"](), 343 | o = "do_en", 344 | m = "dm_en", 345 | r = "t_en", 346 | i = o + "," + m + "," + r, 347 | c = "", 348 | b = location.href, 349 | d = bmak["aj_type"] + "," + bmak["aj_indx"]; 350 | //!bmak["fpcf"]["fpValCalculated"] && (0 == bmak["js_post"] || bmak["aj_indx"] > 0) && bmak["fpcf"]["fpVal"](); 351 | 352 | var s = bmak["ke_vel"] + bmak["me_vel"] + bmak["doe_vel"] + bmak["dme_vel"] + bmak["te_vel"] + bmak["pe_vel"], 353 | l = 'PiZtE', 354 | u = bmak["jrs"](bmak["start_ts"]), 355 | _ = bmak["get_cf_date"]() - bmak["start_ts"], 356 | f = parseInt(bmak["d2"] / 6), 357 | p = bmak["fas"](), 358 | h = 0, 359 | v = -1, 360 | g = [bmak["ke_vel"] + 1, bmak["me_vel"] + 32, bmak["te_vel"] + 32, bmak["doe_vel"], bmak["dme_vel"], bmak["pe_vel"], s, a, bmak["init_time"], bmak["start_ts"], bmak["fpcf"]["td"], bmak["d2"], bmak["ke_cnt"], bmak["me_cnt"], f, bmak["pe_cnt"], bmak["te_cnt"], _, bmak["ta"], bmak["n_ck"], e, bmak["ab"](e), bmak["fpcf"]["rVal"], bmak["fpcf"]["rCFP"], p, l, u[0], u[1], h, v], 361 | w = g["join"](","), 362 | y = "" + bmak["ab"](bmak["fpcf"]["fpValstr"]); 363 | bmak["fmh"]='b70ca7d25d21c53971815e2b7f03804af1fbd2ad0f6c3155b9cd8b617e7b2627' 364 | bmak["ssh"]='e6a6b62042f2333998b8357baa6fe8b776aaad3c0b1692df334f2afaf3954baf' 365 | bmak["wv"]='Google Inc. (Intel)' 366 | bmak["wr"]='ANGLE (Intel, Intel(R) Iris(R) Xe Graphics Direct3D11 vs_5_0 ps_5_0, D3D11)' 367 | bmak["weh"]='95f5b71fe531f867faa814bdd4050dd8057206d53ecec1163523560525884870' 368 | bmak["wl"]=33 369 | !bmak["hbCalc"] && (0 == bmak["js_post"] || bmak["aj_indx"] > 0) && (bmak["fm"](), bmak["hbCalc"] = !0); 370 | var E = ""; 371 | bmak["hbCalc"] && (E = bmak["fmh"] + "," + bmak["fmz"] + "," + bmak["ssh"] + "," + bmak["wv"] + "," + bmak["wr"] + "," + bmak["weh"] + "," + bmak["wl"]); 372 | 373 | var S = bmak["sed"](), 374 | C = [], 375 | A = "", 376 | B = "", 377 | x = ""; 378 | 379 | if (void 0 !== C[1]) { 380 | var M = C[1]; 381 | void 0 !== bmak["mn_r"][M] && (A = bmak["mn_r"][M]); 382 | } 383 | 384 | if (void 0 !== C[2]) { 385 | var j = C[2]; 386 | void 0 !== bmak["mn_r"][j] && (B = bmak["mn_r"][j]); 387 | } 388 | 389 | if (void 0 !== C[3]) { 390 | var L = C[3]; 391 | void 0 !== bmak["mn_r"][L] && (x = bmak["mn_r"][L]); 392 | } 393 | debugger 394 | true && bmak["isChrome"]() && bmak["build_pua"](), bmak["sensor_data"] = bmak["ver"] + "-1,2,-94,-100," + n + "-1,2,-94,-131," + bmak["pua"] + "-1,2,-94,-101," + i + "-1,2,-94,-105," + bmak["informinfo"] + "-1,2,-94,-102," + c + "-1,2,-94,-108," + bmak["kact"] + "-1,2,-94,-110," + bmak["mact"] + "-1,2,-94,-117," + bmak["tact"] + "-1,2,-94,-111," + bmak["doact"] + "-1,2,-94,-109," + bmak["dmact"] + "-1,2,-94,-114," + bmak["pact"] + "-1,2,-94,-103," + bmak["vcact"] + "-1,2,-94,-112," + b + "-1,2,-94,-115," + w + "-1,2,-94,-106," + d, bmak["sensor_data"] = bmak["sensor_data"] + "-1,2,-94,-119," + bmak["mr"] + "-1,2,-94,-122," + S + "-1,2,-94,-123," + A + "-1,2,-94,-124," + B + "-1,2,-94,-126," + x + "-1,2,-94,-127," + bmak["nav_perm"]; 395 | var P = 24 ^ bmak["ab"](bmak["sensor_data"]); 396 | bmak["sensor_data"] = bmak["sensor_data"] + "-1,2,-94,-70," + bmak["fpcf"]["fpValstr"] + "-1,2,-94,-80," + y + "-1,2,-94,-116," + bmak["o9"] + "-1,2,-94,-118," + P + "-1,2,-94,-129," + E + "-1,2,-94,-121,"; 397 | } catch (t) { 398 | var T = ""; 399 | console.log("错误分支") 400 | 401 | t["stack"] && "string" == typeof t["stack"] ? T = t["stack"]["replace"](/\"/g, "\\'") : "string" == typeof t && (T = t["replace"](/\"/g, "\\'")), T = T["slice"](0, 1e3), bmak["sensor_data"] = bmak["ver"] + "-1,2,-94,-100," + bmak["uar"]() + "-1,2,-94,-120," + T; 402 | 403 | } 404 | 405 | try { 406 | var F = bmak["od"](bmak["cs"], bmak["api_public_key"])["slice"](0, 16), 407 | D = Math["floor"](bmak["get_cf_date"]() / 36e5), 408 | N = bmak["get_cf_date"](), 409 | R = F + bmak["od"](D, F) + bmak["sensor_data"]; 410 | bmak["sensor_data"] = R + ";" + (bmak["get_cf_date"]() - t) + ";" + bmak["tst"] + ";" + (bmak["get_cf_date"]() - N); 411 | } catch (t) { 412 | console.log("error") 413 | } 414 | 415 | 416 | } 417 | }; 418 | 419 | bmak["ir"](), bmak["t_tst"] = bmak["get_cf_date"](), bmak["to"](), bmak["tst"] = bmak["get_cf_date"]() - bmak["t_tst"], bmak["disFpCalOnTimeout"] 420 | bmak["calc_fp"] 421 | 422 | function get_sensor_data(){ 423 | bmak.bpd(); 424 | return bmak.sensor_data; 425 | } 426 | -------------------------------------------------------------------------------- /akamai1.75/akamai1.75_ast.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs");//文件读写 2 | const parse = require("@babel/parser"); //解析为ast 3 | const traverse = require('@babel/traverse').default;//遍历节点 4 | const types = require('@babel/types'); 5 | const parser = require("@babel/parser"); 6 | //类型 7 | const generator = require('@babel/generator').default;//ast解析为代码 8 | 9 | let jscode = fs.readFileSync( 10 | './demo.js', { 11 | encoding: 'utf-8' 12 | } 13 | ); 14 | 15 | let ast = parse.parse(jscode);//js转ast 16 | 17 | 18 | let visitorArray = { 19 | "VariableDeclarator"(path) { 20 | let {id, init} = path.node; 21 | if (!init || init.type !== "ArrayExpression" || init.elements.length < 1) return; 22 | let binding = path.scope.getBinding(id.name); 23 | if (binding.references === 0) { 24 | path.remove; 25 | return 26 | } 27 | if (init.elements.every(element => element.type === "StringLiteral")) { 28 | //获取父级函数,如果没有就说明是最外层定义的数组 29 | let funcName = path.getFunctionParent(); 30 | if (funcName === null) { 31 | console.log("大数组名字应该是:", id.name) 32 | global["largeArrayName"]= id.name; 33 | global["largeArray"] = path.toString(); 34 | path.remove; 35 | // 父级作用域传给另外一个函数操作 36 | //getDecName(path.parentPath) 37 | } 38 | 39 | } 40 | 41 | }, 42 | } 43 | 44 | 45 | traverse(ast, visitorArray); 46 | eval(global["largeArray"]) 47 | 48 | 49 | let Replacement={ 50 | "MemberExpression"(path){ 51 | let {node}=path; 52 | if(!node.object&&node.object.type!=="Identifier")return; 53 | if(node.object.name!==global["largeArrayName"])return; 54 | if(!node.property&&node.property.type!=="NumericLiteral")return; 55 | //console.log(node.property.value); 56 | let value = node.property.value; 57 | 58 | path.replaceWith(types.valueToNode(eval(global["largeArrayName"])[value])); 59 | 60 | 61 | } 62 | } 63 | 64 | traverse(ast, Replacement); 65 | 66 | let {code} = generator(ast, opts = { 67 | //compact: true, 68 | //jsescOption: {minified: true, retainFunctionParens: true, retainLines: true} 69 | }) 70 | fs.writeFile('./demoNew.js', code, (err) => { 71 | }); -------------------------------------------------------------------------------- /akamai1.75/test.py: -------------------------------------------------------------------------------- 1 | 垃圾代码。没用的垃圾 2 | -------------------------------------------------------------------------------- /gee4/1.js: -------------------------------------------------------------------------------- 1 | window = global; 2 | navigator = { 3 | "appName": "Netscape" 4 | }; 5 | window.navigator = navigator; 6 | 7 | 8 | function get_track(e) { 9 | for (var t, s, n, a = [], o = 0, r = 0, i = e['length'] - 1; r < i; r += 1) { 10 | t = Math['round'](e[r + 1][0] - e[r][0]); 11 | s = Math['round'](e[r + 1][1] - e[r][1]); 12 | n = Math['round'](e[r + 1][2] - e[r][2]); 13 | 0 === t && 0 === s && 0 === n || (0 === t && 0 === s ? o += n : (a['push']([t, s, n + o]), o = 0)); 14 | } 15 | return 0 !== o && a['push']([t, s, o]), a; 16 | } 17 | 18 | function n_encrypt() { 19 | var n = function () { 20 | var e; 21 | var s = Object['create'] || function () { 22 | function s() { 23 | } 24 | 25 | return function (e) { 26 | var t; 27 | return s["prototype"] = e, t = new s(), s['prototype'] = null, t; 28 | }; 29 | }(); 30 | var t = {}; 31 | var n = t['lib'] = {}; 32 | var a = n['Base'] = { 33 | "extend": function (e) { 34 | var t = s(this); 35 | return e && t['mixIn'](e), t['hasOwnProperty']('init') && this['init'] !== t['init'] || (t['init'] = function () { 36 | t['$super']['init']['apply'](this, arguments); 37 | }), (t['init']['prototype'] = t)['$super'] = this, t; 38 | }, 39 | "create": function () { 40 | var e = this['extend'](); 41 | return e['init']['apply'](e, arguments), e; 42 | }, 43 | "init": function () { 44 | }, 45 | "mixIn": function (e) { 46 | for (var t in e) e['hasOwnProperty'](t) && (this[t] = e[t]); 47 | e['hasOwnProperty']('toString') && (this['toString'] = e['toString']); 48 | } 49 | }; 50 | var u = n["WordArray"] = a["extend"]({ 51 | "init": function (e, t) { 52 | e = this['words'] = e || []; 53 | t != undefined ? this['sigBytes'] = t : this['sigBytes'] = 4 * e["length"]; 54 | }, 55 | "concat": function (e) { 56 | var t = this['words']; 57 | var s = e['words']; 58 | var n = this['sigBytes']; 59 | var a = e['sigBytes']; 60 | if (this["clamp"](), n % 4) for (var o = 0; o < a; o++) { 61 | var r = s[o >>> 2] >>> 24 - o % 4 * 8 & 255; 62 | t[n + o >>> 2] |= r << 24 - (n + o) % 4 * 8; 63 | } else for (o = 0; o < a; o += 4) t[n + o >>> 2] = s[o >>> 2]; 64 | return this['sigBytes'] += a, this; 65 | }, 66 | "clamp": function () { 67 | var e = this['words']; 68 | var t = this['sigBytes']; 69 | e[t >>> 2] &= 4294967295 << 32 - t % 4 * 8; 70 | e["length"] = Math["ceil"](t / 4); 71 | } 72 | }); 73 | var o = t["enc"] = {}; 74 | var p = o["Latin1"] = { 75 | "parse": function (e) { 76 | for (var t = e['length'], s = [], n = 0; n < t; n++) s[n >>> 2] |= (255 & e["charCodeAt"](n)) << 24 - n % 4 * 8; 77 | 78 | return new u["init"](s, t); 79 | } 80 | }; 81 | var r = o["Utf8"] = { 82 | "parse": function (e) { 83 | return p["parse"](unescape(encodeURIComponent(e))); 84 | } 85 | }; 86 | var i = n["BufferedBlockAlgorithm"] = a["extend"]({ 87 | "reset": function () { 88 | this['$_JAr'] = new u["init"](); 89 | this["$_BCFd"] = 0; 90 | }, 91 | "$_BCGa": function (e) { 92 | 'string' == typeof e && (e = r["parse"](e)); 93 | this['$_JAr']["concat"](e); 94 | this["$_BCFd"] += e['sigBytes']; 95 | }, 96 | "$_BCHV": function (e) { 97 | var t = this['$_JAr']; 98 | var s = t['words']; 99 | var n = t['sigBytes']; 100 | var a = this['blockSize']; 101 | var o = n / (4 * a); 102 | var r = (e ? o = Math["ceil"](o) : o = Math["max"]((0 | o) - this["$_BCIO"], 0)) * a; 103 | var i = Math["min"](4 * r, n); 104 | 105 | if (r) { 106 | for (var _ = 0; _ < r; _ += a) this["$_BCJO"](s, _); 107 | 108 | var c = s["splice"](0, r); 109 | t['sigBytes'] -= i; 110 | } 111 | 112 | return new u['init'](c, i); 113 | }, 114 | "$_BCIO": 0 115 | }); 116 | var _ = t["algo"] = {}; 117 | var c = n["Cipher"] = i['extend']({ 118 | "cfg": a['extend'](), 119 | "createEncryptor": function (e, t) { 120 | return this['create'](this['$_BDAS'], e, t); 121 | }, 122 | "init": function (e, t, s) { 123 | this["cfg"] = this["cfg"]['extend'](s); 124 | this["$_BDBd"] = e; 125 | this["$_BDCs"] = t; 126 | this["reset"](); 127 | }, 128 | "reset": function () { 129 | i["reset"]["call"](this); 130 | this["$_BDDg"](); 131 | }, 132 | "process": function (e) { 133 | 134 | return this["$_BCGa"](e), this["$_BCHV"](); 135 | }, 136 | "finalize": function (e) { 137 | 138 | return e && this["$_BCGa"](e), this["$_BDEO"](); 139 | }, 140 | "keySize": 4, 141 | "ivSize": 4, 142 | "$_BDAS": 1, 143 | "$_BDFj": 2, 144 | "$_BDGs": function (c) { 145 | 146 | return { 147 | "encrypt": function (e, t, s) { 148 | t = p['parse'](t); 149 | s && s["iv"] || ((s = s || {})["iv"] = p['parse']("0000000000000000")); 150 | for (var n = b["encrypt"](c, e, t, s), a = n["ciphertext"]['words'], o = n["ciphertext"]['sigBytes'], r = [], i = 0; i < o; i++) { 151 | var _ = a[i >>> 2] >>> 24 - i % 4 * 8 & 255; 152 | r["push"](_); 153 | } 154 | 155 | return r; 156 | } 157 | }; 158 | } 159 | }); 160 | var g = t["mode"] = {}; 161 | var l = n["BlockCipherMode"] = a['extend']({ 162 | "createEncryptor": function (e, t) { 163 | 164 | return this["Encryptor"]['create'](e, t); 165 | }, 166 | "init": function (e, t) { 167 | this["$_BDHv"] = e; 168 | this["$_BDIy"] = t; 169 | } 170 | }); 171 | var d = g["CBC"] = ((e = l['extend']())["Encryptor"] = e['extend']({ 172 | "processBlock": function (e, t) { 173 | var s = this["$_BDHv"]; 174 | var n = s['blockSize']; 175 | (function r(e, t, s) { 176 | var n = this["$_BDIy"]; 177 | if (n) { 178 | var a = n; 179 | this['$_BDIy'] = undefined; 180 | } else var a = this["$_BDJH"]; 181 | 182 | for (var o = 0; o < s; o++) e[t + o] ^= a[o]; 183 | })['call'](this, e, t, n); 184 | s["encryptBlock"](e, t); 185 | this["$_BDJH"] = e["slice"](t, t + n); 186 | } 187 | }), e); 188 | var h = (t["pad"] = {})["Pkcs7"] = { 189 | "pad": function (e, t) { 190 | for (var s = 4 * t, n = s - e['sigBytes'] % s, a = n << 24 | n << 16 | n << 8 | n, o = [], r = 0; r < n; r += 4) o["push"](a); 191 | var i = u['create'](o, n); 192 | e["concat"](i); 193 | } 194 | }; 195 | var f = n["BlockCipher"] = c['extend']({ 196 | "cfg": c['cfg']['extend']({ 197 | "mode": d, 198 | "padding": h 199 | }), 200 | "reset": function () { 201 | c['reset']['call'](this); 202 | var e = this['cfg']; 203 | var t = e['iv']; 204 | var s = e["mode"]; 205 | if (this["$_BDBd"] == this['$_BDAS']) var n = s["createEncryptor"]; 206 | 207 | if (this['$_BEAZ'] && this['$_BEAZ']["$_BEB_"] == n) { 208 | this['$_BEAZ']['init'](this, t && t['words']); 209 | } else { 210 | this['$_BEAZ'] = n['call'](s, this, t && t['words']); 211 | this['$_BEAZ']["$_BEB_"] = n; 212 | } 213 | }, 214 | "$_BCJO": function (e, t) { 215 | this['$_BEAZ']["processBlock"](e, t); 216 | }, 217 | "$_BDEO": function () { 218 | var e = this['cfg']['padding']; 219 | 220 | if (this["$_BDBd"] == this["$_BDAS"]) { 221 | e["pad"](this['$_JAr'], this["blockSize"]); 222 | var t = this["$_BCHV"](!0); 223 | } 224 | 225 | return t; 226 | }, 227 | "blockSize": 4 228 | }); 229 | var m = n["CipherParams"] = a['extend']({ 230 | "init": function (e) { 231 | this["mixIn"](e); 232 | } 233 | }); 234 | var b = n["SerializableCipher"] = a['extend']({ 235 | "cfg": a['extend'](), 236 | "encrypt": function (e, t, s, n) { 237 | n = this["cfg"]['extend'](n); 238 | var a = e["createEncryptor"](s, n); 239 | var o = a["finalize"](t); 240 | var r = a['cfg']; 241 | return m["create"]({ 242 | "ciphertext": o, 243 | "key": s, 244 | "iv": r["iv"], 245 | "algorithm": e, 246 | "mode": r["mode"], 247 | "padding": r['padding'], 248 | "blockSize": e['blockSize'], 249 | "formatter": n['format'] 250 | }); 251 | } 252 | }); 253 | var v = []; 254 | var w = []; 255 | var x = []; 256 | var y = []; 257 | var k = []; 258 | var C = []; 259 | var E = []; 260 | var A = []; 261 | var z = []; 262 | var T = []; 263 | !function () { 264 | for (var e = [], t = 0; t < 256; t++) if (t < 128) { 265 | e[t] = t << 1; 266 | } else { 267 | e[t] = t << 1 ^ 283; 268 | } 269 | var s = 0; 270 | var n = 0; 271 | for (t = 0; t < 256; t++) { 272 | var a = n ^ n << 1 ^ n << 2 ^ n << 3 ^ n << 4; 273 | a = a >>> 8 ^ 255 & a ^ 99; 274 | v[s] = a; 275 | var o = e[w[a] = s]; 276 | var r = e[o]; 277 | var i = e[r]; 278 | var _ = 257 * e[a] ^ 16843008 * a; 279 | x[s] = _ << 24 | _ >>> 8; 280 | y[s] = _ << 16 | _ >>> 16; 281 | k[s] = _ << 8 | _ >>> 24; 282 | C[s] = _; 283 | _ = 16843009 * i ^ 65537 * r ^ 257 * o ^ 16843008 * s; 284 | E[a] = _ << 24 | _ >>> 8; 285 | A[a] = _ << 16 | _ >>> 16; 286 | z[a] = _ << 8 | _ >>> 24; 287 | T[a] = _; 288 | s ? (s = o ^ e[e[e[i ^ o]]], n ^= e[e[n]]) : s = n = 1; 289 | } 290 | }(); 291 | var B = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]; 292 | var D = _['AES'] = f['extend']({ 293 | "$_BDDg": function () { 294 | if (!this['$_BECV'] || this['$_BEDc'] !== this['$_BDCs']) { 295 | for (var e = this['$_BEDc'] = this['$_BDCs'], t = e['words'], s = e['sigBytes'] / 4, n = 4 * (1 + (this['$_BECV'] = 6 + s)), a = this['$_BEEZ'] = [], o = 0; o < n; o++) if (o < s) a[o] = t[o]; else { 296 | var r = a[o - 1]; 297 | o % s ? 6 < s && o % s == 4 && (r = v[r >>> 24] << 24 | v[r >>> 16 & 255] << 16 | v[r >>> 8 & 255] << 8 | v[255 & r]) : (r = v[(r = r << 8 | r >>> 24) >>> 24] << 24 | v[r >>> 16 & 255] << 16 | v[r >>> 8 & 255] << 8 | v[255 & r], r ^= B[o / s | 0] << 24); 298 | a[o] = a[o - s] ^ r; 299 | } 300 | 301 | for (var i = this['$_BEFH'] = [], _ = 0; _ < n; _++) { 302 | o = n - _; 303 | if (_ % 4) r = a[o]; else r = a[o - 4]; 304 | if (_ < 4 || o <= 4) { 305 | i[_] = r; 306 | } else { 307 | i[_] = E[v[r >>> 24]] ^ A[v[r >>> 16 & 255]] ^ z[v[r >>> 8 & 255]] ^ T[v[255 & r]]; 308 | } 309 | } 310 | } 311 | }, 312 | "encryptBlock": function (e, t) { 313 | this['$_BEGu'](e, t, this['$_BEEZ'], x, y, k, C, v); 314 | }, 315 | "$_BEGu": function (e, t, s, n, a, o, r, i) { 316 | for (var _ = this['$_BECV'], c = e[t] ^ s[0], u = e[t + 1] ^ s[1], p = e[t + 2] ^ s[2], g = e[t + 3] ^ s[3], l = 4, d = 1; d < _; d++) { 317 | var h = n[c >>> 24] ^ a[u >>> 16 & 255] ^ o[p >>> 8 & 255] ^ r[255 & g] ^ s[l++]; 318 | var f = n[u >>> 24] ^ a[p >>> 16 & 255] ^ o[g >>> 8 & 255] ^ r[255 & c] ^ s[l++]; 319 | var m = n[p >>> 24] ^ a[g >>> 16 & 255] ^ o[c >>> 8 & 255] ^ r[255 & u] ^ s[l++]; 320 | var b = n[g >>> 24] ^ a[c >>> 16 & 255] ^ o[u >>> 8 & 255] ^ r[255 & p] ^ s[l++]; 321 | c = h; 322 | u = f; 323 | p = m; 324 | g = b; 325 | } 326 | 327 | h = (i[c >>> 24] << 24 | i[u >>> 16 & 255] << 16 | i[p >>> 8 & 255] << 8 | i[255 & g]) ^ s[l++]; 328 | f = (i[u >>> 24] << 24 | i[p >>> 16 & 255] << 16 | i[g >>> 8 & 255] << 8 | i[255 & c]) ^ s[l++]; 329 | m = (i[p >>> 24] << 24 | i[g >>> 16 & 255] << 16 | i[c >>> 8 & 255] << 8 | i[255 & u]) ^ s[l++]; 330 | b = (i[g >>> 24] << 24 | i[c >>> 16 & 255] << 16 | i[u >>> 8 & 255] << 8 | i[255 & p]) ^ s[l++]; 331 | e[t] = h; 332 | e[t + 1] = f; 333 | e[t + 2] = m; 334 | e[t + 3] = b; 335 | }, 336 | "keySize": 8 337 | }); 338 | return t['AES'] = f['$_BDGs'](D), t['AES']; 339 | }(); 340 | return n; 341 | } 342 | 343 | function _() { 344 | 345 | var a = function () { 346 | function s() { 347 | this['i'] = 0; 348 | this['j'] = 0; 349 | this['S'] = []; 350 | } 351 | 352 | s['prototype']['init'] = function E(e) { 353 | var t; 354 | var s; 355 | var n; 356 | for (t = 0; t < 256; ++t) this['S'][t] = t; 357 | for (t = s = 0; t < 256; ++t) { 358 | s = s + this['S'][t] + e[t % e['length']] & 255; 359 | n = this['S'][t]; 360 | this['S'][t] = this['S'][s]; 361 | this['S'][s] = n; 362 | } 363 | this["i"] = 0; 364 | this["j"] = 0; 365 | }; 366 | 367 | s['prototype']['next'] = function A() { 368 | var e; 369 | return this['i'] = this['i'] + 1 & 255, this['j'] = this['j'] + this['S'][this['i']] & 255, e = this['S'][this['i']], this['S'][this['i']] = this['S'][this['j']], this['S'][this['j']] = e, this['S'][e + this['S'][this['i']] & 255]; 370 | }; 371 | 372 | var n; 373 | var a; 374 | var o; 375 | var t; 376 | var r = 256; 377 | 378 | if (null == a) { 379 | var i; 380 | if (a = [], o = 0, window['crypto'] && window['crypto']['getRandomValues']) { 381 | var _ = new Uint32Array(256); 382 | for (window['crypto']['getRandomValues'](_), i = 0; i < _['length']; ++i) a[o++] = 255 & _[i]; 383 | } 384 | var c = 0; 385 | var u = function u(t) { 386 | if (256 <= (c = c || 0) || r <= o) { 387 | 388 | } else try { 389 | var s = t["x"] + t["y"]; 390 | a[o++] = 255 & s; 391 | c += 1; 392 | } catch (e) { 393 | console.log(e); 394 | } 395 | }; 396 | 397 | } 398 | 399 | function p() { 400 | n = new s(); 401 | while (o < r) { 402 | var e = Math['floor'](65536 * Math['random']()); 403 | a[o++] = 255 & e; 404 | } 405 | for (n['init'](a), o = 0; o < a['length']; ++o) a[o] = 0; 406 | o = 0; 407 | return n['next'](); 408 | } 409 | 410 | function g() { 411 | } 412 | 413 | g['prototype']['nextBytes'] = function z(e) { 414 | var t; 415 | for (t = 0; t < e['length']; ++t) e[t] = p(); 416 | }; 417 | 418 | function v(e, t, s) { 419 | null != e && ('number' == typeof e ? this['fromNumber'](e, t, s) : null == t && 'string' != typeof e ? this['fromString'](e, 256) : this['fromString'](e, t)) 420 | } 421 | 422 | function w() { 423 | return new v(null); 424 | } 425 | 426 | "Microsoft Internet Explorer" == navigator["appName"] ? t = (v['prototype']['am'] = function T(e, t, s, n, a, o) { 427 | var r = 32767 & t; 428 | var i = t >> 15; 429 | while (0 <= --o) { 430 | var _ = 32767 & this[e]; 431 | var c = this[e++] >> 15; 432 | var u = i * _ + c * r; 433 | a = ((_ = r * _ + ((32767 & u) << 15) + s[n] + (1073741823 & a)) >>> 30) + (u >>> 15) + i * c + (a >>> 30); 434 | s[n++] = 1073741823 & _; 435 | } 436 | return a; 437 | }, 30) : 'Netscape' != navigator['appName'] ? t = (v['prototype']['am'] = function B(e, t, s, n, a, o) { 438 | while (0 <= --o) { 439 | var r = t * this[e++] + s[n] + a; 440 | a = Math["floor"](r / 67108864); 441 | s[n++] = 67108863 & r; 442 | } 443 | return a; 444 | }, 26) : t = (v['prototype']['am'] = function D(e, t, s, n, a, o) { 445 | var r = 16383 & t; 446 | var i = t >> 14; 447 | while (0 <= --o) { 448 | var _ = 16383 & this[e]; 449 | var c = this[e++] >> 14; 450 | var u = i * _ + c * r; 451 | a = ((_ = r * _ + ((16383 & u) << 14) + s[n] + a) >> 28) + (u >> 14) + i * c; 452 | s[n++] = 268435455 & _; 453 | } 454 | return a; 455 | }, 28); 456 | 457 | v['prototype']['DB'] = t; 458 | v['prototype']['DM'] = (1 << t) - 1; 459 | v['prototype']['DV'] = 1 << t; 460 | v['prototype']["FV"] = Math['pow'](2, 52); 461 | v['prototype']['F1'] = 52 - t; 462 | v['prototype']['F2'] = 2 * t - 52; 463 | var l; 464 | var d; 465 | var h = '0123456789abcdefghijklmnopqrstuvwxyz'; 466 | var f = []; 467 | 468 | for (l = '0'['charCodeAt'](0), d = 0; d <= 9; ++d) f[l++] = d; 469 | 470 | for (l = 'a'['charCodeAt'](0), d = 10; d < 36; ++d) f[l++] = d; 471 | 472 | for (l = 'A'['charCodeAt'](0), d = 10; d < 36; ++d) f[l++] = d; 473 | 474 | function m(e) { 475 | return h["charAt"](e); 476 | } 477 | 478 | function b(e) { 479 | var t = w(); 480 | return t["fromInt"](e), t; 481 | } 482 | 483 | function x(e) { 484 | var t; 485 | var s = 1; 486 | return 0 != (t = e >>> 16) && (e = t, s += 16), 0 != (t = e >> 8) && (e = t, s += 8), 0 != (t = e >> 4) && (e = t, s += 4), 0 != (t = e >> 2) && (e = t, s += 2), 0 != (t = e >> 1) && (e = t, s += 1), s; 487 | } 488 | 489 | function y(e) { 490 | this['m'] = e; 491 | } 492 | 493 | function k(e) { 494 | this['m'] = e; 495 | this["mp"] = e["invDigit"](); 496 | this["mpl"] = 32767 & this["mp"]; 497 | this["mph"] = this['mp'] >> 15; 498 | this["um"] = (1 << e['DB'] - 15) - 1; 499 | this["mt2"] = 2 * e["t"]; 500 | 501 | } 502 | 503 | function C() { 504 | this["setPublic"]("00C1E3934D1614465B33053E7F48EE4EC87B14B95EF88947713D25EECBFF7E74C7977D02DC1D9451F79DD5D1C10C29ACB6A9B4D6FB7D0A0279B6719E1772565F09AF627715919221AEF91899CAE08C0D686D748B20A3603BE2318CA6BC2B59706592A9219D0BF05C9F65023A21D2330807252AE0066D59CEEFA5F2748EA80BAB81", "10001"); 505 | 506 | } 507 | 508 | return y['prototype']["convert"] = function S(e) { 509 | return e["s"] < 0 || 0 <= e["compareTo"](this['m']) ? e["mod"](this['m']) : e; 510 | }, y['prototype']["revert"] = function M(e) { 511 | return e; 512 | }, y['prototype']["reduce"] = function R(e) { 513 | e["divRemTo"](this['m'], null, e); 514 | }, y['prototype']["mulTo"] = function F(e, t, s) { 515 | e["multiplyTo"](t, s); 516 | this["reduce"](s); 517 | }, y['prototype']["sqrTo"] = function O(e, t) { 518 | 519 | e["squareTo"](t); 520 | this['reduce'](t); 521 | }, k['prototype']["convert"] = function j(e) { 522 | var t = w(); 523 | return e["abs"]()["dlShiftTo"](this['m']['t'], t), t["divRemTo"](this['m'], null, t), e['s'] < 0 && 0 < t["compareTo"](v["ZERO"]) && this['m']["subTo"](t, t), t; 524 | }, k['prototype']["revert"] = function P(e) { 525 | var t = w(); 526 | return e["copyTo"](t), this['reduce'](t), t; 527 | }, k['prototype']['reduce'] = function I(e) { 528 | 529 | while (e['t'] <= this["mt2"]) e[e['t']++] = 0; 530 | 531 | for (var t = 0; t < this['m']['t']; ++t) { 532 | var s = 32767 & e[t]; 533 | var n = s * this["mpl"] + ((s * this["mph"] + (e[t] >> 15) * this['mpl'] & this["um"]) << 15) & e["DM"]; 534 | e[s = t + this['m']['t']] += this['m']["am"](0, n, e, t, 0, this['m']['t']); 535 | 536 | while (e[s] >= e["DV"]) { 537 | e[s] -= e["DV"]; 538 | e[++s]++; 539 | } 540 | } 541 | 542 | e["clamp"](); 543 | e["drShiftTo"](this['m']['t'], e); 544 | 0 <= e['compareTo'](this['m']) && e["subTo"](this['m'], e); 545 | }, k['prototype']["mulTo"] = function N(e, t, s) { 546 | 547 | e["multiplyTo"](t, s); 548 | this['reduce'](s); 549 | }, k['prototype']["sqrTo"] = function q(e, t) { 550 | 551 | e["squareTo"](t); 552 | this['reduce'](t); 553 | }, v['prototype']["copyTo"] = function L(e) { 554 | for (var t = this['t'] - 1; 0 <= t; --t) e[t] = this[t]; 555 | e['t'] = this['t']; 556 | e['s'] = this['s']; 557 | }, v['prototype']["fromInt"] = function H(e) { 558 | this['t'] = 1; 559 | e < 0 ? this['s'] = -1 : this['s'] = 0; 560 | 0 < e ? this[0] = e : e < -1 ? this[0] = e + this['DV'] : this['t'] = 0; 561 | }, v['prototype']["fromString"] = function $(e, t) { 562 | var s; 563 | if (16 == t) s = 4; else if (8 == t) s = 3; else if (256 == t) s = 8; else if (2 == t) s = 1; else if (32 == t) s = 5; else { 564 | if (4 != t) return void this["fromRadix"](e, t); 565 | s = 2; 566 | } 567 | this['t'] = 0; 568 | this['s'] = 0; 569 | var n; 570 | var a; 571 | var o = e['length']; 572 | var r = !1; 573 | var i = 0; 574 | while (0 <= --o) { 575 | if (8 == s) { 576 | var _ = 255 & e[o]; 577 | } else { 578 | var _ = (n = o, null == (a = f[e["charCodeAt"](n)]) ? -1 : a); 579 | } 580 | if (_ < 0) { 581 | "-" == e["charAt"](o) && (r = !0); 582 | } else { 583 | r = !1; 584 | 0 == i ? this[this['t']++] = _ : i + s > this["DB"] ? (this[this['t'] - 1] |= (_ & (1 << this["DB"] - i) - 1) << i, this[this['t']++] = _ >> this['DB'] - i) : this[this['t'] - 1] |= _ << i; 585 | (i += s) >= this['DB'] && (i -= this['DB']); 586 | } 587 | } 588 | 8 == s && 0 != (128 & e[0]) && (this['s'] = -1, 0 < i && (this[this['t'] - 1] |= (1 << this['DB'] - i) - 1 << i)); 589 | this['clamp'](); 590 | r && v["ZERO"]['subTo'](this, this); 591 | }, v['prototype']['clamp'] = function X() { 592 | var e = this['s'] & this["DM"]; 593 | while (0 < this['t'] && this[this['t'] - 1] == e) --this['t']; 594 | }, v['prototype']["dlShiftTo"] = function U(e, t) { 595 | var s; 596 | for (s = this['t'] - 1; 0 <= s; --s) t[s + e] = this[s]; 597 | for (s = e - 1; 0 <= s; --s) t[s] = 0; 598 | t['t'] = this['t'] + e; 599 | t['s'] = this['s']; 600 | }, v['prototype']["drShiftTo"] = function V(e, t) { 601 | for (var s = e; s < this['t']; ++s) t[s - e] = this[s]; 602 | t['t'] = Math["max"](this['t'] - e, 0); 603 | t['s'] = this['s']; 604 | }, v['prototype']["lShiftTo"] = function W(e, t) { 605 | var s; 606 | var n = e % this['DB']; 607 | var a = this['DB'] - n; 608 | var o = (1 << a) - 1; 609 | var r = Math["floor"](e / this['DB']); 610 | var i = this['s'] << n & this['DM']; 611 | for (s = this['t'] - 1; 0 <= s; --s) { 612 | t[s + r + 1] = this[s] >> a | i; 613 | i = (this[s] & o) << n; 614 | } 615 | for (s = r - 1; 0 <= s; --s) t[s] = 0; 616 | t[r] = i; 617 | t['t'] = this['t'] + r + 1; 618 | t['s'] = this['s']; 619 | t['clamp'](); 620 | }, v['prototype']["rShiftTo"] = function G(e, t) { 621 | t['s'] = this['s']; 622 | var s = Math["floor"](e / this["DB"]); 623 | if (s >= this['t']) t['t'] = 0; else { 624 | var n = e % this['DB']; 625 | var a = this['DB'] - n; 626 | var o = (1 << n) - 1; 627 | t[0] = this[s] >> n; 628 | for (var r = s + 1; r < this['t']; ++r) { 629 | t[r - s - 1] |= (this[r] & o) << a; 630 | t[r - s] = this[r] >> n; 631 | } 632 | 0 < n && (t[this['t'] - s - 1] |= (this['s'] & o) << a); 633 | t['t'] = this['t'] - s; 634 | t["clamp"](); 635 | } 636 | }, v['prototype']['subTo'] = function Y(e, t) { 637 | 638 | var s = 0; 639 | var n = 0; 640 | var a = Math["min"](e['t'], this['t']); 641 | 642 | while (s < a) { 643 | n += this[s] - e[s]; 644 | t[s++] = n & this['DM']; 645 | n >>= this['DB']; 646 | } 647 | 648 | if (e['t'] < this['t']) { 649 | n -= e['s']; 650 | 651 | while (s < this['t']) { 652 | n += this[s]; 653 | t[s++] = n & this['DM']; 654 | n >>= this['DB']; 655 | } 656 | n += this['s']; 657 | } else { 658 | n += this['s']; 659 | 660 | while (s < e['t']) { 661 | n -= e[s]; 662 | t[s++] = n & this['DM']; 663 | n >>= this['DB']; 664 | } 665 | 666 | n -= e['s']; 667 | } 668 | 669 | n < 0 ? t['s'] = -1 : t['s'] = 0; 670 | n < -1 ? t[s++] = this['DV'] + n : 0 < n && (t[s++] = n); 671 | t['t'] = s; 672 | t['clamp'](); 673 | }, v['prototype']["multiplyTo"] = function Z(e, t) { 674 | var s = this["abs"](); 675 | var n = e["abs"](); 676 | var a = s["t"]; 677 | t['t'] = a + n['t']; 678 | while (0 <= --a) t[a] = 0; 679 | for (a = 0; a < n['t']; ++a) t[a + s['t']] = s["am"](0, n[a], t, a, 0, s['t']); 680 | 681 | t["s"] = 0; 682 | t["clamp"](); 683 | this['s'] != e['s'] && v["ZERO"]["subTo"](t, t); 684 | }, v['prototype']["squareTo"] = function Q(e) { 685 | var t = this["abs"](); 686 | var s = e["t"] = 2 * t['t']; 687 | 688 | while (0 <= --s) e[s] = 0; 689 | 690 | for (s = 0; s < t['t'] - 1; ++s) { 691 | var n = t["am"](s, t[s], e, 2 * s, 0, 1); 692 | (e[s + t['t']] += t["am"](s + 1, 2 * t[s], e, 2 * s + 1, n, t['t'] - s - 1)) >= t["DV"] && (e[s + t['t']] -= t["DV"], e[s + t['t'] + 1] = 1); 693 | } 694 | 695 | 0 < e['t'] && (e[e['t'] - 1] += t['am'](s, t[s], e, 2 * s, 0, 1)); 696 | e["s"] = 0; 697 | e["clamp"](); 698 | }, v['prototype']["divRemTo"] = function J(e, t, s) { 699 | var n = e["abs"](); 700 | if (!(n["t"] <= 0)) { 701 | var a = this['abs'](); 702 | if (a['t'] < n['t']) return null != t && t["fromInt"](0), void (null != s && this["copyTo"](s)); 703 | null == s && (s = w()); 704 | var o = w(); 705 | var r = this["s"]; 706 | var i = e['s']; 707 | 708 | var _ = this["DB"] - x(n[n['t'] - 1]); 709 | 710 | if (0 < _) { 711 | n["lShiftTo"](_, o); 712 | a["lShiftTo"](_, s); 713 | } else { 714 | n["copyTo"](o); 715 | a['copyTo'](s); 716 | } 717 | 718 | var c = o['t']; 719 | var u = o[c - 1]; 720 | 721 | if (0 != u) { 722 | var p = u * (1 << this["F1"]) + (1 < c ? o[c - 2] >> this["F2"] : 0); 723 | var g = this["FV"] / p; 724 | var l = (1 << this["F1"]) / p; 725 | var d = 1 << this["F2"]; 726 | var h = s['t']; 727 | var f = h - c; 728 | 729 | if (null == t) { 730 | var m = w(); 731 | } else { 732 | var m = t; 733 | } 734 | 735 | o["dlShiftTo"](f, m); 736 | 0 <= s["compareTo"](m) && (s[s['t']++] = 1, s["subTo"](m, s)); 737 | v["ONE"]["dlShiftTo"](c, m); 738 | m["subTo"](o, o); 739 | 740 | while (o["t"] < c) o[o['t']++] = 0; 741 | 742 | while (0 <= --f) { 743 | var b = s[--h] == u ? this["DM"] : Math["floor"](s[h] * g + (s[h - 1] + d) * l); 744 | 745 | if ((s[h] += o["am"](0, b, s, f, 0, c)) < b) { 746 | o["dlShiftTo"](f, m); 747 | s['subTo'](m, s); 748 | 749 | while (s[h] < --b) s['subTo'](m, s); 750 | } 751 | } 752 | 753 | null != t && (s["drShiftTo"](c, t), r != i && v["ZERO"]['subTo'](t, t)); 754 | s['t'] = c; 755 | s["clamp"](); 756 | 0 < _ && s["rShiftTo"](_, s); 757 | r < 0 && v["ZERO"]['subTo'](s, s); 758 | } 759 | } 760 | }, v['prototype']["invDigit"] = function K() { 761 | 762 | if (this["t"] < 1) return 0; 763 | var e = this[0]; 764 | if (0 == (1 & e)) return 0; 765 | var t = 3 & e; 766 | return 0 < (t = (t = (t = (t = t * (2 - (15 & e) * t) & 15) * (2 - (255 & e) * t) & 255) * (2 - ((65535 & e) * t & 65535)) & 65535) * (2 - e * t % this["DV"]) % this["DV"]) ? this['DV'] - t : -t; 767 | }, v['prototype']["isEven"] = function ee() { 768 | return 0 == (0 < this['t'] ? 1 & this[0] : this["s"]); 769 | }, v['prototype']["exp"] = function te(e, t) { 770 | if (4294967295 < e || e < 1) return v["ONE"]; 771 | var s = w(); 772 | var n = w(); 773 | var a = t["convert"](this); 774 | var o = x(e) - 1; 775 | a["copyTo"](s); 776 | while (0 <= --o) if (t["sqrTo"](s, n), 0 < (e & 1 << o)) t["mulTo"](n, a, s); else { 777 | var r = s; 778 | s = n; 779 | n = r; 780 | } 781 | return t["revert"](s); 782 | }, v['prototype']["toString"] = function se(e) { 783 | if (this["s"] < 0) return "-" + this["negate"]()["toString"](e); 784 | var t; 785 | if (16 == e) t = 4; else if (8 == e) t = 3; else if (2 == e) t = 1; else if (32 == e) t = 5; else { 786 | if (4 != e) return this["toRadix"](e); 787 | t = 2; 788 | } 789 | var s; 790 | var n = (1 << t) - 1; 791 | var a = !1; 792 | var o = ""; 793 | var r = this["t"]; 794 | var i = this["DB"] - r * this['DB'] % t; 795 | if (0 < r--) { 796 | i < this['DB'] && 0 < (s = this[r] >> i) && (a = !0, o = m(s)); 797 | while (0 <= r) { 798 | i < t ? (s = (this[r] & (1 << i) - 1) << t - i, s |= this[--r] >> (i += this['DB'] - t)) : (s = this[r] >> (i -= t) & n, i <= 0 && (i += this['DB'], --r)); 799 | 0 < s && (a = !0); 800 | a && (o += m(s)); 801 | } 802 | } 803 | 804 | return a ? o : "0"; 805 | }, v['prototype']["negate"] = function ne() { 806 | var e = w(); 807 | return v["ZERO"]["subTo"](this, e), e; 808 | }, v['prototype']["abs"] = function ae() { 809 | 810 | return this['s'] < 0 ? this['negate']() : this; 811 | }, v['prototype']['compareTo'] = function oe(e) { 812 | 813 | var t = this['s'] - e['s']; 814 | if (0 != t) return t; 815 | var s = this['t']; 816 | if (0 != (t = s - e['t'])) return this['s'] < 0 ? -t : t; 817 | 818 | while (0 <= --s) if (0 != (t = this[s] - e[s])) return t; 819 | 820 | return 0; 821 | }, v['prototype']["bitLength"] = function re() { 822 | return this["t"] <= 0 ? 0 : this["DB"] * (this['t'] - 1) + x(this[this['t'] - 1] ^ this["s"] & this["DM"]); 823 | }, v['prototype']["mod"] = function ie(e) { 824 | var t = w(); 825 | return this["abs"]()["divRemTo"](e, null, t), this['s'] < 0 && 0 < t["compareTo"](v["ZERO"]) && e["subTo"](t, t), t; 826 | }, v['prototype']["modPowInt"] = function $_CEW(e, t) { 827 | var s; 828 | return e < 256 || t["isEven"]() ? s = new y(t) : s = new k(t), this["exp"](e, s); 829 | }, v["ZERO"] = b(0), v["ONE"] = b(1), C['prototype']["doPublic"] = function ce(e) { 830 | return e["modPowInt"](this["e"], this['n']); 831 | }, C['prototype']["setPublic"] = function ue(e, t) { 832 | if (null != e && null != t && 0 < e['length'] && 0 < t['length']) { 833 | this['n'] = function s(e, t) { 834 | 835 | return new v(e, t); 836 | }(e, 16); 837 | 838 | this['e'] = parseInt(t, 16); 839 | } else { 840 | console && console["error"] && console['error']("Invalid RSA public key"); 841 | } 842 | }, C['prototype']['encrypt'] = function pe(e) { 843 | var t = function i(e, t) { 844 | if (t < e["length"] + 11) return console && console["error"] && console['error']("Message too long for RSA"), null; 845 | var s = []; 846 | var n = e['length'] - 1; 847 | while (0 <= n && 0 < t) { 848 | var a = e["charCodeAt"](n--); 849 | if (a < 128) { 850 | s[--t] = a; 851 | } else { 852 | if (127 < a && a < 2048) { 853 | s[--t] = 63 & a | 128; 854 | s[--t] = a >> 6 | 192; 855 | } else { 856 | s[--t] = 63 & a | 128; 857 | s[--t] = a >> 6 & 63 | 128; 858 | s[--t] = a >> 12 | 224; 859 | } 860 | } 861 | } 862 | s[--t] = 0; 863 | var o = new g(); 864 | var r = []; 865 | while (2 < t) { 866 | r[0] = 0; 867 | while (0 == r[0]) o["nextBytes"](r); 868 | s[--t] = r[0]; 869 | } 870 | return s[--t] = 2, s[--t] = 0, new v(s); 871 | }(e, this['n']['bitLength']() + 7 >> 3); 872 | 873 | if (null == t) return null; 874 | var s = this['doPublic'](t); 875 | if (null == s) return null; 876 | var n = s['toString'](16); 877 | return 0 == (1 & n['length']) ? n : '0' + n; 878 | }, C; 879 | }(); 880 | 881 | return a; 882 | } 883 | function w(e) { 884 | for (var t = [], s = 0, n = 0; n < 2 * e.length; n += 2) { 885 | t[n >>> 3] |= parseInt(e[s], 10) << 24 - n % 8 * 4; 886 | s++; 887 | } 888 | 889 | for (var a = [], o = 0; o < e.length; o++) { 890 | var r = t[o >>> 2] >>> 24 - o % 4 * 8 & 255; 891 | a.push((r >>> 4).toString(16)); 892 | a.push((15 & r).toString(16)); 893 | } 894 | 895 | return a.join(""); 896 | } 897 | 898 | function get_w(e, track) { 899 | var eee = e; // var n = c.guid() 900 | 901 | var n = "c2fa6d0dde9fd7da"; 902 | eee.track = get_track(track); 903 | var a = new (_())().encrypt(n); 904 | var o = n_encrypt().encrypt(JSON.stringify(eee), n); 905 | return w(o) + a; 906 | } 907 | -------------------------------------------------------------------------------- /gee4/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jxhczhl/spider/4d874822d79d0947786248d8d4111b9193202a30/gee4/bg.jpg -------------------------------------------------------------------------------- /gee4/geet4.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @Time : 2022/4/12 15:22 4 | @Auth : 黑脸怪 5 | @File :geet4.py 6 | 7 | """ 8 | import json 9 | import random 10 | import time 11 | import urllib.parse 12 | import uuid 13 | import execjs 14 | import ddddocr 15 | import requests 16 | 17 | 18 | class Geet4(): 19 | static_domain = "https://static.geetest.com/" 20 | bg_url = "" 21 | slice_url = "" 22 | lot_number = "" 23 | ptime = 0 24 | 25 | def __init__(self, captcha_id): 26 | # self.r 保持session 27 | self.r = requests.session() 28 | self.captcha_id = captcha_id 29 | self.challenge = uuid.uuid4() 30 | with open("./1.js") as f: 31 | js = f.read() 32 | self.js_exec = execjs.compile(js) 33 | 34 | def _get_nowTime(self): 35 | return int(time.time() * 1000) 36 | 37 | def One_reg(self): 38 | params = { 39 | "captcha_id": self.captcha_id, 40 | "challenge": self.challenge, 41 | "client_type": "web", 42 | "risk_type": "slide", 43 | "lang": "zh", 44 | "callback": "geetest_{}".format(self._get_nowTime()) 45 | } 46 | url = "https://gcaptcha4.geetest.com/load" 47 | res = self.r.get(url, params=params).text 48 | res = res.replace(params["callback"], "")[1:-1] 49 | res_json = json.loads(res) 50 | self.bg_url = urllib.parse.urljoin(self.static_domain, res_json["data"]["bg"]) 51 | self.slice_url = urllib.parse.urljoin(self.static_domain, res_json["data"]["slice"]) 52 | self.lot_number = res_json["data"]["lot_number"] 53 | 54 | def get_bg_slice(self): 55 | bg = requests.get(self.bg_url).content 56 | slice = requests.get(self.slice_url).content 57 | # with open("./bg.jpg","wb") as f: 58 | # f.write(self.bg) 59 | # with open("./slice.jpg","wb") as f: 60 | # f.write(self.slice) 61 | return bg, slice 62 | 63 | def notch_position_x(self, bg, slice): 64 | det = ddddocr.DdddOcr(det=False, ocr=False, show_ad=False) 65 | res = det.slide_match(slice, bg, simple_target=True) 66 | return res["target"][0] 67 | 68 | def get_track(self, distance): 69 | def __ease_out_expo(sep): 70 | if sep == 1: 71 | return 1 72 | else: 73 | return 1 - pow(2, -10 * sep) 74 | 75 | if not isinstance(distance, int) or distance < 0: 76 | raise ValueError(f"distance类型必须是大于等于0的整数: distance: {distance}, type: {type(distance)}") 77 | # 初始化轨迹列表 78 | slide_track = [ 79 | [random.randint(-50, -10), random.randint(-50, -10), 0], 80 | [0, 0, 0], 81 | ] 82 | # 共记录count次滑块位置信息 83 | count = 30 + int(distance / 2) 84 | # 初始化滑动时间 85 | t = random.randint(50, 100) 86 | # 记录上一次滑动的距离 87 | _x = 0 88 | _y = 0 89 | for i in range(count): 90 | # 已滑动的横向距离 91 | x = round(__ease_out_expo(i / count) * distance) 92 | # 滑动过程消耗的时间 93 | t += random.randint(10, 20) 94 | if x == _x: 95 | continue 96 | slide_track.append([x, _y, t]) 97 | _x = x 98 | slide_track.append(slide_track[-1]) 99 | self.ptime = slide_track[-1][-1] 100 | return slide_track 101 | 102 | def get_w(self, distance, track): 103 | eee = { 104 | "device_id": "A59C", 105 | "em": "{ph: 0, cp: 0, ek: '11', wd: 1, nt: 0, sc: 0,si: 0}", 106 | "ep": "123", 107 | "geetest": "captcha", 108 | "lang": "zh", 109 | "lot_number": self.lot_number, 110 | "passtime": self.ptime, 111 | "setLeft": distance + 1, 112 | "userresponse": (distance + 1) / 1.0059466666666665, 113 | "fxy6": "143036667" 114 | } 115 | res = self.js_exec.call("get_w", eee, track) 116 | return res 117 | 118 | def ok(self, w): 119 | params = { 120 | "captcha_id": self.captcha_id, 121 | "challenge": self.challenge, 122 | "client_type": "web", 123 | "lot_number": self.lot_number, 124 | "risk_type": "slide", 125 | "pt": "1", 126 | "w": w, 127 | "callback": "geetest_{}".format(self._get_nowTime()) 128 | 129 | } 130 | url = "https://gcaptcha4.geetest.com/verify" 131 | res = self.r.get(url, params=params).text 132 | res = res.replace(params["callback"], "")[1:-1] 133 | return json.loads(res) 134 | 135 | def main(self): 136 | # 初始化获取id和滑块图 137 | self.One_reg() 138 | # 访问图片获得字节集 139 | bg, slice = self.get_bg_slice() 140 | distance = self.notch_position_x(bg, slice) 141 | print("距离:", distance) 142 | track = self.get_track(distance) 143 | # print(track) 144 | w = self.get_w(distance, track) 145 | # print(w) 146 | return self.ok(w) 147 | 148 | 149 | if __name__ == '__main__': 150 | geet = Geet4(captcha_id="24f56dc13c40dc4a02fd0318567caef5") 151 | res=geet.main() 152 | try: 153 | if res["data"]["seccode"]["pass_token"]: 154 | print("滑块成功") 155 | except KeyError: 156 | print("滑块失败") 157 | print(res) 158 | 159 | -------------------------------------------------------------------------------- /gee4/slice.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jxhczhl/spider/4d874822d79d0947786248d8d4111b9193202a30/gee4/slice.jpg -------------------------------------------------------------------------------- /hlg.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jxhczhl/spider/4d874822d79d0947786248d8d4111b9193202a30/hlg.zip -------------------------------------------------------------------------------- /云汉芯城.js: -------------------------------------------------------------------------------- 1 | window = global; 2 | var _0x54521b = {}; 3 | var _0x39a116 = { 4 | 'QLyKR': function (_0x1ffa91, _0xee1bea) { 5 | return _0x1ffa91 < _0xee1bea; 6 | }, 7 | 'hAWZk': function (_0x1bac1e, _0x4ff53f) { 8 | return _0x1bac1e + _0x4ff53f; 9 | }, 10 | 'vDgtD': function (_0x45e506, _0x5ce730) { 11 | return _0x45e506 > _0x5ce730; 12 | }, 13 | 'gvsjB': function (_0x1728e7, _0x22353f) { 14 | return _0x1728e7(_0x22353f); 15 | }, 16 | 'zdyBA': function (_0x11729a, _0x2705aa) { 17 | return _0x11729a / _0x2705aa; 18 | }, 19 | 'evvVS': function (_0x44447e, _0x32d23e) { 20 | return _0x44447e - _0x32d23e; 21 | }, 22 | 'PPYAx': function (_0x2a92e0, _0xd5244a) { 23 | return _0x2a92e0 * _0xd5244a; 24 | }, 25 | 'Exrix': function (_0x2850fd, _0x37ebba) { 26 | return _0x2850fd * _0x37ebba; 27 | }, 28 | 'QEDeM': function (_0x5745ae, _0x5095b1, _0x265c5a) { 29 | return _0x5745ae(_0x5095b1, _0x265c5a); 30 | }, 31 | 'GxEIf': function (_0xf1c568, _0x1e5067) { 32 | return _0xf1c568 == _0x1e5067; 33 | }, 34 | 'CuQln': function (_0x2aba1c, _0x39cee2) { 35 | return _0x2aba1c / _0x39cee2; 36 | }, 37 | 'DNEeE': "
(.+)
', html).group(0) 125 | content = content.replace('