• 54955阅读
  • 51回复

最终解析磁力方法。 [复制链接]

上一主题 下一主题
离线xushen
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2015-07-27
我们知道

磁力是这样的
magnet:?xt=urn:btih:94EF7E99BE4C42A8CE8C293826850C5F754C2365&xl=2357506850&dn=%E7%94%B5%E9%94%AF%E6%83%8A%E9%AD%827.%E4%B8%AD%E8%8B%B1%E5%AD%97%E5%B9%95%EF%BF%A1%E5%9C%A3%E5%9F%8E%E6%89%93%E4%BD%9B


其实我们要的只是94EF7E99BE4C42A8CE8C293826850C5F754C2365罢了后面那些参数是给下载软件使用的(可以获取到文件名(下载参数)啦),但是我们要的就是那40位hash.


现在支持解析的磁力方法并不多。有QQ旋风、还有迅雷(现在的迅雷,呵呵嗒),QQ旋风还是很不错的。一些热门的资源都有。

本文章就以QQ旋风为列说说吧

可以有的开发者会使用PHP就行QQ旋风的操作。因为PHP操作的旋风使用的IP是固定的。不论使用者在山东也好江苏也好。还是西藏也好。都是一个IP。

但是如果使用易语言或者其它开发语言去写。直接使用易语言登录不但不安全(可能会被抓包,导致QQ被盗(图什么呢?))还会出现验证码等等一系列杂七乱八的东西。因为你登陆的IP不是固定的一会是山东一会是新疆的。而且还有可能"占线"。反正怎么说就是不安全。建议使用PHP。

关于PHP网上教程甚多。就不怎么详细说了。我也是New hand(新手)



其实我们要首先要登录腾讯的QQ旋风服务器 我这里演示就不使用PHP了。使用易语言本身登录吧。

PS:易语言登录坑爹 要JS代码还有一系列杂七乱八的东西 反正不好玩
编辑框1=帐号 编辑框2=密码 编辑框3=验证码
首先获取pt_verifysession_v1

  1. .版本 2
  2. .子程序 Get_pt_verifysession_v1
  3. .局部变量 cookies_, 文本型
  4. .局部变量 state, 文本型
  5. .局部变量 json, 类_json
  6. state = 到文本 (网页_访问 (“http://check.ptlogin2.qq.com/check?regmaster=&pt_tea=1&pt_vcode=1&uin=” + 编辑框1.内容 + “&appid=715030901&js_ver=10127&js_type=1&login_sig=jJBceXvWs2HK1OnKnIQSAThPRVoPMbqvxi00NIWRVDsOpJWC53kYB79RbKr3Wo29&u1=http://qun.qq.com/index.html#&r=” + 时间_取随机时间戳 (), , , , cookies_, , ))
  7. Ver_Code = 文本_取出中间文本 (state, “,'”, “','\”)
  8. 编辑框3.内容 = Ver_Code
  9. pt_verifysession_v1 = 文本_取出中间文本 (文本_取出中间文本 (state, “\”, “,'0');”), “','”, “'”)
cookies__sig

  1. .版本 2
  2. .子程序 Get_cookies__sig
  3. 网页_访问 (“http://ui.ptlogin2.qq.com/cgi-bin/login?appid=715030901&daid=73&pt_no_auth=1&s_url=http%3A%2F%2Fqun.qq.com%2Findex.html%23”, , , , cookies__sig, )
  4. cookies__sig = 文本_取出中间文本 (cookies__sig, “_sig=”, “; pt_clie”)
还要计算一个G_tk
  1. .版本 2
  2. .子程序 计算G_tk, 文本型
  3. .参数 skey, 文本型
  4. .局部变量 hash, 整数型
  5. .局部变量 计次, 整数型
  6. hash = 5381
  7. .变量循环首 (1, 取文本长度 (skey), 1, 计次)
  8.     hash = hash + hash × 求次方 (2, 5) + 取字节集数据 (ANSI转UNICODE (取文本中间 (skey, 计次, 1)), 3, )
  9. .变量循环尾 ()
  10. 返回 (到文本 (位与 (hash, 十六到十 (“7fffffff”))))

JS代码为

  1. var window=window|| {};
  2. RSA = function () {
  3.     function g(z, t) {
  4.         return new ar(z, t);
  5.     }
  6.     function ah(aA, aB) {
  7.         var t = "";
  8.         var z = 0;
  9.         while (z + aB < aA.length) {
  10.             t += aA.substring(z, z + aB) + "\n";
  11.             z += aB;
  12.         }
  13.         return t + aA.substring(z, aA.length);
  14.     }
  15.     function r(t) {
  16.         if (t < 16) {
  17.             return "0" + t.toString(16);
  18.         } else {
  19.             return t.toString(16);
  20.         }
  21.     }
  22.     function af(aB, aE) {
  23.         if (aE < aB.length + 11) {
  24.             uv_alert("Message too long for RSA");
  25.             return null;
  26.         }
  27.         var aD = new Array();
  28.         var aA = aB.length - 1;
  29.         while (aA >= 0 && aE > 0) {
  30.             var aC = aB.charCodeAt(aA--);
  31.             aD[--aE] = aC;
  32.         }
  33.         aD[--aE] = 0;
  34.         var z = new ad();
  35.         var t = new Array();
  36.         while (aE > 2) {
  37.             t[0] = 0;
  38.             while (t[0] == 0) {
  39.                 z.nextBytes(t);
  40.             }
  41.             aD[--aE] = t[0];
  42.         }
  43.         aD[--aE] = 2;
  44.         aD[--aE] = 0;
  45.         return new ar(aD);
  46.     }
  47.     function L() {
  48.         this.n = null;
  49.         this.e = 0;
  50.         this.d = null;
  51.         this.p = null;
  52.         this.q = null;
  53.         this.dmp1 = null;
  54.         this.dmq1 = null;
  55.         this.coeff = null;
  56.     }
  57.     function o(z, t) {
  58.         if (z != null && t != null && z.length > 0 && t.length > 0) {
  59.             this.n = g(z, 16);
  60.             this.e = parseInt(t, 16);
  61.         } else {
  62.             uv_alert("Invalid RSA public key");
  63.         }
  64.     }
  65.     function W(t) {
  66.         return t.modPowInt(this.e, this.n);
  67.     }
  68.     function p(aA) {
  69.         var t = af(aA, (this.n.bitLength() + 7) >> 3);
  70.         if (t == null) {
  71.             return null;
  72.         }
  73.         var aB = this.doPublic(t);
  74.         if (aB == null) {
  75.             return null;
  76.         }
  77.         var z = aB.toString(16);
  78.         if ((z.length & 1) == 0) {
  79.             return z;
  80.         } else {
  81.             return "0" + z;
  82.         }
  83.     }
  84.     L.prototype.doPublic = W;
  85.     L.prototype.setPublic = o;
  86.     L.prototype.encrypt = p;
  87.     var aw;
  88.     var ai = 244837814094590;
  89.     var Z = ((ai & 16777215) == 15715070);
  90.     function ar(z, t, aA) {
  91.         if (z != null) {
  92.             if ("number" == typeof z) {
  93.                 this.fromNumber(z, t, aA);
  94.             } else {
  95.                 if (t == null && "string" != typeof z) {
  96.                     this.fromString(z, 256);
  97.                 } else {
  98.                     this.fromString(z, t);
  99.                 }
  100.             }
  101.         }
  102.     }
  103.     function h() {
  104.         return new ar(null);
  105.     }
  106.     function b(aC, t, z, aB, aE, aD) {
  107.         while (--aD >= 0) {
  108.             var aA = t * this[aC++] + z[aB] + aE;
  109.             aE = Math.floor(aA / 67108864);
  110.             z[aB++] = aA & 67108863;
  111.         }
  112.         return aE;
  113.     }
  114.     function ay(aC, aH, aI, aB, aF, t) {
  115.         var aE = aH & 32767, aG = aH >> 15;
  116.         while (--t >= 0) {
  117.             var aA = this[aC] & 32767;
  118.             var aD = this[aC++] >> 15;
  119.             var z = aG * aA + aD * aE;
  120.             aA = aE * aA + ((z & 32767) << 15) + aI[aB] + (aF & 1073741823);
  121.             aF = (aA >>> 30) + (z >>> 15) + aG * aD + (aF >>> 30);
  122.             aI[aB++] = aA & 1073741823;
  123.         }
  124.         return aF;
  125.     }
  126.     function ax(aC, aH, aI, aB, aF, t) {
  127.         var aE = aH & 16383, aG = aH >> 14;
  128.         while (--t >= 0) {
  129.             var aA = this[aC] & 16383;
  130.             var aD = this[aC++] >> 14;
  131.             var z = aG * aA + aD * aE;
  132.             aA = aE * aA + ((z & 16383) << 14) + aI[aB] + aF;
  133.             aF = (aA >> 28) + (z >> 14) + aG * aD;
  134.             aI[aB++] = aA & 268435455;
  135.         }
  136.         return aF;
  137.     }
  138.             ar.prototype.am = b;
  139.             aw = 26;
  140.     ar.prototype.DB = aw;
  141.     ar.prototype.DM = ((1 << aw) - 1);
  142.     ar.prototype.DV = (1 << aw);
  143.     var aa = 52;
  144.     ar.prototype.FV = Math.pow(2, aa);
  145.     ar.prototype.F1 = aa - aw;
  146.     ar.prototype.F2 = 2 * aw - aa;
  147.     var ae = "0123456789abcdefghijklmnopqrstuvwxyz";
  148.     var ag = new Array();
  149.     var ap, v;
  150.     ap = "0".charCodeAt(0);
  151.     for (v = 0; v <= 9; ++v) {
  152.         ag[ap++] = v;
  153.     }
  154.     ap = "a".charCodeAt(0);
  155.     for (v = 10; v < 36; ++v) {
  156.         ag[ap++] = v;
  157.     }
  158.     ap = "A".charCodeAt(0);
  159.     for (v = 10; v < 36; ++v) {
  160.         ag[ap++] = v;
  161.     }
  162.     function az(t) {
  163.         return ae.charAt(t);
  164.     }
  165.     function A(z, t) {
  166.         var aA = ag[z.charCodeAt(t)];
  167.         return (aA == null) ? -1 : aA;
  168.     }
  169.     function Y(z) {
  170.         for (var t = this.t - 1; t >= 0; --t) {
  171.             z[t] = this[t];
  172.         }
  173.         z.t = this.t;
  174.         z.s = this.s;
  175.     }
  176.     function n(t) {
  177.         this.t = 1;
  178.         this.s = (t < 0) ? -1 : 0;
  179.         if (t > 0) {
  180.             this[0] = t;
  181.         } else {
  182.             if (t < -1) {
  183.                 this[0] = t + DV;
  184.             } else {
  185.                 this.t = 0;
  186.             }
  187.         }
  188.     }
  189.     function c(t) {
  190.         var z = h();
  191.         z.fromInt(t);
  192.         return z;
  193.     }
  194.     function w(aE, z) {
  195.         var aB;
  196.         if (z == 16) {
  197.             aB = 4;
  198.         } else {
  199.             if (z == 8) {
  200.                 aB = 3;
  201.             } else {
  202.                 if (z == 256) {
  203.                     aB = 8;
  204.                 } else {
  205.                     if (z == 2) {
  206.                         aB = 1;
  207.                     } else {
  208.                         if (z == 32) {
  209.                             aB = 5;
  210.                         } else {
  211.                             if (z == 4) {
  212.                                 aB = 2;
  213.                             } else {
  214.                                 this.fromRadix(aE, z);
  215.                                 return;
  216.                             }
  217.                         }
  218.                     }
  219.                 }
  220.             }
  221.         }
  222.         this.t = 0;
  223.         this.s = 0;
  224.         var aD = aE.length, aA = false, aC = 0;
  225.         while (--aD >= 0) {
  226.             var t = (aB == 8) ? aE[aD] & 255 : A(aE, aD);
  227.             if (t < 0) {
  228.                 if (aE.charAt(aD) == "-") {
  229.                     aA = true;
  230.                 }
  231.                 continue;
  232.             }
  233.             aA = false;
  234.             if (aC == 0) {
  235.                 this[this.t++] = t;
  236.             } else {
  237.                 if (aC + aB > this.DB) {
  238.                     this[this.t - 1] |= (t & ((1 << (this.DB - aC)) - 1)) << aC;
  239.                     this[this.t++] = (t >> (this.DB - aC));
  240.                 } else {
  241.                     this[this.t - 1] |= t << aC;
  242.                 }
  243.             }
  244.             aC += aB;
  245.             if (aC >= this.DB) {
  246.                 aC -= this.DB;
  247.             }
  248.         }
  249.         if (aB == 8 && (aE[0] & 128) != 0) {
  250.             this.s = -1;
  251.             if (aC > 0) {
  252.                 this[this.t - 1] |= ((1 << (this.DB - aC)) - 1) << aC;
  253.             }
  254.         }
  255.         this.clamp();
  256.         if (aA) {
  257.             ar.ZERO.subTo(this, this);
  258.         }
  259.     }
  260.     function O() {
  261.         var t = this.s & this.DM;
  262.         while (this.t > 0 && this[this.t - 1] == t) {
  263.             --this.t;
  264.         }
  265.     }
  266.     function q(z) {
  267.         if (this.s < 0) {
  268.             return "-" + this.negate().toString(z);
  269.         }
  270.         var aA;
  271.         if (z == 16) {
  272.             aA = 4;
  273.         } else {
  274.             if (z == 8) {
  275.                 aA = 3;
  276.             } else {
  277.                 if (z == 2) {
  278.                     aA = 1;
  279.                 } else {
  280.                     if (z == 32) {
  281.                         aA = 5;
  282.                     } else {
  283.                         if (z == 4) {
  284.                             aA = 2;
  285.                         } else {
  286.                             return this.toRadix(z);
  287.                         }
  288.                     }
  289.                 }
  290.             }
  291.         }
  292.         var aC = (1 << aA) - 1, aF, t = false, aD = "", aB = this.t;
  293.         var aE = this.DB - (aB * this.DB) % aA;
  294.         if (aB-- > 0) {
  295.             if (aE < this.DB && (aF = this[aB] >> aE) > 0) {
  296.                 t = true;
  297.                 aD = az(aF);
  298.             }
  299.             while (aB >= 0) {
  300.                 if (aE < aA) {
  301.                     aF = (this[aB] & ((1 << aE) - 1)) << (aA - aE);
  302.                     aF |= this[--aB] >> (aE += this.DB - aA);
  303.                 } else {
  304.                     aF = (this[aB] >> (aE -= aA)) & aC;
  305.                     if (aE <= 0) {
  306.                         aE += this.DB;
  307.                         --aB;
  308.                     }
  309.                 }
  310.                 if (aF > 0) {
  311.                     t = true;
  312.                 }
  313.                 if (t) {
  314.                     aD += az(aF);
  315.                 }
  316.             }
  317.         }
  318.         return t ? aD : "0";
  319.     }
  320.     function R() {
  321.         var t = h();
  322.         ar.ZERO.subTo(this, t);
  323.         return t;
  324.     }
  325.     function al() {
  326.         return (this.s < 0) ? this.negate() : this;
  327.     }
  328.     function G(t) {
  329.         var aA = this.s - t.s;
  330.         if (aA != 0) {
  331.             return aA;
  332.         }
  333.         var z = this.t;
  334.         aA = z - t.t;
  335.         if (aA != 0) {
  336.             return aA;
  337.         }
  338.         while (--z >= 0) {
  339.             if ((aA = this[z] - t[z]) != 0) {
  340.                 return aA;
  341.             }
  342.         }
  343.         return 0;
  344.     }
  345.     function j(z) {
  346.         var aB = 1, aA;
  347.         if ((aA = z >>> 16) != 0) {
  348.             z = aA;
  349.             aB += 16;
  350.         }
  351.         if ((aA = z >> 8) != 0) {
  352.             z = aA;
  353.             aB += 8;
  354.         }
  355.         if ((aA = z >> 4) != 0) {
  356.             z = aA;
  357.             aB += 4;
  358.         }
  359.         if ((aA = z >> 2) != 0) {
  360.             z = aA;
  361.             aB += 2;
  362.         }
  363.         if ((aA = z >> 1) != 0) {
  364.             z = aA;
  365.             aB += 1;
  366.         }
  367.         return aB;
  368.     }
  369.     function u() {
  370.         if (this.t <= 0) {
  371.             return 0;
  372.         }
  373.         return this.DB * (this.t - 1) + j(this[this.t - 1] ^ (this.s & this.DM));
  374.     }
  375.     function aq(aA, z) {
  376.         var t;
  377.         for (t = this.t - 1; t >= 0; --t) {
  378.             z[t + aA] = this[t];
  379.         }
  380.         for (t = aA - 1; t >= 0; --t) {
  381.             z[t] = 0;
  382.         }
  383.         z.t = this.t + aA;
  384.         z.s = this.s;
  385.     }
  386.     function X(aA, z) {
  387.         for (var t = aA; t < this.t; ++t) {
  388.             z[t - aA] = this[t];
  389.         }
  390.         z.t = Math.max(this.t - aA, 0);
  391.         z.s = this.s;
  392.     }
  393.     function s(aF, aB) {
  394.         var z = aF % this.DB;
  395.         var t = this.DB - z;
  396.         var aD = (1 << t) - 1;
  397.         var aC = Math.floor(aF / this.DB), aE = (this.s << z) & this.DM, aA;
  398.         for (aA = this.t - 1; aA >= 0; --aA) {
  399.             aB[aA + aC + 1] = (this[aA] >> t) | aE;
  400.             aE = (this[aA] & aD) << z;
  401.         }
  402.         for (aA = aC - 1; aA >= 0; --aA) {
  403.             aB[aA] = 0;
  404.         }
  405.         aB[aC] = aE;
  406.         aB.t = this.t + aC + 1;
  407.         aB.s = this.s;
  408.         aB.clamp();
  409.     }
  410.     function l(aE, aB) {
  411.         aB.s = this.s;
  412.         var aC = Math.floor(aE / this.DB);
  413.         if (aC >= this.t) {
  414.             aB.t = 0;
  415.             return;
  416.         }
  417.         var z = aE % this.DB;
  418.         var t = this.DB - z;
  419.         var aD = (1 << z) - 1;
  420.         aB[0] = this[aC] >> z;
  421.         for (var aA = aC + 1; aA < this.t; ++aA) {
  422.             aB[aA - aC - 1] |= (this[aA] & aD) << t;
  423.             aB[aA - aC] = this[aA] >> z;
  424.         }
  425.         if (z > 0) {
  426.             aB[this.t - aC - 1] |= (this.s & aD) << t;
  427.         }
  428.         aB.t = this.t - aC;
  429.         aB.clamp();
  430.     }
  431.     function ab(z, aB) {
  432.         var aA = 0, aC = 0, t = Math.min(z.t, this.t);
  433.         while (aA < t) {
  434.             aC += this[aA] - z[aA];
  435.             aB[aA++] = aC & this.DM;
  436.             aC >>= this.DB;
  437.         }
  438.         if (z.t < this.t) {
  439.             aC -= z.s;
  440.             while (aA < this.t) {
  441.                 aC += this[aA];
  442.                 aB[aA++] = aC & this.DM;
  443.                 aC >>= this.DB;
  444.             }
  445.             aC += this.s;
  446.         } else {
  447.             aC += this.s;
  448.             while (aA < z.t) {
  449.                 aC -= z[aA];
  450.                 aB[aA++] = aC & this.DM;
  451.                 aC >>= this.DB;
  452.             }
  453.             aC -= z.s;
  454.         }
  455.         aB.s = (aC < 0) ? -1 : 0;
  456.         if (aC < -1) {
  457.             aB[aA++] = this.DV + aC;
  458.         } else {
  459.             if (aC > 0) {
  460.                 aB[aA++] = aC;
  461.             }
  462.         }
  463.         aB.t = aA;
  464.         aB.clamp();
  465.     }
  466.     function D(z, aB) {
  467.         var t = this.abs(), aC = z.abs();
  468.         var aA = t.t;
  469.         aB.t = aA + aC.t;
  470.         while (--aA >= 0) {
  471.             aB[aA] = 0;
  472.         }
  473.         for (aA = 0; aA < aC.t; ++aA) {
  474.             aB[aA + t.t] = t.am(0, aC[aA], aB, aA, 0, t.t);
  475.         }
  476.         aB.s = 0;
  477.         aB.clamp();
  478.         if (this.s != z.s) {
  479.             ar.ZERO.subTo(aB, aB);
  480.         }
  481.     }
  482.     function Q(aA) {
  483.         var t = this.abs();
  484.         var z = aA.t = 2 * t.t;
  485.         while (--z >= 0) {
  486.             aA[z] = 0;
  487.         }
  488.         for (z = 0; z < t.t - 1; ++z) {
  489.             var aB = t.am(z, t[z], aA, 2 * z, 0, 1);
  490.             if ((aA[z + t.t] += t.am(z + 1, 2 * t[z], aA, 2 * z + 1, aB, t.t - z - 1)) >= t.DV) {
  491.                 aA[z + t.t] -= t.DV;
  492.                 aA[z + t.t + 1] = 1;
  493.             }
  494.         }
  495.         if (aA.t > 0) {
  496.             aA[aA.t - 1] += t.am(z, t[z], aA, 2 * z, 0, 1);
  497.         }
  498.         aA.s = 0;
  499.         aA.clamp();
  500.     }
  501.     function E(aI, aF, aE) {
  502.         var aO = aI.abs();
  503.         if (aO.t <= 0) {
  504.             return;
  505.         }
  506.         var aG = this.abs();
  507.         if (aG.t < aO.t) {
  508.             if (aF != null) {
  509.                 aF.fromInt(0);
  510.             }
  511.             if (aE != null) {
  512.                 this.copyTo(aE);
  513.             }
  514.             return;
  515.         }
  516.         if (aE == null) {
  517.             aE = h();
  518.         }
  519.         var aC = h(), z = this.s, aH = aI.s;
  520.         var aN = this.DB - j(aO[aO.t - 1]);
  521.         if (aN > 0) {
  522.             aO.lShiftTo(aN, aC);
  523.             aG.lShiftTo(aN, aE);
  524.         } else {
  525.             aO.copyTo(aC);
  526.             aG.copyTo(aE);
  527.         }
  528.         var aK = aC.t;
  529.         var aA = aC[aK - 1];
  530.         if (aA == 0) {
  531.             return;
  532.         }
  533.         var aJ = aA * (1 << this.F1) + ((aK > 1) ? aC[aK - 2] >> this.F2 : 0);
  534.         var aR = this.FV / aJ, aQ = (1 << this.F1) / aJ, aP = 1 << this.F2;
  535.         var aM = aE.t, aL = aM - aK, aD = (aF == null) ? h() : aF;
  536.         aC.dlShiftTo(aL, aD);
  537.         if (aE.compareTo(aD) >= 0) {
  538.             aE[aE.t++] = 1;
  539.             aE.subTo(aD, aE);
  540.         }
  541.         ar.ONE.dlShiftTo(aK, aD);
  542.         aD.subTo(aC, aC);
  543.         while (aC.t < aK) {
  544.             aC[aC.t++] = 0;
  545.         }
  546.         while (--aL >= 0) {
  547.             var aB = (aE[--aM] == aA) ? this.DM : Math.floor(aE[aM] * aR + (aE[aM - 1] + aP) * aQ);
  548.             if ((aE[aM] += aC.am(0, aB, aE, aL, 0, aK)) < aB) {
  549.                 aC.dlShiftTo(aL, aD);
  550.                 aE.subTo(aD, aE);
  551.                 while (aE[aM] < --aB) {
  552.                     aE.subTo(aD, aE);
  553.                 }
  554.             }
  555.         }
  556.         if (aF != null) {
  557.             aE.drShiftTo(aK, aF);
  558.             if (z != aH) {
  559.                 ar.ZERO.subTo(aF, aF);
  560.             }
  561.         }
  562.         aE.t = aK;
  563.         aE.clamp();
  564.         if (aN > 0) {
  565.             aE.rShiftTo(aN, aE);
  566.         }
  567.         if (z < 0) {
  568.             ar.ZERO.subTo(aE, aE);
  569.         }
  570.     }
  571.     function N(t) {
  572.         var z = h();
  573.         this.abs().divRemTo(t, null, z);
  574.         if (this.s < 0 && z.compareTo(ar.ZERO) > 0) {
  575.             t.subTo(z, z);
  576.         }
  577.         return z;
  578.     }
  579.     function K(t) {
  580.         this.m = t;
  581.     }
  582.     function V(t) {
  583.         if (t.s < 0 || t.compareTo(this.m) >= 0) {
  584.             return t.mod(this.m);
  585.         } else {
  586.             return t;
  587.         }
  588.     }
  589.     function ak(t) {
  590.         return t;
  591.     }
  592.     function J(t) {
  593.         t.divRemTo(this.m, null, t);
  594.     }
  595.     function H(t, aA, z) {
  596.         t.multiplyTo(aA, z);
  597.         this.reduce(z);
  598.     }
  599.     function au(t, z) {
  600.         t.squareTo(z);
  601.         this.reduce(z);
  602.     }
  603.     K.prototype.convert = V;
  604.     K.prototype.revert = ak;
  605.     K.prototype.reduce = J;
  606.     K.prototype.mulTo = H;
  607.     K.prototype.sqrTo = au;
  608.     function B() {
  609.         if (this.t < 1) {
  610.             return 0;
  611.         }
  612.         var t = this[0];
  613.         if ((t & 1) == 0) {
  614.             return 0;
  615.         }
  616.         var z = t & 3;
  617.         z = (z * (2 - (t & 15) * z)) & 15;
  618.         z = (z * (2 - (t & 255) * z)) & 255;
  619.         z = (z * (2 - (((t & 65535) * z) & 65535))) & 65535;
  620.         z = (z * (2 - t * z % this.DV)) % this.DV;
  621.         return (z > 0) ? this.DV - z : -z;
  622.     }
  623.     function f(t) {
  624.         this.m = t;
  625.         this.mp = t.invDigit();
  626.         this.mpl = this.mp & 32767;
  627.         this.mph = this.mp >> 15;
  628.         this.um = (1 << (t.DB - 15)) - 1;
  629.         this.mt2 = 2 * t.t;
  630.     }
  631.     function aj(t) {
  632.         var z = h();
  633.         t.abs().dlShiftTo(this.m.t, z);
  634.         z.divRemTo(this.m, null, z);
  635.         if (t.s < 0 && z.compareTo(ar.ZERO) > 0) {
  636.             this.m.subTo(z, z);
  637.         }
  638.         return z;
  639.     }
  640.     function at(t) {
  641.         var z = h();
  642.         t.copyTo(z);
  643.         this.reduce(z);
  644.         return z;
  645.     }
  646.     function P(t) {
  647.         while (t.t <= this.mt2) {
  648.             t[t.t++] = 0;
  649.         }
  650.         for (var aA = 0; aA < this.m.t; ++aA) {
  651.             var z = t[aA] & 32767;
  652.             var aB = (z * this.mpl + (((z * this.mph + (t[aA] >> 15) * this.mpl) & this.um) << 15)) & t.DM;
  653.             z = aA + this.m.t;
  654.             t[z] += this.m.am(0, aB, t, aA, 0, this.m.t);
  655.             while (t[z] >= t.DV) {
  656.                 t[z] -= t.DV;
  657.                 t[++z]++;
  658.             }
  659.         }
  660.         t.clamp();
  661.         t.drShiftTo(this.m.t, t);
  662.         if (t.compareTo(this.m) >= 0) {
  663.             t.subTo(this.m, t);
  664.         }
  665.     }
  666.     function am(t, z) {
  667.         t.squareTo(z);
  668.         this.reduce(z);
  669.     }
  670.     function y(t, aA, z) {
  671.         t.multiplyTo(aA, z);
  672.         this.reduce(z);
  673.     }
  674.     f.prototype.convert = aj;
  675.     f.prototype.revert = at;
  676.     f.prototype.reduce = P;
  677.     f.prototype.mulTo = y;
  678.     f.prototype.sqrTo = am;
  679.     function i() {
  680.         return ((this.t > 0) ? (this[0] & 1) : this.s) == 0;
  681.     }
  682.     function x(aF, aG) {
  683.         if (aF > 4294967295 || aF < 1) {
  684.             return ar.ONE;
  685.         }
  686.         var aE = h(), aA = h(), aD = aG.convert(this), aC = j(aF) - 1;
  687.         aD.copyTo(aE);
  688.         while (--aC >= 0) {
  689.             aG.sqrTo(aE, aA);
  690.             if ((aF & (1 << aC)) > 0) {
  691.                 aG.mulTo(aA, aD, aE);
  692.             } else {
  693.                 var aB = aE;
  694.                 aE = aA;
  695.                 aA = aB;
  696.             }
  697.         }
  698.         return aG.revert(aE);
  699.     }
  700.     function an(aA, t) {
  701.         var aB;
  702.         if (aA < 256 || t.isEven()) {
  703.             aB = new K(t);
  704.         } else {
  705.             aB = new f(t);
  706.         }
  707.         return this.exp(aA, aB);
  708.     }
  709.     ar.prototype.copyTo = Y;
  710.     ar.prototype.fromInt = n;
  711.     ar.prototype.fromString = w;
  712.     ar.prototype.clamp = O;
  713.     ar.prototype.dlShiftTo = aq;
  714.     ar.prototype.drShiftTo = X;
  715.     ar.prototype.lShiftTo = s;
  716.     ar.prototype.rShiftTo = l;
  717.     ar.prototype.subTo = ab;
  718.     ar.prototype.multiplyTo = D;
  719.     ar.prototype.squareTo = Q;
  720.     ar.prototype.divRemTo = E;
  721.     ar.prototype.invDigit = B;
  722.     ar.prototype.isEven = i;
  723.     ar.prototype.exp = x;
  724.     ar.prototype.toString = q;
  725.     ar.prototype.negate = R;
  726.     ar.prototype.abs = al;
  727.     ar.prototype.compareTo = G;
  728.     ar.prototype.bitLength = u;
  729.     ar.prototype.mod = N;
  730.     ar.prototype.modPowInt = an;
  731.     ar.ZERO = c(0);
  732.     ar.ONE = c(1);
  733.     var m;
  734.     var U;
  735.     var ac;
  736.     function d(t) {
  737.         U[ac++] ^= t & 255;
  738.         U[ac++] ^= (t >> 8) & 255;
  739.         U[ac++] ^= (t >> 16) & 255;
  740.         U[ac++] ^= (t >> 24) & 255;
  741.         if (ac >= M) {
  742.             ac -= M;
  743.         }
  744.     }
  745.     function T() {
  746.         d(new Date().getTime());
  747.     }
  748.     if (U == null) {
  749.         U = new Array();
  750.         ac = 0;
  751.         var I;
  752.             I = Math.floor(65536 * Math.random());
  753.             U[ac++] = I >>> 8;
  754.             U[ac++] = I & 255;
  755.     }
  756.     function C() {
  757.         if (m == null) {
  758.             T();
  759.             m = ao();
  760.             m.init(U);
  761.             for (ac = 0; ac < U.length; ++ac) {
  762.                 U[ac] = 0;
  763.             }
  764.             ac = 0;
  765.         }
  766.         return m.next();
  767.     }
  768.     function av(z) {
  769.         var t;
  770.         for (t = 0; t < z.length; ++t) {
  771.             z[t] = C();
  772.         }
  773.     }
  774.     function ad() {
  775.     }
  776.     ad.prototype.nextBytes = av;
  777.     function k() {
  778.         this.i = 0;
  779.         this.j = 0;
  780.         this.S = new Array();
  781.     }
  782.     function e(aC) {
  783.         var aB, z, aA;
  784.         for (aB = 0; aB < 256; ++aB) {
  785.             this.S[aB] = aB;
  786.         }
  787.         z = 0;
  788.         for (aB = 0; aB < 256; ++aB) {
  789.             z = (z + this.S[aB] + aC[aB % aC.length]) & 255;
  790.             aA = this.S[aB];
  791.             this.S[aB] = this.S[z];
  792.             this.S[z] = aA;
  793.         }
  794.         this.i = 0;
  795.         this.j = 0;
  796.     }
  797.     function a() {
  798.         var z;
  799.         this.i = (this.i + 1) & 255;
  800.         this.j = (this.j + this.S[this.i]) & 255;
  801.         z = this.S[this.i];
  802.         this.S[this.i] = this.S[this.j];
  803.         this.S[this.j] = z;
  804.         return this.S[(z + this.S[this.i]) & 255];
  805.     }
  806.     k.prototype.init = e;
  807.     k.prototype.next = a;
  808.     function ao() {
  809.         return new k();
  810.     }
  811.     var M = 256;
  812.     function S(aB, aA, z) {
  813.         aA = "F20CE00BAE5361F8FA3AE9CEFA495362FF7DA1BA628F64A347F0A8C012BF0B254A30CD92ABFFE7A6EE0DC424CB6166F8819EFA5BCCB20EDFB4AD02E412CCF579B1CA711D55B8B0B3AEB60153D5E0693A2A86F3167D7847A0CB8B00004716A9095D9BADC977CBB804DBDCBA6029A9710869A453F27DFDDF83C016D928B3CBF4C7";
  814.         z = "3";
  815.         var t = new L();
  816.         t.setPublic(aA, z);
  817.         return t.encrypt(aB);
  818.     }
  819.     return { rsa_encrypt: S };
  820. }();
  821. (function (q) {
  822.     var r = "", a = 0, g = [], w = [], x = 0, t = 0, l = [], s = [], m = true;
  823.     function e() {
  824.         return Math.round(Math.random() * 4294967295);
  825.     }
  826.     function i(B, C, y) {
  827.         if (!y || y > 4) {
  828.             y = 4;
  829.         }
  830.         var z = 0;
  831.         for (var A = C; A < C + y; A++) {
  832.             z <<= 8;
  833.             z |= B[A];
  834.         }
  835.         return (z & 4294967295) >>> 0;
  836.     }
  837.     function b(z, A, y) {
  838.         z[A + 3] = (y >> 0) & 255;
  839.         z[A + 2] = (y >> 8) & 255;
  840.         z[A + 1] = (y >> 16) & 255;
  841.         z[A + 0] = (y >> 24) & 255;
  842.     }
  843.     function v(B) {
  844.         if (!B) {
  845.             return "";
  846.         }
  847.         var y = "";
  848.         for (var z = 0; z < B.length; z++) {
  849.             var A = Number(B[z]).toString(16);
  850.             if (A.length == 1) {
  851.                 A = "0" + A;
  852.             }
  853.             y += A;
  854.         }
  855.         return y;
  856.     }
  857.     function u(z) {
  858.         var A = "";
  859.         for (var y = 0; y < z.length; y += 2) {
  860.             A += String.fromCharCode(parseInt(z.substr(y, 2), 16));
  861.         }
  862.         return A;
  863.     }
  864.     function c(A) {
  865.         if (!A) {
  866.             return "";
  867.         }
  868.         var z = [];
  869.         for (var y = 0; y < A.length; y++) {
  870.             z[y] = A.charCodeAt(y);
  871.         }
  872.         return v(z);
  873.     }
  874.     function h(A) {
  875.         g = new Array(8);
  876.         w = new Array(8);
  877.         x = t = 0;
  878.         m = true;
  879.         a = 0;
  880.         var y = A.length;
  881.         var B = 0;
  882.         a = (y + 10) % 8;
  883.         if (a != 0) {
  884.             a = 8 - a;
  885.         }
  886.         l = new Array(y + a + 10);
  887.         g[0] = ((e() & 248) | a) & 255;
  888.         for (var z = 1; z <= a; z++) {
  889.             g[z] = e() & 255;
  890.         }
  891.         a++;
  892.         for (var z = 0; z < 8; z++) {
  893.             w[z] = 0;
  894.         }
  895.         B = 1;
  896.         while (B <= 2) {
  897.             if (a < 8) {
  898.                 g[a++] = e() & 255;
  899.                 B++;
  900.             }
  901.             if (a == 8) {
  902.                 o();
  903.             }
  904.         }
  905.         var z = 0;
  906.         while (y > 0) {
  907.             if (a < 8) {
  908.                 g[a++] = A[z++];
  909.                 y--;
  910.             }
  911.             if (a == 8) {
  912.                 o();
  913.             }
  914.         }
  915.         B = 1;
  916.         while (B <= 7) {
  917.             if (a < 8) {
  918.                 g[a++] = 0;
  919.                 B++;
  920.             }
  921.             if (a == 8) {
  922.                 o();
  923.             }
  924.         }
  925.         return l;
  926.     }
  927.     function p(C) {
  928.         var B = 0;
  929.         var z = new Array(8);
  930.         var y = C.length;
  931.         s = C;
  932.         if (y % 8 != 0 || y < 16) {
  933.             return null;
  934.         }
  935.         w = k(C);
  936.         a = w[0] & 7;
  937.         B = y - a - 10;
  938.         if (B < 0) {
  939.             return null;
  940.         }
  941.         for (var A = 0; A < z.length; A++) {
  942.             z[A] = 0;
  943.         }
  944.         l = new Array(B);
  945.         t = 0;
  946.         x = 8;
  947.         a++;
  948.         var D = 1;
  949.         while (D <= 2) {
  950.             if (a < 8) {
  951.                 a++;
  952.                 D++;
  953.             }
  954.             if (a == 8) {
  955.                 z = C;
  956.                 if (!f()) {
  957.                     return null;
  958.                 }
  959.             }
  960.         }
  961.         var A = 0;
  962.         while (B != 0) {
  963.             if (a < 8) {
  964.                 l[A] = (z[t + a] ^ w[a]) & 255;
  965.                 A++;
  966.                 B--;
  967.                 a++;
  968.             }
  969.             if (a == 8) {
  970.                 z = C;
  971.                 t = x - 8;
  972.                 if (!f()) {
  973.                     return null;
  974.                 }
  975.             }
  976.         }
  977.         for (D = 1; D < 8; D++) {
  978.             if (a < 8) {
  979.                 if ((z[t + a] ^ w[a]) != 0) {
  980.                     return null;
  981.                 }
  982.                 a++;
  983.             }
  984.             if (a == 8) {
  985.                 z = C;
  986.                 t = x;
  987.                 if (!f()) {
  988.                     return null;
  989.                 }
  990.             }
  991.         }
  992.         return l;
  993.     }
  994.     function o() {
  995.         for (var y = 0; y < 8; y++) {
  996.             if (m) {
  997.                 g[y] ^= w[y];
  998.             } else {
  999.                 g[y] ^= l[t + y];
  1000.             }
  1001.         }
  1002.         var z = j(g);
  1003.         for (var y = 0; y < 8; y++) {
  1004.             l[x + y] = z[y] ^ w[y];
  1005.             w[y] = g[y];
  1006.         }
  1007.         t = x;
  1008.         x += 8;
  1009.         a = 0;
  1010.         m = false;
  1011.     }
  1012.     function j(A) {
  1013.         var B = 16;
  1014.         var G = i(A, 0, 4);
  1015.         var F = i(A, 4, 4);
  1016.         var I = i(r, 0, 4);
  1017.         var H = i(r, 4, 4);
  1018.         var E = i(r, 8, 4);
  1019.         var D = i(r, 12, 4);
  1020.         var C = 0;
  1021.         var J = 2654435769 >>> 0;
  1022.         while (B-- > 0) {
  1023.             C += J;
  1024.             C = (C & 4294967295) >>> 0;
  1025.             G += ((F << 4) + I) ^ (F + C) ^ ((F >>> 5) + H);
  1026.             G = (G & 4294967295) >>> 0;
  1027.             F += ((G << 4) + E) ^ (G + C) ^ ((G >>> 5) + D);
  1028.             F = (F & 4294967295) >>> 0;
  1029.         }
  1030.         var K = new Array(8);
  1031.         b(K, 0, G);
  1032.         b(K, 4, F);
  1033.         return K;
  1034.     }
  1035.     function k(A) {
  1036.         var B = 16;
  1037.         var G = i(A, 0, 4);
  1038.         var F = i(A, 4, 4);
  1039.         var I = i(r, 0, 4);
  1040.         var H = i(r, 4, 4);
  1041.         var E = i(r, 8, 4);
  1042.         var D = i(r, 12, 4);
  1043.         var C = 3816266640 >>> 0;
  1044.         var J = 2654435769 >>> 0;
  1045.         while (B-- > 0) {
  1046.             F -= ((G << 4) + E) ^ (G + C) ^ ((G >>> 5) + D);
  1047.             F = (F & 4294967295) >>> 0;
  1048.             G -= ((F << 4) + I) ^ (F + C) ^ ((F >>> 5) + H);
  1049.             G = (G & 4294967295) >>> 0;
  1050.             C -= J;
  1051.             C = (C & 4294967295) >>> 0;
  1052.         }
  1053.         var K = new Array(8);
  1054.         b(K, 0, G);
  1055.         b(K, 4, F);
  1056.         return K;
  1057.     }
  1058.     function f() {
  1059.         var y = s.length;
  1060.         for (var z = 0; z < 8; z++) {
  1061.             w[z] ^= s[x + z];
  1062.         }
  1063.         w = k(w);
  1064.         x += 8;
  1065.         a = 0;
  1066.         return true;
  1067.     }
  1068.     function n(C, B) {
  1069.         var A = [];
  1070.         if (B) {
  1071.             for (var z = 0; z < C.length; z++) {
  1072.                 A[z] = C.charCodeAt(z) & 255;
  1073.             }
  1074.         } else {
  1075.             var y = 0;
  1076.             for (var z = 0; z < C.length; z += 2) {
  1077.                 A[y++] = parseInt(C.substr(z, 2), 16);
  1078.             }
  1079.         }
  1080.         return A;
  1081.     }
  1082.     TEA = { encrypt: function (B, A) {
  1083.             var z = n(B, A);
  1084.             var y = h(z);
  1085.             return v(y);
  1086.         }, enAsBase64: function (D, C) {
  1087.             var B = n(D, C);
  1088.             var A = h(B);
  1089.             var y = "";
  1090.             for (var z = 0; z < A.length; z++) {
  1091.                 y += String.fromCharCode(A[z]);
  1092.             }
  1093.             return d.encode(y);
  1094.         }, decrypt: function (A) {
  1095.             var z = n(A, false);
  1096.             var y = p(z);
  1097.             return v(y);
  1098.         }, initkey: function (y, z) {
  1099.             r = n(y, z);
  1100.         }, bytesToStr: u, strToBytes: c, bytesInStr: v, dataFromStr: n };
  1101.     var d = {};
  1102.     d.PADCHAR = "=";
  1103.     d.ALPHA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  1104.     d.getbyte = function (A, z) {
  1105.         var y = A.charCodeAt(z);
  1106.         if (y > 255) {
  1107.             throw "INVALID_CHARACTER_ERR: DOM Exception 5";
  1108.         }
  1109.         return y;
  1110.     };
  1111.     d.encode = function (C) {
  1112.         if (arguments.length != 1) {
  1113.             throw "SyntaxError: Not enough arguments";
  1114.         }
  1115.         var z = d.PADCHAR;
  1116.         var E = d.ALPHA;
  1117.         var D = d.getbyte;
  1118.         var B, F;
  1119.         var y = [];
  1120.         C = "" + C;
  1121.         var A = C.length - C.length % 3;
  1122.         if (C.length == 0) {
  1123.             return C;
  1124.         }
  1125.         for (B = 0; B < A; B += 3) {
  1126.             F = (D(C, B) << 16) | (D(C, B + 1) << 8) | D(C, B + 2);
  1127.             y.push(E.charAt(F >> 18));
  1128.             y.push(E.charAt((F >> 12) & 63));
  1129.             y.push(E.charAt((F >> 6) & 63));
  1130.             y.push(E.charAt(F & 63));
  1131.         }
  1132.         switch (C.length - A) {
  1133.             case 1:
  1134.                 F = D(C, B) << 16;
  1135.                 y.push(E.charAt(F >> 18) + E.charAt((F >> 12) & 63) + z + z);
  1136.                 break;
  1137.             case 2:
  1138.                 F = (D(C, B) << 16) | (D(C, B + 1) << 8);
  1139.                 y.push(E.charAt(F >> 18) + E.charAt((F >> 12) & 63) + E.charAt((F >> 6) & 63) + z);
  1140.                 break;
  1141.         }
  1142.         return y.join("");
  1143.     };
  1144.     if (!window.btoa) {
  1145.         window.btoa = d.encode;
  1146.     }
  1147. })(window);
  1148. Encryption = function () {
  1149.     var hexcase = 1;
  1150.     var b64pad = "";
  1151.     var chrsz = 8;
  1152.     var mode = 32;
  1153.     function md5(s) {
  1154.         return hex_md5(s);
  1155.     }
  1156.     function hex_md5(s) {
  1157.         return binl2hex(core_md5(str2binl(s), s.length * chrsz));
  1158.     }
  1159.     function str_md5(s) {
  1160.         return binl2str(core_md5(str2binl(s), s.length * chrsz));
  1161.     }
  1162.     function hex_hmac_md5(key, data) {
  1163.         return binl2hex(core_hmac_md5(key, data));
  1164.     }
  1165.     function b64_hmac_md5(key, data) {
  1166.         return binl2b64(core_hmac_md5(key, data));
  1167.     }
  1168.     function str_hmac_md5(key, data) {
  1169.         return binl2str(core_hmac_md5(key, data));
  1170.     }
  1171.     function core_md5(x, len) {
  1172.         x[len >> 5] |= 128 << ((len) % 32);
  1173.         x[(((len + 64) >>> 9) << 4) + 14] = len;
  1174.         var a = 1732584193;
  1175.         var b = -271733879;
  1176.         var c = -1732584194;
  1177.         var d = 271733878;
  1178.         for (var i = 0; i < x.length; i += 16) {
  1179.             var olda = a;
  1180.             var oldb = b;
  1181.             var oldc = c;
  1182.             var oldd = d;
  1183.             a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
  1184.             d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
  1185.             c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
  1186.             b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
  1187.             a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
  1188.             d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
  1189.             c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
  1190.             b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
  1191.             a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
  1192.             d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
  1193.             c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
  1194.             b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
  1195.             a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
  1196.             d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
  1197.             c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
  1198.             b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
  1199.             a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
  1200.             d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
  1201.             c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
  1202.             b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
  1203.             a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
  1204.             d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
  1205.             c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
  1206.             b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
  1207.             a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
  1208.             d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
  1209.             c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
  1210.             b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
  1211.             a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
  1212.             d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
  1213.             c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
  1214.             b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
  1215.             a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
  1216.             d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
  1217.             c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
  1218.             b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
  1219.             a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
  1220.             d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
  1221.             c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
  1222.             b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
  1223.             a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
  1224.             d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
  1225.             c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
  1226.             b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
  1227.             a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
  1228.             d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
  1229.             c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
  1230.             b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
  1231.             a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
  1232.             d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
  1233.             c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
  1234.             b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
  1235.             a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
  1236.             d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
  1237.             c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
  1238.             b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
  1239.             a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
  1240.             d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
  1241.             c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
  1242.             b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
  1243.             a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
  1244.             d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
  1245.             c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
  1246.             b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
  1247.             a = safe_add(a, olda);
  1248.             b = safe_add(b, oldb);
  1249.             c = safe_add(c, oldc);
  1250.             d = safe_add(d, oldd);
  1251.         }
  1252.         if (mode == 16) {
  1253.             return Array(b, c);
  1254.         } else {
  1255.             return Array(a, b, c, d);
  1256.         }
  1257.     }
  1258.     function md5_cmn(q, a, b, x, s, t) {
  1259.         return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
  1260.     }
  1261.     function md5_ff(a, b, c, d, x, s, t) {
  1262.         return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
  1263.     }
  1264.     function md5_gg(a, b, c, d, x, s, t) {
  1265.         return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
  1266.     }
  1267.     function md5_hh(a, b, c, d, x, s, t) {
  1268.         return md5_cmn(b ^ c ^ d, a, b, x, s, t);
  1269.     }
  1270.     function md5_ii(a, b, c, d, x, s, t) {
  1271.         return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
  1272.     }
  1273.     function core_hmac_md5(key, data) {
  1274.         var bkey = str2binl(key);
  1275.         if (bkey.length > 16) {
  1276.             bkey = core_md5(bkey, key.length * chrsz);
  1277.         }
  1278.         var ipad = Array(16), opad = Array(16);
  1279.         for (var i = 0; i < 16; i++) {
  1280.             ipad[i] = bkey[i] ^ 909522486;
  1281.             opad[i] = bkey[i] ^ 1549556828;
  1282.         }
  1283.         var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
  1284.         return core_md5(opad.concat(hash), 512 + 128);
  1285.     }
  1286.     function safe_add(x, y) {
  1287.         var lsw = (x & 65535) + (y & 65535);
  1288.         var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  1289.         return (msw << 16) | (lsw & 65535);
  1290.     }
  1291.     function bit_rol(num, cnt) {
  1292.         return (num << cnt) | (num >>> (32 - cnt));
  1293.     }
  1294.     function str2binl(str) {
  1295.         var bin = Array();
  1296.         var mask = (1 << chrsz) - 1;
  1297.         for (var i = 0; i < str.length * chrsz; i += chrsz) {
  1298.             bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (i % 32);
  1299.         }
  1300.         return bin;
  1301.     }
  1302.     function binl2str(bin) {
  1303.         var str = "";
  1304.         var mask = (1 << chrsz) - 1;
  1305.         for (var i = 0; i < bin.length * 32; i += chrsz) {
  1306.             str += String.fromCharCode((bin[i >> 5] >>> (i % 32)) & mask);
  1307.         }
  1308.         return str;
  1309.     }
  1310.     function binl2hex(binarray) {
  1311.         var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  1312.         var str = "";
  1313.         for (var i = 0; i < binarray.length * 4; i++) {
  1314.             str += hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 15) + hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 15);
  1315.         }
  1316.         return str;
  1317.     }
  1318.     function binl2b64(binarray) {
  1319.         var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  1320.         var str = "";
  1321.         for (var i = 0; i < binarray.length * 4; i += 3) {
  1322.             var triplet = (((binarray[i >> 2] >> 8 * (i % 4)) & 255) << 16) | (((binarray[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 255) << 8) | ((binarray[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 255);
  1323.             for (var j = 0; j < 4; j++) {
  1324.                 if (i * 8 + j * 6 > binarray.length * 32) {
  1325.                     str += b64pad;
  1326.                 } else {
  1327.                     str += tab.charAt((triplet >> 6 * (3 - j)) & 63);
  1328.                 }
  1329.             }
  1330.         }
  1331.         return str;
  1332.     }
  1333.     function hexchar2bin(str) {
  1334.         var arr = [];
  1335.         for (var i = 0; i < str.length; i = i + 2) {
  1336.             arr.push("\\x" + str.substr(i, 2));
  1337.         }
  1338.         arr = arr.join("");
  1339.         eval("var temp = '" + arr + "'");
  1340.         return temp;
  1341.     }
  1342.     function __monitor(mid, probability) {
  1343.         if (Math.random() > (probability || 1)) {
  1344.             return;
  1345.         }
  1346.         /*var url = location.protocol + "//ui.ptlogin2.qq.com/cgi-bin/report?id=" + mid;
  1347.         var s = document.createElement("img");
  1348.         s.src = url;
  1349.         s = null;*/
  1350.     }
  1351.     function getEncryption(password, salt, vcode, isMd5) {
  1352.         vcode = vcode || "";
  1353.         password = password || "";
  1354.         var md5Pwd = isMd5 ? password : md5(password), h1 = hexchar2bin(md5Pwd), s2 = md5(h1 + salt), rsaH1 = RSA.rsa_encrypt(h1), rsaH1Len = (rsaH1.length / 2).toString(16), hexVcode = TEA.strToBytes(vcode.toUpperCase()), vcodeLen = "000" + vcode.length.toString(16);
  1355.         while (rsaH1Len.length < 4) {
  1356.             rsaH1Len = "0" + rsaH1Len;
  1357.         }
  1358.         TEA.initkey(s2);
  1359.         var saltPwd = TEA.enAsBase64(rsaH1Len + rsaH1 + TEA.strToBytes(salt) + vcodeLen + hexVcode);
  1360.         TEA.initkey("");
  1361.         __monitor(488358, 1);
  1362.         return saltPwd.replace(/[\/\+=]/g, function (a) {
  1363.             return { "/": "-", "+": "*", "=": "_" }[a];
  1364.         });
  1365.     }
  1366.     function getRSAEncryption(password, vcode, isMd5) {
  1367.         var str1 = isMd5 ? password : md5(password);
  1368.         var str2 = str1 + vcode.toUpperCase();
  1369.         var str3 = $.RSA.rsa_encrypt(str2);
  1370.         return str3;
  1371.     }
  1372.     return { getEncryption: getEncryption, getRSAEncryption: getRSAEncryption, md5: md5 };
  1373. }();
  1374. function uin2hex(str) {
  1375.     var maxLength = 16;
  1376.     var hex = parseInt(str).toString(16);
  1377.     var len = hex.length;
  1378.     for (var i = len; i < maxLength; i++) {
  1379.         hex = "0" + hex;
  1380.     }
  1381.     var arr = [];
  1382.     for (var j = 0; j < maxLength; j += 2) {
  1383.         arr.push("\\x" + hex.substr(j, 2));
  1384.     }
  1385.     var result = arr.join("");
  1386.     eval('result="' + result + '"');
  1387.     return result;
  1388. }
  1389. // 加密函数名称:getpass  参数1:QQ号码 参数2:QQ密码 参数3:验证码  
  1390. function getpass(qq,pass,code){
  1391. qq=uin2hex(qq)
  1392. return Encryption.getEncryption(pass,qq,code);
  1393. }




最后一句代码登录QQ

  1. .版本 2
  2. .支持库 spec
  3. .支持库 iconv
  4. .子程序 _按钮1_被单击
  5. .局部变量 脚本, 类_脚本组件
  6. .局部变量 Password, 文本型
  7. 脚本.执行 (到文本 (#JS代码))
  8. Password = 脚本.运行 (“getpass”, 编辑框1.内容, 编辑框2.内容, 编辑框3.内容)
  9. 调试输出 (到文本 (编码转换 (网页_访问 (“http://ptlogin2.qq.com/login?u=” + 编辑框1.内容 + “&verifycode=” + Ver_Code + “&pt_vcode_v1=0&pt_verifysession_v1=” + pt_verifysession_v1 + “&p=” + Password + “&pt_randsalt=0&ptredirect=1&u1=http%3A%2F%2Flixian.qq.com%2Fmain.html&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-65-1435338842906&js_ver=10127&js_type=1&login_sig=” + cookies__sig + “&pt_uistyle=20&aid=715030901&daid=73&daid=5&pt_qzone_sig=1&”, , , , 返回Skey, , , , , ), #编码_UTF_8, #编码_GB18030, )))
  10. Skey_ = 文本_取出中间文本 (返回Skey, “skey=”, “; ”)
  11. Skey = 计算G_tk (文本_取出中间文本 (返回Skey, “skey=”, “; ”))
  12. 线程_启动 (&Get_All_Task, , )  ' //获取全部任务 Get All task

在上面看到了一个 Get_all_task这个类(也可以说是子程序随便叫只要自己理解就行)

这面是提交一个POST参数给腾讯的QQ旋风的服务器

Path是http://lixian.qq.com/handler/lixian/get_lixian_items.php
data是page=0&limit=200    //Page 是"页"的意思 即这是第一页 0=1 1=2以此类推
提交了 就会返回一个JSon样式的文本可以自己格式化下看看,很清晰。

然后插入超级列表框进行相应的操作。。。


此处省略N字。

最后获取到地址即Code。一行字符串 在“/ftn_handler/”之后的一行字符串。但是腾讯sun dog 返回的不是很好的。我们需要把这个code截取下来。换到其它的接口上。
我提供几个接口(我所晓得)。

http://xfxa.ctfs.ftn.qq.com/ftn_handler/
http://xfcd.ctfs.ftn.qq.com/ftn_handler/
http://sh.ctfs.ftn.qq.com/ftn_handler/
http://sz.ctfs.ftn.qq.com/ftn_handler/
http://tj.ctfs.ftn.qq.com/ftn_handler/

当然肯定还有其它的哈 欢迎提供。。。

然后使用Cookie这个访问这个被修改后的code地址即可播放下载。
http://www.huankv.com/
离线sunkejava

只看该作者 沙发  发表于: 2015-07-27
都对不上啊啊!!!!!!
离线ygrzdwl

只看该作者 板凳  发表于: 2015-08-18
这个方法是不是获取登录QQ好离线空间里的内容,那QQ必须是会员了?
离线wanglong126

只看该作者 地板  发表于: 2015-08-21
大神又在迅雷的论坛讲解了,哈哈
颜色表 www.diycms.com
离线m2510

只看该作者 4楼 发表于: 2015-08-30
好复杂。。可以共享个实例给大家看看么
离线asd99987

只看该作者 5楼 发表于: 2015-10-02
是个好方法,不过正如你所说软件登录不安全还麻烦
离线maiju

只看该作者 6楼 发表于: 2015-10-08
感谢分享
离线xiangyabing

只看该作者 7楼 发表于: 2015-11-15
感谢分享
离线chenyw101

只看该作者 8楼 发表于: 2015-12-02
不知道PHP怎么写,学习了
离线917696540

只看该作者 9楼 发表于: 2015-12-04
能磁力播放或者种子播放吗? 高手
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个