From 503bf08e9d26e945515d46c700c535687b5f55ad Mon Sep 17 00:00:00 2001 From: NobyDa <53217160+NobyDa@users.noreply.github.com> Date: Sun, 26 Feb 2023 23:31:35 +0800 Subject: [PATCH] Minor improvements to iqiyi script. --- iQIYI-DailyBonus/iQIYI.js | 242 +++++++++++++++++++------------------- 1 file changed, 120 insertions(+), 122 deletions(-) diff --git a/iQIYI-DailyBonus/iQIYI.js b/iQIYI-DailyBonus/iQIYI.js index 41293f6..5182c3b 100644 --- a/iQIYI-DailyBonus/iQIYI.js +++ b/iQIYI-DailyBonus/iQIYI.js @@ -1,7 +1,7 @@ /* 爱奇艺会员签到脚本 -更新时间: 2023/02/16 +更新时间: 2023/02/26 脚本兼容: QuantumultX, Surge4, Loon, JsBox, Node.js 电报频道: @NobyDa 问题反馈: @NobyDa_bot @@ -80,55 +80,53 @@ var P00001 = ''; var P00003 = ''; -var dfp = ''; - var $nobyda = nobyda(); (async () => { cookie = cookie || $nobyda.read("CookieQY") LogDetails = $nobyda.read("iQIYI_LogDetails") === "true" ? true : LogDetails - if (typeof process !== 'undefined' && typeof process.env !== 'undefined') { - cookie = cookie || process.env.IQIYI_COOKIE; - LogDetails = LogDetails || process.env.IQIYI_DEBUG; - barkKey = barkKey || process.env.BARK_PUSH; - barkServer = barkServer || process.env.BARK_SERVER; - } + if (typeof process !== 'undefined' && typeof process.env !== 'undefined') { + cookie = cookie || process.env.IQIYI_COOKIE; + LogDetails = LogDetails || process.env.IQIYI_DEBUG; + barkKey = barkKey || process.env.BARK_PUSH; + barkServer = barkServer || process.env.BARK_SERVER; + } if ($nobyda.isRequest) { GetCookie() } else if (cookie) { if (cookie.includes("P00001") && cookie.includes("P00003") && cookie.includes("__dfp")) { - P00001 = cookie.match(/P00001=(.*?);/)[1]; - P00003 = cookie.match(/P00003=(.*?);/)[1]; - dfp = cookie.match(/__dfp=(.*?)@/)[1]; - await login(); - await Checkin(); - for (let i = 0; i < 3; i++){ - const run = await Lottery(i); - if (run) { - await new Promise(r => setTimeout(r, 1000)); - } else { - break - } + P00001 = cookie.match(/P00001=(.*?);/)[1]; + P00003 = cookie.match(/P00003=(.*?);/)[1]; + dfp = cookie.match(/__dfp=(.*?)@/)[1]; + await login(); + await Checkin(); + for (let i = 0; i < 3; i++) { + const run = await Lottery(i); + if (run) { + await new Promise(r => setTimeout(r, 1000)); + } else { + break } - const tasks = await getTaskList(); - for (let i = 0; i < tasks.length; i++){ - if (![1, 4].includes(tasks[i].status)) { //0:待领取 1:已完成 2:未开始 4:进行中 - await joinTask(tasks[i]); - await notifyTask(tasks[i]); - await new Promise(r => setTimeout(r, 1000)); - await getTaskRewards(tasks[i]); - console.log(`--------------------`) - } - } - const expires = $nobyda.expire ? $nobyda.expire.replace(/\u5230\u671f/, "") : "获取失败 ⚠️" - if (!$nobyda.isNode) $nobyda.notify("爱奇艺", "到期时间: " + expires, pushMsg.join('\n')); - if (barkKey) await BarkNotify($nobyda, barkKey, '爱奇艺', `到期时间: ${expires}\n${pushMsg.join('\n')}`, barkServer); - await $nobyda.time(); - } else { - console.log(`Cookie缺少关键值,需重新获取`) } + const tasks = await getTaskList(); + for (let i = 0; i < tasks.length; i++) { + if (![1, 4].includes(tasks[i].status)) { //0:待领取 1:已完成 2:未开始 4:进行中 + await joinTask(tasks[i]); + await notifyTask(tasks[i]); + await new Promise(r => setTimeout(r, 1000)); + await getTaskRewards(tasks[i]); + console.log(`--------------------`) + } + } + const expires = $nobyda.expire ? $nobyda.expire.replace(/\u5230\u671f/, "") : "获取失败 ⚠️" + if (!$nobyda.isNode) $nobyda.notify("爱奇艺", "到期时间: " + expires, pushMsg.join('\n')); + if (barkKey) await BarkNotify($nobyda, barkKey, '爱奇艺', `到期时间: ${expires}\n${pushMsg.join('\n')}`, barkServer); + await $nobyda.time(); + } else { + console.log(`Cookie缺少关键值,需重新获取`) + } } else { - $nobyda.notify("爱奇艺会员", "", "签到终止, 未获取Cookie"); + $nobyda.notify("爱奇艺会员", "", "签到终止, 未获取Cookie"); } })().finally(() => { $nobyda.done(); @@ -143,7 +141,7 @@ function login() { t: '479112291' } } - $nobyda.get(URL, function(error, response, data) { + $nobyda.get(URL, function (error, response, data) { const Details = LogDetails ? data ? `response:\n${data}` : '' : '' if (!error && data.match(/\"text\":\"\d.+?\u5230\u671f\"/)) { $nobyda.expire = data.match(/\"text\":\"(\d.+?\u5230\u671f)\"/)[1] @@ -179,13 +177,13 @@ function Checkin() { userId: P00003, }; const post_date = { - "natural_month_sign": { - "agentType": "1", - "agentversion": "1", - "authCookie": P00001, - "qyid": md5(stringRandom(16)), - "taskCode": "iQIYI_mofhr", - "verticalCode": "iQIYI" + "natural_month_sign": { + "agentType": "1", + "agentversion": "1", + "authCookie": P00001, + "qyid": md5(stringRandom(16)), + "taskCode": "iQIYI_mofhr", + "verticalCode": "iQIYI" } }; const sign = k("UKobMjDMsDoScuWOfp6F", sign_date, { @@ -196,29 +194,29 @@ function Checkin() { var URL = { url: 'https://community.iqiyi.com/openApi/task/execute?' + w(sign_date) + "&sign=" + sign, headers: { - 'Content-Type':'application/json' + 'Content-Type': 'application/json' }, body: JSON.stringify(post_date) } - $nobyda.post(URL, function(error, response, data) { + $nobyda.post(URL, function (error, response, data) { let CheckinMsg, rewards = []; - const Details = LogDetails ? `msg:\n${data||error}` : ''; + const Details = LogDetails ? `msg:\n${data || error}` : ''; try { - if (error) throw new Error(`接口请求出错 ‼️`); + if (error) throw new Error(`接口请求出错 ‼️`); const obj = JSON.parse(data) if (obj.code === "A00000") { if (obj.data.code === "A0000") { - for(let i = 0; i < obj.data.data.rewards.length; i++) { - if (obj.data.data.rewards[i].rewardType == 1) { - rewards.push(`成长值+${obj.data.data.rewards[i].rewardCount}`) - } else if (obj.data.data.rewards[i].rewardType == 2) { - rewards.push(`VIP天+${obj.data.data.rewards[i].rewardCount}`) - } else if (obj.data.data.rewards[i].rewardType == 3) { - rewards.push(`积分+${obj.data.data.rewards[i].rewardCount}`) - } - } + for (let i = 0; i < obj.data.data.rewards.length; i++) { + if (obj.data.data.rewards[i].rewardType == 1) { + rewards.push(`成长值+${obj.data.data.rewards[i].rewardCount}`) + } else if (obj.data.data.rewards[i].rewardType == 2) { + rewards.push(`VIP天+${obj.data.data.rewards[i].rewardCount}`) + } else if (obj.data.data.rewards[i].rewardType == 3) { + rewards.push(`积分+${obj.data.data.rewards[i].rewardCount}`) + } + } var continued = obj.data.data.signDays; - CheckinMsg = `应用签到: ${rewards.join(", ")}${rewards.length<3?`, 累计签到${continued}天`:``} 🎉`; + CheckinMsg = `应用签到: ${rewards.length ? `${rewards.join(", ")}${rewards.length < 3 ? `, 累计签到${continued}天` : ``}` : '无奖励'} 🎉`; } else { CheckinMsg = `应用签到: ${obj.data.msg} ⚠️`; } @@ -226,7 +224,7 @@ function Checkin() { CheckinMsg = `应用签到: Cookie无效 ⚠️`; } } catch (e) { - CheckinMsg = `应用签到: ${e.message||e}`; + CheckinMsg = `应用签到: ${e.message || e}`; } pushMsg.push(CheckinMsg); console.log(`爱奇艺-${CheckinMsg} ${Details}`); @@ -237,45 +235,45 @@ function Checkin() { function Lottery(s) { return new Promise(resolve => { - const URL = { - url: 'https://iface2.iqiyi.com/aggregate/3.0/lottery_activity?app_k=0&app_v=0&platform_id=0&dev_os=0&dev_ua=0&net_sts=0&qyid=0&psp_uid=0&psp_cki=' + P00001 + '&psp_status=0&secure_p=0&secure_v=0&req_sn=0' - } - $nobyda.get(URL, async function(error, response, data) { - const Details = LogDetails ? `msg:\n${data||error}` : '' - let LotteryMsg; - try { - if (error) throw new Error("接口请求出错 ‼️"); - const obj = JSON.parse(data); - if (obj.title) { - LotteryMsg = `应用抽奖: ${obj.title!='影片推荐'&&obj.awardName||'未中奖'} 🎉`; - LotteryMsg = `应用抽奖: ${obj.kv.code=='Q00702'&&`您的抽奖次数已经用完 ⚠️`||LotteryMsg}`; - $nobyda.stop = obj.kv.code == 'Q00702'; - } else if (obj.kv.code == 'Q00304'){ - LotteryMsg = `应用抽奖: Cookie无效 ⚠️`; - $nobyda.stop = 1; - } else { - LotteryMsg = `应用抽奖: 未知错误 ⚠️` - } - } catch (e) { - LotteryMsg = `应用抽奖: ${e.message || e}`; + const URL = { + url: 'https://iface2.iqiyi.com/aggregate/3.0/lottery_activity?app_k=0&app_v=0&platform_id=0&dev_os=0&dev_ua=0&net_sts=0&qyid=0&psp_uid=0&psp_cki=' + P00001 + '&psp_status=0&secure_p=0&secure_v=0&req_sn=0' + } + $nobyda.get(URL, async function (error, response, data) { + const Details = LogDetails ? `msg:\n${data || error}` : '' + let LotteryMsg; + try { + if (error) throw new Error("接口请求出错 ‼️"); + const obj = JSON.parse(data); + if (obj.title) { + LotteryMsg = `应用抽奖: ${obj.title != '影片推荐' && obj.awardName || '未中奖'} 🎉`; + LotteryMsg = obj.kv.code == 'Q00702' && `应用抽奖: 您的抽奖次数已经用完 ⚠️` || LotteryMsg; + $nobyda.stop = obj.kv.code == 'Q00702'; + } else if (obj.kv.code == 'Q00304') { + LotteryMsg = `应用抽奖: Cookie无效 ⚠️`; + $nobyda.stop = 1; + } else { + LotteryMsg = `应用抽奖: 未知错误 ⚠️` } - console.log(`爱奇艺-${LotteryMsg} (${s+1}) ${Details}`) - pushMsg.push(LotteryMsg) - resolve(!$nobyda.stop) - }) + } catch (e) { + LotteryMsg = `应用抽奖: ${e.message || e}`; + } + console.log(`爱奇艺-${LotteryMsg} (${s + 1}) ${Details}`) + pushMsg.push(LotteryMsg) + resolve(!$nobyda.stop) + }) }) } function getTaskList(task) { return new Promise(resolve => { - $nobyda.get(`https://tc.vip.iqiyi.com/taskCenter/task/queryUserTask?P00001=${P00001}`, function(error, response, data) { - let taskListMsg, taskList = []; - const Details = LogDetails ? `msg:\n${data||error}` : ''; + $nobyda.get(`https://tc.vip.iqiyi.com/taskCenter/task/queryUserTask?P00001=${P00001}`, function (error, response, data) { + let taskListMsg, taskList = []; + const Details = LogDetails ? `msg:\n${data || error}` : ''; try { if (error) throw new Error(`请求失败`); const obj = JSON.parse(data); if (obj.code == 'A00000' && obj.data && obj.data.tasks) { - Object.keys(obj.data.tasks).map((group) => { + Object.keys(obj.data.tasks).map((group) => { (obj.data.tasks[group] || []).map((item) => { taskList.push({ name: item.taskTitle, @@ -289,7 +287,7 @@ function getTaskList(task) { taskListMsg = `获取失败!`; } } catch (e) { - taskListMsg = `${e.message||e} ‼️`; + taskListMsg = `${e.message || e} ‼️`; } console.log(`爱奇艺-任务列表: ${taskListMsg} ${Details}`) resolve(taskList) @@ -300,16 +298,16 @@ function getTaskList(task) { function joinTask(task) { return new Promise(resolve => { $nobyda.get('https://tc.vip.iqiyi.com/taskCenter/task/joinTask?taskCode=' + task.taskCode + '&lang=zh_CN&platform=0000000000000000&P00001=' + P00001, function (error, response, data) { - let joinTaskMsg, Details = LogDetails ? `msg:\n${data||error}` : ''; - try { - if (error) throw new Error(`请求失败`); - const obj = JSON.parse(data); - joinTaskMsg = obj.code || '领取失败'; - } catch (e) { - joinTaskMsg = `错误 ${e.message||e}`; - } - console.log(`爱奇艺-领取任务: ${task.name} => ${joinTaskMsg} ${Details}`) - resolve() + let joinTaskMsg, Details = LogDetails ? `msg:\n${data || error}` : ''; + try { + if (error) throw new Error(`请求失败`); + const obj = JSON.parse(data); + joinTaskMsg = obj.code || '领取失败'; + } catch (e) { + joinTaskMsg = `错误 ${e.message || e}`; + } + console.log(`爱奇艺-领取任务: ${task.name} => ${joinTaskMsg} ${Details}`) + resolve() }) }) } @@ -317,16 +315,16 @@ function joinTask(task) { function notifyTask(task) { return new Promise(resolve => { $nobyda.get('https://tc.vip.iqiyi.com/taskCenter/task/notify?taskCode=' + task.taskCode + '&lang=zh_CN&platform=0000000000000000&P00001=' + P00001, function (error, response, data) { - let notifyTaskMsg, Details = LogDetails ? `msg:\n${data||error}` : ''; - try { - if (error) throw new Error(`请求失败`); - const obj = JSON.parse(data); - notifyTaskMsg = obj.code || '失败'; - } catch (e) { - notifyTaskMsg = e.message || e; - } - console.log(`爱奇艺-开始任务: ${task.name} => ${notifyTaskMsg} ${Details}`) - resolve() + let notifyTaskMsg, Details = LogDetails ? `msg:\n${data || error}` : ''; + try { + if (error) throw new Error(`请求失败`); + const obj = JSON.parse(data); + notifyTaskMsg = obj.code || '失败'; + } catch (e) { + notifyTaskMsg = e.message || e; + } + console.log(`爱奇艺-开始任务: ${task.name} => ${notifyTaskMsg} ${Details}`) + resolve() }) }) } @@ -335,17 +333,17 @@ function getTaskRewards(task) { return new Promise(resolve => { $nobyda.get('https://tc.vip.iqiyi.com/taskCenter/task/getTaskRewards?taskCode=' + task.taskCode + '&lang=zh_CN&platform=0000000000000000&P00001=' + P00001, function (error, response, data) { let RewardsMsg; - const Details = LogDetails ? `msg:\n${data||error}` : '' + const Details = LogDetails ? `msg:\n${data || error}` : '' try { - if (error) throw new Error(`接口请求出错 ‼️`); + if (error) throw new Error(`接口请求出错 ‼️`); const obj = JSON.parse(data) if (obj.msg === "成功" && obj.code === "A00000" && obj.dataNew[0] !== undefined) { RewardsMsg = `任务奖励: ${task.name} => ${obj.dataNew[0].name + obj.dataNew[0].value} 🎉` } else { - RewardsMsg = `任务奖励: ${task.name} => ${obj.msg!==`成功`&&obj.msg||`未完成`} ⚠️` + RewardsMsg = `任务奖励: ${task.name} => ${obj.msg !== `成功` && obj.msg || `未完成`} ⚠️` } } catch (e) { - RewardsMsg = `任务奖励: ${e.message||e}`; + RewardsMsg = `任务奖励: ${e.message || e}`; } pushMsg.push(RewardsMsg) console.log(`爱奇艺-${RewardsMsg} ${Details}`) @@ -366,11 +364,11 @@ function GetCookie() { if (RA != iQIYI) { var OldTime = $nobyda.read("CookieQYTime") if (!$nobyda.write(iQIYI, "CookieQY")) { - $nobyda.notify(`${RA?`更新`:`首次写入`}爱奇艺签到Cookie失败‼️`, "", "") + $nobyda.notify(`${RA ? `更新` : `首次写入`}爱奇艺签到Cookie失败‼️`, "", "") } else { if (!OldTime || OldTime && (Date.now() - OldTime) / 1000 >= 21600) { $nobyda.write(JSON.stringify(Date.now()), "CookieQYTime") - $nobyda.notify(`${RA?`更新`:`首次写入`}爱奇艺签到Cookie成功 🎉`, "", "") + $nobyda.notify(`${RA ? `更新` : `首次写入`}爱奇艺签到Cookie成功 🎉`, "", "") } else { console.log(`\n更新爱奇艺Cookie成功! 🎉\n检测到频繁通知, 已转为输出日志`) } @@ -383,7 +381,7 @@ function GetCookie() { } } -async function BarkNotify(c,k,t,b,p){for(let i=0;i<3;i++){console.log(`🔷Bark notify >> Start push (${i+1})`);const s=await new Promise((n)=>{c.post({url:p||'https://api.day.app/push',headers:{'Content-Type':'application/json'},body:JSON.stringify({title:t,body:b,device_key:k,ext_params:{group:t}})},(e,r,d)=>r&&r.status==200?n(1):n(d||e))});if(s===1){console.log('✅Push success!');break}else{console.log(`❌Push failed! >> ${s.message||s}`)}}} +async function BarkNotify(c, k, t, b, p) { for (let i = 0; i < 3; i++) { console.log(`🔷Bark notify >> Start push (${i + 1})`); const s = await new Promise((n) => { c.post({ url: p || 'https://api.day.app/push', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title: t, body: b, device_key: k, ext_params: { group: t } }) }, (e, r, d) => r && r.status == 200 ? n(1) : n(d || e)) }); if (s === 1) { console.log('✅Push success!'); break } else { console.log(`❌Push failed! >> ${s.message || s}`) } } } function nobyda() { const times = 0 @@ -454,7 +452,7 @@ function nobyda() { url: options } options["header"] = options["headers"] - options["handler"] = function(resp) { + options["handler"] = function (resp) { let error = resp.error; if (error) error = JSON.stringify(resp.error) let body = resp.data; @@ -490,7 +488,7 @@ function nobyda() { url: options } options["header"] = options["headers"] - options["handler"] = function(resp) { + options["handler"] = function (resp) { let error = resp.error; if (error) error = JSON.stringify(resp.error) let body = resp.data; @@ -542,9 +540,9 @@ function k(e, t) { } // Modified from https://github.com/blueimp/JavaScript-MD5 -function md5(string){function RotateLeft(lValue,iShiftBits){return(lValue<>>(32-iShiftBits))}function AddUnsigned(lX,lY){var lX4,lY4,lX8,lY8,lResult;lX8=(lX&0x80000000);lY8=(lY&0x80000000);lX4=(lX&0x40000000);lY4=(lY&0x40000000);lResult=(lX&0x3FFFFFFF)+(lY&0x3FFFFFFF);if(lX4&lY4){return(lResult^0x80000000^lX8^lY8)}if(lX4|lY4){if(lResult&0x40000000){return(lResult^0xC0000000^lX8^lY8)}else{return(lResult^0x40000000^lX8^lY8)}}else{return(lResult^lX8^lY8)}}function F(x,y,z){return(x&y)|((~x)&z)}function G(x,y,z){return(x&z)|(y&(~z))}function H(x,y,z){return(x^y^z)}function I(x,y,z){return(y^(x|(~z)))}function FF(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(F(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b)};function GG(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(G(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b)};function HH(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(H(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b)};function II(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(I(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b)};function ConvertToWordArray(string){var lWordCount;var lMessageLength=string.length;var lNumberOfWords_temp1=lMessageLength+8;var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1%64))/64;var lNumberOfWords=(lNumberOfWords_temp2+1)*16;var lWordArray=Array(lNumberOfWords-1);var lBytePosition=0;var lByteCount=0;while(lByteCount>>29;return lWordArray};function WordToHex(lValue){var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;for(lCount=0;lCount<=3;lCount++){lByte=(lValue>>>(lCount*8))&255;WordToHexValue_temp="0"+lByte.toString(16);WordToHexValue=WordToHexValue+WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2)}return WordToHexValue};function Utf8Encode(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128)}else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128)}}return utftext};var x=Array();var k,AA,BB,CC,DD,a,b,c,d;var S11=7,S12=12,S13=17,S14=22;var S21=5,S22=9,S23=14,S24=20;var S31=4,S32=11,S33=16,S34=23;var S41=6,S42=10,S43=15,S44=21;string=Utf8Encode(string);x=ConvertToWordArray(string);a=0x67452301;b=0xEFCDAB89;c=0x98BADCFE;d=0x10325476;for(k=0;k>> (32 - iShiftBits)) } function AddUnsigned(lX, lY) { var lX4, lY4, lX8, lY8, lResult; lX8 = (lX & 0x80000000); lY8 = (lY & 0x80000000); lX4 = (lX & 0x40000000); lY4 = (lY & 0x40000000); lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF); if (lX4 & lY4) { return (lResult ^ 0x80000000 ^ lX8 ^ lY8) } if (lX4 | lY4) { if (lResult & 0x40000000) { return (lResult ^ 0xC0000000 ^ lX8 ^ lY8) } else { return (lResult ^ 0x40000000 ^ lX8 ^ lY8) } } else { return (lResult ^ lX8 ^ lY8) } } function F(x, y, z) { return (x & y) | ((~x) & z) } function G(x, y, z) { return (x & z) | (y & (~z)) } function H(x, y, z) { return (x ^ y ^ z) } function I(x, y, z) { return (y ^ (x | (~z))) } function FF(a, b, c, d, x, s, ac) { a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b) }; function GG(a, b, c, d, x, s, ac) { a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b) }; function HH(a, b, c, d, x, s, ac) { a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b) }; function II(a, b, c, d, x, s, ac) { a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b) }; function ConvertToWordArray(string) { var lWordCount; var lMessageLength = string.length; var lNumberOfWords_temp1 = lMessageLength + 8; var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64; var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16; var lWordArray = Array(lNumberOfWords - 1); var lBytePosition = 0; var lByteCount = 0; while (lByteCount < lMessageLength) { lWordCount = (lByteCount - (lByteCount % 4)) / 4; lBytePosition = (lByteCount % 4) * 8; lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition)); lByteCount++ } lWordCount = (lByteCount - (lByteCount % 4)) / 4; lBytePosition = (lByteCount % 4) * 8; lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition); lWordArray[lNumberOfWords - 2] = lMessageLength << 3; lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29; return lWordArray }; function WordToHex(lValue) { var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount; for (lCount = 0; lCount <= 3; lCount++) { lByte = (lValue >>> (lCount * 8)) & 255; WordToHexValue_temp = "0" + lByte.toString(16); WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2) } return WordToHexValue }; function Utf8Encode(string) { string = string.replace(/\r\n/g, "\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c) } else if ((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128) } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128) } } return utftext }; var x = Array(); var k, AA, BB, CC, DD, a, b, c, d; var S11 = 7, S12 = 12, S13 = 17, S14 = 22; var S21 = 5, S22 = 9, S23 = 14, S24 = 20; var S31 = 4, S32 = 11, S33 = 16, S34 = 23; var S41 = 6, S42 = 10, S43 = 15, S44 = 21; string = Utf8Encode(string); x = ConvertToWordArray(string); a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; for (k = 0; k < x.length; k += 16) { AA = a; BB = b; CC = c; DD = d; a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478); d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756); c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB); b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE); a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF); d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A); c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613); b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501); a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8); d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF); c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1); b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE); a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122); d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193); c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E); b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821); a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562); d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340); c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51); b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA); a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D); d = GG(d, a, b, c, x[k + 10], S22, 0x2441453); c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681); b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8); a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6); d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6); c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87); b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED); a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905); d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8); c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9); b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A); a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942); d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681); c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122); b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C); a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44); d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9); c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60); b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70); a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6); d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA); c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085); b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05); a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039); d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5); c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8); b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665); a = II(a, b, c, d, x[k + 0], S41, 0xF4292244); d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97); c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7); b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039); a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3); d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92); c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D); b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1); a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F); d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0); c = II(c, d, a, b, x[k + 6], S43, 0xA3014314); b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1); a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82); d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235); c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB); b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391); a = AddUnsigned(a, AA); b = AddUnsigned(b, BB); c = AddUnsigned(c, CC); d = AddUnsigned(d, DD) } var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d); return temp.toLowerCase() } -function w(){ +function w() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {} , t = []; return Object.keys(e).forEach((function (a) {