xushen |
2015-07-27 01:15 |
最终解析磁力方法。
我们知道 磁力是这样的 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
- .版本 2
.子程序 Get_pt_verifysession_v1 .局部变量 cookies_, 文本型 .局部变量 state, 文本型 .局部变量 json, 类_json
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_, , )) Ver_Code = 文本_取出中间文本 (state, “,'”, “','\”) 编辑框3.内容 = Ver_Code pt_verifysession_v1 = 文本_取出中间文本 (文本_取出中间文本 (state, “\”, “,'0');”), “','”, “'”)
cookies__sig
- .版本 2
.子程序 Get_cookies__sig
网页_访问 (“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, ) cookies__sig = 文本_取出中间文本 (cookies__sig, “_sig=”, “; pt_clie”)
还要计算一个G_tk
- .版本 2
.子程序 计算G_tk, 文本型 .参数 skey, 文本型 .局部变量 hash, 整数型 .局部变量 计次, 整数型
hash = 5381 .变量循环首 (1, 取文本长度 (skey), 1, 计次) hash = hash + hash × 求次方 (2, 5) + 取字节集数据 (ANSI转UNICODE (取文本中间 (skey, 计次, 1)), 3, ) .变量循环尾 () 返回 (到文本 (位与 (hash, 十六到十 (“7fffffff”))))
JS代码为
- var window=window|| {};
RSA = function () { function g(z, t) { return new ar(z, t); } function ah(aA, aB) { var t = ""; var z = 0; while (z + aB < aA.length) { t += aA.substring(z, z + aB) + "\n"; z += aB; } return t + aA.substring(z, aA.length); } function r(t) { if (t < 16) { return "0" + t.toString(16); } else { return t.toString(16); } } function af(aB, aE) { if (aE < aB.length + 11) { uv_alert("Message too long for RSA"); return null; } var aD = new Array(); var aA = aB.length - 1; while (aA >= 0 && aE > 0) { var aC = aB.charCodeAt(aA--); aD[--aE] = aC; } aD[--aE] = 0; var z = new ad(); var t = new Array(); while (aE > 2) { t[0] = 0; while (t[0] == 0) { z.nextBytes(t); } aD[--aE] = t[0]; } aD[--aE] = 2; aD[--aE] = 0; return new ar(aD); } function L() { this.n = null; this.e = 0; this.d = null; this.p = null; this.q = null; this.dmp1 = null; this.dmq1 = null; this.coeff = null; } function o(z, t) { if (z != null && t != null && z.length > 0 && t.length > 0) { this.n = g(z, 16); this.e = parseInt(t, 16); } else { uv_alert("Invalid RSA public key"); } } function W(t) { return t.modPowInt(this.e, this.n); } function p(aA) { var t = af(aA, (this.n.bitLength() + 7) >> 3); if (t == null) { return null; } var aB = this.doPublic(t); if (aB == null) { return null; } var z = aB.toString(16); if ((z.length & 1) == 0) { return z; } else { return "0" + z; } } L.prototype.doPublic = W; L.prototype.setPublic = o; L.prototype.encrypt = p; var aw; var ai = 244837814094590; var Z = ((ai & 16777215) == 15715070); function ar(z, t, aA) { if (z != null) { if ("number" == typeof z) { this.fromNumber(z, t, aA); } else { if (t == null && "string" != typeof z) { this.fromString(z, 256); } else { this.fromString(z, t); } } } } function h() { return new ar(null); } function b(aC, t, z, aB, aE, aD) { while (--aD >= 0) { var aA = t * this[aC++] + z[aB] + aE; aE = Math.floor(aA / 67108864); z[aB++] = aA & 67108863; } return aE; } function ay(aC, aH, aI, aB, aF, t) { var aE = aH & 32767, aG = aH >> 15; while (--t >= 0) { var aA = this[aC] & 32767; var aD = this[aC++] >> 15; var z = aG * aA + aD * aE; aA = aE * aA + ((z & 32767) << 15) + aI[aB] + (aF & 1073741823); aF = (aA >>> 30) + (z >>> 15) + aG * aD + (aF >>> 30); aI[aB++] = aA & 1073741823; } return aF; } function ax(aC, aH, aI, aB, aF, t) { var aE = aH & 16383, aG = aH >> 14; while (--t >= 0) { var aA = this[aC] & 16383; var aD = this[aC++] >> 14; var z = aG * aA + aD * aE; aA = aE * aA + ((z & 16383) << 14) + aI[aB] + aF; aF = (aA >> 28) + (z >> 14) + aG * aD; aI[aB++] = aA & 268435455; } return aF; }
ar.prototype.am = b; aw = 26;
ar.prototype.DB = aw; ar.prototype.DM = ((1 << aw) - 1); ar.prototype.DV = (1 << aw); var aa = 52; ar.prototype.FV = Math.pow(2, aa); ar.prototype.F1 = aa - aw; ar.prototype.F2 = 2 * aw - aa; var ae = "0123456789abcdefghijklmnopqrstuvwxyz"; var ag = new Array(); var ap, v; ap = "0".charCodeAt(0); for (v = 0; v <= 9; ++v) { ag[ap++] = v; } ap = "a".charCodeAt(0); for (v = 10; v < 36; ++v) { ag[ap++] = v; } ap = "A".charCodeAt(0); for (v = 10; v < 36; ++v) { ag[ap++] = v; } function az(t) { return ae.charAt(t); } function A(z, t) { var aA = ag[z.charCodeAt(t)]; return (aA == null) ? -1 : aA; } function Y(z) { for (var t = this.t - 1; t >= 0; --t) { z[t] = this[t]; } z.t = this.t; z.s = this.s; } function n(t) { this.t = 1; this.s = (t < 0) ? -1 : 0; if (t > 0) { this[0] = t; } else { if (t < -1) { this[0] = t + DV; } else { this.t = 0; } } } function c(t) { var z = h(); z.fromInt(t); return z; } function w(aE, z) { var aB; if (z == 16) { aB = 4; } else { if (z == 8) { aB = 3; } else { if (z == 256) { aB = 8; } else { if (z == 2) { aB = 1; } else { if (z == 32) { aB = 5; } else { if (z == 4) { aB = 2; } else { this.fromRadix(aE, z); return; } } } } } } this.t = 0; this.s = 0; var aD = aE.length, aA = false, aC = 0; while (--aD >= 0) { var t = (aB == 8) ? aE[aD] & 255 : A(aE, aD); if (t < 0) { if (aE.charAt(aD) == "-") { aA = true; } continue; } aA = false; if (aC == 0) { this[this.t++] = t; } else { if (aC + aB > this.DB) { this[this.t - 1] |= (t & ((1 << (this.DB - aC)) - 1)) << aC; this[this.t++] = (t >> (this.DB - aC)); } else { this[this.t - 1] |= t << aC; } } aC += aB; if (aC >= this.DB) { aC -= this.DB; } } if (aB == 8 && (aE[0] & 128) != 0) { this.s = -1; if (aC > 0) { this[this.t - 1] |= ((1 << (this.DB - aC)) - 1) << aC; } } this.clamp(); if (aA) { ar.ZERO.subTo(this, this); } } function O() { var t = this.s & this.DM; while (this.t > 0 && this[this.t - 1] == t) { --this.t; } } function q(z) { if (this.s < 0) { return "-" + this.negate().toString(z); } var aA; if (z == 16) { aA = 4; } else { if (z == 8) { aA = 3; } else { if (z == 2) { aA = 1; } else { if (z == 32) { aA = 5; } else { if (z == 4) { aA = 2; } else { return this.toRadix(z); } } } } } var aC = (1 << aA) - 1, aF, t = false, aD = "", aB = this.t; var aE = this.DB - (aB * this.DB) % aA; if (aB-- > 0) { if (aE < this.DB && (aF = this[aB] >> aE) > 0) { t = true; aD = az(aF); } while (aB >= 0) { if (aE < aA) { aF = (this[aB] & ((1 << aE) - 1)) << (aA - aE); aF |= this[--aB] >> (aE += this.DB - aA); } else { aF = (this[aB] >> (aE -= aA)) & aC; if (aE <= 0) { aE += this.DB; --aB; } } if (aF > 0) { t = true; } if (t) { aD += az(aF); } } } return t ? aD : "0"; } function R() { var t = h(); ar.ZERO.subTo(this, t); return t; } function al() { return (this.s < 0) ? this.negate() : this; } function G(t) { var aA = this.s - t.s; if (aA != 0) { return aA; } var z = this.t; aA = z - t.t; if (aA != 0) { return aA; } while (--z >= 0) { if ((aA = this[z] - t[z]) != 0) { return aA; } } return 0; } function j(z) { var aB = 1, aA; if ((aA = z >>> 16) != 0) { z = aA; aB += 16; } if ((aA = z >> 8) != 0) { z = aA; aB += 8; } if ((aA = z >> 4) != 0) { z = aA; aB += 4; } if ((aA = z >> 2) != 0) { z = aA; aB += 2; } if ((aA = z >> 1) != 0) { z = aA; aB += 1; } return aB; } function u() { if (this.t <= 0) { return 0; } return this.DB * (this.t - 1) + j(this[this.t - 1] ^ (this.s & this.DM)); } function aq(aA, z) { var t; for (t = this.t - 1; t >= 0; --t) { z[t + aA] = this[t]; } for (t = aA - 1; t >= 0; --t) { z[t] = 0; } z.t = this.t + aA; z.s = this.s; } function X(aA, z) { for (var t = aA; t < this.t; ++t) { z[t - aA] = this[t]; } z.t = Math.max(this.t - aA, 0); z.s = this.s; } function s(aF, aB) { var z = aF % this.DB; var t = this.DB - z; var aD = (1 << t) - 1; var aC = Math.floor(aF / this.DB), aE = (this.s << z) & this.DM, aA; for (aA = this.t - 1; aA >= 0; --aA) { aB[aA + aC + 1] = (this[aA] >> t) | aE; aE = (this[aA] & aD) << z; } for (aA = aC - 1; aA >= 0; --aA) { aB[aA] = 0; } aB[aC] = aE; aB.t = this.t + aC + 1; aB.s = this.s; aB.clamp(); } function l(aE, aB) { aB.s = this.s; var aC = Math.floor(aE / this.DB); if (aC >= this.t) { aB.t = 0; return; } var z = aE % this.DB; var t = this.DB - z; var aD = (1 << z) - 1; aB[0] = this[aC] >> z; for (var aA = aC + 1; aA < this.t; ++aA) { aB[aA - aC - 1] |= (this[aA] & aD) << t; aB[aA - aC] = this[aA] >> z; } if (z > 0) { aB[this.t - aC - 1] |= (this.s & aD) << t; } aB.t = this.t - aC; aB.clamp(); } function ab(z, aB) { var aA = 0, aC = 0, t = Math.min(z.t, this.t); while (aA < t) { aC += this[aA] - z[aA]; aB[aA++] = aC & this.DM; aC >>= this.DB; } if (z.t < this.t) { aC -= z.s; while (aA < this.t) { aC += this[aA]; aB[aA++] = aC & this.DM; aC >>= this.DB; } aC += this.s; } else { aC += this.s; while (aA < z.t) { aC -= z[aA]; aB[aA++] = aC & this.DM; aC >>= this.DB; } aC -= z.s; } aB.s = (aC < 0) ? -1 : 0; if (aC < -1) { aB[aA++] = this.DV + aC; } else { if (aC > 0) { aB[aA++] = aC; } } aB.t = aA; aB.clamp(); } function D(z, aB) { var t = this.abs(), aC = z.abs(); var aA = t.t; aB.t = aA + aC.t; while (--aA >= 0) { aB[aA] = 0; } for (aA = 0; aA < aC.t; ++aA) { aB[aA + t.t] = t.am(0, aC[aA], aB, aA, 0, t.t); } aB.s = 0; aB.clamp(); if (this.s != z.s) { ar.ZERO.subTo(aB, aB); } } function Q(aA) { var t = this.abs(); var z = aA.t = 2 * t.t; while (--z >= 0) { aA[z] = 0; } for (z = 0; z < t.t - 1; ++z) { var aB = t.am(z, t[z], aA, 2 * z, 0, 1); if ((aA[z + t.t] += t.am(z + 1, 2 * t[z], aA, 2 * z + 1, aB, t.t - z - 1)) >= t.DV) { aA[z + t.t] -= t.DV; aA[z + t.t + 1] = 1; } } if (aA.t > 0) { aA[aA.t - 1] += t.am(z, t[z], aA, 2 * z, 0, 1); } aA.s = 0; aA.clamp(); } function E(aI, aF, aE) { var aO = aI.abs(); if (aO.t <= 0) { return; } var aG = this.abs(); if (aG.t < aO.t) { if (aF != null) { aF.fromInt(0); } if (aE != null) { this.copyTo(aE); } return; } if (aE == null) { aE = h(); } var aC = h(), z = this.s, aH = aI.s; var aN = this.DB - j(aO[aO.t - 1]); if (aN > 0) { aO.lShiftTo(aN, aC); aG.lShiftTo(aN, aE); } else { aO.copyTo(aC); aG.copyTo(aE); } var aK = aC.t; var aA = aC[aK - 1]; if (aA == 0) { return; } var aJ = aA * (1 << this.F1) + ((aK > 1) ? aC[aK - 2] >> this.F2 : 0); var aR = this.FV / aJ, aQ = (1 << this.F1) / aJ, aP = 1 << this.F2; var aM = aE.t, aL = aM - aK, aD = (aF == null) ? h() : aF; aC.dlShiftTo(aL, aD); if (aE.compareTo(aD) >= 0) { aE[aE.t++] = 1; aE.subTo(aD, aE); } ar.ONE.dlShiftTo(aK, aD); aD.subTo(aC, aC); while (aC.t < aK) { aC[aC.t++] = 0; } while (--aL >= 0) { var aB = (aE[--aM] == aA) ? this.DM : Math.floor(aE[aM] * aR + (aE[aM - 1] + aP) * aQ); if ((aE[aM] += aC.am(0, aB, aE, aL, 0, aK)) < aB) { aC.dlShiftTo(aL, aD); aE.subTo(aD, aE); while (aE[aM] < --aB) { aE.subTo(aD, aE); } } } if (aF != null) { aE.drShiftTo(aK, aF); if (z != aH) { ar.ZERO.subTo(aF, aF); } } aE.t = aK; aE.clamp(); if (aN > 0) { aE.rShiftTo(aN, aE); } if (z < 0) { ar.ZERO.subTo(aE, aE); } } function N(t) { var z = h(); this.abs().divRemTo(t, null, z); if (this.s < 0 && z.compareTo(ar.ZERO) > 0) { t.subTo(z, z); } return z; } function K(t) { this.m = t; } function V(t) { if (t.s < 0 || t.compareTo(this.m) >= 0) { return t.mod(this.m); } else { return t; } } function ak(t) { return t; } function J(t) { t.divRemTo(this.m, null, t); } function H(t, aA, z) { t.multiplyTo(aA, z); this.reduce(z); } function au(t, z) { t.squareTo(z); this.reduce(z); } K.prototype.convert = V; K.prototype.revert = ak; K.prototype.reduce = J; K.prototype.mulTo = H; K.prototype.sqrTo = au; function B() { if (this.t < 1) { return 0; } var t = this[0]; if ((t & 1) == 0) { return 0; } var z = t & 3; z = (z * (2 - (t & 15) * z)) & 15; z = (z * (2 - (t & 255) * z)) & 255; z = (z * (2 - (((t & 65535) * z) & 65535))) & 65535; z = (z * (2 - t * z % this.DV)) % this.DV; return (z > 0) ? this.DV - z : -z; } function f(t) { this.m = t; this.mp = t.invDigit(); this.mpl = this.mp & 32767; this.mph = this.mp >> 15; this.um = (1 << (t.DB - 15)) - 1; this.mt2 = 2 * t.t; } function aj(t) { var z = h(); t.abs().dlShiftTo(this.m.t, z); z.divRemTo(this.m, null, z); if (t.s < 0 && z.compareTo(ar.ZERO) > 0) { this.m.subTo(z, z); } return z; } function at(t) { var z = h(); t.copyTo(z); this.reduce(z); return z; } function P(t) { while (t.t <= this.mt2) { t[t.t++] = 0; } for (var aA = 0; aA < this.m.t; ++aA) { var z = t[aA] & 32767; var aB = (z * this.mpl + (((z * this.mph + (t[aA] >> 15) * this.mpl) & this.um) << 15)) & t.DM; z = aA + this.m.t; t[z] += this.m.am(0, aB, t, aA, 0, this.m.t); while (t[z] >= t.DV) { t[z] -= t.DV; t[++z]++; } } t.clamp(); t.drShiftTo(this.m.t, t); if (t.compareTo(this.m) >= 0) { t.subTo(this.m, t); } } function am(t, z) { t.squareTo(z); this.reduce(z); } function y(t, aA, z) { t.multiplyTo(aA, z); this.reduce(z); } f.prototype.convert = aj; f.prototype.revert = at; f.prototype.reduce = P; f.prototype.mulTo = y; f.prototype.sqrTo = am; function i() { return ((this.t > 0) ? (this[0] & 1) : this.s) == 0; } function x(aF, aG) { if (aF > 4294967295 || aF < 1) { return ar.ONE; } var aE = h(), aA = h(), aD = aG.convert(this), aC = j(aF) - 1; aD.copyTo(aE); while (--aC >= 0) { aG.sqrTo(aE, aA); if ((aF & (1 << aC)) > 0) { aG.mulTo(aA, aD, aE); } else { var aB = aE; aE = aA; aA = aB; } } return aG.revert(aE); } function an(aA, t) { var aB; if (aA < 256 || t.isEven()) { aB = new K(t); } else { aB = new f(t); } return this.exp(aA, aB); } ar.prototype.copyTo = Y; ar.prototype.fromInt = n; ar.prototype.fromString = w; ar.prototype.clamp = O; ar.prototype.dlShiftTo = aq; ar.prototype.drShiftTo = X; ar.prototype.lShiftTo = s; ar.prototype.rShiftTo = l; ar.prototype.subTo = ab; ar.prototype.multiplyTo = D; ar.prototype.squareTo = Q; ar.prototype.divRemTo = E; ar.prototype.invDigit = B; ar.prototype.isEven = i; ar.prototype.exp = x; ar.prototype.toString = q; ar.prototype.negate = R; ar.prototype.abs = al; ar.prototype.compareTo = G; ar.prototype.bitLength = u; ar.prototype.mod = N; ar.prototype.modPowInt = an; ar.ZERO = c(0); ar.ONE = c(1); var m; var U; var ac; function d(t) { U[ac++] ^= t & 255; U[ac++] ^= (t >> 8) & 255; U[ac++] ^= (t >> 16) & 255; U[ac++] ^= (t >> 24) & 255; if (ac >= M) { ac -= M; } } function T() { d(new Date().getTime()); } if (U == null) { U = new Array(); ac = 0; var I;
I = Math.floor(65536 * Math.random()); U[ac++] = I >>> 8; U[ac++] = I & 255;
} function C() { if (m == null) { T(); m = ao(); m.init(U); for (ac = 0; ac < U.length; ++ac) { U[ac] = 0; } ac = 0; } return m.next(); } function av(z) { var t; for (t = 0; t < z.length; ++t) { z[t] = C(); } } function ad() { } ad.prototype.nextBytes = av; function k() { this.i = 0; this.j = 0; this.S = new Array(); } function e(aC) { var aB, z, aA; for (aB = 0; aB < 256; ++aB) { this.S[aB] = aB; } z = 0; for (aB = 0; aB < 256; ++aB) { z = (z + this.S[aB] + aC[aB % aC.length]) & 255; aA = this.S[aB]; this.S[aB] = this.S[z]; this.S[z] = aA; } this.i = 0; this.j = 0; } function a() { var z; this.i = (this.i + 1) & 255; this.j = (this.j + this.S[this.i]) & 255; z = this.S[this.i]; this.S[this.i] = this.S[this.j]; this.S[this.j] = z; return this.S[(z + this.S[this.i]) & 255]; } k.prototype.init = e; k.prototype.next = a; function ao() { return new k(); } var M = 256; function S(aB, aA, z) { aA = "F20CE00BAE5361F8FA3AE9CEFA495362FF7DA1BA628F64A347F0A8C012BF0B254A30CD92ABFFE7A6EE0DC424CB6166F8819EFA5BCCB20EDFB4AD02E412CCF579B1CA711D55B8B0B3AEB60153D5E0693A2A86F3167D7847A0CB8B00004716A9095D9BADC977CBB804DBDCBA6029A9710869A453F27DFDDF83C016D928B3CBF4C7"; z = "3"; var t = new L(); t.setPublic(aA, z); return t.encrypt(aB); } return { rsa_encrypt: S }; }(); (function (q) { var r = "", a = 0, g = [], w = [], x = 0, t = 0, l = [], s = [], m = true; function e() { return Math.round(Math.random() * 4294967295); } function i(B, C, y) { if (!y || y > 4) { y = 4; } var z = 0; for (var A = C; A < C + y; A++) { z <<= 8; z |= B[A]; } return (z & 4294967295) >>> 0; } function b(z, A, y) { z[A + 3] = (y >> 0) & 255; z[A + 2] = (y >> 8) & 255; z[A + 1] = (y >> 16) & 255; z[A + 0] = (y >> 24) & 255; } function v(B) { if (!B) { return ""; } var y = ""; for (var z = 0; z < B.length; z++) { var A = Number(B[z]).toString(16); if (A.length == 1) { A = "0" + A; } y += A; } return y; } function u(z) { var A = ""; for (var y = 0; y < z.length; y += 2) { A += String.fromCharCode(parseInt(z.substr(y, 2), 16)); } return A; } function c(A) { if (!A) { return ""; } var z = []; for (var y = 0; y < A.length; y++) { z[y] = A.charCodeAt(y); } return v(z); } function h(A) { g = new Array(8); w = new Array(8); x = t = 0; m = true; a = 0; var y = A.length; var B = 0; a = (y + 10) % 8; if (a != 0) { a = 8 - a; } l = new Array(y + a + 10); g[0] = ((e() & 248) | a) & 255; for (var z = 1; z <= a; z++) { g[z] = e() & 255; } a++; for (var z = 0; z < 8; z++) { w[z] = 0; } B = 1; while (B <= 2) { if (a < 8) { g[a++] = e() & 255; B++; } if (a == 8) { o(); } } var z = 0; while (y > 0) { if (a < 8) { g[a++] = A[z++]; y--; } if (a == 8) { o(); } } B = 1; while (B <= 7) { if (a < 8) { g[a++] = 0; B++; } if (a == 8) { o(); } } return l; } function p(C) { var B = 0; var z = new Array(8); var y = C.length; s = C; if (y % 8 != 0 || y < 16) { return null; } w = k(C); a = w[0] & 7; B = y - a - 10; if (B < 0) { return null; } for (var A = 0; A < z.length; A++) { z[A] = 0; } l = new Array(B); t = 0; x = 8; a++; var D = 1; while (D <= 2) { if (a < 8) { a++; D++; } if (a == 8) { z = C; if (!f()) { return null; } } } var A = 0; while (B != 0) { if (a < 8) { l[A] = (z[t + a] ^ w[a]) & 255; A++; B--; a++; } if (a == 8) { z = C; t = x - 8; if (!f()) { return null; } } } for (D = 1; D < 8; D++) { if (a < 8) { if ((z[t + a] ^ w[a]) != 0) { return null; } a++; } if (a == 8) { z = C; t = x; if (!f()) { return null; } } } return l; } function o() { for (var y = 0; y < 8; y++) { if (m) { g[y] ^= w[y]; } else { g[y] ^= l[t + y]; } } var z = j(g); for (var y = 0; y < 8; y++) { l[x + y] = z[y] ^ w[y]; w[y] = g[y]; } t = x; x += 8; a = 0; m = false; } function j(A) { var B = 16; var G = i(A, 0, 4); var F = i(A, 4, 4); var I = i(r, 0, 4); var H = i(r, 4, 4); var E = i(r, 8, 4); var D = i(r, 12, 4); var C = 0; var J = 2654435769 >>> 0; while (B-- > 0) { C += J; C = (C & 4294967295) >>> 0; G += ((F << 4) + I) ^ (F + C) ^ ((F >>> 5) + H); G = (G & 4294967295) >>> 0; F += ((G << 4) + E) ^ (G + C) ^ ((G >>> 5) + D); F = (F & 4294967295) >>> 0; } var K = new Array(8); b(K, 0, G); b(K, 4, F); return K; } function k(A) { var B = 16; var G = i(A, 0, 4); var F = i(A, 4, 4); var I = i(r, 0, 4); var H = i(r, 4, 4); var E = i(r, 8, 4); var D = i(r, 12, 4); var C = 3816266640 >>> 0; var J = 2654435769 >>> 0; while (B-- > 0) { F -= ((G << 4) + E) ^ (G + C) ^ ((G >>> 5) + D); F = (F & 4294967295) >>> 0; G -= ((F << 4) + I) ^ (F + C) ^ ((F >>> 5) + H); G = (G & 4294967295) >>> 0; C -= J; C = (C & 4294967295) >>> 0; } var K = new Array(8); b(K, 0, G); b(K, 4, F); return K; } function f() { var y = s.length; for (var z = 0; z < 8; z++) { w[z] ^= s[x + z]; } w = k(w); x += 8; a = 0; return true; } function n(C, B) { var A = []; if (B) { for (var z = 0; z < C.length; z++) { A[z] = C.charCodeAt(z) & 255; } } else { var y = 0; for (var z = 0; z < C.length; z += 2) { A[y++] = parseInt(C.substr(z, 2), 16); } } return A; } TEA = { encrypt: function (B, A) { var z = n(B, A); var y = h(z); return v(y); }, enAsBase64: function (D, C) { var B = n(D, C); var A = h(B); var y = ""; for (var z = 0; z < A.length; z++) { y += String.fromCharCode(A[z]); } return d.encode(y); }, decrypt: function (A) { var z = n(A, false); var y = p(z); return v(y); }, initkey: function (y, z) { r = n(y, z); }, bytesToStr: u, strToBytes: c, bytesInStr: v, dataFromStr: n }; var d = {}; d.PADCHAR = "="; d.ALPHA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; d.getbyte = function (A, z) { var y = A.charCodeAt(z); if (y > 255) { throw "INVALID_CHARACTER_ERR: DOM Exception 5"; } return y; }; d.encode = function (C) { if (arguments.length != 1) { throw "SyntaxError: Not enough arguments"; } var z = d.PADCHAR; var E = d.ALPHA; var D = d.getbyte; var B, F; var y = []; C = "" + C; var A = C.length - C.length % 3; if (C.length == 0) { return C; } for (B = 0; B < A; B += 3) { F = (D(C, B) << 16) | (D(C, B + 1) << 8) | D(C, B + 2); y.push(E.charAt(F >> 18)); y.push(E.charAt((F >> 12) & 63)); y.push(E.charAt((F >> 6) & 63)); y.push(E.charAt(F & 63)); } switch (C.length - A) { case 1: F = D(C, B) << 16; y.push(E.charAt(F >> 18) + E.charAt((F >> 12) & 63) + z + z); break; case 2: F = (D(C, B) << 16) | (D(C, B + 1) << 8); y.push(E.charAt(F >> 18) + E.charAt((F >> 12) & 63) + E.charAt((F >> 6) & 63) + z); break; } return y.join(""); }; if (!window.btoa) { window.btoa = d.encode; } })(window); Encryption = function () { var hexcase = 1; var b64pad = ""; var chrsz = 8; var mode = 32; function md5(s) { return hex_md5(s); } function hex_md5(s) { return binl2hex(core_md5(str2binl(s), s.length * chrsz)); } function str_md5(s) { return binl2str(core_md5(str2binl(s), s.length * chrsz)); } function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); } function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); } function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); } function core_md5(x, len) { x[len >> 5] |= 128 << ((len) % 32); x[(((len + 64) >>> 9) << 4) + 14] = len; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; for (var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936); d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586); c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819); b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330); a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897); d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426); c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341); b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983); a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416); d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417); c = md5_ff(c, d, a, b, x[i + 10], 17, -42063); b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162); a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682); d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101); c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290); b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329); a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510); d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632); c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713); b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302); a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691); d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083); c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335); b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848); a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438); d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690); c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961); b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501); a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467); d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784); c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473); b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734); a = md5_hh(a, b, c, d, x[i + 5], 4, -378558); d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463); c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562); b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556); a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060); d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353); c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632); b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640); a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174); d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222); c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979); b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189); a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487); d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835); c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520); b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651); a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844); d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415); c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905); b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055); a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571); d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606); c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523); b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799); a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359); d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744); c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380); b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649); a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070); d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379); c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259); b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551); a = safe_add(a, olda); b = safe_add(b, oldb); c = safe_add(c, oldc); d = safe_add(d, oldd); } if (mode == 16) { return Array(b, c); } else { return Array(a, b, c, d); } } function md5_cmn(q, a, b, x, s, t) { return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b); } function md5_ff(a, b, c, d, x, s, t) { return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); } function md5_gg(a, b, c, d, x, s, t) { return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); } function md5_hh(a, b, c, d, x, s, t) { return md5_cmn(b ^ c ^ d, a, b, x, s, t); } function md5_ii(a, b, c, d, x, s, t) { return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); } function core_hmac_md5(key, data) { var bkey = str2binl(key); if (bkey.length > 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] ^ 909522486; opad[i] = bkey[i] ^ 1549556828; } 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 & 65535) + (y & 65535); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 65535); } function bit_rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); } function str2binl(str) { var bin = Array(); var mask = (1 << chrsz) - 1; for (var i = 0; i < str.length * chrsz; i += chrsz) { bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (i % 32); } return bin; } function binl2str(bin) { var str = ""; var mask = (1 << chrsz) - 1; for (var i = 0; i < bin.length * 32; i += chrsz) { str += String.fromCharCode((bin[i >> 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)) & 15) + hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 15); } 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)) & 255) << 16) | (((binarray[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 255) << 8) | ((binarray[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 255); 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)) & 63); } } } return str; } function hexchar2bin(str) { var arr = []; for (var i = 0; i < str.length; i = i + 2) { arr.push("\\x" + str.substr(i, 2)); } arr = arr.join(""); eval("var temp = '" + arr + "'"); return temp; } function __monitor(mid, probability) { if (Math.random() > (probability || 1)) { return; } /*var url = location.protocol + "//ui.ptlogin2.qq.com/cgi-bin/report?id=" + mid; var s = document.createElement("img"); s.src = url; s = null;*/ } function getEncryption(password, salt, vcode, isMd5) { vcode = vcode || ""; password = password || ""; 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); while (rsaH1Len.length < 4) { rsaH1Len = "0" + rsaH1Len; } TEA.initkey(s2); var saltPwd = TEA.enAsBase64(rsaH1Len + rsaH1 + TEA.strToBytes(salt) + vcodeLen + hexVcode); TEA.initkey(""); __monitor(488358, 1); return saltPwd.replace(/[\/\+=]/g, function (a) { return { "/": "-", "+": "*", "=": "_" }[a]; }); } function getRSAEncryption(password, vcode, isMd5) { var str1 = isMd5 ? password : md5(password); var str2 = str1 + vcode.toUpperCase(); var str3 = $.RSA.rsa_encrypt(str2); return str3; } return { getEncryption: getEncryption, getRSAEncryption: getRSAEncryption, md5: md5 }; }(); function uin2hex(str) { var maxLength = 16; var hex = parseInt(str).toString(16); var len = hex.length; for (var i = len; i < maxLength; i++) { hex = "0" + hex; } var arr = []; for (var j = 0; j < maxLength; j += 2) { arr.push("\\x" + hex.substr(j, 2)); } var result = arr.join(""); eval('result="' + result + '"'); return result; }
// 加密函数名称:getpass 参数1:QQ号码 参数2:QQ密码 参数3:验证码
function getpass(qq,pass,code){ qq=uin2hex(qq) return Encryption.getEncryption(pass,qq,code); }
最后一句代码登录QQ
- .版本 2
.支持库 spec .支持库 iconv
.子程序 _按钮1_被单击 .局部变量 脚本, 类_脚本组件 .局部变量 Password, 文本型
脚本.执行 (到文本 (#JS代码)) Password = 脚本.运行 (“getpass”, 编辑框1.内容, 编辑框2.内容, 编辑框3.内容) 调试输出 (到文本 (编码转换 (网页_访问 (“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, )))
Skey_ = 文本_取出中间文本 (返回Skey, “skey=”, “; ”) Skey = 计算G_tk (文本_取出中间文本 (返回Skey, “skey=”, “; ”)) 线程_启动 (&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地址即可播放下载。 |
|