脚本卡密

您所在的位置:网站首页 安卓软件破解卡密 脚本卡密

脚本卡密

#脚本卡密| 来源: 网络整理| 查看: 265

之前给大家分享过如何对接泡椒云给自己的脚本增加卡密验证功能,可以看之前分享的文章《如何对接泡椒云,给你的Auto.js脚本增加卡密验证功能?详细教程》。

今天站长给大家分享另一个给脚本增加卡密验证功能的平台对接:权朗网络验证对接。对接增加卡密的好处我就不多说了,可以给脚本添加:天卡、周卡、月卡、季卡、年卡等更好的销售。废话不多说,直接进入今天的主题:

1、如果你还没注册权朗网络验证平台,你需要注册一个备用:http://zwk365.com/625t4aGW6b8yFrvs

2、在写脚本前,先准备好DeveloperID、ApiPassword、SoftwareName这三个参数的值,后面脚本中要用到。

(1)获取你自己的DeveloperID,就在你的头像下面那串数字,如图。如何给脚本增加卡密验证功能

(2)然后在左侧菜单栏找到【设置】,点进去,右上角的【接口安全密码】就是ApiPassword,如图。如何给脚本增加卡密验证功能

(3)然后在左侧菜单里找到【软件】,点进去,创建一个软件,软件名称随便取一个,记下来就行了,这里的软件名就是SoftwareName,如图。如何给脚本增加卡密验证功能

(4)CDK的值就是从你脚本ui控件中输入获取的,是脚本使用者输入的卡密。

2、在你的脚本代码里面集成如下代码:

//本地存储空间 对象 var LocalStorage = storages.create("QQ_3093074221"); //--------------------作者/软件信息------------------------ //开发者ID (后台 左上角头像下方的ID) var DeveloperID = ""; //API 密码 (后台 设置中的 接口安全密码) var ApiPassword = ""; //软件名称 var SoftwareName = ""; //卡密 var CDK = ""; //-------------------------------------------- //------------------------测试-------------------- /** * 测试 测试 测试 测试 测试 测试 */ threads.start(function() { CDKLogin(); }); //-------------------------------------------- /** * CDK登陆 */ function CDKLogin() { //退出上一次的Needle var logoutResult = LogoutNeedle(); console.log(logoutResult[1]); var loginResult = SendQLRequest( "apiv3/card_login", "card=" + CDK + "&software=" + SoftwareName ); if (loginResult[0]) { var successData = loginResult[1]; var endTime = successData["endtime"]; var lessTime = successData["less_time"]; var needle = successData["needle"]; PutSt("oldNeedle", needle); //存储本次 的Needle console.log(needle + "登陆成功"); threads.start(function() { SendHeartbeat(needle); }); } else { var failResult = loginResult[1]; console.warn("CDKLogin FailMsg:" + failResult); console.warn("所有线程已经停止!"); threads.shutDownAll(); //停止所有线程 } } /** * 退出上一次的Needle */ function LogoutNeedle() { var oldNeedle = GetSt("oldNeedle", ""); if (oldNeedle != "") { var logoutResult = SendQLRequest( "apiv3/card_logout", "card=" + CDK + "&needle=" + oldNeedle ); if (logoutResult[0]) { return [true, oldNeedle + " 退出成功!"]; } else { return [false, oldNeedle & " 退出失败!"]; } } else { return [true, "上次无存储的Needle"]; } } /** * 卡密心跳 * @param {string} cdkNeedle */ function SendHeartbeat(cdkNeedle) { do { var heartbeatResult = SendQLRequest( "apiv3/card_ping", "card=" + CDK + "&software=" + SoftwareName + "&needle=" + cdkNeedle ); if (heartbeatResult[0]) { var successData = heartbeatResult[1]; var endTime = successData["endtime"]; var lessTime = successData["less_time"]; console.warn("心跳正常. 剩余时间:" + lessTime); sleep(5 * 60 * 1000); //休息5分钟 } else { var failResult = heartbeatResult[1]; console.warn("Heartbeat FailMsg:" + failResult); console.warn("所有线程已经停止!"); threads.shutDownAll(); //停止所有线程 } } while (true); } /** * 访问权朗api * @param {string}} api * @param {string} apiParams */ function SendQLRequest(api, apiParams) { var qlHostArray = [ "https://napi.2cccc.cc/", "https://api2.2cccc.cc/", "https://api3.2cccc.cc/" ]; var connectTimes = 0; var taoBaoTimeStamp = ""; do { connectTimes = connectTimes + 1; taoBaoTimeStamp = http .get("http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp") .body.string(); if (connectTimes > 10) { console.log("淘宝时间戳超时"); return [false, "连接淘宝时间戳服务器失败"]; } } while (taoBaoTimeStamp.substring(2, 5) != "api"); taoBaoTimeStamp = JSON.parse(taoBaoTimeStamp); var timeStamp = taoBaoTimeStamp["data"]["t"].substring(0, 10); var sign = HexMd5(ApiPassword + "" + timeStamp); var common_params = "center_id=" + DeveloperID + "×tamp=" + timeStamp + "&sign=" + sign; connectTimes = 0; var qlResult = ""; do { connectTimes = connectTimes + 1; qlResult = http .get( qlHostArray[Math.floor(Math.random() * (3 - 0) + 0)] + api + "?" + common_params + "&" + apiParams ) .body.string(); if (connectTimes > 10) { return [false, "权朗回执超时"]; } } while (qlResult.substring(2, 6) != "code"); qlResult = JSON.parse(qlResult); if (qlResult["code"] == "1") { if ( HexMd5(qlResult["timestamp"] + ApiPassword).toUpperCase() == qlResult["sign"].toUpperCase() && Math.abs(timeStamp - qlResult["timestamp"]) < 700 ) { return [true, qlResult["data"]]; } else { return [false, "请检查API密码是否填写正确"]; } } else { return [false, qlResult["msg"]]; } } //--------Helper--------- /** * 判断是否 不是 空 * @param {any}} content 内容 */ function IsNotNullOrEmpty(content) { return ( content != null && content != undefined && content != "" && content != " " && content != " " ); } /** * 存储空间 存入 键值数据 * @param {string} key 键名 * @param {any} value 值 */ function PutSt(key, value) { // cw(key + " : " + value); if (IsNotNullOrEmpty(value)) { LocalStorage.put(key, value); } else { //cw("key:" + key + "----> value为空,跳过保存"); } } /** * 获取 存储控件中的 数据 * @param {string} key 键名 * @param {any} defaultValue 默认值 */ function GetSt(key, defaultValue) { var data = LocalStorage.get(key); // cw(key + " : " + data); if (IsNotNullOrEmpty(data)) { return data; } else { if (defaultValue == undefined) { defaultValue = ""; } //cw(key + " : 返回默认值->>" + defaultValue); return defaultValue; } } //------------------------------------- //-------MD5--------------------- //(autojs 调用java 的MD5方法有bug, 生成出来的是错误的结果.所以用 下面的js md5) /** * 16进制MD5(常用) * @param {any} s */ function HexMd5(s) { return binl2hex(core_md5(str2binl(s), s.length * chrsz)); } function B64Md5(s) { return binl2str(core_md5(str2binl(s), s.length * chrsz)); } function StrMd5(key, data) { return binl2hex(core_hmac_md5(key, data)); } function HexHmacMd5(key, data) { return binl2hex(core_hmac_md5(key, data)); } function B64HmacMd5(key, data) { return binl2b64(core_hmac_md5(key, data)); } function StrHmacMd5(key, data) { return binl2str(core_hmac_md5(key, data)); } var hexcase = 0; var b64pad = ""; var chrsz = 8; function md5_vm_test() { return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; } function core_md5(x, len) { x[len >> 5] |= 0x80 >> 9) 16) bkey = core_md5(bkey, key.length * chrsz); var ipad = Array(16), opad = Array(16); for (var i = 0; i < 16; i++) { ipad[i] = bkey[i] ^ 0x36363636; opad[i] = bkey[i] ^ 0x5c5c5c5c; } var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz); return core_md5(opad.concat(hash), 512 + 128); } function safe_add(x, y) { var lsw = (x & 0xffff) + (y & 0xffff); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw > (32 - cnt)); } function str2binl(str) { var bin = Array(); var mask = (1 > 5] |= (str.charCodeAt(i / chrsz) & mask) 5] >>> i % 32) & mask); return str; } function binl2hex(binarray) { var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; var str = ""; for (var i = 0; i < binarray.length * 4; i++) { str += hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 0xf) + hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 0xf); } return str; } function binl2b64(binarray) { var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var str = ""; for (var i = 0; i < binarray.length * 4; i += 3) { var triplet = (((binarray[i >> 2] >> (8 * (i % 4))) & 0xff) > 2] >> (8 * ((i + 1) % 4))) & 0xff) > 2] >> (8 * ((i + 2) % 4))) & 0xff); for (var j = 0; j < 4; j++) { if (i * 8 + j * 6 > binarray.length * 32) str += b64pad; else str += tab.charAt((triplet >> (6 * (3 - j))) & 0x3f); } } return str; }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3