mirror of
https://github.com/luzhisheng/js_reverse.git
synced 2025-04-19 02:39:42 +08:00
更新js逆向代码
This commit is contained in:
parent
36332d7b7c
commit
8cc4b4a48f
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
.idea/
|
||||
.env
|
||||
*.csv
|
||||
*.xlsx
|
||||
*.xlsx#
|
||||
*.zip
|
||||
*.pyc
|
||||
venv/
|
||||
setting.py
|
||||
node_modules/
|
3
12-服务端返回的神秘字符串/1.js
Normal file
3
12-服务端返回的神秘字符串/1.js
Normal file
@ -0,0 +1,3 @@
|
||||
var a = 1
|
||||
console.log("a",a)
|
||||
console.log("global.a",global.a)
|
34
12-服务端返回的神秘字符串/hook_cookie_test.js
Normal file
34
12-服务端返回的神秘字符串/hook_cookie_test.js
Normal file
File diff suppressed because one or more lines are too long
11
13-解密AES 并不是每次都奏效/aes.js
Normal file
11
13-解密AES 并不是每次都奏效/aes.js
Normal file
@ -0,0 +1,11 @@
|
||||
_$vD=window;
|
||||
!function(t,n){"object"==typeof exports?module.exports=exports=n():"function"==typeof define&&define.amd?define([],n):t.o00o0o00=n()}(this,function(){var t=t||function(t,n){var i=Object.create||function(){function t(){}return function(n){var i;return t.prototype=n,i=new t,t.prototype=null,i}}(),e={},r=e.lib={},o=r.Base=function(){return{extend:function(t){var n=i(this);return t&&n.mixIn(t),n.hasOwnProperty("init")&&this.init!==n.init||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var n in t)t.hasOwnProperty(n)&&(this[n]=t[n]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),s=r.WordArray=o.extend({init:function(t,i){t=this.words=t||[],i!=n?this.sigBytes=i:this.sigBytes=4*t.length},toString:function(t){return(t||c).stringify(this)},concat:function(t){var n=this.words,i=t.words,e=this.sigBytes,r=t.sigBytes;if(this.clamp(),e%4)for(var o=0;o<r;o++){var s=i[o>>>2]>>>24-o%4*8&255;n[e+o>>>2]|=s<<24-(e+o)%4*8}else for(var o=0;o<r;o+=4)n[e+o>>>2]=i[o>>>2];return this.sigBytes+=r,this},clamp:function(){var n=this.words,i=this.sigBytes;n[i>>>2]&=4294967295<<32-i%4*8,n.length=t.ceil(i/4)},clone:function(){var t=o.clone.call(this);return t.words=this.words.slice(0),t},random:function(n){for(var i,e=[],r=function(n){var n=n,i=987654321,e=4294967295;return function(){i=36969*(65535&i)+(i>>16)&e,n=18e3*(65535&n)+(n>>16)&e;var r=(i<<16)+n&e;return r/=4294967296,r+=.5,r*(t.random()>.5?1:-1)}},o=0;o<n;o+=4){var a=r(4294967296*(i||t.random()));i=987654071*a(),e.push(4294967296*a()|0)}return new s.init(e,n)}}),a=e.o00o0o00o={},c=a.Hex={stringify:function(t){for(var n=t.words,i=t.sigBytes,e=[],r=0;r<i;r++){var o=n[r>>>2]>>>24-r%4*8&255;e.push((o>>>4).toString(16)),e.push((15&o).toString(16))}return e.join("")},o00o0o00o0o:function(t){for(var n=t.length,i=[],e=0;e<n;e+=2)i[e>>>3]|=parseInt(t.substr(e,2),16)<<24-e%8*4;return new s.init(i,n/2)}},u=a.Latin1={stringify:function(t){for(var n=t.words,i=t.sigBytes,e=[],r=0;r<i;r++){var o=n[r>>>2]>>>24-r%4*8&255;e.push(String.fromCharCode(o))}return e.join("")},o00o0o00o0o:function(t){for(var n=t.length,i=[],e=0;e<n;e++)i[e>>>2]|=(255&t.charCodeAt(e))<<24-e%4*8;return new s.init(i,n)}},f=a.o00o0o00o0={stringify:function(t){try{return decodeURIComponent(escape(u.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},o00o0o00o0o:function(t){return u.o00o0o00o0o(unescape(encodeURIComponent(t)))}},h=r.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=f.o00o0o00o0o(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(n){var i=this._data,e=i.words,r=i.sigBytes,o=this.blockSize,a=4*o,c=r/a;c=n?t.ceil(c):t.max((0|c)-this._minBufferSize,0);var u=c*o,f=t.min(4*u,r);if(u){for(var h=0;h<u;h+=o)this._doProcessBlock(e,h);var p=e.splice(0,u);i.sigBytes-=f}return new s.init(p,f)},clone:function(){var t=o.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0}),p=(r.Hasher=h.extend({cfg:o.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset()},reset:function(){h.reset.call(this),this._doReset()},update:function(t){return this._append(t),this._process(),this},finalize:function(t){t&&this._append(t);var n=this._doFinalize();return n},blockSize:16,_createHelper:function(t){return function(n,i){return new t.init(i).finalize(n)}},_createHmacHelper:function(t){return function(n,i){return new p.HMAC.init(t,i).finalize(n)}}}),e.algo={});return e}(Math);return t});
|
||||
!function(e,t,i){"object"==typeof exports?module.exports=exports=t(require("./core.min"),require("./sha1.min"),require("./hmac.min")):"function"==typeof define&&define.amd?define(["./core.min","./sha1.min","./hmac.min"],t):t(e.o00o0o00)}(this,function(e){return function(){var t=e,i=t.lib,r=i.Base,n=i.WordArray,o=t.algo,a=o.MD5,c=o.EvpKDF=r.extend({cfg:r.extend({keySize:4,hasher:a,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var i=this.cfg,r=i.hasher.create(),o=n.create(),a=o.words,c=i.keySize,f=i.iterations;a.length<c;){s&&r.update(s);var s=r.update(e).finalize(t);r.reset();for(var u=1;u<f;u++)s=r.finalize(s),r.reset();o.concat(s)}return o.sigBytes=4*c,o}});t.EvpKDF=function(e,t,i){return c.create(i).compute(e,t)}}(),e.EvpKDF});t={d:_$vD["e"+"v"+"a"+"l"](function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('{2:"1"+"0"+"3"+"5"+"4"+"0"}',6,6,'{{ m }}'.split('|'),0,{}))};
|
||||
!function(r,e){"object"==typeof exports?module.exports=exports=e(require("./core.min")):"function"==typeof define&&define.amd?define(["./core.min"],e):e(r.o00o0o00)}(this,function(r){return function(){function e(r,e,t){for(var n=[],i=0,o=0;o<e;o++)if(o%4){var f=t[r.charCodeAt(o-1)]<<o%4*2,c=t[r.charCodeAt(o)]>>>6-o%4*2;n[i>>>2]|=(f|c)<<24-i%4*8,i++}return a.create(n,i)}var t=r,n=t.lib,a=n.WordArray,i=t.o00o0o00o;i.Base64={stringify:function(r){var e=r.words,t=r.sigBytes,n=this._map;r.clamp();for(var a=[],i=0;i<t;i+=3)for(var o=e[i>>>2]>>>24-i%4*8&255,f=e[i+1>>>2]>>>24-(i+1)%4*8&255,c=e[i+2>>>2]>>>24-(i+2)%4*8&255,s=o<<16|f<<8|c,h=0;h<4&&i+.75*h<t;h++)a.push(n.charAt(s>>>6*(3-h)&63));var p=n.charAt(64);if(p)for(;a.length%4;)a.push(p);return a.join("")},o00o0o00o0o:function(r){var t=r.length,n=this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var i=0;i<n.length;i++)a[n.charCodeAt(i)]=i}var o=n.charAt(64);if(o){var f=r.indexOf(o);f!==-1&&(t=f)}return e(r,t,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),r.o00o0o00o.Base64});
|
||||
!function(e,t,r){"object"==typeof exports?module.exports=exports=t(require("./core.min"),require("./evpkdf.min")):"function"==typeof define&&define.amd?define(["./core.min","./evpkdf.min"],t):t(e.o00o0o00)}(this,function(e){e.lib.Cipher||function(t){var r=e,i=r.lib,n=i.Base,c=i.WordArray,o=i.BufferedBlockAlgorithm,s=r.o00o0o00o,a=(s.o00o0o00o0,s.Base64),f=r.algo,p=f.EvpKDF,d=i.Cipher=o.extend({cfg:n.extend(),createo00o0o00oryptor:function(e,t){return this.create(this._o00o0o00o_XFORM_MODE,e,t)},createDecryptor:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)},init:function(e,t,r){this.cfg=this.cfg.extend(r),this._xformMode=e,this._key=t,this.reset()},reset:function(){o.reset.call(this),this._doReset()},process:function(e){return this._append(e),this._process()},finalize:function(e){e&&this._append(e);var t=this._doFinalize();return t},keySize:4,ivSize:4,_o00o0o00o_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function e(e){return"string"==typeof e?B:x}return function(t){return{o00o0o00orypt:function(r,i,n){return e(i).o00o0o00orypt(t,r,i,n)},decrypt:function(r,i,n){return e(i).decrypt(t,r,i,n)}}}}()}),h=(i.StreamCipher=d.extend({_doFinalize:function(){var e=this._process(!0);return e},blockSize:1}),r.mode={}),u=i.BlockCipherMode=n.extend({createo00o0o00oryptor:function(e,t){return this.o00o0o00oryptor.create(e,t)},createDecryptor:function(e,t){return this.Decryptor.create(e,t)},init:function(e,t){this._cipher=e,this._iv=t}}),l=h.CBC=function(){function e(e,r,i){var n=this._iv;if(n){var c=n;this._iv=t}else var c=this._prevBlock;for(var o=0;o<i;o++)e[r+o]^=c[o]}var r=u.extend();return r.o00o0o00oryptor=r.extend({processBlock:function(t,r){var i=this._cipher,n=i.blockSize;e.call(this,t,r,n),i.o00o0o00oryptBlock(t,r),this._prevBlock=t.slice(r,r+n)}}),r.Decryptor=r.extend({processBlock:function(t,r){var i=this._cipher,n=i.blockSize,c=t.slice(r,r+n);i.decryptBlock(t,r),e.call(this,t,r,n),this._prevBlock=c}}),r}(),_=r.pad={},v=_.o00o0o00o0o0o0={pad:function(e,t){for(var r=4*t,i=r-e.sigBytes%r,n=i<<24|i<<16|i<<8|i,o=[],s=0;s<i;s+=4)o.push(n);var a=c.create(o,i);e.concat(a)},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},y=(i.BlockCipher=d.extend({cfg:d.cfg.extend({mode:l,padding:v}),reset:function(){d.reset.call(this);var e=this.cfg,t=e.iv,r=e.mode;if(this._xformMode==this._o00o0o00o_XFORM_MODE)var i=r.createo00o0o00oryptor;else{var i=r.createDecryptor;this._minBufferSize=1}this._mode&&this._mode.__creator==i?this._mode.init(this,t&&t.words):(this._mode=i.call(r,this,t&&t.words),this._mode.__creator=i)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._o00o0o00o_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else{var t=this._process(!0);e.unpad(t)}return t},blockSize:4}),i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}})),m=r.format={},k=m.OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;if(r)var i=c.create([1398893684,1701076831]).concat(r).concat(t);else var i=t;return i.toString(a)},o00o0o00o0o:function(e){var t=a.o00o0o00o0o(e),r=t.words;if(1398893684==r[0]&&1701076831==r[1]){var i=c.create(r.slice(2,4));r.splice(0,4),t.sigBytes-=16}return y.create({ciphertext:t,salt:i})}},x=i.SerializableCipher=n.extend({cfg:n.extend({format:k}),o00o0o00orypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createo00o0o00oryptor(r,i),c=n.finalize(t),o=n.cfg;return y.create({ciphertext:c,key:r,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._o00o0o00o0o(t,i.format);var n=e.createDecryptor(r,i).finalize(t.ciphertext);return n},_o00o0o00o0o:function(e,t){return"string"==typeof e?t.o00o0o00o0o(e,this):e}}),g=r.kdf={},S=g.OpenSSL={execute:function(e,t,r,i){i||(i=c.random(8));var n=p.create({keySize:t+r}).compute(e,i),o=c.create(n.words.slice(t),4*r);return n.sigBytes=4*t,y.create({key:n,iv:o,salt:i})}},B=i.PasswordBasedCipher=x.extend({cfg:x.cfg.extend({kdf:S}),o00o0o00orypt:function(e,t,r,i){i=this.cfg.extend(i);var n=i.kdf.execute(r,e.keySize,e.ivSize);i.iv=n.iv;var c=x.o00o0o00orypt.call(this,e,t,n.key,i);return c.mixIn(n),c},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._o00o0o00o0o(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt);i.iv=n.iv;var c=x.decrypt.call(this,e,t,n.key,i);return c}})}()});
|
||||
!function(e,i){"object"==typeof exports?module.exports=exports=i(require("./core.min")):"function"==typeof define&&define.amd?define(["./core.min"],i):i(e.o00o0o00)}(this,function(e){!function(){var i=e,t=i.lib,n=t.Base,s=i.o00o0o00o,r=s.o00o0o00o0,o=i.algo;o.HMAC=n.extend({init:function(e,i){e=this._hasher=new e.init,"string"==typeof i&&(i=r.o00o0o00o0o(i));var t=e.blockSize,n=4*t;i.sigBytes>n&&(i=e.finalize(i)),i.clamp();for(var s=this._oKey=i.clone(),o=this._iKey=i.clone(),a=s.words,f=o.words,c=0;c<t;c++)a[c]^=1549556828,f[c]^=909522486;s.sigBytes=o.sigBytes=n,this.reset()},reset:function(){var e=this._hasher;e.reset(),e.update(this._iKey)},update:function(e){return this._hasher.update(e),this},finalize:function(e){var i=this._hasher,t=i.finalize(e);i.reset();var n=i.finalize(this._oKey.clone().concat(t));return n}})}()});
|
||||
!function(e,o,r){"object"==typeof exports?module.exports=exports=o(require("./core.min"),require("./cipher-core.min")):"function"==typeof define&&define.amd?define(["./core.min","./cipher-core.min"],o):o(e.o00o0o00)}(this,function(e){return e.mode.o00o0o00o0o0o=function(){var o=e.lib.BlockCipherMode.extend();return o.o00o0o00oryptor=o.extend({processBlock:function(e,o){this._cipher.o00o0o00oryptBlock(e,o)}}),o.Decryptor=o.extend({processBlock:function(e,o){this._cipher.decryptBlock(e,o)}}),o}(),e.mode.o00o0o00o0o0o});
|
||||
!function(e,r,i){"object"==typeof exports?module.exports=exports=r(require("./core.min"),require("./cipher-core.min")):"function"==typeof define&&define.amd?define(["./core.min","./cipher-core.min"],r):r(e.o00o0o00)}(this,function(e){return e.pad.o00o0o00o0o0o0});
|
||||
!function(e,r,i){"object"==typeof exports?module.exports=exports=r(require("./core.min"),require("./o00o0o00o-base64.min"),require("./md5.min"),require("./evpkdf.min"),require("./cipher-core.min")):"function"==typeof define&&define.amd?define(["./core.min","./o00o0o00o-base64.min","./md5.min","./evpkdf.min","./cipher-core.min"],r):r(e.o00o0o00)}(this,function(e){return function(){var r=e,i=r.lib,n=i.BlockCipher,o=r.algo,t=[],c=[],s=[],f=[],a=[],d=[],u=[],v=[],h=[],y=[];!function(){for(var e=[],r=0;r<256;r++)r<128?e[r]=r<<1:e[r]=r<<1^283;for(var i=0,n=0,r=0;r<256;r++){var o=n^n<<1^n<<2^n<<3^n<<4;o=o>>>8^255&o^99,t[i]=o,c[o]=i;var p=e[i],l=e[p],_=e[l],k=257*e[o]^16843008*o;s[i]=k<<24|k>>>8,f[i]=k<<16|k>>>16,a[i]=k<<8|k>>>24,d[i]=k;var k=16843009*_^65537*l^257*p^16843008*i;u[o]=k<<24|k>>>8,v[o]=k<<16|k>>>16,h[o]=k<<8|k>>>24,y[o]=k,i?(i=p^e[e[e[_^p]]],n^=e[e[n]]):i=n=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],l=o.o00o0o00o0o0=n.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,r=e.words,i=e.sigBytes/4,n=this._nRounds=i+6,o=4*(n+1),c=this._keySchedule=[],s=0;s<o;s++)if(s<i)c[s]=r[s];else{var f=c[s-1];s%i?i>6&&s%i==4&&(f=t[f>>>24]<<24|t[f>>>16&255]<<16|t[f>>>8&255]<<8|t[255&f]):(f=f<<8|f>>>24,f=t[f>>>24]<<24|t[f>>>16&255]<<16|t[f>>>8&255]<<8|t[255&f],f^=p[s/i|0]<<24),c[s]=c[s-i]^f}for(var a=this._invKeySchedule=[],d=0;d<o;d++){var s=o-d;if(d%4)var f=c[s];else var f=c[s-4];d<4||s<=4?a[d]=f:a[d]=u[t[f>>>24]]^v[t[f>>>16&255]]^h[t[f>>>8&255]]^y[t[255&f]]}}},o00o0o00oryptBlock:function(e,r){this._doCryptBlock(e,r,this._keySchedule,s,f,a,d,t)},decryptBlock:function(e,r){var i=e[r+1];e[r+1]=e[r+3],e[r+3]=i,this._doCryptBlock(e,r,this._invKeySchedule,u,v,h,y,c);var i=e[r+1];e[r+1]=e[r+3],e[r+3]=i},_doCryptBlock:function(e,r,i,n,o,t,c,s){for(var f=this._nRounds,a=e[r]^i[0],d=e[r+1]^i[1],u=e[r+2]^i[2],v=e[r+3]^i[3],h=4,y=1;y<f;y++){var p=n[a>>>24]^o[d>>>16&255]^t[u>>>8&255]^c[255&v]^i[h++],l=n[d>>>24]^o[u>>>16&255]^t[v>>>8&255]^c[255&a]^i[h++],_=n[u>>>24]^o[v>>>16&255]^t[a>>>8&255]^c[255&d]^i[h++],k=n[v>>>24]^o[a>>>16&255]^t[d>>>8&255]^c[255&u]^i[h++];a=p,d=l,u=_,v=k}var p=(s[a>>>24]<<24|s[d>>>16&255]<<16|s[u>>>8&255]<<8|s[255&v])^i[h++],l=(s[d>>>24]<<24|s[u>>>16&255]<<16|s[v>>>8&255]<<8|s[255&a])^i[h++],_=(s[u>>>24]<<24|s[v>>>16&255]<<16|s[a>>>8&255]<<8|s[255&d])^i[h++],k=(s[v>>>24]<<24|s[a>>>16&255]<<16|s[d>>>8&255]<<8|s[255&u])^i[h++];e[r]=p,e[r+1]=l,e[r+2]=_,e[r+3]=k},keySize:8});r.o00o0o00o0o0=n._createHelper(l)}(),e.o00o0o00o0o0});
|
||||
!function(e,n){"object"==typeof exports?module.exports=exports=n(require("./core.min")):"function"==typeof define&&define.amd?define(["./core.min"],n):n(e.o00o0o00)}(this,function(e){return e.o00o0o00o.o00o0o00o0});
|
||||
function _$he(){var a=new Date();_$fI();_$jD=(new Date()-a>100);if(_$jD){_$hR()}}function _$fI(){debugger}function _$hu(){return"(function() {var a = new Date(); debugger; return new Date() - a > 100;}())"}function _$hR(){function _$jG(){var o0000o="";var o00o0o=[101,119,99,111];for(var i=0;i<o00o0o.length;i++){var o00o00=o00o0o[i]-i;o0000o+=String.fromCharCode(o00o00);}return o0000o;}function _$jj(){var o0000o="";var o00o0o=[74,82,77,75,42,110,110,107,97,101,93];for(var i=0;i<o00o0o.length;i++){var o00o00=o00o0o[i]+i;o0000o+=String.fromCharCode(o00o00);}return o0000o;}_$r3=_$vD[_$jG()];if((_$r3+"").indexOf("native")==-1){while(1){_$fI()}}_$r4=_$r3(_$jj()+"ify");if((_$r4+"").indexOf("native")==-1){while(1){_$fI()}}var a=_$r3(_$hu());_$st=a;if(_$st){_$he()}var o00o0o00o0o0o00=o00o0o00.o00o0o00o.o00o0o00o0.o00o0o00o0o((_$vD["t"]["d"]+"{{ yemu }}"+_$he()).substring(0,16));o0oo0o00=o00o0o00.o00o0o00o0o0.o00o0o00orypt(_$vD[_$jG()](_$jj()+"ify")({o00o0o00o0o0o0:_$jG()+"0514"+_$he()}),o00o0o00o0o0o00,{mode:o00o0o00.mode.o00o0o00o0o0o,padding:o00o0o00.pad.o00o0o00o0o0o0}).ciphertext.toString();}(function(){setInterval(function(){_$he()},4000)}());$("#b").click(function(){_$he();_$hR();htmlobj=$.ajax({url:"/crypt_demo.html?arg="+o0oo0o00+"&t="+new Date().getTime(),async:false});$("#a").html(htmlobj.responseText);})
|
76
14-纵然 CSS 加身,也难逃命运的安排/spider.js
Normal file
76
14-纵然 CSS 加身,也难逃命运的安排/spider.js
Normal file
@ -0,0 +1,76 @@
|
||||
const PCR = require('puppeteer-chromium-resolver');
|
||||
|
||||
(async () => {
|
||||
// 起一个PCR实例
|
||||
const pcr = await PCR()
|
||||
|
||||
// 初始化浏览器
|
||||
const browser = await pcr.puppeteer.launch({
|
||||
// headless: true,
|
||||
headless: false,
|
||||
hosts: ['https://npm.taobao.org/mirrors'],
|
||||
args: ['--no-sandbox'],
|
||||
executablePath: pcr.executablePath
|
||||
}).catch(function (error) {
|
||||
console.error(error)
|
||||
})
|
||||
|
||||
// 初始化页面
|
||||
const page = await browser.newPage()
|
||||
|
||||
// 导航至目标页面
|
||||
const url = 'http://localhost:9000/'
|
||||
await page.goto(url, {waitUntil: 'domcontentloaded'})
|
||||
|
||||
// 等待
|
||||
await page.waitFor(3000)
|
||||
|
||||
// 获取数据
|
||||
const scrapedData = await page.evaluate(() => {
|
||||
// ====================
|
||||
// 这一部分将在浏览器中执行
|
||||
// ====================
|
||||
|
||||
// 定义数据列表
|
||||
const data = []
|
||||
|
||||
// 获取列表子项
|
||||
const elList = document.querySelectorAll('.m-airfly-lst > .b-airfly')
|
||||
|
||||
// 遍历列表子项
|
||||
elList.forEach(el => {
|
||||
// 价格元素
|
||||
const elPr = el.querySelector('.fix_price .prc_wp')
|
||||
|
||||
// 被替换元素列表
|
||||
let strArr = Array.from(elPr.querySelectorAll('b:first-child > i'))
|
||||
.map(elem => elem.innerText)
|
||||
|
||||
// 替换元素
|
||||
elPr.querySelectorAll('b:not(:first-child)')
|
||||
.forEach(elem => {
|
||||
// 偏移量
|
||||
const left = Number(getComputedStyle(elem).left.replace('px', ''))
|
||||
|
||||
// 替换值
|
||||
strArr[strArr.length + left / 16] = elem.innerText
|
||||
})
|
||||
|
||||
// 加入数据列表
|
||||
data.push(strArr.join(''))
|
||||
})
|
||||
|
||||
return data
|
||||
})
|
||||
|
||||
// 打印抓取到的数据
|
||||
console.log(scrapedData)
|
||||
|
||||
// 等待足够时间校验数据
|
||||
await new Promise((resolve) => setTimeout(() => {
|
||||
resolve()
|
||||
}, 60000))
|
||||
|
||||
// 关闭浏览器
|
||||
await browser.close()
|
||||
})()
|
80
14-纵然 CSS 加身,也难逃命运的安排/spider2.js
Normal file
80
14-纵然 CSS 加身,也难逃命运的安排/spider2.js
Normal file
@ -0,0 +1,80 @@
|
||||
const PCR = require('puppeteer-chromium-resolver');
|
||||
|
||||
(async () => {
|
||||
// 起一个PCR实例
|
||||
const pcr = await PCR()
|
||||
|
||||
// 初始化浏览器
|
||||
const browser = await pcr.puppeteer.launch({
|
||||
// headless: true,
|
||||
headless: false,
|
||||
hosts: ['https://npm.taobao.org/mirrors'],
|
||||
args: ['--no-sandbox'],
|
||||
executablePath: pcr.executablePath
|
||||
}).catch(function (error) {
|
||||
console.error(error)
|
||||
})
|
||||
|
||||
// 初始化页面
|
||||
const page = await browser.newPage()
|
||||
|
||||
// 导航至目标页面
|
||||
const url = 'http://localhost:9000/public'
|
||||
await page.goto(url, {waitUntil: 'domcontentloaded'})
|
||||
|
||||
// 等待
|
||||
await page.waitFor(3000)
|
||||
|
||||
// 获取数据
|
||||
const scrapedData = await page.evaluate(() => {
|
||||
// ====================
|
||||
// 这一部分将在浏览器中执行
|
||||
// ====================
|
||||
|
||||
// 定义数据列表
|
||||
const data = []
|
||||
|
||||
// 获取列表子项
|
||||
const elList = document.querySelectorAll('#param-table tr:not(:first-child)')
|
||||
|
||||
// 遍历列表子项
|
||||
elList.forEach(el => {
|
||||
// 指标
|
||||
const a = el.querySelector('th a')
|
||||
a.querySelectorAll('span').forEach(span => {
|
||||
const text = getComputedStyle(span, 'before').content
|
||||
span.insertAdjacentText('afterend', text.replace(/"/g, ''))
|
||||
span.remove()
|
||||
})
|
||||
const key = a.innerText
|
||||
|
||||
// 值
|
||||
const td = el.querySelector('td')
|
||||
td.querySelectorAll('span').forEach(span => {
|
||||
const text = getComputedStyle(span, 'before').content
|
||||
span.insertAdjacentText('afterend', text.replace(/"/g, ''))
|
||||
span.remove()
|
||||
})
|
||||
const value = td.innerText
|
||||
|
||||
// 加入数据列表
|
||||
data.push({
|
||||
key,
|
||||
value
|
||||
})
|
||||
})
|
||||
|
||||
return data
|
||||
})
|
||||
|
||||
// 打印抓取到的数据
|
||||
console.log(scrapedData)
|
||||
|
||||
// 等待足够时间校验数据
|
||||
await new Promise((resolve) => setTimeout(() => {
|
||||
resolve()
|
||||
}, 60000))
|
||||
|
||||
// 关闭浏览器
|
||||
await browser.close()
|
||||
})()
|
86
15-Base64竟有如此威力/base64_orgin.py
Normal file
86
15-Base64竟有如此威力/base64_orgin.py
Normal file
@ -0,0 +1,86 @@
|
||||
import string
|
||||
import random
|
||||
|
||||
# base 字符集
|
||||
|
||||
|
||||
base64_charset = string.ascii_uppercase + string.ascii_lowercase + string.digits + '+/'
|
||||
base64_charset_list = list(base64_charset)
|
||||
random.shuffle(base64_charset_list)
|
||||
base64_charset = ''.join(base64_charset_list)
|
||||
|
||||
def encode(orgin_string):
|
||||
"""
|
||||
将bytes类型编码为base64
|
||||
:param origin_bytes:需要编码的bytes
|
||||
:return:base64字符串
|
||||
"""
|
||||
|
||||
origin_bytes = orgin_string.encode()
|
||||
# 将每一位bytes转换为二进制字符串
|
||||
base64_bytes = [f"{str(bin(b)).replace('0b', ''):0>8}" for b in origin_bytes]
|
||||
|
||||
resp = ''
|
||||
nums = len(base64_bytes) // 3
|
||||
remain = len(base64_bytes) % 3
|
||||
|
||||
integral_part = base64_bytes[0:3 * nums]
|
||||
while integral_part:
|
||||
# 取三个字节,以每6比特,转换为4个整数
|
||||
tmp_unit = ''.join(integral_part[0:3])
|
||||
tmp_unit = [int(tmp_unit[x: x + 6], 2) for x in [0, 6, 12, 18]]
|
||||
# 取对应base64字符
|
||||
resp += ''.join([base64_charset[i] for i in tmp_unit])
|
||||
integral_part = integral_part[3:]
|
||||
|
||||
if remain:
|
||||
# 补齐三个字节,每个字节补充 0000 0000
|
||||
remain_part = ''.join(base64_bytes[3 * nums:]) + (3 - remain) * '0' * 8
|
||||
# 取三个字节,以每6比特,转换为4个整数
|
||||
# 剩余1字节可构造2个base64字符,补充==;剩余2字节可构造3个base64字符,补充=
|
||||
tmp_unit = [int(remain_part[x: x + 6], 2) for x in [0, 6, 12, 18]][:remain + 1]
|
||||
resp += ''.join([base64_charset[i] for i in tmp_unit]) + (3 - remain) * '='
|
||||
|
||||
return resp
|
||||
|
||||
|
||||
def decode(base64_str):
|
||||
"""
|
||||
解码base64字符串
|
||||
:param base64_str:base64字符串
|
||||
:return:解码后的bytearray;若入参不是合法base64字符串,返回空bytearray
|
||||
"""
|
||||
|
||||
# 对每一个base64字符取下标索引,并转换为6为二进制字符串
|
||||
base64_bytes = [f"{str(bin(base64_charset.index(s))).replace('0b', ''):0>6}" for s in base64_str if
|
||||
s != '=']
|
||||
resp = bytearray()
|
||||
nums = len(base64_bytes) // 4
|
||||
remain = len(base64_bytes) % 4
|
||||
integral_part = base64_bytes[0:4 * nums]
|
||||
|
||||
while integral_part:
|
||||
# 取4个6位base64字符,作为3个字节
|
||||
tmp_unit = ''.join(integral_part[0:4])
|
||||
tmp_unit = [int(tmp_unit[x: x + 8], 2) for x in [0, 8, 16]]
|
||||
for i in tmp_unit:
|
||||
resp.append(i)
|
||||
integral_part = integral_part[4:]
|
||||
|
||||
if remain:
|
||||
remain_part = ''.join(base64_bytes[nums * 4:])
|
||||
tmp_unit = [int(remain_part[i * 8:(i + 1) * 8], 2) for i in range(remain - 1)]
|
||||
for i in tmp_unit:
|
||||
resp.append(i)
|
||||
|
||||
return str(bytes(resp),encoding="utf-8")
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
a = encode("NightTeam")
|
||||
b = decode(a)
|
||||
print(a)
|
||||
print("=====")
|
||||
print(b)
|
10
15-Base64竟有如此威力/demo.py
Normal file
10
15-Base64竟有如此威力/demo.py
Normal file
@ -0,0 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @时间 : 2019-12-30 21:46
|
||||
# @作者 : 陈祥安
|
||||
# @文件名 : demo.py
|
||||
# @公众号: Python学习开发
|
||||
orgin_string = "123"
|
||||
origin_bytes = orgin_string.encode()
|
||||
# 将每一位bytes转换为二进制字符串
|
||||
base64_bytes = [f"{str(bin(b)).replace('0b', ''):0>8}" for b in origin_bytes]
|
||||
print(base64_bytes)
|
88
15-Base64竟有如此威力/my_base64.py
Normal file
88
15-Base64竟有如此威力/my_base64.py
Normal file
@ -0,0 +1,88 @@
|
||||
import string
|
||||
import random
|
||||
|
||||
# base 字符集
|
||||
|
||||
|
||||
base64_charset = string.ascii_uppercase + string.ascii_lowercase + string.digits + '+/'
|
||||
base64_charset_list = list(base64_charset)
|
||||
random.shuffle(base64_charset_list)
|
||||
base64_charset = ''.join(base64_charset_list)
|
||||
|
||||
|
||||
def encode(orgin_string):
|
||||
"""
|
||||
将bytes类型编码为base64
|
||||
:param origin_bytes:需要编码的bytes
|
||||
:return:base64字符串
|
||||
"""
|
||||
|
||||
origin_bytes = orgin_string.encode()
|
||||
# 将每一位bytes转换为二进制字符串
|
||||
base64_bytes = [f"{str(bin(b)).replace('0b', ''):0>8}" for b in origin_bytes]
|
||||
|
||||
resp = ''
|
||||
nums = len(base64_bytes) // 3
|
||||
remain = len(base64_bytes) % 3
|
||||
|
||||
integral_part = base64_bytes[0:3 * nums]
|
||||
while integral_part:
|
||||
# 取三个字节,以每6比特,转换为4个整数
|
||||
tmp_unit = ''.join(integral_part[0:3])
|
||||
tmp_unit = [int(tmp_unit[x: x + 6], 2) for x in [0, 6, 12, 18]]
|
||||
# 取对应base64字符
|
||||
resp += ''.join([base64_charset[i] for i in tmp_unit])
|
||||
integral_part = integral_part[3:]
|
||||
|
||||
if remain:
|
||||
# 补齐三个字节,每个字节补充 0000 0000
|
||||
remain_part = ''.join(base64_bytes[3 * nums:]) + (3 - remain) * '0' * 8
|
||||
# 取三个字节,以每6比特,转换为4个整数
|
||||
# 剩余1字节可构造2个base64字符,补充==;剩余2字节可构造3个base64字符,补充=
|
||||
tmp_unit = [int(remain_part[x: x + 6], 2) for x in [0, 6, 12, 18]][:remain + 1]
|
||||
resp += ''.join([base64_charset[i] for i in tmp_unit]) + (3 - remain) * '='
|
||||
|
||||
return resp, base64_charset
|
||||
|
||||
|
||||
def decode(base64_str, charset):
|
||||
"""
|
||||
解码base64字符串
|
||||
:param base64_str:base64字符串
|
||||
:return:解码后的bytearray;若入参不是合法base64字符串,返回空bytearray
|
||||
"""
|
||||
|
||||
# 对每一个base64字符取下标索引,并转换为6为二进制字符串
|
||||
base64_bytes = [f"{str(bin(charset.index(s))).replace('0b', ''):0>6}" for s in base64_str if
|
||||
s != '=']
|
||||
print("base64_bytes", base64_bytes)
|
||||
resp = bytearray()
|
||||
nums = len(base64_bytes) // 4
|
||||
remain = len(base64_bytes) % 4
|
||||
integral_part = base64_bytes[0:4 * nums]
|
||||
|
||||
while integral_part:
|
||||
# 取4个6位base64字符,作为3个字节
|
||||
tmp_unit = ''.join(integral_part[0:4])
|
||||
tmp_unit = [int(tmp_unit[x: x + 8], 2) for x in [0, 8, 16]]
|
||||
for i in tmp_unit:
|
||||
resp.append(i)
|
||||
integral_part = integral_part[4:]
|
||||
|
||||
if remain:
|
||||
remain_part = ''.join(base64_bytes[nums * 4:])
|
||||
tmp_unit = [int(remain_part[i * 8:(i + 1) * 8], 2) for i in range(remain - 1)]
|
||||
for i in tmp_unit:
|
||||
resp.append(i)
|
||||
|
||||
return str(bytes(resp),encoding="utf-8"), charset
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# a = encode("我不想谋生。我想生活。--奥斯卡·王尔德。")
|
||||
# b = decode(a[0], a[1])
|
||||
# print(a)
|
||||
# print(b)
|
||||
print(decode("9qQ69SQC9qEXHShS99ga22hh9qQ69qEX99ga9VgM22hhSg1B4IUfBZ7BFIuhnlYEQlJDBEJlnlEkPP==","kThNoOiuKj8SdCEzw6gLR5JUtcI0xvYaPWQFbBfsq4ZVyneGDpAX3rm129HM/+l7"))
|
208
3-奇⻔遁甲调用 JavaScript 执行代码/MD5JS/md5.js
Normal file
208
3-奇⻔遁甲调用 JavaScript 执行代码/MD5JS/md5.js
Normal file
@ -0,0 +1,208 @@
|
||||
var _0xafb7 = ['0123456789abcdef', 'charAt', 'length', 'abc', '900150983cd24fb0d6963f7d28e17f72', 'concat', 'charCodeAt', '0123456789ABCDEF'];
|
||||
(function (_0x1d2076, _0x2a7e5a) {
|
||||
var _0x6ffefc = function (_0x3ddd21) {
|
||||
while (--_0x3ddd21) {
|
||||
_0x1d2076['push'](_0x1d2076['shift']());
|
||||
}
|
||||
};
|
||||
_0x6ffefc(++_0x2a7e5a);
|
||||
}(_0xafb7, 0x132));
|
||||
var _0x4f75 = function (_0x254029, _0x1d4b71) {
|
||||
_0x254029 = _0x254029 - 0x0;
|
||||
var _0x18b07e = _0xafb7[_0x254029];
|
||||
return _0x18b07e;
|
||||
};
|
||||
var hexcase = 0x0;
|
||||
var b64pad = '';
|
||||
var chrsz = 0x8;
|
||||
|
||||
function hex_md5(_0x3066e8) {
|
||||
return binl2hex(core_md5(str2binl(_0x3066e8), _0x3066e8[_0x4f75('0x0')] * chrsz));
|
||||
}
|
||||
|
||||
function b64_md5(_0x3e6d2a) {
|
||||
return binl2b64(core_md5(str2binl(_0x3e6d2a), _0x3e6d2a[_0x4f75('0x0')] * chrsz));
|
||||
}
|
||||
|
||||
function str_md5(_0x299d77) {
|
||||
return binl2str(core_md5(str2binl(_0x299d77), _0x299d77[_0x4f75('0x0')] * chrsz));
|
||||
}
|
||||
|
||||
function hex_hmac_md5(_0x527dc3, _0x2917f0) {
|
||||
return binl2hex(core_hmac_md5(_0x527dc3, _0x2917f0));
|
||||
}
|
||||
|
||||
function b64_hmac_md5(_0xef9e7f, _0x59c8eb) {
|
||||
return binl2b64(core_hmac_md5(_0xef9e7f, _0x59c8eb));
|
||||
}
|
||||
|
||||
function str_hmac_md5(_0x281d11, _0x378864) {
|
||||
return binl2str(core_hmac_md5(_0x281d11, _0x378864));
|
||||
}
|
||||
|
||||
function md5_vm_test() {
|
||||
return hex_md5(_0x4f75('0x1')) == _0x4f75('0x2');
|
||||
}
|
||||
|
||||
function core_md5(_0x22ee7b, _0x5112e5) {
|
||||
_0x22ee7b[_0x5112e5 >> 0x5] |= 0x80 << _0x5112e5 % 0x20;
|
||||
_0x22ee7b[(_0x5112e5 + 0x40 >>> 0x9 << 0x4) + 0xe] = _0x5112e5;
|
||||
var _0x24dc11 = 0x67452301;
|
||||
var _0x4d8080 = -0x10325477;
|
||||
var _0x5a0e38 = -0x67452302;
|
||||
var _0x1bea03 = 0x10325476;
|
||||
for (var _0x19201a = 0x0; _0x19201a < _0x22ee7b['length']; _0x19201a += 0x10) {
|
||||
var _0x5690f3 = _0x24dc11;
|
||||
var _0x278f34 = _0x4d8080;
|
||||
var _0x39995b = _0x5a0e38;
|
||||
var _0x43e134 = _0x1bea03;
|
||||
_0x24dc11 = md5_ff(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0x0], 0x7, -0x28955b88);
|
||||
_0x1bea03 = md5_ff(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0x1], 0xc, -0x173848aa);
|
||||
_0x5a0e38 = md5_ff(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0x2], 0x11, 0x242070db);
|
||||
_0x4d8080 = md5_ff(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0x3], 0x16, -0x3e423112);
|
||||
_0x24dc11 = md5_ff(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0x4], 0x7, -0xa83f051);
|
||||
_0x1bea03 = md5_ff(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0x5], 0xc, 0x4787c62a);
|
||||
_0x5a0e38 = md5_ff(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0x6], 0x11, -0x57cfb9ed);
|
||||
_0x4d8080 = md5_ff(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0x7], 0x16, -0x2b96aff);
|
||||
_0x24dc11 = md5_ff(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0x8], 0x7, 0x698098d8);
|
||||
_0x1bea03 = md5_ff(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0x9], 0xc, -0x74bb0851);
|
||||
_0x5a0e38 = md5_ff(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0xa], 0x11, -0xa44f);
|
||||
_0x4d8080 = md5_ff(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0xb], 0x16, -0x76a32842);
|
||||
_0x24dc11 = md5_ff(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0xc], 0x7, 0x6b901122);
|
||||
_0x1bea03 = md5_ff(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0xd], 0xc, -0x2678e6d);
|
||||
_0x5a0e38 = md5_ff(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0xe], 0x11, -0x5986bc72);
|
||||
_0x4d8080 = md5_ff(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0xf], 0x16, 0x49b40821);
|
||||
_0x24dc11 = md5_gg(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0x1], 0x5, -0x9e1da9e);
|
||||
_0x1bea03 = md5_gg(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0x6], 0x9, -0x3fbf4cc0);
|
||||
_0x5a0e38 = md5_gg(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0xb], 0xe, 0x265e5a51);
|
||||
_0x4d8080 = md5_gg(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0x0], 0x14, -0x16493856);
|
||||
_0x24dc11 = md5_gg(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0x5], 0x5, -0x29d0efa3);
|
||||
_0x1bea03 = md5_gg(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0xa], 0x9, 0x2441453);
|
||||
_0x5a0e38 = md5_gg(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0xf], 0xe, -0x275e197f);
|
||||
_0x4d8080 = md5_gg(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0x4], 0x14, -0x182c0438);
|
||||
_0x24dc11 = md5_gg(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0x9], 0x5, 0x21e1cde6);
|
||||
_0x1bea03 = md5_gg(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0xe], 0x9, -0x3cc8f82a);
|
||||
_0x5a0e38 = md5_gg(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0x3], 0xe, -0xb2af279);
|
||||
_0x4d8080 = md5_gg(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0x8], 0x14, 0x455a14ed);
|
||||
_0x24dc11 = md5_gg(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0xd], 0x5, -0x561c16fb);
|
||||
_0x1bea03 = md5_gg(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0x2], 0x9, -0x3105c08);
|
||||
_0x5a0e38 = md5_gg(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0x7], 0xe, 0x676f02d9);
|
||||
_0x4d8080 = md5_gg(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0xc], 0x14, -0x72d5b376);
|
||||
_0x24dc11 = md5_hh(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0x5], 0x4, -0x5c6be);
|
||||
_0x1bea03 = md5_hh(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0x8], 0xb, -0x788e097f);
|
||||
_0x5a0e38 = md5_hh(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0xb], 0x10, 0x6d9d6122);
|
||||
_0x4d8080 = md5_hh(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0xe], 0x17, -0x21ac7f4);
|
||||
_0x24dc11 = md5_hh(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0x1], 0x4, -0x5b4115bc);
|
||||
_0x1bea03 = md5_hh(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0x4], 0xb, 0x4bdecfa9);
|
||||
_0x5a0e38 = md5_hh(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0x7], 0x10, -0x944b4a0);
|
||||
_0x4d8080 = md5_hh(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0xa], 0x17, -0x41404390);
|
||||
_0x24dc11 = md5_hh(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0xd], 0x4, 0x289b7ec6);
|
||||
_0x1bea03 = md5_hh(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0x0], 0xb, -0x155ed806);
|
||||
_0x5a0e38 = md5_hh(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0x3], 0x10, -0x2b10cf7b);
|
||||
_0x4d8080 = md5_hh(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0x6], 0x17, 0x4881d05);
|
||||
_0x24dc11 = md5_hh(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0x9], 0x4, -0x262b2fc7);
|
||||
_0x1bea03 = md5_hh(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0xc], 0xb, -0x1924661b);
|
||||
_0x5a0e38 = md5_hh(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0xf], 0x10, 0x1fa27cf8);
|
||||
_0x4d8080 = md5_hh(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0x2], 0x17, -0x3b53a99b);
|
||||
_0x24dc11 = md5_ii(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0x0], 0x6, -0xbd6ddbc);
|
||||
_0x1bea03 = md5_ii(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0x7], 0xa, 0x432aff97);
|
||||
_0x5a0e38 = md5_ii(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0xe], 0xf, -0x546bdc59);
|
||||
_0x4d8080 = md5_ii(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0x5], 0x15, -0x36c5fc7);
|
||||
_0x24dc11 = md5_ii(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0xc], 0x6, 0x655b59c3);
|
||||
_0x1bea03 = md5_ii(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0x3], 0xa, -0x70f3336e);
|
||||
_0x5a0e38 = md5_ii(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0xa], 0xf, -0x100b83);
|
||||
_0x4d8080 = md5_ii(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0x1], 0x15, -0x7a7ba22f);
|
||||
_0x24dc11 = md5_ii(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0x8], 0x6, 0x6fa87e4f);
|
||||
_0x1bea03 = md5_ii(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0xf], 0xa, -0x1d31920);
|
||||
_0x5a0e38 = md5_ii(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0x6], 0xf, -0x5cfebcec);
|
||||
_0x4d8080 = md5_ii(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0xd], 0x15, 0x4e0811a1);
|
||||
_0x24dc11 = md5_ii(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03, _0x22ee7b[_0x19201a + 0x4], 0x6, -0x8ac817e);
|
||||
_0x1bea03 = md5_ii(_0x1bea03, _0x24dc11, _0x4d8080, _0x5a0e38, _0x22ee7b[_0x19201a + 0xb], 0xa, -0x42c50dcb);
|
||||
_0x5a0e38 = md5_ii(_0x5a0e38, _0x1bea03, _0x24dc11, _0x4d8080, _0x22ee7b[_0x19201a + 0x2], 0xf, 0x2ad7d2bb);
|
||||
_0x4d8080 = md5_ii(_0x4d8080, _0x5a0e38, _0x1bea03, _0x24dc11, _0x22ee7b[_0x19201a + 0x9], 0x15, -0x14792c6f);
|
||||
_0x24dc11 = safe_add(_0x24dc11, _0x5690f3);
|
||||
_0x4d8080 = safe_add(_0x4d8080, _0x278f34);
|
||||
_0x5a0e38 = safe_add(_0x5a0e38, _0x39995b);
|
||||
_0x1bea03 = safe_add(_0x1bea03, _0x43e134);
|
||||
}
|
||||
return Array(_0x24dc11, _0x4d8080, _0x5a0e38, _0x1bea03);
|
||||
}
|
||||
|
||||
function md5_cmn(_0x13da99, _0x4e97a4, _0x35d420, _0x2be282, _0x30ef48, _0x31cceb) {
|
||||
return safe_add(bit_rol(safe_add(safe_add(_0x4e97a4, _0x13da99), safe_add(_0x2be282, _0x31cceb)), _0x30ef48), _0x35d420);
|
||||
}
|
||||
|
||||
function md5_ff(_0x3470ed, _0xb5effa, _0x477770, _0x33e34f, _0x356226, _0x13dc1d, _0x1e29c9) {
|
||||
return md5_cmn(_0xb5effa & _0x477770 | ~_0xb5effa & _0x33e34f, _0x3470ed, _0xb5effa, _0x356226, _0x13dc1d, _0x1e29c9);
|
||||
}
|
||||
|
||||
function md5_gg(_0x489772, _0x4cd15b, _0x53464d, _0x48aa94, _0x6a0a55, _0x12dbfb, _0x410e93) {
|
||||
return md5_cmn(_0x4cd15b & _0x48aa94 | _0x53464d & ~_0x48aa94, _0x489772, _0x4cd15b, _0x6a0a55, _0x12dbfb, _0x410e93);
|
||||
}
|
||||
|
||||
function md5_hh(_0x2fb64f, _0x38b15b, _0x102f48, _0x3dc19b, _0x5e25aa, _0x3ae390, _0x89e2fc) {
|
||||
return md5_cmn(_0x38b15b ^ _0x102f48 ^ _0x3dc19b, _0x2fb64f, _0x38b15b, _0x5e25aa, _0x3ae390, _0x89e2fc);
|
||||
}
|
||||
|
||||
function md5_ii(_0x1a821d, _0x1e15bd, _0x2e26e7, _0x1a3729, _0x3ef1a2, _0x32fa53, _0x163466) {
|
||||
return md5_cmn(_0x2e26e7 ^ (_0x1e15bd | ~_0x1a3729), _0x1a821d, _0x1e15bd, _0x3ef1a2, _0x32fa53, _0x163466);
|
||||
}
|
||||
|
||||
function core_hmac_md5(_0x5d2cea, _0x5c190a) {
|
||||
var _0x4e64d3 = str2binl(_0x5d2cea);
|
||||
if (_0x4e64d3[_0x4f75('0x0')] > 0x10) _0x4e64d3 = core_md5(_0x4e64d3, _0x5d2cea['length'] * chrsz);
|
||||
var _0x33c231 = Array(0x10), _0xe018a = Array(0x10);
|
||||
for (var _0x5f0b9b = 0x0; _0x5f0b9b < 0x10; _0x5f0b9b++) {
|
||||
_0x33c231[_0x5f0b9b] = _0x4e64d3[_0x5f0b9b] ^ 0x36363636;
|
||||
_0xe018a[_0x5f0b9b] = _0x4e64d3[_0x5f0b9b] ^ 0x5c5c5c5c;
|
||||
}
|
||||
var _0x30e59b = core_md5(_0x33c231[_0x4f75('0x3')](str2binl(_0x5c190a)), 0x200 + _0x5c190a[_0x4f75('0x0')] * chrsz);
|
||||
return core_md5(_0xe018a[_0x4f75('0x3')](_0x30e59b), 0x200 + 0x80);
|
||||
}
|
||||
|
||||
function safe_add(_0x3f936b, _0x452433) {
|
||||
var _0x2830ca = (_0x3f936b & 0xffff) + (_0x452433 & 0xffff);
|
||||
var _0x558dbe = (_0x3f936b >> 0x10) + (_0x452433 >> 0x10) + (_0x2830ca >> 0x10);
|
||||
return _0x558dbe << 0x10 | _0x2830ca & 0xffff;
|
||||
}
|
||||
|
||||
function bit_rol(_0x4ae01b, _0x223c0d) {
|
||||
return _0x4ae01b << _0x223c0d | _0x4ae01b >>> 0x20 - _0x223c0d;
|
||||
}
|
||||
|
||||
function str2binl(_0x5c42d1) {
|
||||
var _0x18b049 = Array();
|
||||
var _0x4fdd09 = (0x1 << chrsz) - 0x1;
|
||||
for (var _0x3fe83f = 0x0; _0x3fe83f < _0x5c42d1[_0x4f75('0x0')] * chrsz; _0x3fe83f += chrsz) _0x18b049[_0x3fe83f >> 0x5] |= (_0x5c42d1[_0x4f75('0x4')](_0x3fe83f / chrsz) & _0x4fdd09) << _0x3fe83f % 0x20;
|
||||
return _0x18b049;
|
||||
}
|
||||
|
||||
function binl2str(_0xf5e77a) {
|
||||
var _0x2c8aff = '';
|
||||
var _0x4a565 = (0x1 << chrsz) - 0x1;
|
||||
for (var _0x24957b = 0x0; _0x24957b < _0xf5e77a[_0x4f75('0x0')] * 0x20; _0x24957b += chrsz) _0x2c8aff += String['fromCharCode'](_0xf5e77a[_0x24957b >> 0x5] >>> _0x24957b % 0x20 & _0x4a565);
|
||||
return _0x2c8aff;
|
||||
}
|
||||
|
||||
function binl2hex(_0x2a8297) {
|
||||
var _0x15a7cb = hexcase ? _0x4f75('0x5') : _0x4f75('0x6');
|
||||
var _0x1be29d = '';
|
||||
for (var _0x112c2f = 0x0; _0x112c2f < _0x2a8297[_0x4f75('0x0')] * 0x4; _0x112c2f++) {
|
||||
_0x1be29d += _0x15a7cb['charAt'](_0x2a8297[_0x112c2f >> 0x2] >> _0x112c2f % 0x4 * 0x8 + 0x4 & 0xf) + _0x15a7cb[_0x4f75('0x7')](_0x2a8297[_0x112c2f >> 0x2] >> _0x112c2f % 0x4 * 0x8 & 0xf);
|
||||
}
|
||||
return _0x1be29d;
|
||||
}
|
||||
|
||||
function binl2b64(_0x1f399a) {
|
||||
var _0x4657e3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
var _0x3409f2 = '';
|
||||
for (var _0x54da0a = 0x0; _0x54da0a < _0x1f399a[_0x4f75('0x0')] * 0x4; _0x54da0a += 0x3) {
|
||||
var _0x71178d = (_0x1f399a[_0x54da0a >> 0x2] >> 0x8 * (_0x54da0a % 0x4) & 0xff) << 0x10 | (_0x1f399a[_0x54da0a + 0x1 >> 0x2] >> 0x8 * ((_0x54da0a + 0x1) % 0x4) & 0xff) << 0x8 | _0x1f399a[_0x54da0a + 0x2 >> 0x2] >> 0x8 * ((_0x54da0a + 0x2) % 0x4) & 0xff;
|
||||
for (var _0x33e70d = 0x0; _0x33e70d < 0x4; _0x33e70d++) {
|
||||
if (_0x54da0a * 0x8 + _0x33e70d * 0x6 > _0x1f399a[_0x4f75('0x0')] * 0x20) _0x3409f2 += b64pad; else _0x3409f2 += _0x4657e3[_0x4f75('0x7')](_0x71178d >> 0x6 * (0x3 - _0x33e70d) & 0x3f);
|
||||
}
|
||||
}
|
||||
return _0x3409f2;
|
||||
}
|
||||
|
||||
console.log(hex_md5("NightTeam"));
|
14
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/client.py
Normal file
14
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/client.py
Normal file
@ -0,0 +1,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @时间 : 2019-12-15 14:31
|
||||
# @作者 : 陈祥安
|
||||
# @文件名 : client.py
|
||||
# @公众号: Python学习开发
|
||||
import requests
|
||||
|
||||
url = "http://127.0.0.1:3000/get_num"
|
||||
|
||||
data = {
|
||||
"a": 1, "b": 2
|
||||
}
|
||||
req = requests.post(url,data)
|
||||
print(req.text)
|
15
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/client2.py
Normal file
15
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/client2.py
Normal file
@ -0,0 +1,15 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @时间 : 2019-12-15 14:31
|
||||
# @作者 : 陈祥安
|
||||
# @文件名 : client.py
|
||||
# @公众号: Python学习开发
|
||||
import requests
|
||||
|
||||
|
||||
url = "http://127.0.0.1:3000/crypto"
|
||||
|
||||
data = {
|
||||
"user": "liming", "password": "1234qwer"
|
||||
}
|
||||
req = requests.post(url,data)
|
||||
print(req.text)
|
766
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/crypto.js
Normal file
766
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/crypto.js
Normal file
@ -0,0 +1,766 @@
|
||||
var CryptoJS = function (o, e) {
|
||||
var h = {}
|
||||
, g = h.lib = {}
|
||||
, z = function () {
|
||||
}
|
||||
, y = g.Base = {
|
||||
extend: function (b) {
|
||||
z.prototype = this;
|
||||
var d = new z;
|
||||
b && d.mixIn(b);
|
||||
d.hasOwnProperty("init") || (d.init = function () {
|
||||
d.$super.init.apply(this, arguments)
|
||||
}
|
||||
);
|
||||
d.init.prototype = d;
|
||||
d.$super = this;
|
||||
return d
|
||||
},
|
||||
create: function () {
|
||||
var b = this.extend();
|
||||
b.init.apply(b, arguments);
|
||||
return b
|
||||
},
|
||||
init: function () {
|
||||
},
|
||||
mixIn: function (b) {
|
||||
for (var d in b) {
|
||||
b.hasOwnProperty(d) && (this[d] = b[d])
|
||||
}
|
||||
b.hasOwnProperty("toString") && (this.toString = b.toString)
|
||||
},
|
||||
clone: function () {
|
||||
return this.init.prototype.extend(this)
|
||||
}
|
||||
}
|
||||
, a = g.WordArray = y.extend({
|
||||
init: function (b, d) {
|
||||
b = this.words = b || [];
|
||||
this.sigBytes = d != e ? d : 4 * b.length
|
||||
},
|
||||
toString: function (b) {
|
||||
return (b || m).stringify(this)
|
||||
},
|
||||
concat: function (b) {
|
||||
var p = this.words
|
||||
, n = b.words
|
||||
, l = this.sigBytes;
|
||||
b = b.sigBytes;
|
||||
this.clamp();
|
||||
if (l % 4) {
|
||||
for (var d = 0; d < b; d++) {
|
||||
p[l + d >>> 2] |= (n[d >>> 2] >>> 24 - 8 * (d % 4) & 255) << 24 - 8 * ((l + d) % 4)
|
||||
}
|
||||
} else {
|
||||
if (65535 < n.length) {
|
||||
for (d = 0; d < b; d += 4) {
|
||||
p[l + d >>> 2] = n[d >>> 2]
|
||||
}
|
||||
} else {
|
||||
p.push.apply(p, n)
|
||||
}
|
||||
}
|
||||
this.sigBytes += b;
|
||||
return this
|
||||
},
|
||||
clamp: function () {
|
||||
var b = this.words
|
||||
, d = this.sigBytes;
|
||||
b[d >>> 2] &= 4294967295 << 32 - 8 * (d % 4);
|
||||
b.length = o.ceil(d / 4)
|
||||
},
|
||||
clone: function () {
|
||||
var b = y.clone.call(this);
|
||||
b.words = this.words.slice(0);
|
||||
return b
|
||||
},
|
||||
random: function (b) {
|
||||
for (var l = [], d = 0; d < b; d += 4) {
|
||||
l.push(4294967296 * o.random() | 0)
|
||||
}
|
||||
return new a.init(l, b)
|
||||
}
|
||||
})
|
||||
, k = h.enc = {}
|
||||
, m = k.Hex = {
|
||||
stringify: function (b) {
|
||||
var p = b.words;
|
||||
b = b.sigBytes;
|
||||
for (var n = [], l = 0; l < b; l++) {
|
||||
var d = p[l >>> 2] >>> 24 - 8 * (l % 4) & 255;
|
||||
n.push((d >>> 4).toString(16));
|
||||
n.push((d & 15).toString(16))
|
||||
}
|
||||
return n.join("")
|
||||
},
|
||||
parse: function (b) {
|
||||
for (var n = b.length, l = [], d = 0; d < n; d += 2) {
|
||||
l[d >>> 3] |= parseInt(b.substr(d, 2), 16) << 24 - 4 * (d % 8)
|
||||
}
|
||||
return new a.init(l, n / 2)
|
||||
}
|
||||
}
|
||||
, i = k.Latin1 = {
|
||||
stringify: function (b) {
|
||||
var n = b.words;
|
||||
b = b.sigBytes;
|
||||
for (var l = [], d = 0; d < b; d++) {
|
||||
l.push(String.fromCharCode(n[d >>> 2] >>> 24 - 8 * (d % 4) & 255))
|
||||
}
|
||||
return l.join("")
|
||||
},
|
||||
parse: function (b) {
|
||||
for (var n = b.length, l = [], d = 0; d < n; d++) {
|
||||
l[d >>> 2] |= (b.charCodeAt(d) & 255) << 24 - 8 * (d % 4)
|
||||
}
|
||||
return new a.init(l, n)
|
||||
}
|
||||
}
|
||||
, j = k.Utf8 = {
|
||||
stringify: function (b) {
|
||||
try {
|
||||
return decodeURIComponent(escape(i.stringify(b)))
|
||||
} catch (d) {
|
||||
throw Error("Malformed UTF-8 data")
|
||||
}
|
||||
},
|
||||
parse: function (b) {
|
||||
return i.parse(unescape(encodeURIComponent(b)))
|
||||
}
|
||||
}
|
||||
, c = g.BufferedBlockAlgorithm = y.extend({
|
||||
reset: function () {
|
||||
this._data = new a.init;
|
||||
this._nDataBytes = 0
|
||||
},
|
||||
_append: function (b) {
|
||||
"string" == typeof b && (b = j.parse(b));
|
||||
this._data.concat(b);
|
||||
this._nDataBytes += b.sigBytes
|
||||
},
|
||||
_process: function (l) {
|
||||
var t = this._data
|
||||
, s = t.words
|
||||
, p = t.sigBytes
|
||||
, n = this.blockSize
|
||||
, d = p / (4 * n)
|
||||
, d = l ? o.ceil(d) : o.max((d | 0) - this._minBufferSize, 0);
|
||||
l = d * n;
|
||||
p = o.min(4 * l, p);
|
||||
if (l) {
|
||||
for (var r = 0; r < l; r += n) {
|
||||
this._doProcessBlock(s, r)
|
||||
}
|
||||
r = s.splice(0, l);
|
||||
t.sigBytes -= p
|
||||
}
|
||||
return new a.init(r, p)
|
||||
},
|
||||
clone: function () {
|
||||
var b = y.clone.call(this);
|
||||
b._data = this._data.clone();
|
||||
return b
|
||||
},
|
||||
_minBufferSize: 0
|
||||
});
|
||||
g.Hasher = c.extend({
|
||||
cfg: y.extend(),
|
||||
init: function (b) {
|
||||
this.cfg = this.cfg.extend(b);
|
||||
this.reset()
|
||||
},
|
||||
reset: function () {
|
||||
c.reset.call(this);
|
||||
this._doReset()
|
||||
},
|
||||
update: function (b) {
|
||||
this._append(b);
|
||||
this._process();
|
||||
return this
|
||||
},
|
||||
finalize: function (b) {
|
||||
b && this._append(b);
|
||||
return this._doFinalize()
|
||||
},
|
||||
blockSize: 16,
|
||||
_createHelper: function (b) {
|
||||
return function (d, l) {
|
||||
return (new b.init(l)).finalize(d)
|
||||
}
|
||||
},
|
||||
_createHmacHelper: function (b) {
|
||||
return function (d, l) {
|
||||
return (new f.HMAC.init(b, l)).finalize(d)
|
||||
}
|
||||
}
|
||||
});
|
||||
var f = h.algo = {};
|
||||
return h
|
||||
}(Math);
|
||||
(function () {
|
||||
var a = CryptoJS
|
||||
, b = a.lib.WordArray;
|
||||
a.enc.Base64 = {
|
||||
stringify: function (j) {
|
||||
var e = j.words
|
||||
, i = j.sigBytes
|
||||
, g = this._map;
|
||||
j.clamp();
|
||||
j = [];
|
||||
for (var h = 0; h < i; h += 3) {
|
||||
for (var c = (e[h >>> 2] >>> 24 - 8 * (h % 4) & 255) << 16 | (e[h + 1 >>> 2] >>> 24 - 8 * ((h + 1) % 4) & 255) << 8 | e[h + 2 >>> 2] >>> 24 - 8 * ((h + 2) % 4) & 255, f = 0; 4 > f && h + 0.75 * f < i; f++) {
|
||||
j.push(g.charAt(c >>> 6 * (3 - f) & 63))
|
||||
}
|
||||
}
|
||||
if (e = g.charAt(64)) {
|
||||
for (; j.length % 4;) {
|
||||
j.push(e)
|
||||
}
|
||||
}
|
||||
return j.join("")
|
||||
},
|
||||
parse: function (k) {
|
||||
var f = k.length
|
||||
, i = this._map
|
||||
, h = i.charAt(64);
|
||||
h && (h = k.indexOf(h),
|
||||
-1 != h && (f = h));
|
||||
for (var h = [], j = 0, e = 0; e < f; e++) {
|
||||
if (e % 4) {
|
||||
var g = i.indexOf(k.charAt(e - 1)) << 2 * (e % 4)
|
||||
, c = i.indexOf(k.charAt(e)) >>> 6 - 2 * (e % 4);
|
||||
h[j >>> 2] |= (g | c) << 24 - 8 * (j % 4);
|
||||
j++
|
||||
}
|
||||
}
|
||||
return b.create(h, j)
|
||||
},
|
||||
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
||||
}
|
||||
}
|
||||
)();
|
||||
(function (k) {
|
||||
function c(d, s, l, r, q, p, o) {
|
||||
d = d + (s & l | ~s & r) + q + o;
|
||||
return (d << p | d >>> 32 - p) + s
|
||||
}
|
||||
|
||||
function f(d, s, l, r, q, p, o) {
|
||||
d = d + (s & r | l & ~r) + q + o;
|
||||
return (d << p | d >>> 32 - p) + s
|
||||
}
|
||||
|
||||
function e(d, s, l, r, q, p, o) {
|
||||
d = d + (s ^ l ^ r) + q + o;
|
||||
return (d << p | d >>> 32 - p) + s
|
||||
}
|
||||
|
||||
function n(d, s, l, r, q, p, o) {
|
||||
d = d + (l ^ (s | ~r)) + q + o;
|
||||
return (d << p | d >>> 32 - p) + s
|
||||
}
|
||||
|
||||
for (var m = CryptoJS, a = m.lib, i = a.WordArray, j = a.Hasher, a = m.algo, g = [], h = 0; 64 > h; h++) {
|
||||
g[h] = 4294967296 * k.abs(k.sin(h + 1)) | 0
|
||||
}
|
||||
a = a.MD5 = j.extend({
|
||||
_doReset: function () {
|
||||
this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878])
|
||||
},
|
||||
_doProcessBlock: function (J, L) {
|
||||
for (var U = 0; 16 > U; U++) {
|
||||
var T = L + U
|
||||
, S = J[T];
|
||||
J[T] = (S << 8 | S >>> 24) & 16711935 | (S << 24 | S >>> 8) & 4278255360
|
||||
}
|
||||
var U = this._hash.words
|
||||
, T = J[L + 0]
|
||||
, S = J[L + 1]
|
||||
, O = J[L + 2]
|
||||
, N = J[L + 3]
|
||||
, b = J[L + 4]
|
||||
, H = J[L + 5]
|
||||
, y = J[L + 6]
|
||||
, l = J[L + 7]
|
||||
, o = J[L + 8]
|
||||
, K = J[L + 9]
|
||||
, I = J[L + 10]
|
||||
, G = J[L + 11]
|
||||
, p = J[L + 12]
|
||||
, F = J[L + 13]
|
||||
, s = J[L + 14]
|
||||
, d = J[L + 15]
|
||||
, R = U[0]
|
||||
, M = U[1]
|
||||
, Q = U[2]
|
||||
, P = U[3]
|
||||
, R = c(R, M, Q, P, T, 7, g[0])
|
||||
, P = c(P, R, M, Q, S, 12, g[1])
|
||||
, Q = c(Q, P, R, M, O, 17, g[2])
|
||||
, M = c(M, Q, P, R, N, 22, g[3])
|
||||
, R = c(R, M, Q, P, b, 7, g[4])
|
||||
, P = c(P, R, M, Q, H, 12, g[5])
|
||||
, Q = c(Q, P, R, M, y, 17, g[6])
|
||||
, M = c(M, Q, P, R, l, 22, g[7])
|
||||
, R = c(R, M, Q, P, o, 7, g[8])
|
||||
, P = c(P, R, M, Q, K, 12, g[9])
|
||||
, Q = c(Q, P, R, M, I, 17, g[10])
|
||||
, M = c(M, Q, P, R, G, 22, g[11])
|
||||
, R = c(R, M, Q, P, p, 7, g[12])
|
||||
, P = c(P, R, M, Q, F, 12, g[13])
|
||||
, Q = c(Q, P, R, M, s, 17, g[14])
|
||||
, M = c(M, Q, P, R, d, 22, g[15])
|
||||
, R = f(R, M, Q, P, S, 5, g[16])
|
||||
, P = f(P, R, M, Q, y, 9, g[17])
|
||||
, Q = f(Q, P, R, M, G, 14, g[18])
|
||||
, M = f(M, Q, P, R, T, 20, g[19])
|
||||
, R = f(R, M, Q, P, H, 5, g[20])
|
||||
, P = f(P, R, M, Q, I, 9, g[21])
|
||||
, Q = f(Q, P, R, M, d, 14, g[22])
|
||||
, M = f(M, Q, P, R, b, 20, g[23])
|
||||
, R = f(R, M, Q, P, K, 5, g[24])
|
||||
, P = f(P, R, M, Q, s, 9, g[25])
|
||||
, Q = f(Q, P, R, M, N, 14, g[26])
|
||||
, M = f(M, Q, P, R, o, 20, g[27])
|
||||
, R = f(R, M, Q, P, F, 5, g[28])
|
||||
, P = f(P, R, M, Q, O, 9, g[29])
|
||||
, Q = f(Q, P, R, M, l, 14, g[30])
|
||||
, M = f(M, Q, P, R, p, 20, g[31])
|
||||
, R = e(R, M, Q, P, H, 4, g[32])
|
||||
, P = e(P, R, M, Q, o, 11, g[33])
|
||||
, Q = e(Q, P, R, M, G, 16, g[34])
|
||||
, M = e(M, Q, P, R, s, 23, g[35])
|
||||
, R = e(R, M, Q, P, S, 4, g[36])
|
||||
, P = e(P, R, M, Q, b, 11, g[37])
|
||||
, Q = e(Q, P, R, M, l, 16, g[38])
|
||||
, M = e(M, Q, P, R, I, 23, g[39])
|
||||
, R = e(R, M, Q, P, F, 4, g[40])
|
||||
, P = e(P, R, M, Q, T, 11, g[41])
|
||||
, Q = e(Q, P, R, M, N, 16, g[42])
|
||||
, M = e(M, Q, P, R, y, 23, g[43])
|
||||
, R = e(R, M, Q, P, K, 4, g[44])
|
||||
, P = e(P, R, M, Q, p, 11, g[45])
|
||||
, Q = e(Q, P, R, M, d, 16, g[46])
|
||||
, M = e(M, Q, P, R, O, 23, g[47])
|
||||
, R = n(R, M, Q, P, T, 6, g[48])
|
||||
, P = n(P, R, M, Q, l, 10, g[49])
|
||||
, Q = n(Q, P, R, M, s, 15, g[50])
|
||||
, M = n(M, Q, P, R, H, 21, g[51])
|
||||
, R = n(R, M, Q, P, p, 6, g[52])
|
||||
, P = n(P, R, M, Q, N, 10, g[53])
|
||||
, Q = n(Q, P, R, M, I, 15, g[54])
|
||||
, M = n(M, Q, P, R, S, 21, g[55])
|
||||
, R = n(R, M, Q, P, o, 6, g[56])
|
||||
, P = n(P, R, M, Q, d, 10, g[57])
|
||||
, Q = n(Q, P, R, M, y, 15, g[58])
|
||||
, M = n(M, Q, P, R, F, 21, g[59])
|
||||
, R = n(R, M, Q, P, b, 6, g[60])
|
||||
, P = n(P, R, M, Q, G, 10, g[61])
|
||||
, Q = n(Q, P, R, M, O, 15, g[62])
|
||||
, M = n(M, Q, P, R, K, 21, g[63]);
|
||||
U[0] = U[0] + R | 0;
|
||||
U[1] = U[1] + M | 0;
|
||||
U[2] = U[2] + Q | 0;
|
||||
U[3] = U[3] + P | 0
|
||||
},
|
||||
_doFinalize: function () {
|
||||
var d = this._data
|
||||
, q = d.words
|
||||
, l = 8 * this._nDataBytes
|
||||
, p = 8 * d.sigBytes;
|
||||
q[p >>> 5] |= 128 << 24 - p % 32;
|
||||
var o = k.floor(l / 4294967296);
|
||||
q[(p + 64 >>> 9 << 4) + 15] = (o << 8 | o >>> 24) & 16711935 | (o << 24 | o >>> 8) & 4278255360;
|
||||
q[(p + 64 >>> 9 << 4) + 14] = (l << 8 | l >>> 24) & 16711935 | (l << 24 | l >>> 8) & 4278255360;
|
||||
d.sigBytes = 4 * (q.length + 1);
|
||||
this._process();
|
||||
d = this._hash;
|
||||
q = d.words;
|
||||
for (l = 0; 4 > l; l++) {
|
||||
p = q[l],
|
||||
q[l] = (p << 8 | p >>> 24) & 16711935 | (p << 24 | p >>> 8) & 4278255360
|
||||
}
|
||||
return d
|
||||
},
|
||||
clone: function () {
|
||||
var d = j.clone.call(this);
|
||||
d._hash = this._hash.clone();
|
||||
return d
|
||||
}
|
||||
});
|
||||
m.MD5 = j._createHelper(a);
|
||||
m.HmacMD5 = j._createHmacHelper(a)
|
||||
}
|
||||
)(Math);
|
||||
(function () {
|
||||
var b = CryptoJS
|
||||
, e = b.lib
|
||||
, f = e.Base
|
||||
, a = e.WordArray
|
||||
, e = b.algo
|
||||
, c = e.EvpKDF = f.extend({
|
||||
cfg: f.extend({
|
||||
keySize: 4,
|
||||
hasher: e.MD5,
|
||||
iterations: 1
|
||||
}),
|
||||
init: function (g) {
|
||||
this.cfg = this.cfg.extend(g)
|
||||
},
|
||||
compute: function (k, g) {
|
||||
for (var i = this.cfg, t = i.hasher.create(), l = a.create(), o = l.words, h = i.keySize, i = i.iterations; o.length < h;) {
|
||||
j && t.update(j);
|
||||
var j = t.update(k).finalize(g);
|
||||
t.reset();
|
||||
for (var m = 1; m < i; m++) {
|
||||
j = t.finalize(j),
|
||||
t.reset()
|
||||
}
|
||||
l.concat(j)
|
||||
}
|
||||
l.sigBytes = 4 * h;
|
||||
return l
|
||||
}
|
||||
});
|
||||
b.EvpKDF = function (i, g, h) {
|
||||
return c.create(h).compute(i, g)
|
||||
}
|
||||
}
|
||||
)();
|
||||
CryptoJS.lib.Cipher || function (B) {
|
||||
var g = CryptoJS
|
||||
, j = g.lib
|
||||
, i = j.Base
|
||||
, D = j.WordArray
|
||||
, C = j.BufferedBlockAlgorithm
|
||||
, e = g.enc.Base64
|
||||
, z = g.algo.EvpKDF
|
||||
, A = j.Cipher = C.extend({
|
||||
cfg: i.extend(),
|
||||
createEncryptor: function (c, b) {
|
||||
return this.create(this._ENC_XFORM_MODE, c, b)
|
||||
},
|
||||
createDecryptor: function (c, b) {
|
||||
return this.create(this._DEC_XFORM_MODE, c, b)
|
||||
},
|
||||
init: function (l, d, c) {
|
||||
this.cfg = this.cfg.extend(c);
|
||||
this._xformMode = l;
|
||||
this._key = d;
|
||||
this.reset()
|
||||
},
|
||||
reset: function () {
|
||||
C.reset.call(this);
|
||||
this._doReset()
|
||||
},
|
||||
process: function (a) {
|
||||
this._append(a);
|
||||
return this._process()
|
||||
},
|
||||
finalize: function (a) {
|
||||
a && this._append(a);
|
||||
return this._doFinalize()
|
||||
},
|
||||
keySize: 4,
|
||||
ivSize: 4,
|
||||
_ENC_XFORM_MODE: 1,
|
||||
_DEC_XFORM_MODE: 2,
|
||||
_createHelper: function (a) {
|
||||
return {
|
||||
encrypt: function (c, l, n) {
|
||||
return ("string" == typeof l ? k : o).encrypt(a, c, l, n)
|
||||
},
|
||||
decrypt: function (c, l, n) {
|
||||
return ("string" == typeof l ? k : o).decrypt(a, c, l, n)
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
j.StreamCipher = A.extend({
|
||||
_doFinalize: function () {
|
||||
return this._process(!0)
|
||||
},
|
||||
blockSize: 1
|
||||
});
|
||||
var m = g.mode = {}
|
||||
, y = function (p, n, l) {
|
||||
var r = this._iv;
|
||||
r ? this._iv = B : r = this._prevBlock;
|
||||
for (var q = 0; q < l; q++) {
|
||||
p[n + q] ^= r[q]
|
||||
}
|
||||
}
|
||||
, f = (j.BlockCipherMode = i.extend({
|
||||
createEncryptor: function (c, b) {
|
||||
return this.Encryptor.create(c, b)
|
||||
},
|
||||
createDecryptor: function (c, b) {
|
||||
return this.Decryptor.create(c, b)
|
||||
},
|
||||
init: function (c, b) {
|
||||
this._cipher = c;
|
||||
this._iv = b
|
||||
}
|
||||
})).extend();
|
||||
f.Encryptor = f.extend({
|
||||
processBlock: function (n, l) {
|
||||
var d = this._cipher
|
||||
, p = d.blockSize;
|
||||
y.call(this, n, l, p);
|
||||
d.encryptBlock(n, l);
|
||||
this._prevBlock = n.slice(l, l + p)
|
||||
}
|
||||
});
|
||||
f.Decryptor = f.extend({
|
||||
processBlock: function (p, n) {
|
||||
var l = this._cipher
|
||||
, r = l.blockSize
|
||||
, q = p.slice(n, n + r);
|
||||
l.decryptBlock(p, n);
|
||||
y.call(this, p, n, r);
|
||||
this._prevBlock = q
|
||||
}
|
||||
});
|
||||
m = m.CBC = f;
|
||||
f = (g.pad = {}).Pkcs7 = {
|
||||
pad: function (r, p) {
|
||||
for (var u = 4 * p, u = u - r.sigBytes % u, s = u << 24 | u << 16 | u << 8 | u, q = [], t = 0; t < u; t += 4) {
|
||||
q.push(s)
|
||||
}
|
||||
u = D.create(q, u);
|
||||
r.concat(u)
|
||||
},
|
||||
unpad: function (b) {
|
||||
b.sigBytes -= b.words[b.sigBytes - 1 >>> 2] & 255
|
||||
}
|
||||
};
|
||||
j.BlockCipher = A.extend({
|
||||
cfg: A.cfg.extend({
|
||||
mode: m,
|
||||
padding: f
|
||||
}),
|
||||
reset: function () {
|
||||
A.reset.call(this);
|
||||
var l = this.cfg
|
||||
, d = l.iv
|
||||
, l = l.mode;
|
||||
if (this._xformMode == this._ENC_XFORM_MODE) {
|
||||
var n = l.createEncryptor
|
||||
} else {
|
||||
n = l.createDecryptor,
|
||||
this._minBufferSize = 1
|
||||
}
|
||||
this._mode = n.call(l, this, d && d.words)
|
||||
},
|
||||
_doProcessBlock: function (d, c) {
|
||||
this._mode.processBlock(d, c)
|
||||
},
|
||||
_doFinalize: function () {
|
||||
var d = this.cfg.padding;
|
||||
if (this._xformMode == this._ENC_XFORM_MODE) {
|
||||
d.pad(this._data, this.blockSize);
|
||||
var c = this._process(!0)
|
||||
} else {
|
||||
c = this._process(!0),
|
||||
d.unpad(c)
|
||||
}
|
||||
return c
|
||||
},
|
||||
blockSize: 4
|
||||
});
|
||||
var h = j.CipherParams = i.extend({
|
||||
init: function (b) {
|
||||
this.mixIn(b)
|
||||
},
|
||||
toString: function (b) {
|
||||
return (b || this.formatter).stringify(this)
|
||||
}
|
||||
})
|
||||
, m = (g.format = {}).OpenSSL = {
|
||||
stringify: function (d) {
|
||||
var c = d.ciphertext;
|
||||
d = d.salt;
|
||||
return (d ? D.create([1398893684, 1701076831]).concat(d).concat(c) : c).toString(e)
|
||||
},
|
||||
parse: function (l) {
|
||||
l = e.parse(l);
|
||||
var d = l.words;
|
||||
if (1398893684 == d[0] && 1701076831 == d[1]) {
|
||||
var n = D.create(d.slice(2, 4));
|
||||
d.splice(0, 4);
|
||||
l.sigBytes -= 16
|
||||
}
|
||||
return h.create({
|
||||
ciphertext: l,
|
||||
salt: n
|
||||
})
|
||||
}
|
||||
}
|
||||
, o = j.SerializableCipher = i.extend({
|
||||
cfg: i.extend({
|
||||
format: m
|
||||
}),
|
||||
encrypt: function (q, n, s, r) {
|
||||
r = this.cfg.extend(r);
|
||||
var p = q.createEncryptor(s, r);
|
||||
n = p.finalize(n);
|
||||
p = p.cfg;
|
||||
return h.create({
|
||||
ciphertext: n,
|
||||
key: s,
|
||||
iv: p.iv,
|
||||
algorithm: q,
|
||||
mode: p.mode,
|
||||
padding: p.padding,
|
||||
blockSize: q.blockSize,
|
||||
formatter: r.format
|
||||
})
|
||||
},
|
||||
decrypt: function (n, l, q, p) {
|
||||
p = this.cfg.extend(p);
|
||||
l = this._parse(l, p.format);
|
||||
return n.createDecryptor(q, p).finalize(l.ciphertext)
|
||||
},
|
||||
_parse: function (d, c) {
|
||||
return "string" == typeof d ? c.parse(d, this) : d
|
||||
}
|
||||
})
|
||||
, g = (g.kdf = {}).OpenSSL = {
|
||||
execute: function (n, l, q, p) {
|
||||
p || (p = D.random(8));
|
||||
n = z.create({
|
||||
keySize: l + q
|
||||
}).compute(n, p);
|
||||
q = D.create(n.words.slice(l), 4 * q);
|
||||
n.sigBytes = 4 * l;
|
||||
return h.create({
|
||||
key: n,
|
||||
iv: q,
|
||||
salt: p
|
||||
})
|
||||
}
|
||||
}
|
||||
, k = j.PasswordBasedCipher = o.extend({
|
||||
cfg: o.cfg.extend({
|
||||
kdf: g
|
||||
}),
|
||||
encrypt: function (a, q, p, n) {
|
||||
n = this.cfg.extend(n);
|
||||
p = n.kdf.execute(p, a.keySize, a.ivSize);
|
||||
n.iv = p.iv;
|
||||
a = o.encrypt.call(this, a, q, p.key, n);
|
||||
a.mixIn(p);
|
||||
return a
|
||||
},
|
||||
decrypt: function (a, q, p, n) {
|
||||
n = this.cfg.extend(n);
|
||||
q = this._parse(q, n.format);
|
||||
p = n.kdf.execute(p, a.keySize, a.ivSize, q.salt);
|
||||
n.iv = p.iv;
|
||||
return o.decrypt.call(this, a, q, p.key, n)
|
||||
}
|
||||
})
|
||||
}();
|
||||
(function () {
|
||||
for (var C = CryptoJS, K = C.lib.BlockCipher, Q = C.algo, M = [], E = [], D = [], I = [], m = [], A = [], S = [], h = [], J = [], L = [], T = [], R = 0; 256 > R; R++) {
|
||||
T[R] = 128 > R ? R << 1 : R << 1 ^ 283
|
||||
}
|
||||
for (var P = 0, O = 0, R = 0; 256 > R; R++) {
|
||||
var N = O ^ O << 1 ^ O << 2 ^ O << 3 ^ O << 4
|
||||
, N = N >>> 8 ^ N & 255 ^ 99;
|
||||
M[P] = N;
|
||||
E[N] = P;
|
||||
var f = T[P]
|
||||
, B = T[f]
|
||||
, o = T[B]
|
||||
, g = 257 * T[N] ^ 16843008 * N;
|
||||
D[P] = g << 24 | g >>> 8;
|
||||
I[P] = g << 16 | g >>> 16;
|
||||
m[P] = g << 8 | g >>> 24;
|
||||
A[P] = g;
|
||||
g = 16843009 * o ^ 65537 * B ^ 257 * f ^ 16843008 * P;
|
||||
S[N] = g << 24 | g >>> 8;
|
||||
h[N] = g << 16 | g >>> 16;
|
||||
J[N] = g << 8 | g >>> 24;
|
||||
L[N] = g;
|
||||
P ? (P = f ^ T[T[T[o ^ f]]],
|
||||
O ^= T[T[O]]) : P = O = 1
|
||||
}
|
||||
var i = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]
|
||||
, Q = Q.AES = K.extend({
|
||||
_doReset: function () {
|
||||
for (var b = this._key, r = b.words, q = b.sigBytes / 4, b = 4 * ((this._nRounds = q + 6) + 1), p = this._keySchedule = [], n = 0; n < b; n++) {
|
||||
if (n < q) {
|
||||
p[n] = r[n]
|
||||
} else {
|
||||
var l = p[n - 1];
|
||||
n % q ? 6 < q && 4 == n % q && (l = M[l >>> 24] << 24 | M[l >>> 16 & 255] << 16 | M[l >>> 8 & 255] << 8 | M[l & 255]) : (l = l << 8 | l >>> 24,
|
||||
l = M[l >>> 24] << 24 | M[l >>> 16 & 255] << 16 | M[l >>> 8 & 255] << 8 | M[l & 255],
|
||||
l ^= i[n / q | 0] << 24);
|
||||
p[n] = p[n - q] ^ l
|
||||
}
|
||||
}
|
||||
r = this._invKeySchedule = [];
|
||||
for (q = 0; q < b; q++) {
|
||||
n = b - q,
|
||||
l = q % 4 ? p[n] : p[n - 4],
|
||||
r[q] = 4 > q || 4 >= n ? l : S[M[l >>> 24]] ^ h[M[l >>> 16 & 255]] ^ J[M[l >>> 8 & 255]] ^ L[M[l & 255]]
|
||||
}
|
||||
},
|
||||
encryptBlock: function (d, c) {
|
||||
this._doCryptBlock(d, c, this._keySchedule, D, I, m, A, M)
|
||||
},
|
||||
decryptBlock: function (b, j) {
|
||||
var e = b[j + 1];
|
||||
b[j + 1] = b[j + 3];
|
||||
b[j + 3] = e;
|
||||
this._doCryptBlock(b, j, this._invKeySchedule, S, h, J, L, E);
|
||||
e = b[j + 1];
|
||||
b[j + 1] = b[j + 3];
|
||||
b[j + 3] = e
|
||||
},
|
||||
_doCryptBlock: function (ac, ab, aa, Z, Y, U, G, X) {
|
||||
for (var F = this._nRounds, W = ac[ab] ^ aa[0], V = ac[ab + 1] ^ aa[1], H = ac[ab + 2] ^ aa[2], z = ac[ab + 3] ^ aa[3], y = 4, w = 1; w < F; w++) {
|
||||
var x = Z[W >>> 24] ^ Y[V >>> 16 & 255] ^ U[H >>> 8 & 255] ^ G[z & 255] ^ aa[y++]
|
||||
, v = Z[V >>> 24] ^ Y[H >>> 16 & 255] ^ U[z >>> 8 & 255] ^ G[W & 255] ^ aa[y++]
|
||||
, u = Z[H >>> 24] ^ Y[z >>> 16 & 255] ^ U[W >>> 8 & 255] ^ G[V & 255] ^ aa[y++]
|
||||
, z = Z[z >>> 24] ^ Y[W >>> 16 & 255] ^ U[V >>> 8 & 255] ^ G[H & 255] ^ aa[y++]
|
||||
, W = x
|
||||
, V = v
|
||||
, H = u
|
||||
}
|
||||
x = (X[W >>> 24] << 24 | X[V >>> 16 & 255] << 16 | X[H >>> 8 & 255] << 8 | X[z & 255]) ^ aa[y++];
|
||||
v = (X[V >>> 24] << 24 | X[H >>> 16 & 255] << 16 | X[z >>> 8 & 255] << 8 | X[W & 255]) ^ aa[y++];
|
||||
u = (X[H >>> 24] << 24 | X[z >>> 16 & 255] << 16 | X[W >>> 8 & 255] << 8 | X[V & 255]) ^ aa[y++];
|
||||
z = (X[z >>> 24] << 24 | X[W >>> 16 & 255] << 16 | X[V >>> 8 & 255] << 8 | X[H & 255]) ^ aa[y++];
|
||||
ac[ab] = x;
|
||||
ac[ab + 1] = v;
|
||||
ac[ab + 2] = u;
|
||||
ac[ab + 3] = z
|
||||
},
|
||||
keySize: 8
|
||||
});
|
||||
C.AES = K._createHelper(Q)
|
||||
}
|
||||
)();
|
||||
|
||||
|
||||
const Encrypt = function (user, password) {
|
||||
let result = {}
|
||||
var t = CryptoJS.MD5(user),
|
||||
i = CryptoJS.enc.Utf8.parse(t),
|
||||
r = CryptoJS.enc.Utf8.parse(password),
|
||||
u = CryptoJS.AES.encrypt(password, i, {
|
||||
iv: r
|
||||
});
|
||||
result.t = t.toString()
|
||||
result.i = i.toString()
|
||||
result.r = r.toString()
|
||||
result.u = u.toString()
|
||||
return result
|
||||
};
|
||||
|
||||
|
||||
module.exports={
|
||||
Encrypt
|
||||
}
|
15
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/last.js
Normal file
15
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/last.js
Normal file
@ -0,0 +1,15 @@
|
||||
|
||||
|
||||
|
||||
//1.这个对象存在于js,而不存在于nodejs,比如window,document,screen.
|
||||
//2.这些对象的属性 是一个值。
|
||||
var window ={}
|
||||
// window.btoa=function(aa){
|
||||
// return aa
|
||||
// }
|
||||
var document={}
|
||||
|
||||
document={"location":{"href":"https://bbs.nightteam.cn/member.php?mod=register"}}
|
||||
var screen ={"width":900,"height":1200}
|
||||
console.log(screen.width)
|
||||
|
22
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/server.js
Normal file
22
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/server.js
Normal file
@ -0,0 +1,22 @@
|
||||
const express = require('express')
|
||||
const app = express()
|
||||
const sum = require("./sum")
|
||||
var bodyParser = require('body-parser');
|
||||
app.use(bodyParser());
|
||||
|
||||
|
||||
app.post('/get_num', function (req, res) {
|
||||
let result = req.body
|
||||
console.log("result",result)
|
||||
let a = parseInt(result.a)
|
||||
let b = parseInt(result.b)
|
||||
result = sum.add(a, b)
|
||||
res.send(result.toString());
|
||||
})
|
||||
|
||||
app.listen(3000, () => {
|
||||
console.log("开启服务,端口3000")
|
||||
})
|
||||
|
||||
|
||||
|
22
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/server2.js
Normal file
22
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/server2.js
Normal file
@ -0,0 +1,22 @@
|
||||
const express = require('express')
|
||||
const app = express()
|
||||
const crypto = require("./crypto")
|
||||
var bodyParser = require('body-parser');
|
||||
app.use(bodyParser());
|
||||
|
||||
|
||||
app.post('/crypto', function (req, res) {
|
||||
let result = req.body
|
||||
console.log(result)
|
||||
let user = result.user
|
||||
let pwd = result.password
|
||||
result = crypto.Encrypt(user, pwd)
|
||||
res.send(result);
|
||||
})
|
||||
|
||||
app.listen(3000, () => {
|
||||
console.log("开启服务,端口3000")
|
||||
})
|
||||
|
||||
|
||||
|
8
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/sum.js
Normal file
8
3-奇⻔遁甲调用 JavaScript 执行代码/NodeServer/sum.js
Normal file
@ -0,0 +1,8 @@
|
||||
function add(a, b) {
|
||||
return a + b
|
||||
}
|
||||
|
||||
module.exports =
|
||||
{
|
||||
add
|
||||
}
|
739
3-奇⻔遁甲调用 JavaScript 执行代码/PyExecjsDemo/aes_demo.js
Normal file
739
3-奇⻔遁甲调用 JavaScript 执行代码/PyExecjsDemo/aes_demo.js
Normal file
@ -0,0 +1,739 @@
|
||||
var CryptoJS= function(o, e) {
|
||||
var h = {}
|
||||
, g = h.lib = {}
|
||||
, z = function() {}
|
||||
, y = g.Base = {
|
||||
extend: function(b) {
|
||||
z.prototype = this;
|
||||
var d = new z;
|
||||
b && d.mixIn(b);
|
||||
d.hasOwnProperty("init") || (d.init = function() {
|
||||
d.$super.init.apply(this, arguments)
|
||||
}
|
||||
);
|
||||
d.init.prototype = d;
|
||||
d.$super = this;
|
||||
return d
|
||||
},
|
||||
create: function() {
|
||||
var b = this.extend();
|
||||
b.init.apply(b, arguments);
|
||||
return b
|
||||
},
|
||||
init: function() {},
|
||||
mixIn: function(b) {
|
||||
for (var d in b) {
|
||||
b.hasOwnProperty(d) && (this[d] = b[d])
|
||||
}
|
||||
b.hasOwnProperty("toString") && (this.toString = b.toString)
|
||||
},
|
||||
clone: function() {
|
||||
return this.init.prototype.extend(this)
|
||||
}
|
||||
}
|
||||
, a = g.WordArray = y.extend({
|
||||
init: function(b, d) {
|
||||
b = this.words = b || [];
|
||||
this.sigBytes = d != e ? d : 4 * b.length
|
||||
},
|
||||
toString: function(b) {
|
||||
return (b || m).stringify(this)
|
||||
},
|
||||
concat: function(b) {
|
||||
var p = this.words
|
||||
, n = b.words
|
||||
, l = this.sigBytes;
|
||||
b = b.sigBytes;
|
||||
this.clamp();
|
||||
if (l % 4) {
|
||||
for (var d = 0; d < b; d++) {
|
||||
p[l + d >>> 2] |= (n[d >>> 2] >>> 24 - 8 * (d % 4) & 255) << 24 - 8 * ((l + d) % 4)
|
||||
}
|
||||
} else {
|
||||
if (65535 < n.length) {
|
||||
for (d = 0; d < b; d += 4) {
|
||||
p[l + d >>> 2] = n[d >>> 2]
|
||||
}
|
||||
} else {
|
||||
p.push.apply(p, n)
|
||||
}
|
||||
}
|
||||
this.sigBytes += b;
|
||||
return this
|
||||
},
|
||||
clamp: function() {
|
||||
var b = this.words
|
||||
, d = this.sigBytes;
|
||||
b[d >>> 2] &= 4294967295 << 32 - 8 * (d % 4);
|
||||
b.length = o.ceil(d / 4)
|
||||
},
|
||||
clone: function() {
|
||||
var b = y.clone.call(this);
|
||||
b.words = this.words.slice(0);
|
||||
return b
|
||||
},
|
||||
random: function(b) {
|
||||
for (var l = [], d = 0; d < b; d += 4) {
|
||||
l.push(4294967296 * o.random() | 0)
|
||||
}
|
||||
return new a.init(l,b)
|
||||
}
|
||||
})
|
||||
, k = h.enc = {}
|
||||
, m = k.Hex = {
|
||||
stringify: function(b) {
|
||||
var p = b.words;
|
||||
b = b.sigBytes;
|
||||
for (var n = [], l = 0; l < b; l++) {
|
||||
var d = p[l >>> 2] >>> 24 - 8 * (l % 4) & 255;
|
||||
n.push((d >>> 4).toString(16));
|
||||
n.push((d & 15).toString(16))
|
||||
}
|
||||
return n.join("")
|
||||
},
|
||||
parse: function(b) {
|
||||
for (var n = b.length, l = [], d = 0; d < n; d += 2) {
|
||||
l[d >>> 3] |= parseInt(b.substr(d, 2), 16) << 24 - 4 * (d % 8)
|
||||
}
|
||||
return new a.init(l,n / 2)
|
||||
}
|
||||
}
|
||||
, i = k.Latin1 = {
|
||||
stringify: function(b) {
|
||||
var n = b.words;
|
||||
b = b.sigBytes;
|
||||
for (var l = [], d = 0; d < b; d++) {
|
||||
l.push(String.fromCharCode(n[d >>> 2] >>> 24 - 8 * (d % 4) & 255))
|
||||
}
|
||||
return l.join("")
|
||||
},
|
||||
parse: function(b) {
|
||||
for (var n = b.length, l = [], d = 0; d < n; d++) {
|
||||
l[d >>> 2] |= (b.charCodeAt(d) & 255) << 24 - 8 * (d % 4)
|
||||
}
|
||||
return new a.init(l,n)
|
||||
}
|
||||
}
|
||||
, j = k.Utf8 = {
|
||||
stringify: function(b) {
|
||||
try {
|
||||
return decodeURIComponent(escape(i.stringify(b)))
|
||||
} catch (d) {
|
||||
throw Error("Malformed UTF-8 data")
|
||||
}
|
||||
},
|
||||
parse: function(b) {
|
||||
return i.parse(unescape(encodeURIComponent(b)))
|
||||
}
|
||||
}
|
||||
, c = g.BufferedBlockAlgorithm = y.extend({
|
||||
reset: function() {
|
||||
this._data = new a.init;
|
||||
this._nDataBytes = 0
|
||||
},
|
||||
_append: function(b) {
|
||||
"string" == typeof b && (b = j.parse(b));
|
||||
this._data.concat(b);
|
||||
this._nDataBytes += b.sigBytes
|
||||
},
|
||||
_process: function(l) {
|
||||
var t = this._data
|
||||
, s = t.words
|
||||
, p = t.sigBytes
|
||||
, n = this.blockSize
|
||||
, d = p / (4 * n)
|
||||
, d = l ? o.ceil(d) : o.max((d | 0) - this._minBufferSize, 0);
|
||||
l = d * n;
|
||||
p = o.min(4 * l, p);
|
||||
if (l) {
|
||||
for (var r = 0; r < l; r += n) {
|
||||
this._doProcessBlock(s, r)
|
||||
}
|
||||
r = s.splice(0, l);
|
||||
t.sigBytes -= p
|
||||
}
|
||||
return new a.init(r,p)
|
||||
},
|
||||
clone: function() {
|
||||
var b = y.clone.call(this);
|
||||
b._data = this._data.clone();
|
||||
return b
|
||||
},
|
||||
_minBufferSize: 0
|
||||
});
|
||||
g.Hasher = c.extend({
|
||||
cfg: y.extend(),
|
||||
init: function(b) {
|
||||
this.cfg = this.cfg.extend(b);
|
||||
this.reset()
|
||||
},
|
||||
reset: function() {
|
||||
c.reset.call(this);
|
||||
this._doReset()
|
||||
},
|
||||
update: function(b) {
|
||||
this._append(b);
|
||||
this._process();
|
||||
return this
|
||||
},
|
||||
finalize: function(b) {
|
||||
b && this._append(b);
|
||||
return this._doFinalize()
|
||||
},
|
||||
blockSize: 16,
|
||||
_createHelper: function(b) {
|
||||
return function(d, l) {
|
||||
return (new b.init(l)).finalize(d)
|
||||
}
|
||||
},
|
||||
_createHmacHelper: function(b) {
|
||||
return function(d, l) {
|
||||
return (new f.HMAC.init(b,l)).finalize(d)
|
||||
}
|
||||
}
|
||||
});
|
||||
var f = h.algo = {};
|
||||
return h
|
||||
}(Math);
|
||||
(function() {
|
||||
var a = CryptoJS
|
||||
, b = a.lib.WordArray;
|
||||
a.enc.Base64 = {
|
||||
stringify: function(j) {
|
||||
var e = j.words
|
||||
, i = j.sigBytes
|
||||
, g = this._map;
|
||||
j.clamp();
|
||||
j = [];
|
||||
for (var h = 0; h < i; h += 3) {
|
||||
for (var c = (e[h >>> 2] >>> 24 - 8 * (h % 4) & 255) << 16 | (e[h + 1 >>> 2] >>> 24 - 8 * ((h + 1) % 4) & 255) << 8 | e[h + 2 >>> 2] >>> 24 - 8 * ((h + 2) % 4) & 255, f = 0; 4 > f && h + 0.75 * f < i; f++) {
|
||||
j.push(g.charAt(c >>> 6 * (3 - f) & 63))
|
||||
}
|
||||
}
|
||||
if (e = g.charAt(64)) {
|
||||
for (; j.length % 4; ) {
|
||||
j.push(e)
|
||||
}
|
||||
}
|
||||
return j.join("")
|
||||
},
|
||||
parse: function(k) {
|
||||
var f = k.length
|
||||
, i = this._map
|
||||
, h = i.charAt(64);
|
||||
h && (h = k.indexOf(h),
|
||||
-1 != h && (f = h));
|
||||
for (var h = [], j = 0, e = 0; e < f; e++) {
|
||||
if (e % 4) {
|
||||
var g = i.indexOf(k.charAt(e - 1)) << 2 * (e % 4)
|
||||
, c = i.indexOf(k.charAt(e)) >>> 6 - 2 * (e % 4);
|
||||
h[j >>> 2] |= (g | c) << 24 - 8 * (j % 4);
|
||||
j++
|
||||
}
|
||||
}
|
||||
return b.create(h, j)
|
||||
},
|
||||
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
||||
}
|
||||
}
|
||||
)();
|
||||
(function(k) {
|
||||
function c(d, s, l, r, q, p, o) {
|
||||
d = d + (s & l | ~s & r) + q + o;
|
||||
return (d << p | d >>> 32 - p) + s
|
||||
}
|
||||
function f(d, s, l, r, q, p, o) {
|
||||
d = d + (s & r | l & ~r) + q + o;
|
||||
return (d << p | d >>> 32 - p) + s
|
||||
}
|
||||
function e(d, s, l, r, q, p, o) {
|
||||
d = d + (s ^ l ^ r) + q + o;
|
||||
return (d << p | d >>> 32 - p) + s
|
||||
}
|
||||
function n(d, s, l, r, q, p, o) {
|
||||
d = d + (l ^ (s | ~r)) + q + o;
|
||||
return (d << p | d >>> 32 - p) + s
|
||||
}
|
||||
for (var m = CryptoJS, a = m.lib, i = a.WordArray, j = a.Hasher, a = m.algo, g = [], h = 0; 64 > h; h++) {
|
||||
g[h] = 4294967296 * k.abs(k.sin(h + 1)) | 0
|
||||
}
|
||||
a = a.MD5 = j.extend({
|
||||
_doReset: function() {
|
||||
this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878])
|
||||
},
|
||||
_doProcessBlock: function(J, L) {
|
||||
for (var U = 0; 16 > U; U++) {
|
||||
var T = L + U
|
||||
, S = J[T];
|
||||
J[T] = (S << 8 | S >>> 24) & 16711935 | (S << 24 | S >>> 8) & 4278255360
|
||||
}
|
||||
var U = this._hash.words
|
||||
, T = J[L + 0]
|
||||
, S = J[L + 1]
|
||||
, O = J[L + 2]
|
||||
, N = J[L + 3]
|
||||
, b = J[L + 4]
|
||||
, H = J[L + 5]
|
||||
, y = J[L + 6]
|
||||
, l = J[L + 7]
|
||||
, o = J[L + 8]
|
||||
, K = J[L + 9]
|
||||
, I = J[L + 10]
|
||||
, G = J[L + 11]
|
||||
, p = J[L + 12]
|
||||
, F = J[L + 13]
|
||||
, s = J[L + 14]
|
||||
, d = J[L + 15]
|
||||
, R = U[0]
|
||||
, M = U[1]
|
||||
, Q = U[2]
|
||||
, P = U[3]
|
||||
, R = c(R, M, Q, P, T, 7, g[0])
|
||||
, P = c(P, R, M, Q, S, 12, g[1])
|
||||
, Q = c(Q, P, R, M, O, 17, g[2])
|
||||
, M = c(M, Q, P, R, N, 22, g[3])
|
||||
, R = c(R, M, Q, P, b, 7, g[4])
|
||||
, P = c(P, R, M, Q, H, 12, g[5])
|
||||
, Q = c(Q, P, R, M, y, 17, g[6])
|
||||
, M = c(M, Q, P, R, l, 22, g[7])
|
||||
, R = c(R, M, Q, P, o, 7, g[8])
|
||||
, P = c(P, R, M, Q, K, 12, g[9])
|
||||
, Q = c(Q, P, R, M, I, 17, g[10])
|
||||
, M = c(M, Q, P, R, G, 22, g[11])
|
||||
, R = c(R, M, Q, P, p, 7, g[12])
|
||||
, P = c(P, R, M, Q, F, 12, g[13])
|
||||
, Q = c(Q, P, R, M, s, 17, g[14])
|
||||
, M = c(M, Q, P, R, d, 22, g[15])
|
||||
, R = f(R, M, Q, P, S, 5, g[16])
|
||||
, P = f(P, R, M, Q, y, 9, g[17])
|
||||
, Q = f(Q, P, R, M, G, 14, g[18])
|
||||
, M = f(M, Q, P, R, T, 20, g[19])
|
||||
, R = f(R, M, Q, P, H, 5, g[20])
|
||||
, P = f(P, R, M, Q, I, 9, g[21])
|
||||
, Q = f(Q, P, R, M, d, 14, g[22])
|
||||
, M = f(M, Q, P, R, b, 20, g[23])
|
||||
, R = f(R, M, Q, P, K, 5, g[24])
|
||||
, P = f(P, R, M, Q, s, 9, g[25])
|
||||
, Q = f(Q, P, R, M, N, 14, g[26])
|
||||
, M = f(M, Q, P, R, o, 20, g[27])
|
||||
, R = f(R, M, Q, P, F, 5, g[28])
|
||||
, P = f(P, R, M, Q, O, 9, g[29])
|
||||
, Q = f(Q, P, R, M, l, 14, g[30])
|
||||
, M = f(M, Q, P, R, p, 20, g[31])
|
||||
, R = e(R, M, Q, P, H, 4, g[32])
|
||||
, P = e(P, R, M, Q, o, 11, g[33])
|
||||
, Q = e(Q, P, R, M, G, 16, g[34])
|
||||
, M = e(M, Q, P, R, s, 23, g[35])
|
||||
, R = e(R, M, Q, P, S, 4, g[36])
|
||||
, P = e(P, R, M, Q, b, 11, g[37])
|
||||
, Q = e(Q, P, R, M, l, 16, g[38])
|
||||
, M = e(M, Q, P, R, I, 23, g[39])
|
||||
, R = e(R, M, Q, P, F, 4, g[40])
|
||||
, P = e(P, R, M, Q, T, 11, g[41])
|
||||
, Q = e(Q, P, R, M, N, 16, g[42])
|
||||
, M = e(M, Q, P, R, y, 23, g[43])
|
||||
, R = e(R, M, Q, P, K, 4, g[44])
|
||||
, P = e(P, R, M, Q, p, 11, g[45])
|
||||
, Q = e(Q, P, R, M, d, 16, g[46])
|
||||
, M = e(M, Q, P, R, O, 23, g[47])
|
||||
, R = n(R, M, Q, P, T, 6, g[48])
|
||||
, P = n(P, R, M, Q, l, 10, g[49])
|
||||
, Q = n(Q, P, R, M, s, 15, g[50])
|
||||
, M = n(M, Q, P, R, H, 21, g[51])
|
||||
, R = n(R, M, Q, P, p, 6, g[52])
|
||||
, P = n(P, R, M, Q, N, 10, g[53])
|
||||
, Q = n(Q, P, R, M, I, 15, g[54])
|
||||
, M = n(M, Q, P, R, S, 21, g[55])
|
||||
, R = n(R, M, Q, P, o, 6, g[56])
|
||||
, P = n(P, R, M, Q, d, 10, g[57])
|
||||
, Q = n(Q, P, R, M, y, 15, g[58])
|
||||
, M = n(M, Q, P, R, F, 21, g[59])
|
||||
, R = n(R, M, Q, P, b, 6, g[60])
|
||||
, P = n(P, R, M, Q, G, 10, g[61])
|
||||
, Q = n(Q, P, R, M, O, 15, g[62])
|
||||
, M = n(M, Q, P, R, K, 21, g[63]);
|
||||
U[0] = U[0] + R | 0;
|
||||
U[1] = U[1] + M | 0;
|
||||
U[2] = U[2] + Q | 0;
|
||||
U[3] = U[3] + P | 0
|
||||
},
|
||||
_doFinalize: function() {
|
||||
var d = this._data
|
||||
, q = d.words
|
||||
, l = 8 * this._nDataBytes
|
||||
, p = 8 * d.sigBytes;
|
||||
q[p >>> 5] |= 128 << 24 - p % 32;
|
||||
var o = k.floor(l / 4294967296);
|
||||
q[(p + 64 >>> 9 << 4) + 15] = (o << 8 | o >>> 24) & 16711935 | (o << 24 | o >>> 8) & 4278255360;
|
||||
q[(p + 64 >>> 9 << 4) + 14] = (l << 8 | l >>> 24) & 16711935 | (l << 24 | l >>> 8) & 4278255360;
|
||||
d.sigBytes = 4 * (q.length + 1);
|
||||
this._process();
|
||||
d = this._hash;
|
||||
q = d.words;
|
||||
for (l = 0; 4 > l; l++) {
|
||||
p = q[l],
|
||||
q[l] = (p << 8 | p >>> 24) & 16711935 | (p << 24 | p >>> 8) & 4278255360
|
||||
}
|
||||
return d
|
||||
},
|
||||
clone: function() {
|
||||
var d = j.clone.call(this);
|
||||
d._hash = this._hash.clone();
|
||||
return d
|
||||
}
|
||||
});
|
||||
m.MD5 = j._createHelper(a);
|
||||
m.HmacMD5 = j._createHmacHelper(a)
|
||||
}
|
||||
)(Math);
|
||||
(function() {
|
||||
var b = CryptoJS
|
||||
, e = b.lib
|
||||
, f = e.Base
|
||||
, a = e.WordArray
|
||||
, e = b.algo
|
||||
, c = e.EvpKDF = f.extend({
|
||||
cfg: f.extend({
|
||||
keySize: 4,
|
||||
hasher: e.MD5,
|
||||
iterations: 1
|
||||
}),
|
||||
init: function(g) {
|
||||
this.cfg = this.cfg.extend(g)
|
||||
},
|
||||
compute: function(k, g) {
|
||||
for (var i = this.cfg, t = i.hasher.create(), l = a.create(), o = l.words, h = i.keySize, i = i.iterations; o.length < h; ) {
|
||||
j && t.update(j);
|
||||
var j = t.update(k).finalize(g);
|
||||
t.reset();
|
||||
for (var m = 1; m < i; m++) {
|
||||
j = t.finalize(j),
|
||||
t.reset()
|
||||
}
|
||||
l.concat(j)
|
||||
}
|
||||
l.sigBytes = 4 * h;
|
||||
return l
|
||||
}
|
||||
});
|
||||
b.EvpKDF = function(i, g, h) {
|
||||
return c.create(h).compute(i, g)
|
||||
}
|
||||
}
|
||||
)();
|
||||
CryptoJS.lib.Cipher || function(B) {
|
||||
var g = CryptoJS
|
||||
, j = g.lib
|
||||
, i = j.Base
|
||||
, D = j.WordArray
|
||||
, C = j.BufferedBlockAlgorithm
|
||||
, e = g.enc.Base64
|
||||
, z = g.algo.EvpKDF
|
||||
, A = j.Cipher = C.extend({
|
||||
cfg: i.extend(),
|
||||
createEncryptor: function(c, b) {
|
||||
return this.create(this._ENC_XFORM_MODE, c, b)
|
||||
},
|
||||
createDecryptor: function(c, b) {
|
||||
return this.create(this._DEC_XFORM_MODE, c, b)
|
||||
},
|
||||
init: function(l, d, c) {
|
||||
this.cfg = this.cfg.extend(c);
|
||||
this._xformMode = l;
|
||||
this._key = d;
|
||||
this.reset()
|
||||
},
|
||||
reset: function() {
|
||||
C.reset.call(this);
|
||||
this._doReset()
|
||||
},
|
||||
process: function(a) {
|
||||
this._append(a);
|
||||
return this._process()
|
||||
},
|
||||
finalize: function(a) {
|
||||
a && this._append(a);
|
||||
return this._doFinalize()
|
||||
},
|
||||
keySize: 4,
|
||||
ivSize: 4,
|
||||
_ENC_XFORM_MODE: 1,
|
||||
_DEC_XFORM_MODE: 2,
|
||||
_createHelper: function(a) {
|
||||
return {
|
||||
encrypt: function(c, l, n) {
|
||||
return ("string" == typeof l ? k : o).encrypt(a, c, l, n)
|
||||
},
|
||||
decrypt: function(c, l, n) {
|
||||
return ("string" == typeof l ? k : o).decrypt(a, c, l, n)
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
j.StreamCipher = A.extend({
|
||||
_doFinalize: function() {
|
||||
return this._process(!0)
|
||||
},
|
||||
blockSize: 1
|
||||
});
|
||||
var m = g.mode = {}
|
||||
, y = function(p, n, l) {
|
||||
var r = this._iv;
|
||||
r ? this._iv = B : r = this._prevBlock;
|
||||
for (var q = 0; q < l; q++) {
|
||||
p[n + q] ^= r[q]
|
||||
}
|
||||
}
|
||||
, f = (j.BlockCipherMode = i.extend({
|
||||
createEncryptor: function(c, b) {
|
||||
return this.Encryptor.create(c, b)
|
||||
},
|
||||
createDecryptor: function(c, b) {
|
||||
return this.Decryptor.create(c, b)
|
||||
},
|
||||
init: function(c, b) {
|
||||
this._cipher = c;
|
||||
this._iv = b
|
||||
}
|
||||
})).extend();
|
||||
f.Encryptor = f.extend({
|
||||
processBlock: function(n, l) {
|
||||
var d = this._cipher
|
||||
, p = d.blockSize;
|
||||
y.call(this, n, l, p);
|
||||
d.encryptBlock(n, l);
|
||||
this._prevBlock = n.slice(l, l + p)
|
||||
}
|
||||
});
|
||||
f.Decryptor = f.extend({
|
||||
processBlock: function(p, n) {
|
||||
var l = this._cipher
|
||||
, r = l.blockSize
|
||||
, q = p.slice(n, n + r);
|
||||
l.decryptBlock(p, n);
|
||||
y.call(this, p, n, r);
|
||||
this._prevBlock = q
|
||||
}
|
||||
});
|
||||
m = m.CBC = f;
|
||||
f = (g.pad = {}).Pkcs7 = {
|
||||
pad: function(r, p) {
|
||||
for (var u = 4 * p, u = u - r.sigBytes % u, s = u << 24 | u << 16 | u << 8 | u, q = [], t = 0; t < u; t += 4) {
|
||||
q.push(s)
|
||||
}
|
||||
u = D.create(q, u);
|
||||
r.concat(u)
|
||||
},
|
||||
unpad: function(b) {
|
||||
b.sigBytes -= b.words[b.sigBytes - 1 >>> 2] & 255
|
||||
}
|
||||
};
|
||||
j.BlockCipher = A.extend({
|
||||
cfg: A.cfg.extend({
|
||||
mode: m,
|
||||
padding: f
|
||||
}),
|
||||
reset: function() {
|
||||
A.reset.call(this);
|
||||
var l = this.cfg
|
||||
, d = l.iv
|
||||
, l = l.mode;
|
||||
if (this._xformMode == this._ENC_XFORM_MODE) {
|
||||
var n = l.createEncryptor
|
||||
} else {
|
||||
n = l.createDecryptor,
|
||||
this._minBufferSize = 1
|
||||
}
|
||||
this._mode = n.call(l, this, d && d.words)
|
||||
},
|
||||
_doProcessBlock: function(d, c) {
|
||||
this._mode.processBlock(d, c)
|
||||
},
|
||||
_doFinalize: function() {
|
||||
var d = this.cfg.padding;
|
||||
if (this._xformMode == this._ENC_XFORM_MODE) {
|
||||
d.pad(this._data, this.blockSize);
|
||||
var c = this._process(!0)
|
||||
} else {
|
||||
c = this._process(!0),
|
||||
d.unpad(c)
|
||||
}
|
||||
return c
|
||||
},
|
||||
blockSize: 4
|
||||
});
|
||||
var h = j.CipherParams = i.extend({
|
||||
init: function(b) {
|
||||
this.mixIn(b)
|
||||
},
|
||||
toString: function(b) {
|
||||
return (b || this.formatter).stringify(this)
|
||||
}
|
||||
})
|
||||
, m = (g.format = {}).OpenSSL = {
|
||||
stringify: function(d) {
|
||||
var c = d.ciphertext;
|
||||
d = d.salt;
|
||||
return (d ? D.create([1398893684, 1701076831]).concat(d).concat(c) : c).toString(e)
|
||||
},
|
||||
parse: function(l) {
|
||||
l = e.parse(l);
|
||||
var d = l.words;
|
||||
if (1398893684 == d[0] && 1701076831 == d[1]) {
|
||||
var n = D.create(d.slice(2, 4));
|
||||
d.splice(0, 4);
|
||||
l.sigBytes -= 16
|
||||
}
|
||||
return h.create({
|
||||
ciphertext: l,
|
||||
salt: n
|
||||
})
|
||||
}
|
||||
}
|
||||
, o = j.SerializableCipher = i.extend({
|
||||
cfg: i.extend({
|
||||
format: m
|
||||
}),
|
||||
encrypt: function(q, n, s, r) {
|
||||
r = this.cfg.extend(r);
|
||||
var p = q.createEncryptor(s, r);
|
||||
n = p.finalize(n);
|
||||
p = p.cfg;
|
||||
return h.create({
|
||||
ciphertext: n,
|
||||
key: s,
|
||||
iv: p.iv,
|
||||
algorithm: q,
|
||||
mode: p.mode,
|
||||
padding: p.padding,
|
||||
blockSize: q.blockSize,
|
||||
formatter: r.format
|
||||
})
|
||||
},
|
||||
decrypt: function(n, l, q, p) {
|
||||
p = this.cfg.extend(p);
|
||||
l = this._parse(l, p.format);
|
||||
return n.createDecryptor(q, p).finalize(l.ciphertext)
|
||||
},
|
||||
_parse: function(d, c) {
|
||||
return "string" == typeof d ? c.parse(d, this) : d
|
||||
}
|
||||
})
|
||||
, g = (g.kdf = {}).OpenSSL = {
|
||||
execute: function(n, l, q, p) {
|
||||
p || (p = D.random(8));
|
||||
n = z.create({
|
||||
keySize: l + q
|
||||
}).compute(n, p);
|
||||
q = D.create(n.words.slice(l), 4 * q);
|
||||
n.sigBytes = 4 * l;
|
||||
return h.create({
|
||||
key: n,
|
||||
iv: q,
|
||||
salt: p
|
||||
})
|
||||
}
|
||||
}
|
||||
, k = j.PasswordBasedCipher = o.extend({
|
||||
cfg: o.cfg.extend({
|
||||
kdf: g
|
||||
}),
|
||||
encrypt: function(a, q, p, n) {
|
||||
n = this.cfg.extend(n);
|
||||
p = n.kdf.execute(p, a.keySize, a.ivSize);
|
||||
n.iv = p.iv;
|
||||
a = o.encrypt.call(this, a, q, p.key, n);
|
||||
a.mixIn(p);
|
||||
return a
|
||||
},
|
||||
decrypt: function(a, q, p, n) {
|
||||
n = this.cfg.extend(n);
|
||||
q = this._parse(q, n.format);
|
||||
p = n.kdf.execute(p, a.keySize, a.ivSize, q.salt);
|
||||
n.iv = p.iv;
|
||||
return o.decrypt.call(this, a, q, p.key, n)
|
||||
}
|
||||
})
|
||||
}();
|
||||
(function() {
|
||||
for (var C = CryptoJS, K = C.lib.BlockCipher, Q = C.algo, M = [], E = [], D = [], I = [], m = [], A = [], S = [], h = [], J = [], L = [], T = [], R = 0; 256 > R; R++) {
|
||||
T[R] = 128 > R ? R << 1 : R << 1 ^ 283
|
||||
}
|
||||
for (var P = 0, O = 0, R = 0; 256 > R; R++) {
|
||||
var N = O ^ O << 1 ^ O << 2 ^ O << 3 ^ O << 4
|
||||
, N = N >>> 8 ^ N & 255 ^ 99;
|
||||
M[P] = N;
|
||||
E[N] = P;
|
||||
var f = T[P]
|
||||
, B = T[f]
|
||||
, o = T[B]
|
||||
, g = 257 * T[N] ^ 16843008 * N;
|
||||
D[P] = g << 24 | g >>> 8;
|
||||
I[P] = g << 16 | g >>> 16;
|
||||
m[P] = g << 8 | g >>> 24;
|
||||
A[P] = g;
|
||||
g = 16843009 * o ^ 65537 * B ^ 257 * f ^ 16843008 * P;
|
||||
S[N] = g << 24 | g >>> 8;
|
||||
h[N] = g << 16 | g >>> 16;
|
||||
J[N] = g << 8 | g >>> 24;
|
||||
L[N] = g;
|
||||
P ? (P = f ^ T[T[T[o ^ f]]],
|
||||
O ^= T[T[O]]) : P = O = 1
|
||||
}
|
||||
var i = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]
|
||||
, Q = Q.AES = K.extend({
|
||||
_doReset: function() {
|
||||
for (var b = this._key, r = b.words, q = b.sigBytes / 4, b = 4 * ((this._nRounds = q + 6) + 1), p = this._keySchedule = [], n = 0; n < b; n++) {
|
||||
if (n < q) {
|
||||
p[n] = r[n]
|
||||
} else {
|
||||
var l = p[n - 1];
|
||||
n % q ? 6 < q && 4 == n % q && (l = M[l >>> 24] << 24 | M[l >>> 16 & 255] << 16 | M[l >>> 8 & 255] << 8 | M[l & 255]) : (l = l << 8 | l >>> 24,
|
||||
l = M[l >>> 24] << 24 | M[l >>> 16 & 255] << 16 | M[l >>> 8 & 255] << 8 | M[l & 255],
|
||||
l ^= i[n / q | 0] << 24);
|
||||
p[n] = p[n - q] ^ l
|
||||
}
|
||||
}
|
||||
r = this._invKeySchedule = [];
|
||||
for (q = 0; q < b; q++) {
|
||||
n = b - q,
|
||||
l = q % 4 ? p[n] : p[n - 4],
|
||||
r[q] = 4 > q || 4 >= n ? l : S[M[l >>> 24]] ^ h[M[l >>> 16 & 255]] ^ J[M[l >>> 8 & 255]] ^ L[M[l & 255]]
|
||||
}
|
||||
},
|
||||
encryptBlock: function(d, c) {
|
||||
this._doCryptBlock(d, c, this._keySchedule, D, I, m, A, M)
|
||||
},
|
||||
decryptBlock: function(b, j) {
|
||||
var e = b[j + 1];
|
||||
b[j + 1] = b[j + 3];
|
||||
b[j + 3] = e;
|
||||
this._doCryptBlock(b, j, this._invKeySchedule, S, h, J, L, E);
|
||||
e = b[j + 1];
|
||||
b[j + 1] = b[j + 3];
|
||||
b[j + 3] = e
|
||||
},
|
||||
_doCryptBlock: function(ac, ab, aa, Z, Y, U, G, X) {
|
||||
for (var F = this._nRounds, W = ac[ab] ^ aa[0], V = ac[ab + 1] ^ aa[1], H = ac[ab + 2] ^ aa[2], z = ac[ab + 3] ^ aa[3], y = 4, w = 1; w < F; w++) {
|
||||
var x = Z[W >>> 24] ^ Y[V >>> 16 & 255] ^ U[H >>> 8 & 255] ^ G[z & 255] ^ aa[y++]
|
||||
, v = Z[V >>> 24] ^ Y[H >>> 16 & 255] ^ U[z >>> 8 & 255] ^ G[W & 255] ^ aa[y++]
|
||||
, u = Z[H >>> 24] ^ Y[z >>> 16 & 255] ^ U[W >>> 8 & 255] ^ G[V & 255] ^ aa[y++]
|
||||
, z = Z[z >>> 24] ^ Y[W >>> 16 & 255] ^ U[V >>> 8 & 255] ^ G[H & 255] ^ aa[y++]
|
||||
, W = x
|
||||
, V = v
|
||||
, H = u
|
||||
}
|
||||
x = (X[W >>> 24] << 24 | X[V >>> 16 & 255] << 16 | X[H >>> 8 & 255] << 8 | X[z & 255]) ^ aa[y++];
|
||||
v = (X[V >>> 24] << 24 | X[H >>> 16 & 255] << 16 | X[z >>> 8 & 255] << 8 | X[W & 255]) ^ aa[y++];
|
||||
u = (X[H >>> 24] << 24 | X[z >>> 16 & 255] << 16 | X[W >>> 8 & 255] << 8 | X[V & 255]) ^ aa[y++];
|
||||
z = (X[z >>> 24] << 24 | X[W >>> 16 & 255] << 16 | X[V >>> 8 & 255] << 8 | X[H & 255]) ^ aa[y++];
|
||||
ac[ab] = x;
|
||||
ac[ab + 1] = v;
|
||||
ac[ab + 2] = u;
|
||||
ac[ab + 3] = z
|
||||
},
|
||||
keySize: 8
|
||||
});
|
||||
C.AES = K._createHelper(Q)
|
||||
}
|
||||
)();
|
42
3-奇⻔遁甲调用 JavaScript 执行代码/PyExecjsDemo/run_aes.py
Normal file
42
3-奇⻔遁甲调用 JavaScript 执行代码/PyExecjsDemo/run_aes.py
Normal file
@ -0,0 +1,42 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @时间 : 2019-11-10 00:00
|
||||
# @作者 : 陈祥安
|
||||
# @文件名 : run_aes.py
|
||||
# @公众号: Python学习开发
|
||||
from pprint import pprint
|
||||
|
||||
import execjs
|
||||
import pathlib
|
||||
import os
|
||||
|
||||
js_path = pathlib.Path(os.path.abspath(os.path.dirname(__file__)))
|
||||
js_path = js_path / "crypto.js"
|
||||
with js_path.open('r', encoding="utf-8") as f:
|
||||
script = f.read()
|
||||
|
||||
c = "1234"
|
||||
|
||||
# 传入python中的变量
|
||||
add = ('''
|
||||
aesEncrypt = function() {
|
||||
result={}
|
||||
var t = CryptoJS.MD5("login.xxx.com"),
|
||||
i = CryptoJS.enc.Utf8.parse(t),
|
||||
r = CryptoJS.enc.Utf8.parse("1234567812345678"),
|
||||
u = CryptoJS.AES.encrypt(''' + "'{}'".format(c) + ''',i, {
|
||||
iv: r
|
||||
});
|
||||
result.t=t.toString()
|
||||
result.i =i.toString()
|
||||
result.r =r.toString()
|
||||
result.u =u.toString()
|
||||
return result
|
||||
};
|
||||
''')
|
||||
script = script + add
|
||||
print("script",script)
|
||||
|
||||
|
||||
x = execjs.compile(script)
|
||||
result = x.call("aesEncrypt")
|
||||
print(result)
|
5
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/__init__.py
Normal file
5
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/__init__.py
Normal file
@ -0,0 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @Time : 2019-10-27 21:34
|
||||
# @Author : cxa
|
||||
# @File : __init__.py.py
|
||||
# @Software: PyCharm
|
43
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/demo.py
Normal file
43
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/demo.py
Normal file
@ -0,0 +1,43 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @Time : 2019-10-27 22:01
|
||||
# @Author : cxa
|
||||
# @File : demo.py
|
||||
# @Software: PyCharm
|
||||
from pyppeteer import launch
|
||||
import asyncio
|
||||
|
||||
|
||||
def get_text(id,attr):
|
||||
### 拼接字符串注意{}要写出{{}}
|
||||
script=("""
|
||||
let id='{id}';
|
||||
let attr='{attr}';
|
||||
let supporter ="chrome";
|
||||
const run=function(){{
|
||||
let all_str = $(id).getAttribute(attr)
|
||||
let end_index=supporter.length+58
|
||||
Base64._keyStr = all_str.substring(0, end_index)
|
||||
let charset = all_str.substring(64, all_str.length)
|
||||
let encoded = Base64.decode(charset,supporter);
|
||||
return encoded
|
||||
}}
|
||||
run()
|
||||
""").format(id=id,attr=attr)
|
||||
return script
|
||||
|
||||
|
||||
|
||||
async def run():
|
||||
browser = await launch({"headless": True})
|
||||
page = await browser.newPage()
|
||||
await page.goto('http://127.0.0.1:5002/')
|
||||
script = get_text("base64","data")
|
||||
text = await page.evaluate(script)
|
||||
|
||||
print(text)
|
||||
return text
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
loop = asyncio.get_event_loop()
|
||||
loop.run_until_complete(run())
|
87
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/my_base64.py
Normal file
87
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/my_base64.py
Normal file
@ -0,0 +1,87 @@
|
||||
import string
|
||||
import random
|
||||
|
||||
# base 字符集
|
||||
|
||||
|
||||
base64_charset = string.ascii_uppercase + string.ascii_lowercase + string.digits + '+/'
|
||||
base64_charset_list = list(base64_charset)
|
||||
random.shuffle(base64_charset_list)
|
||||
base64_charset = ''.join(base64_charset_list)
|
||||
|
||||
|
||||
def encode(orgin_string):
|
||||
"""
|
||||
将bytes类型编码为base64
|
||||
:param origin_bytes:需要编码的bytes
|
||||
:return:base64字符串
|
||||
"""
|
||||
|
||||
origin_bytes = orgin_string.encode()
|
||||
# 将每一位bytes转换为二进制字符串
|
||||
base64_bytes = [f"{str(bin(b)).replace('0b', ''):0>8}" for b in origin_bytes]
|
||||
|
||||
resp = ''
|
||||
nums = len(base64_bytes) // 3
|
||||
remain = len(base64_bytes) % 3
|
||||
|
||||
integral_part = base64_bytes[0:3 * nums]
|
||||
while integral_part:
|
||||
# 取三个字节,以每6比特,转换为4个整数
|
||||
tmp_unit = ''.join(integral_part[0:3])
|
||||
tmp_unit = [int(tmp_unit[x: x + 6], 2) for x in [0, 6, 12, 18]]
|
||||
# 取对应base64字符
|
||||
resp += ''.join([base64_charset[i] for i in tmp_unit])
|
||||
integral_part = integral_part[3:]
|
||||
|
||||
if remain:
|
||||
# 补齐三个字节,每个字节补充 0000 0000
|
||||
remain_part = ''.join(base64_bytes[3 * nums:]) + (3 - remain) * '0' * 8
|
||||
# 取三个字节,以每6比特,转换为4个整数
|
||||
# 剩余1字节可构造2个base64字符,补充==;剩余2字节可构造3个base64字符,补充=
|
||||
tmp_unit = [int(remain_part[x: x + 6], 2) for x in [0, 6, 12, 18]][:remain + 1]
|
||||
resp += ''.join([base64_charset[i] for i in tmp_unit]) + (3 - remain) * '='
|
||||
|
||||
return resp, base64_charset
|
||||
|
||||
|
||||
def decode(base64_str, charset):
|
||||
"""
|
||||
解码base64字符串
|
||||
:param base64_str:base64字符串
|
||||
:return:解码后的bytearray;若入参不是合法base64字符串,返回空bytearray
|
||||
"""
|
||||
|
||||
# 对每一个base64字符取下标索引,并转换为6为二进制字符串
|
||||
base64_bytes = [f"{str(bin(charset.index(s))).replace('0b', ''):0>6}" for s in base64_str if
|
||||
s != '=']
|
||||
print("base64_bytes", base64_bytes)
|
||||
resp = bytearray()
|
||||
nums = len(base64_bytes) // 4
|
||||
remain = len(base64_bytes) % 4
|
||||
integral_part = base64_bytes[0:4 * nums]
|
||||
|
||||
while integral_part:
|
||||
# 取4个6位base64字符,作为3个字节
|
||||
tmp_unit = ''.join(integral_part[0:4])
|
||||
tmp_unit = [int(tmp_unit[x: x + 8], 2) for x in [0, 8, 16]]
|
||||
for i in tmp_unit:
|
||||
resp.append(i)
|
||||
integral_part = integral_part[4:]
|
||||
|
||||
if remain:
|
||||
remain_part = ''.join(base64_bytes[nums * 4:])
|
||||
tmp_unit = [int(remain_part[i * 8:(i + 1) * 8], 2) for i in range(remain - 1)]
|
||||
for i in tmp_unit:
|
||||
resp.append(i)
|
||||
|
||||
return str(bytes(resp),encoding="utf-8"), charset
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
a = encode("NightTeam")
|
||||
b = decode(a[0], a[1])
|
||||
print(a)
|
||||
print(b)
|
56
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/server.py
Normal file
56
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/server.py
Normal file
@ -0,0 +1,56 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @时间 : 2019-12-30 00:18
|
||||
# @作者 : 陈祥安
|
||||
# @文件名 : server.py
|
||||
# @公众号: Python学习开发
|
||||
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
# @Time : 2019-10-14 16:22
|
||||
# @Author : cxa
|
||||
# @File : server.py
|
||||
# @Software: PyCharm
|
||||
|
||||
from flask import Flask, render_template
|
||||
import random
|
||||
import my_base64
|
||||
app = Flask(__name__)
|
||||
|
||||
text = """
|
||||
Life is not about waiting for the storm to pass. it's about learning to dance in the rain.
|
||||
生活不是等待暴风雨过去,而是要学会在雨中跳舞。
|
||||
What is insistence? That is, day after day, you tell yourself to go on for another day.
|
||||
什么是坚持?那就是,一天又一天,你告诉自己,再坚持一天。
|
||||
I don't want to earn my living. I want to live. --Oscar·Wilde.
|
||||
我不想谋生。我想生活。--奥斯卡·王尔德。
|
||||
Life has not the best choice, but to undertake your choice.
|
||||
生活不是拥有最好的选择,而是承担你的选择。
|
||||
It takes courage to follow your mind. But it takes everything to follow your heart.
|
||||
跟着理智走,要有勇气;跟着感觉走,要有倾其所有的决心。
|
||||
You may be our of my sight, but never out of my mind.
|
||||
"""
|
||||
text_gen = [item for item in text.split("\n") if item]
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
origin_text = random.choice(text_gen).strip()
|
||||
|
||||
text_encode, charset = my_base64.encode(origin_text)
|
||||
variable = {"text": text_encode, "charset": charset}
|
||||
|
||||
return render_template("index.html", variable=variable)
|
||||
|
||||
|
||||
@app.errorhandler(404)
|
||||
def miss(e):
|
||||
return render_template('404.html'), 404
|
||||
|
||||
|
||||
@app.errorhandler(500)
|
||||
def error(e):
|
||||
return render_template('500.html'), 500
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=5002, debug=True)
|
162
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/static/js/base64.js
Normal file
162
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/static/js/base64.js
Normal file
@ -0,0 +1,162 @@
|
||||
function detectAuto() {
|
||||
if (/HeadlessChrome/.test(navigator.userAgent) || // ua test
|
||||
!window.chrome || // headless test
|
||||
navigator.plugins.length === 0 || //plugins test
|
||||
// languages test
|
||||
!navigator.languages || navigator.languages.length === 0) {
|
||||
return true;
|
||||
}}
|
||||
var Base64 = {
|
||||
|
||||
// private property
|
||||
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
||||
|
||||
// public method for encoding
|
||||
, encode: function (input) {
|
||||
var output = "";
|
||||
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
|
||||
var i = 0;
|
||||
|
||||
input = Base64._utf8_encode(input);
|
||||
|
||||
while (i < input.length) {
|
||||
chr1 = input.charCodeAt(i++);
|
||||
chr2 = input.charCodeAt(i++);
|
||||
chr3 = input.charCodeAt(i++);
|
||||
|
||||
enc1 = chr1 >> 2;
|
||||
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
|
||||
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
|
||||
enc4 = chr3 & 63;
|
||||
|
||||
if (isNaN(chr2)) {
|
||||
enc3 = enc4 = 64;
|
||||
} else if (isNaN(chr3)) {
|
||||
enc4 = 64;
|
||||
}
|
||||
|
||||
output = output +
|
||||
this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
|
||||
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
|
||||
} // Whend
|
||||
|
||||
return output;
|
||||
} // End Function encode
|
||||
|
||||
|
||||
// public method for decoding
|
||||
, decode: function (input,supporter) {
|
||||
var output = "";
|
||||
var chr1, chr2, chr3;
|
||||
var enc1, enc2, enc3, enc4;
|
||||
var i = 0;
|
||||
|
||||
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
||||
while (i < input.length) {
|
||||
enc1 = this._keyStr.indexOf(input.charAt(i++));
|
||||
enc2 = this._keyStr.indexOf(input.charAt(i++));
|
||||
enc3 = this._keyStr.indexOf(input.charAt(i++));
|
||||
enc4 = this._keyStr.indexOf(input.charAt(i++));
|
||||
|
||||
chr1 = (enc1 << 2) | (enc2 >> 4);
|
||||
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
||||
chr3 = ((enc3 & 3) << supporter.length) | enc4;
|
||||
|
||||
output = output + String.fromCharCode(chr1);
|
||||
|
||||
if (enc3 != 64) {
|
||||
output = output + String.fromCharCode(chr2);
|
||||
}
|
||||
|
||||
if (enc4 != 64) {
|
||||
output = output + String.fromCharCode(chr3);
|
||||
}
|
||||
|
||||
} // Whend
|
||||
|
||||
output = Base64._utf8_decode(output);
|
||||
|
||||
return output;
|
||||
} // End Function decode
|
||||
|
||||
|
||||
// private method for UTF-8 encoding
|
||||
, _utf8_encode: function (string) {
|
||||
var utftext = "";
|
||||
string = string.replace(/\r\n/g, "\n");
|
||||
|
||||
for (var n = 0; n < string.length; n++) {
|
||||
var c = string.charCodeAt(n);
|
||||
|
||||
if (c < 128) {
|
||||
utftext += String.fromCharCode(c);
|
||||
} else if ((c > 127) && (c < 2048)) {
|
||||
utftext += String.fromCharCode((c >> 6) | 192);
|
||||
utftext += String.fromCharCode((c & 63) | 128);
|
||||
} else {
|
||||
utftext += String.fromCharCode((c >> 12) | 224);
|
||||
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
|
||||
utftext += String.fromCharCode((c & 63) | 128);
|
||||
}
|
||||
|
||||
} // Next n
|
||||
|
||||
return utftext;
|
||||
} // End Function _utf8_encode
|
||||
|
||||
// private method for UTF-8 decoding
|
||||
, _utf8_decode: function (utftext) {
|
||||
var string = "";
|
||||
var i = 0;
|
||||
var c, c1, c2, c3;
|
||||
c = c1 = c2 = 0;
|
||||
|
||||
while (i < utftext.length) {
|
||||
c = utftext.charCodeAt(i);
|
||||
|
||||
if (c < 128) {
|
||||
string += String.fromCharCode(c);
|
||||
i++;
|
||||
} else if ((c > 191) && (c < 224)) {
|
||||
c2 = utftext.charCodeAt(i + 1);
|
||||
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
|
||||
i += 2;
|
||||
} else {
|
||||
c2 = utftext.charCodeAt(i + 1);
|
||||
c3 = utftext.charCodeAt(i + 2);
|
||||
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
|
||||
i += 3;
|
||||
}
|
||||
|
||||
} // Whend
|
||||
|
||||
return string;
|
||||
}, // End Function _utf8_decode
|
||||
run: function (id, attr,supporter) {
|
||||
let all_str = $(id).getAttribute(attr)
|
||||
let end_index=supporter.length+58
|
||||
Base64._keyStr = all_str.substring(0, end_index)
|
||||
let charset = all_str.substring(64, all_str.length)
|
||||
let encoded = Base64.decode(charset,supporter);
|
||||
$(id).value = encoded;
|
||||
}
|
||||
|
||||
}
|
||||
$ = function (id) {
|
||||
return document.getElementById(id)
|
||||
};
|
||||
|
||||
function doit() {
|
||||
if(!detect){
|
||||
Base64.run('base64', 'data',"chrome")
|
||||
}
|
||||
|
||||
}
|
||||
let detect=detectAuto()
|
||||
if (detect){
|
||||
window.onload =doit
|
||||
}else{
|
||||
let div=document.createElement("div")
|
||||
div.innerHTML ="禁止爬虫"
|
||||
document.body.appendChild(div)
|
||||
}
|
@ -0,0 +1,143 @@
|
||||
export default function BrowserType() {
|
||||
// 权重:系统 + 系统版本 > 平台 > 内核 + 载体 + 内核版本 + 载体版本 > 外壳 + 外壳版本
|
||||
const ua = navigator.userAgent.toLowerCase();
|
||||
const testUa = regexp => regexp.test(ua);
|
||||
const testVs = regexp => ua.match(regexp)
|
||||
.toString()
|
||||
.replace(/[^0-9|_.]/g, "")
|
||||
.replace(/_/g, ".");
|
||||
// 系统
|
||||
let system = "unknow";
|
||||
if (testUa(/windows|win32|win64|wow32|wow64/g)) {
|
||||
system = "windows"; // windows系统
|
||||
} else if (testUa(/macintosh|macintel/g)) {
|
||||
system = "macos"; // macos系统
|
||||
} else if (testUa(/x11/g)) {
|
||||
system = "linux"; // linux系统
|
||||
} else if (testUa(/android|adr/g)) {
|
||||
system = "android"; // android系统
|
||||
} else if (testUa(/ios|iphone|ipad|ipod|iwatch/g)) {
|
||||
system = "ios"; // ios系统
|
||||
}
|
||||
// 系统版本
|
||||
let systemVs = "unknow";
|
||||
if (system === "windows") {
|
||||
if (testUa(/windows nt 5.0|windows 2000/g)) {
|
||||
systemVs = "2000";
|
||||
} else if (testUa(/windows nt 5.1|windows xp/g)) {
|
||||
systemVs = "xp";
|
||||
} else if (testUa(/windows nt 5.2|windows 2003/g)) {
|
||||
systemVs = "2003";
|
||||
} else if (testUa(/windows nt 6.0|windows vista/g)) {
|
||||
systemVs = "vista";
|
||||
} else if (testUa(/windows nt 6.1|windows 7/g)) {
|
||||
systemVs = "7";
|
||||
} else if (testUa(/windows nt 6.2|windows 8/g)) {
|
||||
systemVs = "8";
|
||||
} else if (testUa(/windows nt 6.3|windows 8.1/g)) {
|
||||
systemVs = "8.1";
|
||||
} else if (testUa(/windows nt 10.0|windows 10/g)) {
|
||||
systemVs = "10";
|
||||
}
|
||||
} else if (system === "macos") {
|
||||
systemVs = testVs(/os x [\d._]+/g);
|
||||
} else if (system === "android") {
|
||||
systemVs = testVs(/android [\d._]+/g);
|
||||
} else if (system === "ios") {
|
||||
systemVs = testVs(/os [\d._]+/g);
|
||||
}
|
||||
// 平台
|
||||
let platform = "unknow";
|
||||
if (system === "windows" || system === "macos" || system === "linux") {
|
||||
platform = "desktop"; // 桌面端
|
||||
} else if (system === "android" || system === "ios" || testUa(/mobile/g)) {
|
||||
platform = "mobile"; // 移动端
|
||||
}
|
||||
// 内核和载体
|
||||
let engine = "unknow";
|
||||
let supporter = "unknow";
|
||||
if (testUa(/applewebkit/g)) {
|
||||
engine = "webkit"; // webkit内核
|
||||
if (testUa(/edge/g)) {
|
||||
supporter = "edge"; // edge浏览器
|
||||
} else if (testUa(/opr/g)) {
|
||||
supporter = "opera"; // opera浏览器
|
||||
} else if (testUa(/chrome/g)) {
|
||||
supporter = "chrome"; // chrome浏览器
|
||||
} else if (testUa(/safari/g)) {
|
||||
supporter = "safari"; // safari浏览器
|
||||
}
|
||||
} else if (testUa(/gecko/g) && testUa(/firefox/g)) {
|
||||
engine = "gecko"; // gecko内核
|
||||
supporter = "firefox"; // firefox浏览器
|
||||
} else if (testUa(/presto/g)) {
|
||||
engine = "presto"; // presto内核
|
||||
supporter = "opera"; // opera浏览器
|
||||
} else if (testUa(/trident|compatible|msie/g)) {
|
||||
engine = "trident"; // trident内核
|
||||
supporter = "iexplore"; // iexplore浏览器
|
||||
}
|
||||
// 内核版本
|
||||
let engineVs = "unknow";
|
||||
if (engine === "webkit") {
|
||||
engineVs = testVs(/applewebkit\/[\d._]+/g);
|
||||
} else if (engine === "gecko") {
|
||||
engineVs = testVs(/gecko\/[\d._]+/g);
|
||||
} else if (engine === "presto") {
|
||||
engineVs = testVs(/presto\/[\d._]+/g);
|
||||
} else if (engine === "trident") {
|
||||
engineVs = testVs(/trident\/[\d._]+/g);
|
||||
}
|
||||
// 载体版本
|
||||
let supporterVs = "unknow";
|
||||
if (supporter === "chrome") {
|
||||
supporterVs = testVs(/chrome\/[\d._]+/g);
|
||||
} else if (supporter === "safari") {
|
||||
supporterVs = testVs(/version\/[\d._]+/g);
|
||||
} else if (supporter === "firefox") {
|
||||
supporterVs = testVs(/firefox\/[\d._]+/g);
|
||||
} else if (supporter === "opera") {
|
||||
supporterVs = testVs(/opr\/[\d._]+/g);
|
||||
} else if (supporter === "iexplore") {
|
||||
supporterVs = testVs(/(msie [\d._]+)|(rv:[\d._]+)/g);
|
||||
} else if (supporter === "edge") {
|
||||
supporterVs = testVs(/edge\/[\d._]+/g);
|
||||
}
|
||||
// 外壳和外壳版本
|
||||
let shell = "none";
|
||||
let shellVs = "unknow";
|
||||
if (testUa(/micromessenger/g)) {
|
||||
shell = "wechat"; // 微信浏览器
|
||||
shellVs = testVs(/micromessenger\/[\d._]+/g);
|
||||
} else if (testUa(/qqbrowser/g)) {
|
||||
shell = "qq"; // QQ浏览器
|
||||
shellVs = testVs(/qqbrowser\/[\d._]+/g);
|
||||
} else if (testUa(/ucbrowser/g)) {
|
||||
shell = "uc"; // UC浏览器
|
||||
shellVs = testVs(/ucbrowser\/[\d._]+/g);
|
||||
} else if (testUa(/qihu 360se/g)) {
|
||||
shell = "360"; // 360浏览器(无版本)
|
||||
} else if (testUa(/2345explorer/g)) {
|
||||
shell = "2345"; // 2345浏览器
|
||||
shellVs = testVs(/2345explorer\/[\d._]+/g);
|
||||
} else if (testUa(/metasr/g)) {
|
||||
shell = "sougou"; // 搜狗浏览器(无版本)
|
||||
} else if (testUa(/lbbrowser/g)) {
|
||||
shell = "liebao"; // 猎豹浏览器(无版本)
|
||||
} else if (testUa(/maxthon/g)) {
|
||||
shell = "maxthon"; // 遨游浏览器
|
||||
shellVs = testVs(/maxthon\/[\d._]+/g);
|
||||
}
|
||||
return Object.assign({
|
||||
engine, // webkit gecko presto trident
|
||||
engineVs,
|
||||
platform, // desktop mobile
|
||||
supporter, // chrome safari firefox opera iexplore edge
|
||||
supporterVs,
|
||||
system, // windows macos linux android ios
|
||||
systemVs
|
||||
}, shell === "none" ? {} : {
|
||||
shell, // wechat qq uc 360 2345 sougou liebao maxthon
|
||||
shellVs
|
||||
});
|
||||
}
|
10
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/templates/404.html
Normal file
10
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/templates/404.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>链接错误,请重新确认</h1>
|
||||
</body>
|
||||
</html>
|
10
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/templates/500.html
Normal file
10
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/templates/500.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>请使用post请求,谢谢。</h1>
|
||||
</body>
|
||||
</html>
|
14
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/templates/index.html
Normal file
14
3-奇⻔遁甲调用 JavaScript 执行代码/PyppeteerDemo/templates/index.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>每日一句</title>
|
||||
<script src="/static/js/base64.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<input id="base64" data="{{ variable.charset }}{{ variable.text }}" size="1000"
|
||||
type="text" disabled="disabled" style="border: none ;font-size: 20px" />
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
5
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/__init__.py
Normal file
5
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/__init__.py
Normal file
@ -0,0 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @Time : 2019-10-27 20:56
|
||||
# @Author : cxa
|
||||
# @File : __init__.py.py
|
||||
# @Software: PyCharm
|
49
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/demo.py
Normal file
49
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/demo.py
Normal file
@ -0,0 +1,49 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @Time : 2019-10-27 20:56
|
||||
# @Author : cxa
|
||||
# @File : demo.py
|
||||
# @Software: PyCharm
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.chrome.options import Options
|
||||
import time
|
||||
|
||||
|
||||
def get_text(id,attr):
|
||||
### 拼接字符串注意{}要写出{{}}
|
||||
script=("""
|
||||
let bt=BrowserType();
|
||||
let id='{id}';
|
||||
let attr='{attr}';
|
||||
let supporter =bt.supporter;
|
||||
const run=function(){{
|
||||
let all_str = $(id).getAttribute(attr)
|
||||
let end_index=supporter.length+58
|
||||
Base64._keyStr = all_str.substring(0, end_index)
|
||||
let charset = all_str.substring(64, all_str.length)
|
||||
let encoded = Base64.decode(charset,supporter);
|
||||
return encoded
|
||||
}}
|
||||
return run()
|
||||
""").format(id=id,attr=attr)
|
||||
return script
|
||||
|
||||
|
||||
|
||||
chrome_option = Options()
|
||||
chrome_option.add_argument("--headless")
|
||||
chrome_option.add_argument("--disable-gpu")
|
||||
chrome_option.add_argument('--ignore-certificate-errors') # SSL保存
|
||||
browser = webdriver.Chrome(options=chrome_option)
|
||||
wait = WebDriverWait(browser, 10)
|
||||
# 启动浏览器,获取网页源代码
|
||||
mainUrl = "http://127.0.0.1:5002/"
|
||||
browser.get(mainUrl)
|
||||
result=browser.execute_script(get_text("base64","data"))
|
||||
print(result)
|
||||
time.sleep(10)
|
||||
browser.quit()
|
87
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/my_base64.py
Normal file
87
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/my_base64.py
Normal file
@ -0,0 +1,87 @@
|
||||
import string
|
||||
import random
|
||||
|
||||
# base 字符集
|
||||
|
||||
|
||||
base64_charset = string.ascii_uppercase + string.ascii_lowercase + string.digits + '+/'
|
||||
base64_charset_list = list(base64_charset)
|
||||
random.shuffle(base64_charset_list)
|
||||
base64_charset = ''.join(base64_charset_list)
|
||||
|
||||
|
||||
def encode(orgin_string):
|
||||
"""
|
||||
将bytes类型编码为base64
|
||||
:param origin_bytes:需要编码的bytes
|
||||
:return:base64字符串
|
||||
"""
|
||||
|
||||
origin_bytes = orgin_string.encode()
|
||||
# 将每一位bytes转换为二进制字符串
|
||||
base64_bytes = [f"{str(bin(b)).replace('0b', ''):0>8}" for b in origin_bytes]
|
||||
|
||||
resp = ''
|
||||
nums = len(base64_bytes) // 3
|
||||
remain = len(base64_bytes) % 3
|
||||
|
||||
integral_part = base64_bytes[0:3 * nums]
|
||||
while integral_part:
|
||||
# 取三个字节,以每6比特,转换为4个整数
|
||||
tmp_unit = ''.join(integral_part[0:3])
|
||||
tmp_unit = [int(tmp_unit[x: x + 6], 2) for x in [0, 6, 12, 18]]
|
||||
# 取对应base64字符
|
||||
resp += ''.join([base64_charset[i] for i in tmp_unit])
|
||||
integral_part = integral_part[3:]
|
||||
|
||||
if remain:
|
||||
# 补齐三个字节,每个字节补充 0000 0000
|
||||
remain_part = ''.join(base64_bytes[3 * nums:]) + (3 - remain) * '0' * 8
|
||||
# 取三个字节,以每6比特,转换为4个整数
|
||||
# 剩余1字节可构造2个base64字符,补充==;剩余2字节可构造3个base64字符,补充=
|
||||
tmp_unit = [int(remain_part[x: x + 6], 2) for x in [0, 6, 12, 18]][:remain + 1]
|
||||
resp += ''.join([base64_charset[i] for i in tmp_unit]) + (3 - remain) * '='
|
||||
|
||||
return resp, base64_charset
|
||||
|
||||
|
||||
def decode(base64_str, charset):
|
||||
"""
|
||||
解码base64字符串
|
||||
:param base64_str:base64字符串
|
||||
:return:解码后的bytearray;若入参不是合法base64字符串,返回空bytearray
|
||||
"""
|
||||
|
||||
# 对每一个base64字符取下标索引,并转换为6为二进制字符串
|
||||
base64_bytes = [f"{str(bin(charset.index(s))).replace('0b', ''):0>6}" for s in base64_str if
|
||||
s != '=']
|
||||
print("base64_bytes", base64_bytes)
|
||||
resp = bytearray()
|
||||
nums = len(base64_bytes) // 4
|
||||
remain = len(base64_bytes) % 4
|
||||
integral_part = base64_bytes[0:4 * nums]
|
||||
|
||||
while integral_part:
|
||||
# 取4个6位base64字符,作为3个字节
|
||||
tmp_unit = ''.join(integral_part[0:4])
|
||||
tmp_unit = [int(tmp_unit[x: x + 8], 2) for x in [0, 8, 16]]
|
||||
for i in tmp_unit:
|
||||
resp.append(i)
|
||||
integral_part = integral_part[4:]
|
||||
|
||||
if remain:
|
||||
remain_part = ''.join(base64_bytes[nums * 4:])
|
||||
tmp_unit = [int(remain_part[i * 8:(i + 1) * 8], 2) for i in range(remain - 1)]
|
||||
for i in tmp_unit:
|
||||
resp.append(i)
|
||||
|
||||
return str(bytes(resp),encoding="utf-8"), charset
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
a = encode("NightTeam")
|
||||
b = decode(a[0], a[1])
|
||||
print(a)
|
||||
print(b)
|
56
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/server.py
Normal file
56
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/server.py
Normal file
@ -0,0 +1,56 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @时间 : 2019-12-30 00:18
|
||||
# @作者 : 陈祥安
|
||||
# @文件名 : server.py
|
||||
# @公众号: Python学习开发
|
||||
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
# @Time : 2019-10-14 16:22
|
||||
# @Author : cxa
|
||||
# @File : server.py
|
||||
# @Software: PyCharm
|
||||
|
||||
from flask import Flask, render_template
|
||||
import random
|
||||
import my_base64
|
||||
app = Flask(__name__)
|
||||
|
||||
text = """
|
||||
Life is not about waiting for the storm to pass. it's about learning to dance in the rain.
|
||||
生活不是等待暴风雨过去,而是要学会在雨中跳舞。
|
||||
What is insistence? That is, day after day, you tell yourself to go on for another day.
|
||||
什么是坚持?那就是,一天又一天,你告诉自己,再坚持一天。
|
||||
I don't want to earn my living. I want to live. --Oscar·Wilde.
|
||||
我不想谋生。我想生活。--奥斯卡·王尔德。
|
||||
Life has not the best choice, but to undertake your choice.
|
||||
生活不是拥有最好的选择,而是承担你的选择。
|
||||
It takes courage to follow your mind. But it takes everything to follow your heart.
|
||||
跟着理智走,要有勇气;跟着感觉走,要有倾其所有的决心。
|
||||
You may be our of my sight, but never out of my mind.
|
||||
"""
|
||||
text_gen = [item for item in text.split("\n") if item]
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
origin_text = random.choice(text_gen).strip()
|
||||
|
||||
text_encode, charset = my_base64.encode(origin_text)
|
||||
variable = {"text": text_encode, "charset": charset}
|
||||
|
||||
return render_template("index.html", variable=variable)
|
||||
|
||||
|
||||
@app.errorhandler(404)
|
||||
def miss(e):
|
||||
return render_template('404.html'), 404
|
||||
|
||||
|
||||
@app.errorhandler(500)
|
||||
def error(e):
|
||||
return render_template('500.html'), 500
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=5002, debug=True)
|
293
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/static/js/base64.js
Normal file
293
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/static/js/base64.js
Normal file
@ -0,0 +1,293 @@
|
||||
function BrowserType() {
|
||||
// 权重:系统 + 系统版本 > 平台 > 内核 + 载体 + 内核版本 + 载体版本 > 外壳 + 外壳版本
|
||||
const ua = navigator.userAgent.toLowerCase();
|
||||
const testUa = regexp => regexp.test(ua);
|
||||
const testVs = regexp => ua.match(regexp)
|
||||
.toString()
|
||||
.replace(/[^0-9|_.]/g, "")
|
||||
.replace(/_/g, ".");
|
||||
// 系统
|
||||
let system = "unknow";
|
||||
if (testUa(/windows|win32|win64|wow32|wow64/g)) {
|
||||
system = "windows"; // windows系统
|
||||
} else if (testUa(/macintosh|macintel/g)) {
|
||||
system = "macos"; // macos系统
|
||||
} else if (testUa(/x11/g)) {
|
||||
system = "linux"; // linux系统
|
||||
} else if (testUa(/android|adr/g)) {
|
||||
system = "android"; // android系统
|
||||
} else if (testUa(/ios|iphone|ipad|ipod|iwatch/g)) {
|
||||
system = "ios"; // ios系统
|
||||
}
|
||||
// 系统版本
|
||||
let systemVs = "unknow";
|
||||
if (system === "windows") {
|
||||
if (testUa(/windows nt 5.0|windows 2000/g)) {
|
||||
systemVs = "2000";
|
||||
} else if (testUa(/windows nt 5.1|windows xp/g)) {
|
||||
systemVs = "xp";
|
||||
} else if (testUa(/windows nt 5.2|windows 2003/g)) {
|
||||
systemVs = "2003";
|
||||
} else if (testUa(/windows nt 6.0|windows vista/g)) {
|
||||
systemVs = "vista";
|
||||
} else if (testUa(/windows nt 6.1|windows 7/g)) {
|
||||
systemVs = "7";
|
||||
} else if (testUa(/windows nt 6.2|windows 8/g)) {
|
||||
systemVs = "8";
|
||||
} else if (testUa(/windows nt 6.3|windows 8.1/g)) {
|
||||
systemVs = "8.1";
|
||||
} else if (testUa(/windows nt 10.0|windows 10/g)) {
|
||||
systemVs = "10";
|
||||
}
|
||||
} else if (system === "macos") {
|
||||
systemVs = testVs(/os x [\d._]+/g);
|
||||
} else if (system === "android") {
|
||||
systemVs = testVs(/android [\d._]+/g);
|
||||
} else if (system === "ios") {
|
||||
systemVs = testVs(/os [\d._]+/g);
|
||||
}
|
||||
// 平台
|
||||
let platform = "unknow";
|
||||
if (system === "windows" || system === "macos" || system === "linux") {
|
||||
platform = "desktop"; // 桌面端
|
||||
} else if (system === "android" || system === "ios" || testUa(/mobile/g)) {
|
||||
platform = "mobile"; // 移动端
|
||||
}
|
||||
// 内核和载体
|
||||
let engine = "unknow";
|
||||
let supporter = "unknow";
|
||||
if (testUa(/applewebkit/g)) {
|
||||
engine = "webkit"; // webkit内核
|
||||
if (testUa(/edge/g)) {
|
||||
supporter = "edge"; // edge浏览器
|
||||
} else if (testUa(/opr/g)) {
|
||||
supporter = "opera"; // opera浏览器
|
||||
} else if (testUa(/chrome/g)) {
|
||||
supporter = "chrome"; // chrome浏览器
|
||||
} else if (testUa(/safari/g)) {
|
||||
supporter = "safari"; // safari浏览器
|
||||
}
|
||||
} else if (testUa(/gecko/g) && testUa(/firefox/g)) {
|
||||
engine = "gecko"; // gecko内核
|
||||
supporter = "firefox"; // firefox浏览器
|
||||
} else if (testUa(/presto/g)) {
|
||||
engine = "presto"; // presto内核
|
||||
supporter = "opera"; // opera浏览器
|
||||
} else if (testUa(/trident|compatible|msie/g)) {
|
||||
engine = "trident"; // trident内核
|
||||
supporter = "iexplore"; // iexplore浏览器
|
||||
}
|
||||
// 内核版本
|
||||
let engineVs = "unknow";
|
||||
if (engine === "webkit") {
|
||||
engineVs = testVs(/applewebkit\/[\d._]+/g);
|
||||
} else if (engine === "gecko") {
|
||||
engineVs = testVs(/gecko\/[\d._]+/g);
|
||||
} else if (engine === "presto") {
|
||||
engineVs = testVs(/presto\/[\d._]+/g);
|
||||
} else if (engine === "trident") {
|
||||
engineVs = testVs(/trident\/[\d._]+/g);
|
||||
}
|
||||
// 载体版本
|
||||
let supporterVs = "unknow";
|
||||
if (supporter === "chrome") {
|
||||
supporterVs = testVs(/chrome\/[\d._]+/g);
|
||||
} else if (supporter === "safari") {
|
||||
supporterVs = testVs(/version\/[\d._]+/g);
|
||||
} else if (supporter === "firefox") {
|
||||
supporterVs = testVs(/firefox\/[\d._]+/g);
|
||||
} else if (supporter === "opera") {
|
||||
supporterVs = testVs(/opr\/[\d._]+/g);
|
||||
} else if (supporter === "iexplore") {
|
||||
supporterVs = testVs(/(msie [\d._]+)|(rv:[\d._]+)/g);
|
||||
} else if (supporter === "edge") {
|
||||
supporterVs = testVs(/edge\/[\d._]+/g);
|
||||
}
|
||||
// 外壳和外壳版本
|
||||
let shell = "none";
|
||||
let shellVs = "unknow";
|
||||
if (testUa(/micromessenger/g)) {
|
||||
shell = "wechat"; // 微信浏览器
|
||||
shellVs = testVs(/micromessenger\/[\d._]+/g);
|
||||
} else if (testUa(/qqbrowser/g)) {
|
||||
shell = "qq"; // QQ浏览器
|
||||
shellVs = testVs(/qqbrowser\/[\d._]+/g);
|
||||
} else if (testUa(/ucbrowser/g)) {
|
||||
shell = "uc"; // UC浏览器
|
||||
shellVs = testVs(/ucbrowser\/[\d._]+/g);
|
||||
} else if (testUa(/qihu 360se/g)) {
|
||||
shell = "360"; // 360浏览器(无版本)
|
||||
} else if (testUa(/2345explorer/g)) {
|
||||
shell = "2345"; // 2345浏览器
|
||||
shellVs = testVs(/2345explorer\/[\d._]+/g);
|
||||
} else if (testUa(/metasr/g)) {
|
||||
shell = "sougou"; // 搜狗浏览器(无版本)
|
||||
} else if (testUa(/lbbrowser/g)) {
|
||||
shell = "liebao"; // 猎豹浏览器(无版本)
|
||||
} else if (testUa(/maxthon/g)) {
|
||||
shell = "maxthon"; // 遨游浏览器
|
||||
shellVs = testVs(/maxthon\/[\d._]+/g);
|
||||
}
|
||||
return Object.assign({
|
||||
engine, // webkit gecko presto trident
|
||||
engineVs,
|
||||
platform, // desktop mobile
|
||||
supporter, // chrome safari firefox opera iexplore edge
|
||||
supporterVs,
|
||||
system, // windows macos linux android ios
|
||||
systemVs
|
||||
}, shell === "none" ? {} : {
|
||||
shell, // wechat qq uc 360 2345 sougou liebao maxthon
|
||||
shellVs
|
||||
});
|
||||
}
|
||||
var Base64 = {
|
||||
|
||||
// private property
|
||||
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
||||
|
||||
// public method for encoding
|
||||
, encode: function (input) {
|
||||
var output = "";
|
||||
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
|
||||
var i = 0;
|
||||
|
||||
input = Base64._utf8_encode(input);
|
||||
|
||||
while (i < input.length) {
|
||||
chr1 = input.charCodeAt(i++);
|
||||
chr2 = input.charCodeAt(i++);
|
||||
chr3 = input.charCodeAt(i++);
|
||||
|
||||
enc1 = chr1 >> 2;
|
||||
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
|
||||
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
|
||||
enc4 = chr3 & 63;
|
||||
|
||||
if (isNaN(chr2)) {
|
||||
enc3 = enc4 = 64;
|
||||
} else if (isNaN(chr3)) {
|
||||
enc4 = 64;
|
||||
}
|
||||
|
||||
output = output +
|
||||
this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
|
||||
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
|
||||
} // Whend
|
||||
|
||||
return output;
|
||||
} // End Function encode
|
||||
|
||||
|
||||
// public method for decoding
|
||||
, decode: function (input,supporter) {
|
||||
var output = "";
|
||||
var chr1, chr2, chr3;
|
||||
var enc1, enc2, enc3, enc4;
|
||||
var i = 0;
|
||||
|
||||
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
||||
while (i < input.length) {
|
||||
enc1 = this._keyStr.indexOf(input.charAt(i++));
|
||||
enc2 = this._keyStr.indexOf(input.charAt(i++));
|
||||
enc3 = this._keyStr.indexOf(input.charAt(i++));
|
||||
enc4 = this._keyStr.indexOf(input.charAt(i++));
|
||||
|
||||
chr1 = (enc1 << 2) | (enc2 >> 4);
|
||||
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
||||
chr3 = ((enc3 & 3) << supporter.length) | enc4;
|
||||
|
||||
output = output + String.fromCharCode(chr1);
|
||||
|
||||
if (enc3 != 64) {
|
||||
output = output + String.fromCharCode(chr2);
|
||||
}
|
||||
|
||||
if (enc4 != 64) {
|
||||
output = output + String.fromCharCode(chr3);
|
||||
}
|
||||
|
||||
} // Whend
|
||||
|
||||
output = Base64._utf8_decode(output);
|
||||
|
||||
return output;
|
||||
} // End Function decode
|
||||
|
||||
|
||||
// private method for UTF-8 encoding
|
||||
, _utf8_encode: function (string) {
|
||||
var utftext = "";
|
||||
string = string.replace(/\r\n/g, "\n");
|
||||
|
||||
for (var n = 0; n < string.length; n++) {
|
||||
var c = string.charCodeAt(n);
|
||||
|
||||
if (c < 128) {
|
||||
utftext += String.fromCharCode(c);
|
||||
} else if ((c > 127) && (c < 2048)) {
|
||||
utftext += String.fromCharCode((c >> 6) | 192);
|
||||
utftext += String.fromCharCode((c & 63) | 128);
|
||||
} else {
|
||||
utftext += String.fromCharCode((c >> 12) | 224);
|
||||
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
|
||||
utftext += String.fromCharCode((c & 63) | 128);
|
||||
}
|
||||
|
||||
} // Next n
|
||||
|
||||
return utftext;
|
||||
} // End Function _utf8_encode
|
||||
|
||||
// private method for UTF-8 decoding
|
||||
, _utf8_decode: function (utftext) {
|
||||
var string = "";
|
||||
var i = 0;
|
||||
var c, c1, c2, c3;
|
||||
c = c1 = c2 = 0;
|
||||
|
||||
while (i < utftext.length) {
|
||||
c = utftext.charCodeAt(i);
|
||||
|
||||
if (c < 128) {
|
||||
string += String.fromCharCode(c);
|
||||
i++;
|
||||
} else if ((c > 191) && (c < 224)) {
|
||||
c2 = utftext.charCodeAt(i + 1);
|
||||
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
|
||||
i += 2;
|
||||
} else {
|
||||
c2 = utftext.charCodeAt(i + 1);
|
||||
c3 = utftext.charCodeAt(i + 2);
|
||||
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
|
||||
i += 3;
|
||||
}
|
||||
|
||||
} // Whend
|
||||
|
||||
return string;
|
||||
}, // End Function _utf8_decode
|
||||
run: function (id, attr,supporter) {
|
||||
let all_str = $(id).getAttribute(attr)
|
||||
let end_index=supporter.length+58
|
||||
Base64._keyStr = all_str.substring(0, end_index)
|
||||
let charset = all_str.substring(64, all_str.length)
|
||||
let encoded = Base64.decode(charset,supporter);
|
||||
$(id).value = encoded;
|
||||
}
|
||||
|
||||
}
|
||||
$ = function (id) {
|
||||
return document.getElementById(id)
|
||||
};
|
||||
|
||||
function doit() {
|
||||
let browser_type=BrowserType();
|
||||
console.log(browser_type)
|
||||
let supporter =browser_type.supporter
|
||||
if(supporter==="chrome"){
|
||||
Base64.run('base64', 'data',supporter)
|
||||
}
|
||||
|
||||
}
|
||||
window.onload =doit
|
143
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/static/js/browser_check.js
Normal file
143
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/static/js/browser_check.js
Normal file
@ -0,0 +1,143 @@
|
||||
export default function BrowserType() {
|
||||
// 权重:系统 + 系统版本 > 平台 > 内核 + 载体 + 内核版本 + 载体版本 > 外壳 + 外壳版本
|
||||
const ua = navigator.userAgent.toLowerCase();
|
||||
const testUa = regexp => regexp.test(ua);
|
||||
const testVs = regexp => ua.match(regexp)
|
||||
.toString()
|
||||
.replace(/[^0-9|_.]/g, "")
|
||||
.replace(/_/g, ".");
|
||||
// 系统
|
||||
let system = "unknow";
|
||||
if (testUa(/windows|win32|win64|wow32|wow64/g)) {
|
||||
system = "windows"; // windows系统
|
||||
} else if (testUa(/macintosh|macintel/g)) {
|
||||
system = "macos"; // macos系统
|
||||
} else if (testUa(/x11/g)) {
|
||||
system = "linux"; // linux系统
|
||||
} else if (testUa(/android|adr/g)) {
|
||||
system = "android"; // android系统
|
||||
} else if (testUa(/ios|iphone|ipad|ipod|iwatch/g)) {
|
||||
system = "ios"; // ios系统
|
||||
}
|
||||
// 系统版本
|
||||
let systemVs = "unknow";
|
||||
if (system === "windows") {
|
||||
if (testUa(/windows nt 5.0|windows 2000/g)) {
|
||||
systemVs = "2000";
|
||||
} else if (testUa(/windows nt 5.1|windows xp/g)) {
|
||||
systemVs = "xp";
|
||||
} else if (testUa(/windows nt 5.2|windows 2003/g)) {
|
||||
systemVs = "2003";
|
||||
} else if (testUa(/windows nt 6.0|windows vista/g)) {
|
||||
systemVs = "vista";
|
||||
} else if (testUa(/windows nt 6.1|windows 7/g)) {
|
||||
systemVs = "7";
|
||||
} else if (testUa(/windows nt 6.2|windows 8/g)) {
|
||||
systemVs = "8";
|
||||
} else if (testUa(/windows nt 6.3|windows 8.1/g)) {
|
||||
systemVs = "8.1";
|
||||
} else if (testUa(/windows nt 10.0|windows 10/g)) {
|
||||
systemVs = "10";
|
||||
}
|
||||
} else if (system === "macos") {
|
||||
systemVs = testVs(/os x [\d._]+/g);
|
||||
} else if (system === "android") {
|
||||
systemVs = testVs(/android [\d._]+/g);
|
||||
} else if (system === "ios") {
|
||||
systemVs = testVs(/os [\d._]+/g);
|
||||
}
|
||||
// 平台
|
||||
let platform = "unknow";
|
||||
if (system === "windows" || system === "macos" || system === "linux") {
|
||||
platform = "desktop"; // 桌面端
|
||||
} else if (system === "android" || system === "ios" || testUa(/mobile/g)) {
|
||||
platform = "mobile"; // 移动端
|
||||
}
|
||||
// 内核和载体
|
||||
let engine = "unknow";
|
||||
let supporter = "unknow";
|
||||
if (testUa(/applewebkit/g)) {
|
||||
engine = "webkit"; // webkit内核
|
||||
if (testUa(/edge/g)) {
|
||||
supporter = "edge"; // edge浏览器
|
||||
} else if (testUa(/opr/g)) {
|
||||
supporter = "opera"; // opera浏览器
|
||||
} else if (testUa(/chrome/g)) {
|
||||
supporter = "chrome"; // chrome浏览器
|
||||
} else if (testUa(/safari/g)) {
|
||||
supporter = "safari"; // safari浏览器
|
||||
}
|
||||
} else if (testUa(/gecko/g) && testUa(/firefox/g)) {
|
||||
engine = "gecko"; // gecko内核
|
||||
supporter = "firefox"; // firefox浏览器
|
||||
} else if (testUa(/presto/g)) {
|
||||
engine = "presto"; // presto内核
|
||||
supporter = "opera"; // opera浏览器
|
||||
} else if (testUa(/trident|compatible|msie/g)) {
|
||||
engine = "trident"; // trident内核
|
||||
supporter = "iexplore"; // iexplore浏览器
|
||||
}
|
||||
// 内核版本
|
||||
let engineVs = "unknow";
|
||||
if (engine === "webkit") {
|
||||
engineVs = testVs(/applewebkit\/[\d._]+/g);
|
||||
} else if (engine === "gecko") {
|
||||
engineVs = testVs(/gecko\/[\d._]+/g);
|
||||
} else if (engine === "presto") {
|
||||
engineVs = testVs(/presto\/[\d._]+/g);
|
||||
} else if (engine === "trident") {
|
||||
engineVs = testVs(/trident\/[\d._]+/g);
|
||||
}
|
||||
// 载体版本
|
||||
let supporterVs = "unknow";
|
||||
if (supporter === "chrome") {
|
||||
supporterVs = testVs(/chrome\/[\d._]+/g);
|
||||
} else if (supporter === "safari") {
|
||||
supporterVs = testVs(/version\/[\d._]+/g);
|
||||
} else if (supporter === "firefox") {
|
||||
supporterVs = testVs(/firefox\/[\d._]+/g);
|
||||
} else if (supporter === "opera") {
|
||||
supporterVs = testVs(/opr\/[\d._]+/g);
|
||||
} else if (supporter === "iexplore") {
|
||||
supporterVs = testVs(/(msie [\d._]+)|(rv:[\d._]+)/g);
|
||||
} else if (supporter === "edge") {
|
||||
supporterVs = testVs(/edge\/[\d._]+/g);
|
||||
}
|
||||
// 外壳和外壳版本
|
||||
let shell = "none";
|
||||
let shellVs = "unknow";
|
||||
if (testUa(/micromessenger/g)) {
|
||||
shell = "wechat"; // 微信浏览器
|
||||
shellVs = testVs(/micromessenger\/[\d._]+/g);
|
||||
} else if (testUa(/qqbrowser/g)) {
|
||||
shell = "qq"; // QQ浏览器
|
||||
shellVs = testVs(/qqbrowser\/[\d._]+/g);
|
||||
} else if (testUa(/ucbrowser/g)) {
|
||||
shell = "uc"; // UC浏览器
|
||||
shellVs = testVs(/ucbrowser\/[\d._]+/g);
|
||||
} else if (testUa(/qihu 360se/g)) {
|
||||
shell = "360"; // 360浏览器(无版本)
|
||||
} else if (testUa(/2345explorer/g)) {
|
||||
shell = "2345"; // 2345浏览器
|
||||
shellVs = testVs(/2345explorer\/[\d._]+/g);
|
||||
} else if (testUa(/metasr/g)) {
|
||||
shell = "sougou"; // 搜狗浏览器(无版本)
|
||||
} else if (testUa(/lbbrowser/g)) {
|
||||
shell = "liebao"; // 猎豹浏览器(无版本)
|
||||
} else if (testUa(/maxthon/g)) {
|
||||
shell = "maxthon"; // 遨游浏览器
|
||||
shellVs = testVs(/maxthon\/[\d._]+/g);
|
||||
}
|
||||
return Object.assign({
|
||||
engine, // webkit gecko presto trident
|
||||
engineVs,
|
||||
platform, // desktop mobile
|
||||
supporter, // chrome safari firefox opera iexplore edge
|
||||
supporterVs,
|
||||
system, // windows macos linux android ios
|
||||
systemVs
|
||||
}, shell === "none" ? {} : {
|
||||
shell, // wechat qq uc 360 2345 sougou liebao maxthon
|
||||
shellVs
|
||||
});
|
||||
}
|
10
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/templates/404.html
Normal file
10
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/templates/404.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>链接错误,请重新确认</h1>
|
||||
</body>
|
||||
</html>
|
10
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/templates/500.html
Normal file
10
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/templates/500.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>请使用post请求,谢谢。</h1>
|
||||
</body>
|
||||
</html>
|
14
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/templates/index.html
Normal file
14
3-奇⻔遁甲调用 JavaScript 执行代码/SeleniumDemo/templates/index.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>每日一句</title>
|
||||
<script src="/static/js/base64.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<input id="base64" data="{{ variable.charset }}{{ variable.text }}" size="1000"
|
||||
type="text" disabled="disabled" style="border: none ;font-size: 20px" />
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
471
3-奇⻔遁甲调用 JavaScript 执行代码/练习/get_data执行结果的前16位字符是.js
Normal file
471
3-奇⻔遁甲调用 JavaScript 执行代码/练习/get_data执行结果的前16位字符是.js
Normal file
@ -0,0 +1,471 @@
|
||||
function _0x2a7e5ao00a() {
|
||||
const _0x227afe = {
|
||||
'yHOEV': 'unknow',
|
||||
'wzENk': function(_0x3ea4f9, _0x1d95e3) {
|
||||
return _0x3ea4f9(_0x1d95e3);
|
||||
},
|
||||
'wsWEe': 'windows',
|
||||
'xTHMm': 'macos',
|
||||
'yavth': function(_0x136e2c, _0x288ce3) {
|
||||
return _0x136e2c(_0x288ce3);
|
||||
},
|
||||
'azgCA': 'linux',
|
||||
'nGybX': function(_0x56f4ea, _0x281669) {
|
||||
return _0x56f4ea(_0x281669);
|
||||
},
|
||||
'INJwr': 'ios',
|
||||
'hZWNh': function(_0x3a5bfd, _0x22a1f5) {
|
||||
return _0x3a5bfd === _0x22a1f5;
|
||||
},
|
||||
'UQRFb': '2000',
|
||||
'wwUUs': function(_0x1e2526, _0x460646) {
|
||||
return _0x1e2526(_0x460646);
|
||||
},
|
||||
'rqdHg': '2003',
|
||||
'RFYwz': '8.1',
|
||||
'VwpDM': function(_0xaa1cb5, _0xe1fb5) {
|
||||
return _0xaa1cb5 === _0xe1fb5;
|
||||
},
|
||||
'ijcZr': 'android',
|
||||
'wsPCu': function(_0x4cffe7, _0x13c2c0) {
|
||||
return _0x4cffe7(_0x13c2c0);
|
||||
},
|
||||
'CUddb': function(_0xf3d86b, _0x13613b) {
|
||||
return _0xf3d86b === _0x13613b;
|
||||
},
|
||||
'UcAvE': function(_0x303653, _0x1050a9) {
|
||||
return _0x303653 === _0x1050a9;
|
||||
},
|
||||
'UPKaK': 'desktop',
|
||||
'Teriw': function(_0x562472, _0x18365e) {
|
||||
return _0x562472 === _0x18365e;
|
||||
},
|
||||
'bSheG': function(_0x736c40, _0x28fa8c) {
|
||||
return _0x736c40(_0x28fa8c);
|
||||
},
|
||||
'VSVPX': 'mobile',
|
||||
'YLvkS': function(_0xcbe6ef, _0x62f17b) {
|
||||
return _0xcbe6ef(_0x62f17b);
|
||||
},
|
||||
'IIJTU': 'webkit',
|
||||
'VnwxS': 'edge',
|
||||
'czVTJ': 'opera',
|
||||
'nqrWh': function(_0x1a9d6b, _0x4f0983) {
|
||||
return _0x1a9d6b(_0x4f0983);
|
||||
},
|
||||
'qWvjw': 'chrome',
|
||||
'wcaLm': 'safari',
|
||||
'kpgHP': function(_0x357cb4, _0x4ec618) {
|
||||
return _0x357cb4(_0x4ec618);
|
||||
},
|
||||
'uZEiZ': function(_0x54d846, _0x45401a) {
|
||||
return _0x54d846(_0x45401a);
|
||||
},
|
||||
'Bsdxk': 'firefox',
|
||||
'brPia': function(_0x2698c5, _0x23fc33) {
|
||||
return _0x2698c5(_0x23fc33);
|
||||
},
|
||||
'OfqeT': 'presto',
|
||||
'CKdHS': function(_0x63167b, _0x50e9aa) {
|
||||
return _0x63167b(_0x50e9aa);
|
||||
},
|
||||
'MOinO': 'trident',
|
||||
'ubOMd': 'iexplore',
|
||||
'Ucccc': function(_0x48de88, _0x7d49d6) {
|
||||
return _0x48de88(_0x7d49d6);
|
||||
},
|
||||
'SnFUd': function(_0x45a987, _0x4a0ed4) {
|
||||
return _0x45a987 === _0x4a0ed4;
|
||||
},
|
||||
'dFIVJ': 'gecko',
|
||||
'wTQFv': function(_0x583a15, _0x1bad90) {
|
||||
return _0x583a15(_0x1bad90);
|
||||
},
|
||||
'ShzBA': function(_0x299d61, _0x828843) {
|
||||
return _0x299d61 === _0x828843;
|
||||
},
|
||||
'eMRyr': function(_0x5d0702, _0x2beb52) {
|
||||
return _0x5d0702(_0x2beb52);
|
||||
},
|
||||
'IKmjV': function(_0x233069, _0x42f6c1) {
|
||||
return _0x233069 === _0x42f6c1;
|
||||
},
|
||||
'TglAC': function(_0x1783e0, _0x1acb96) {
|
||||
return _0x1783e0 === _0x1acb96;
|
||||
},
|
||||
'GIWpy': function(_0xea74a9, _0x40e03a) {
|
||||
return _0xea74a9 === _0x40e03a;
|
||||
},
|
||||
'LSFzT': function(_0x2de986, _0x176669) {
|
||||
return _0x2de986(_0x176669);
|
||||
},
|
||||
'JVzaP': function(_0x586484, _0x30862f) {
|
||||
return _0x586484(_0x30862f);
|
||||
},
|
||||
'vnhkW': function(_0x527125, _0x3ef155) {
|
||||
return _0x527125(_0x3ef155);
|
||||
},
|
||||
'bFQSo': function(_0x456f13, _0x4d29b3) {
|
||||
return _0x456f13(_0x4d29b3);
|
||||
},
|
||||
'mucVu': function(_0x1fc559, _0x1b76da) {
|
||||
return _0x1fc559(_0x1b76da);
|
||||
},
|
||||
'ndklM': function(_0xb3a50b, _0x49d22e) {
|
||||
return _0xb3a50b(_0x49d22e);
|
||||
},
|
||||
'aKRfW': '2345',
|
||||
'JvNSR': 'sougou',
|
||||
'iEjLM': 'liebao',
|
||||
'mFXYd': function(_0x401402, _0x100996) {
|
||||
return _0x401402(_0x100996);
|
||||
},
|
||||
'Fkpwj': 'maxthon'
|
||||
};
|
||||
const _0x445504 = navigator['userAgent']['toLowerCase']();
|
||||
const _0x38e894 = _0x5bff6b=>_0x5bff6b['test'](_0x445504);
|
||||
const _0x585fad = _0x9bfeb0=>_0x445504['match'](_0x9bfeb0)['toString']()['replace'](/[^0-9|_.]/g, '')['replace'](/_/g, '.');
|
||||
let _0x52bf77 = _0x227afe['yHOEV'];
|
||||
if (_0x227afe['wzENk'](_0x38e894, /windows|win32|win64|wow32|wow64/g)) {
|
||||
_0x52bf77 = _0x227afe['wsWEe'];
|
||||
} else if (_0x227afe['wzENk'](_0x38e894, /macintosh|macintel/g)) {
|
||||
_0x52bf77 = _0x227afe['xTHMm'];
|
||||
} else if (_0x227afe['yavth'](_0x38e894, /x11/g)) {
|
||||
_0x52bf77 = _0x227afe['azgCA'];
|
||||
} else if (_0x227afe['nGybX'](_0x38e894, /android|adr/g)) {
|
||||
_0x52bf77 = 'android';
|
||||
} else if (_0x227afe['nGybX'](_0x38e894, /ios|iphone|ipad|ipod|iwatch/g)) {
|
||||
_0x52bf77 = _0x227afe['INJwr'];
|
||||
}
|
||||
let _0x4a314b = 'unknow';
|
||||
if (_0x227afe['hZWNh'](_0x52bf77, _0x227afe['wsWEe'])) {
|
||||
if (_0x227afe['nGybX'](_0x38e894, /windows nt 5.0|windows 2000/g)) {
|
||||
_0x4a314b = _0x227afe['UQRFb'];
|
||||
} else if (_0x38e894(/windows nt 5.1|windows xp/g)) {
|
||||
_0x4a314b = 'xp';
|
||||
} else if (_0x227afe['wwUUs'](_0x38e894, /windows nt 5.2|windows 2003/g)) {
|
||||
_0x4a314b = _0x227afe['rqdHg'];
|
||||
} else if (_0x227afe['wwUUs'](_0x38e894, /windows nt 6.0|windows vista/g)) {
|
||||
_0x4a314b = 'vista';
|
||||
} else if (_0x38e894(/windows nt 6.1|windows 7/g)) {
|
||||
_0x4a314b = '7';
|
||||
} else if (_0x38e894(/windows nt 6.2|windows 8/g)) {
|
||||
_0x4a314b = '8';
|
||||
} else if (_0x38e894(/windows nt 6.3|windows 8.1/g)) {
|
||||
_0x4a314b = _0x227afe['RFYwz'];
|
||||
} else if (_0x38e894(/windows nt 10.0|windows 10/g)) {
|
||||
_0x4a314b = '10';
|
||||
}
|
||||
} else if (_0x227afe['hZWNh'](_0x52bf77, 'macos')) {
|
||||
_0x4a314b = _0x227afe['wwUUs'](_0x585fad, /os x [\d._]+/g);
|
||||
} else if (_0x227afe['VwpDM'](_0x52bf77, _0x227afe['ijcZr'])) {
|
||||
_0x4a314b = _0x227afe['wsPCu'](_0x585fad, /android [\d._]+/g);
|
||||
} else if (_0x227afe['CUddb'](_0x52bf77, _0x227afe['INJwr'])) {
|
||||
_0x4a314b = _0x585fad(/os [\d._]+/g);
|
||||
}
|
||||
let _0x19ea9e = _0x227afe['yHOEV'];
|
||||
if (_0x227afe['UcAvE'](_0x52bf77, _0x227afe['wsWEe']) || _0x227afe['UcAvE'](_0x52bf77, 'macos') || _0x52bf77 === 'linux') {
|
||||
_0x19ea9e = _0x227afe['UPKaK'];
|
||||
} else if (_0x52bf77 === 'android' || _0x227afe['Teriw'](_0x52bf77, _0x227afe['INJwr']) || _0x227afe['bSheG'](_0x38e894, /mobile/g)) {
|
||||
_0x19ea9e = _0x227afe['VSVPX'];
|
||||
}
|
||||
let _0x184415 = 'unknow';
|
||||
let _0x51795a = 'unknow';
|
||||
if (_0x227afe['YLvkS'](_0x38e894, /applewebkit/g)) {
|
||||
_0x184415 = _0x227afe['IIJTU'];
|
||||
if (_0x38e894(/edge/g)) {
|
||||
_0x51795a = _0x227afe['VnwxS'];
|
||||
} else if (_0x227afe['YLvkS'](_0x38e894, /opr/g)) {
|
||||
_0x51795a = _0x227afe['czVTJ'];
|
||||
} else if (_0x227afe['nqrWh'](_0x38e894, /chrome/g)) {
|
||||
_0x51795a = _0x227afe['qWvjw'];
|
||||
} else if (_0x38e894(/safari/g)) {
|
||||
_0x51795a = _0x227afe['wcaLm'];
|
||||
}
|
||||
} else if (_0x227afe['kpgHP'](_0x38e894, /gecko/g) && _0x227afe['uZEiZ'](_0x38e894, /firefox/g)) {
|
||||
_0x184415 = 'gecko';
|
||||
_0x51795a = _0x227afe['Bsdxk'];
|
||||
} else if (_0x227afe['brPia'](_0x38e894, /presto/g)) {
|
||||
_0x184415 = _0x227afe['OfqeT'];
|
||||
_0x51795a = _0x227afe['czVTJ'];
|
||||
} else if (_0x227afe['CKdHS'](_0x38e894, /trident|compatible|msie/g)) {
|
||||
_0x184415 = _0x227afe['MOinO'];
|
||||
_0x51795a = _0x227afe['ubOMd'];
|
||||
}
|
||||
let _0xb5f01a = 'unknow';
|
||||
if (_0x227afe['Teriw'](_0x184415, _0x227afe['IIJTU'])) {
|
||||
_0xb5f01a = _0x227afe['Ucccc'](_0x585fad, /applewebkit\/[\d._]+/g);
|
||||
} else if (_0x227afe['SnFUd'](_0x184415, _0x227afe['dFIVJ'])) {
|
||||
_0xb5f01a = _0x227afe['wTQFv'](_0x585fad, /gecko\/[\d._]+/g);
|
||||
} else if (_0x227afe['ShzBA'](_0x184415, _0x227afe['OfqeT'])) {
|
||||
_0xb5f01a = _0x227afe['wTQFv'](_0x585fad, /presto\/[\d._]+/g);
|
||||
} else if (_0x184415 === _0x227afe['MOinO']) {
|
||||
_0xb5f01a = _0x227afe['eMRyr'](_0x585fad, /trident\/[\d._]+/g);
|
||||
}
|
||||
let _0x4349d5 = _0x227afe['yHOEV'];
|
||||
if (_0x227afe['IKmjV'](_0x51795a, _0x227afe['qWvjw'])) {
|
||||
_0x4349d5 = _0x585fad(/chrome\/[\d._]+/g);
|
||||
} else if (_0x227afe['TglAC'](_0x51795a, 'safari')) {
|
||||
_0x4349d5 = _0x585fad(/version\/[\d._]+/g);
|
||||
} else if (_0x51795a === _0x227afe['Bsdxk']) {
|
||||
_0x4349d5 = _0x227afe['eMRyr'](_0x585fad, /firefox\/[\d._]+/g);
|
||||
} else if (_0x227afe['TglAC'](_0x51795a, _0x227afe['czVTJ'])) {
|
||||
_0x4349d5 = _0x585fad(/opr\/[\d._]+/g);
|
||||
} else if (_0x227afe['GIWpy'](_0x51795a, _0x227afe['ubOMd'])) {
|
||||
_0x4349d5 = _0x227afe['eMRyr'](_0x585fad, /(msie [\d._]+)|(rv:[\d._]+)/g);
|
||||
} else if (_0x227afe['GIWpy'](_0x51795a, _0x227afe['VnwxS'])) {
|
||||
_0x4349d5 = _0x227afe['LSFzT'](_0x585fad, /edge\/[\d._]+/g);
|
||||
}
|
||||
let _0x59a33a = 'none';
|
||||
let _0x25de0d = 'unknow';
|
||||
if (_0x227afe['LSFzT'](_0x38e894, /micromessenger/g)) {
|
||||
_0x59a33a = 'wechat';
|
||||
_0x25de0d = _0x227afe['JVzaP'](_0x585fad, /micromessenger\/[\d._]+/g);
|
||||
} else if (_0x38e894(/qqbrowser/g)) {
|
||||
_0x59a33a = 'qq';
|
||||
_0x25de0d = _0x227afe['JVzaP'](_0x585fad, /qqbrowser\/[\d._]+/g);
|
||||
} else if (_0x227afe['vnhkW'](_0x38e894, /ucbrowser/g)) {
|
||||
_0x59a33a = 'uc';
|
||||
_0x25de0d = _0x227afe['bFQSo'](_0x585fad, /ucbrowser\/[\d._]+/g);
|
||||
} else if (_0x227afe['mucVu'](_0x38e894, /qihu 360se/g)) {
|
||||
_0x59a33a = '360';
|
||||
} else if (_0x227afe['ndklM'](_0x38e894, /2345explorer/g)) {
|
||||
_0x59a33a = _0x227afe['aKRfW'];
|
||||
_0x25de0d = _0x585fad(/2345explorer\/[\d._]+/g);
|
||||
} else if (_0x227afe['ndklM'](_0x38e894, /metasr/g)) {
|
||||
_0x59a33a = _0x227afe['JvNSR'];
|
||||
} else if (_0x227afe['ndklM'](_0x38e894, /lbbrowser/g)) {
|
||||
_0x59a33a = _0x227afe['iEjLM'];
|
||||
} else if (_0x227afe['mFXYd'](_0x38e894, /maxthon/g)) {
|
||||
_0x59a33a = _0x227afe['Fkpwj'];
|
||||
_0x25de0d = _0x227afe['mFXYd'](_0x585fad, /maxthon\/[\d._]+/g);
|
||||
}
|
||||
return Object['assign']({
|
||||
'engine': _0x184415,
|
||||
'engineVs': _0xb5f01a,
|
||||
'platform': _0x19ea9e,
|
||||
'supporter': _0x51795a,
|
||||
'supporterVs': _0x4349d5,
|
||||
'system': _0x52bf77,
|
||||
'systemVs': _0x4a314b
|
||||
}, _0x227afe['GIWpy'](_0x59a33a, 'none') ? {} : {
|
||||
'shell': _0x59a33a,
|
||||
'shellVs': _0x25de0d
|
||||
});
|
||||
}
|
||||
var _0xafb7 = ['0123456789abcdef', 'charAt', 'length', 'abc', '900150983cd24fb0d6963f7d28e17f72', 'concat', 'charCodeAt', '0123456789ABCDEF'];
|
||||
(function(_0x308400, _0x4dd0d5) {
|
||||
var _0x55a1b9 = function(_0x42a510) {
|
||||
while (--_0x42a510) {
|
||||
_0x308400['push'](_0x308400['shift']());
|
||||
}
|
||||
};
|
||||
_0x55a1b9(++_0x4dd0d5);
|
||||
}(_0xafb7, 0x132));
|
||||
var _0x4f75 = function(_0x20aa38, _0x3feb9f) {
|
||||
_0x20aa38 = _0x20aa38 - 0x0;
|
||||
var _0x442357 = _0xafb7[_0x20aa38];
|
||||
return _0x442357;
|
||||
};
|
||||
var hexcase = 0x0;
|
||||
var b64pad = '';
|
||||
var chrsz = 0x8;
|
||||
function get_data() {
|
||||
var _0x49dc93 = {
|
||||
'ObbQh': function(_0x4cc272) {
|
||||
return _0x4cc272();
|
||||
}
|
||||
};
|
||||
result = '';
|
||||
if (1600 || 900) {
|
||||
result = _0x49dc93['ObbQh'](___get_data);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
function ___get_data() {
|
||||
var _0xd1d5bb = {
|
||||
'chYzh': function(_0x3214e3, _0x5ecab4) {
|
||||
return _0x3214e3(_0x5ecab4);
|
||||
},
|
||||
'EyjPx': function(_0x37547a, _0x58a366, _0x1463fd) {
|
||||
return _0x37547a(_0x58a366, _0x1463fd);
|
||||
},
|
||||
'oWocp': '0x0'
|
||||
};
|
||||
_0x3066e8 = 'NightTeam';
|
||||
return _0xd1d5bb['chYzh'](binl2hex, _0xd1d5bb['EyjPx'](core__0x5f3, _0xd1d5bb['chYzh'](str2binl, _0x3066e8), _0x3066e8[_0x4f75(_0xd1d5bb['oWocp'])] * chrsz));
|
||||
}
|
||||
function b64__0x5f3(_0x285afb) {
|
||||
return binl2b64(core__0x5f3(str2binl(_0x285afb), _0x285afb[_0x4f75('0x0')] * chrsz));
|
||||
}
|
||||
function str__0x5f3(_0x508693) {
|
||||
return binl2str(core__0x5f3(str2binl(_0x508693), _0x508693[_0x4f75('0x0')] * chrsz));
|
||||
}
|
||||
function hex_hmac__0x5f3(_0x51842a, _0x49cf0a) {
|
||||
return binl2hex(core_hmac__0x5f3(_0x51842a, _0x49cf0a));
|
||||
}
|
||||
function b64_hmac__0x5f3(_0x32ca2c, _0x564ce2) {
|
||||
return binl2b64(core_hmac__0x5f3(_0x32ca2c, _0x564ce2));
|
||||
}
|
||||
function str_hmac__0x5f3(_0x2b5ae9, _0x33e2bc) {
|
||||
return binl2str(core_hmac__0x5f3(_0x2b5ae9, _0x33e2bc));
|
||||
}
|
||||
function _0x5f3_vm_test() {
|
||||
return hex__0x5f3(_0x4f75('0x1')) == _0x4f75('0x2');
|
||||
}
|
||||
function core__0x5f3(_0x29b141, _0x1d205c) {
|
||||
_0x29b141[_0x1d205c >> 0x5] |= 0x80 << _0x1d205c % 0x20;
|
||||
_0x29b141[(_0x1d205c + 0x40 >>> 0x9 << 0x4) + 0xe] = _0x1d205c;
|
||||
var _0x2ca934 = 0x67452301;
|
||||
var _0x37ae64 = -0x10325477;
|
||||
var _0x25776a = -0x67452302;
|
||||
var _0x225e4c = 0x10325476;
|
||||
for (var _0x13a45d = 0x0; _0x13a45d < _0x29b141['length']; _0x13a45d += 0x10) {
|
||||
var _0x588610 = _0x2ca934;
|
||||
var _0x12af01 = _0x37ae64;
|
||||
var _0x233171 = _0x25776a;
|
||||
var _0x4c36c3 = _0x225e4c;
|
||||
_0x2ca934 = _0x5f3_ff(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0x0], 0x7, -0x28955b88);
|
||||
_0x225e4c = _0x5f3_ff(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0x1], 0xc, -0x173848aa);
|
||||
_0x25776a = _0x5f3_ff(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0x2], 0x11, 0x242070db);
|
||||
_0x37ae64 = _0x5f3_ff(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0x3], 0x16, -0x3e423112);
|
||||
_0x2ca934 = _0x5f3_ff(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0x4], 0x7, -0xa83f051);
|
||||
_0x225e4c = _0x5f3_ff(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0x5], 0xc, 0x4787c62a);
|
||||
_0x25776a = _0x5f3_ff(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0x6], 0x11, -0x57cfb9ed);
|
||||
_0x37ae64 = _0x5f3_ff(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0x7], 0x16, -0x2b96aff);
|
||||
_0x2ca934 = _0x5f3_ff(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0x8], 0x7, 0x698098d8);
|
||||
_0x225e4c = _0x5f3_ff(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0x9], 0xc, -0x74bb0851);
|
||||
_0x25776a = _0x5f3_ff(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0xa], 0x11, -0xa44f);
|
||||
_0x37ae64 = _0x5f3_ff(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0xb], 0x16, -0x76a32842);
|
||||
_0x2ca934 = _0x5f3_ff(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0xc], 0x7, 0x6b901122);
|
||||
_0x225e4c = _0x5f3_ff(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0xd], 0xc, -0x2678e6d);
|
||||
_0x25776a = _0x5f3_ff(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0xe], 0x11, -0x5986bc72);
|
||||
_0x37ae64 = _0x5f3_ff(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0xf], 0x16, 0x49b40821);
|
||||
_0x2ca934 = _0x5f3_gg(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0x1], 0x5, -0x9e1da9e);
|
||||
_0x225e4c = _0x5f3_gg(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0x6], 0x9, -0x3fbf4cc0);
|
||||
_0x25776a = _0x5f3_gg(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0xb], 0xe, 0x265e5a51);
|
||||
_0x37ae64 = _0x5f3_gg(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0x0], 0x14, -0x16493856);
|
||||
_0x2ca934 = _0x5f3_gg(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0x5], 0x5, -0x29d0efa3);
|
||||
_0x225e4c = _0x5f3_gg(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0xa], 0x9, 0x2441453);
|
||||
_0x25776a = _0x5f3_gg(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0xf], 0xe, -0x275e197f);
|
||||
_0x37ae64 = _0x5f3_gg(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0x4], 0x14, -0x182c0438);
|
||||
_0x2ca934 = _0x5f3_gg(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0x9], 0x5, 0x21e1cde6);
|
||||
_0x225e4c = _0x5f3_gg(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0xe], 0x9, -0x3cc8f82a);
|
||||
_0x25776a = _0x5f3_gg(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0x3], 0xe, -0xb2af279);
|
||||
_0x37ae64 = _0x5f3_gg(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0x8], 0x14, 0x455a14ed);
|
||||
_0x2ca934 = _0x5f3_gg(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0xd], 0x5, -0x561c16fb);
|
||||
_0x225e4c = _0x5f3_gg(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0x2], 0x9, -0x3105c08);
|
||||
_0x25776a = _0x5f3_gg(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0x7], 0xe, 0x676f02d9);
|
||||
_0x37ae64 = _0x5f3_gg(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0xc], 0x14, -0x72d5b376);
|
||||
_0x2ca934 = _0x5f3_hh(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0x5], 0x4, -0x5c6be);
|
||||
_0x225e4c = _0x5f3_hh(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0x8], 0xb, -0x788e097f);
|
||||
_0x25776a = _0x5f3_hh(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0xb], 0x10, 0x6d9d6122);
|
||||
_0x37ae64 = _0x5f3_hh(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0xe], 0x17, -0x21ac7f4);
|
||||
_0x2ca934 = _0x5f3_hh(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0x1], 0x4, -0x5b4115bc);
|
||||
_0x225e4c = _0x5f3_hh(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0x4], 0xb, 0x4bdecfa9);
|
||||
_0x25776a = _0x5f3_hh(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0x7], 0x10, -0x944b4a0);
|
||||
_0x37ae64 = _0x5f3_hh(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0xa], 0x17, -0x41404390);
|
||||
_0x2ca934 = _0x5f3_hh(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0xd], 0x4, 0x289b7ec6);
|
||||
_0x225e4c = _0x5f3_hh(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0x0], 0xb, -0x155ed806);
|
||||
_0x25776a = _0x5f3_hh(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0x3], 0x10, -0x2b10cf7b);
|
||||
_0x37ae64 = _0x5f3_hh(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0x6], 0x17, 0x4881d05);
|
||||
_0x2ca934 = _0x5f3_hh(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0x9], 0x4, -0x262b2fc7);
|
||||
_0x225e4c = _0x5f3_hh(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0xc], 0xb, -0x1924661b);
|
||||
_0x25776a = _0x5f3_hh(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0xf], 0x10, 0x1fa27cf8);
|
||||
_0x37ae64 = _0x5f3_hh(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0x2], 0x17, -0x3b53a99b);
|
||||
_0x2ca934 = _0x5f3_ii(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0x0], 0x6, -0xbd6ddbc);
|
||||
_0x225e4c = _0x5f3_ii(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0x7], 0xa, 0x432aff97);
|
||||
_0x25776a = _0x5f3_ii(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0xe], 0xf, -0x546bdc59);
|
||||
_0x37ae64 = _0x5f3_ii(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0x5], 0x15, -0x36c5fc7);
|
||||
_0x2ca934 = _0x5f3_ii(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0xc], 0x6, 0x655b59c3);
|
||||
_0x225e4c = _0x5f3_ii(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0x3], 0xa, -0x70f3336e);
|
||||
_0x25776a = _0x5f3_ii(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0xa], 0xf, -0x100b83);
|
||||
_0x37ae64 = _0x5f3_ii(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0x1], 0x15, -0x7a7ba22f);
|
||||
_0x2ca934 = _0x5f3_ii(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0x8], 0x6, 0x6fa87e4f);
|
||||
_0x225e4c = _0x5f3_ii(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0xf], 0xa, -0x1d31920);
|
||||
_0x25776a = _0x5f3_ii(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0x6], 0xf, -0x5cfebcec);
|
||||
_0x37ae64 = _0x5f3_ii(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0xd], 0x15, 0x4e0811a1);
|
||||
_0x2ca934 = _0x5f3_ii(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c, _0x29b141[_0x13a45d + 0x4], 0x6, -0x8ac817e);
|
||||
_0x225e4c = _0x5f3_ii(_0x225e4c, _0x2ca934, _0x37ae64, _0x25776a, _0x29b141[_0x13a45d + 0xb], 0xa, -0x42c50dcb);
|
||||
_0x25776a = _0x5f3_ii(_0x25776a, _0x225e4c, _0x2ca934, _0x37ae64, _0x29b141[_0x13a45d + 0x2], 0xf, 0x2ad7d2bb);
|
||||
_0x37ae64 = _0x5f3_ii(_0x37ae64, _0x25776a, _0x225e4c, _0x2ca934, _0x29b141[_0x13a45d + 0x9], 0x15, -0x14792c6f);
|
||||
_0x2ca934 = safe_add(_0x2ca934, _0x588610);
|
||||
_0x37ae64 = safe_add(_0x37ae64, _0x12af01);
|
||||
_0x25776a = safe_add(_0x25776a, _0x233171);
|
||||
_0x225e4c = safe_add(_0x225e4c, _0x4c36c3);
|
||||
}
|
||||
return Array(_0x2ca934, _0x37ae64, _0x25776a, _0x225e4c);
|
||||
}
|
||||
function _0x5f3_cmn(_0x37bd03, _0x204785, _0x4c8136, _0x4df7e5, _0x8adaae, _0x1bb5d5) {
|
||||
return safe_add(bit_rol(safe_add(safe_add(_0x204785, _0x37bd03), safe_add(_0x4df7e5, _0x1bb5d5)), _0x8adaae), _0x4c8136);
|
||||
}
|
||||
function _0x5f3_ff(_0x592bc7, _0x27110f, _0x192e0e, _0x56094f, _0xf3c246, _0x3e601b, _0x5424f7) {
|
||||
return _0x5f3_cmn(_0x27110f & _0x192e0e | ~_0x27110f & _0x56094f, _0x592bc7, _0x27110f, _0xf3c246, _0x3e601b, _0x5424f7);
|
||||
}
|
||||
function _0x5f3_gg(_0x133b26, _0x4f6e2b, _0x43870f, _0x3221b7, _0x5749c4, _0x4a7548, _0x2eeb85) {
|
||||
return _0x5f3_cmn(_0x4f6e2b & _0x3221b7 | _0x43870f & ~_0x3221b7, _0x133b26, _0x4f6e2b, _0x5749c4, _0x4a7548, _0x2eeb85);
|
||||
}
|
||||
function _0x5f3_hh(_0x182bcc, _0x5983ea, _0x15f735, _0x53f395, _0x346932, _0x1845cc, _0x3c026d) {
|
||||
return _0x5f3_cmn(_0x5983ea ^ _0x15f735 ^ _0x53f395, _0x182bcc, _0x5983ea, _0x346932, _0x1845cc, _0x3c026d);
|
||||
}
|
||||
function _0x5f3_ii(_0x51638c, _0x39d5b9, _0x5aa690, _0x332e8b, _0x40b6d3, _0x1f7f3b, _0x4a5089) {
|
||||
return _0x5f3_cmn(_0x5aa690 ^ (_0x39d5b9 | ~_0x332e8b), _0x51638c, _0x39d5b9, _0x40b6d3, _0x1f7f3b, _0x4a5089);
|
||||
}
|
||||
function core_hmac__0x5f3(_0x3c9f1f, _0x24bf57) {
|
||||
var _0xce47a9 = str2binl(_0x3c9f1f);
|
||||
if (_0xce47a9[_0x4f75('0x0')] > 0x10)
|
||||
_0xce47a9 = core__0x5f3(_0xce47a9, _0x3c9f1f['length'] * chrsz);
|
||||
var _0x201e5e = Array(0x10)
|
||||
, _0x3e6b17 = Array(0x10);
|
||||
for (var _0x1a9e62 = 0x0; _0x1a9e62 < 0x10; _0x1a9e62++) {
|
||||
_0x201e5e[_0x1a9e62] = _0xce47a9[_0x1a9e62] ^ 0x36363636;
|
||||
_0x3e6b17[_0x1a9e62] = _0xce47a9[_0x1a9e62] ^ 0x5c5c5c5c;
|
||||
}
|
||||
var _0x32b17d = core__0x5f3(_0x201e5e[_0x4f75('0x3')](str2binl(_0x24bf57)), 0x200 + _0x24bf57[_0x4f75('0x0')] * chrsz);
|
||||
return core__0x5f3(_0x3e6b17[_0x4f75('0x3')](_0x32b17d), 0x200 + 0x80);
|
||||
}
|
||||
function safe_add(_0x17d6bb, _0x338b5a) {
|
||||
var _0x1da9a = (_0x17d6bb & 0xffff) + (_0x338b5a & 0xffff);
|
||||
var _0x30eeed = (_0x17d6bb >> 0x10) + (_0x338b5a >> 0x10) + (_0x1da9a >> 0x10);
|
||||
return _0x30eeed << 0x10 | _0x1da9a & 0xffff;
|
||||
}
|
||||
function bit_rol(_0x29570a, _0x50c5a5) {
|
||||
return _0x29570a << _0x50c5a5 | _0x29570a >>> 0x20 - _0x50c5a5;
|
||||
}
|
||||
function str2binl(_0x564301) {
|
||||
var _0x8000e = Array();
|
||||
var _0x5384bf = (0x1 << chrsz) - 0x1;
|
||||
for (var _0x4eff36 = 0x0; _0x4eff36 < _0x564301[_0x4f75('0x0')] * chrsz; _0x4eff36 += chrsz)
|
||||
_0x8000e[_0x4eff36 >> 0x5] |= (_0x564301[_0x4f75('0x4')](_0x4eff36 / chrsz) & _0x5384bf) << _0x4eff36 % 0x20;
|
||||
return _0x8000e;
|
||||
}
|
||||
function binl2str(_0x1591a0) {
|
||||
var _0x48bf42 = '';
|
||||
var _0x330495 = (0x1 << chrsz) - 0x1;
|
||||
for (var _0x1d9e6e = 0x0; _0x1d9e6e < _0x1591a0[_0x4f75('0x0')] * 0x20; _0x1d9e6e += chrsz)
|
||||
_0x48bf42 += String['fromCharCode'](_0x1591a0[_0x1d9e6e >> 0x5] >>> _0x1d9e6e % 0x20 & _0x330495);
|
||||
return _0x48bf42;
|
||||
}
|
||||
function binl2hex(_0x2b2030) {
|
||||
var _0x3b523a = hexcase ? _0x4f75('0x5') : _0x4f75('0x6');
|
||||
var _0x580323 = '';
|
||||
for (var _0x3c558a = 0x0; _0x3c558a < _0x2b2030[_0x4f75('0x0')] * 0x4; _0x3c558a++) {
|
||||
_0x580323 += _0x3b523a['charAt'](_0x2b2030[_0x3c558a >> 0x2] >> _0x3c558a % 0x4 * 0x8 + 0x4 & 0xf) + _0x3b523a[_0x4f75('0x7')](_0x2b2030[_0x3c558a >> 0x2] >> _0x3c558a % 0x4 * 0x8 & 0xf);
|
||||
}
|
||||
return _0x580323;
|
||||
}
|
||||
function binl2b64(_0xbf0e43) {
|
||||
var _0x5c1f17 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
var _0x50c415 = '';
|
||||
for (var _0x30f226 = 0x0; _0x30f226 < _0xbf0e43[_0x4f75('0x0')] * 0x4; _0x30f226 += 0x3) {
|
||||
var _0x13031f = (_0xbf0e43[_0x30f226 >> 0x2] >> 0x8 * (_0x30f226 % 0x4) & 0xff) << 0x10 | (_0xbf0e43[_0x30f226 + 0x1 >> 0x2] >> 0x8 * ((_0x30f226 + 0x1) % 0x4) & 0xff) << 0x8 | _0xbf0e43[_0x30f226 + 0x2 >> 0x2] >> 0x8 * ((_0x30f226 + 0x2) % 0x4) & 0xff;
|
||||
for (var _0x25968b = 0x0; _0x25968b < 0x4; _0x25968b++) {
|
||||
if (_0x30f226 * 0x8 + _0x25968b * 0x6 > _0xbf0e43[_0x4f75('0x0')] * 0x20)
|
||||
_0x50c415 += b64pad;
|
||||
else
|
||||
_0x50c415 += _0x5c1f17[_0x4f75('0x7')](_0x13031f >> 0x6 * (0x3 - _0x25968b) & 0x3f);
|
||||
}
|
||||
}
|
||||
return _0x50c415;
|
||||
}
|
||||
console.log(get_data());
|
23
3-奇⻔遁甲调用 JavaScript 执行代码/练习/readme.md
Normal file
23
3-奇⻔遁甲调用 JavaScript 执行代码/练习/readme.md
Normal file
@ -0,0 +1,23 @@
|
||||
1打开浏览器开发者工具全局搜索 get_data,在console中打印 get_data() 返回
|
||||
|
||||
1c28252a6a52a30aedcd18a75d127d13
|
||||
|
||||
2将代码复制,node.js运行代码发现
|
||||
|
||||
if (screen['width'] || screen['height']) {
|
||||
result = _0x49dc93['ObbQh'](___get_data);
|
||||
}
|
||||
return result;
|
||||
|
||||
3替换为
|
||||
|
||||
if (1600 || 900) {
|
||||
result = _0x49dc93['ObbQh'](___get_data);
|
||||
}
|
||||
return result;
|
||||
|
||||
运行打印
|
||||
|
||||
1c28252a6a52a30aedcd18a75d127d13
|
||||
|
||||
1c28252a6a52a30a
|
311
6-阻挠爬虫工程师的无限debugger/myjs.js
Normal file
311
6-阻挠爬虫工程师的无限debugger/myjs.js
Normal file
@ -0,0 +1,311 @@
|
||||
var _0x4818 = ['\x63\x73\x4b\x48\x77\x71\x4d\x49', '\x5a\x73\x4b\x4a\x77\x72\x38\x56\x65\x41\x73\x79', '\x55\x63\x4b\x69\x4e\x38\x4f\x2f\x77\x70\x6c\x77\x4d\x41\x3d\x3d', '\x4a\x52\x38\x43\x54\x67\x3d\x3d', '\x59\x73\x4f\x6e\x62\x53\x45\x51\x77\x37\x6f\x7a\x77\x71\x5a\x4b\x65\x73\x4b\x55\x77\x37\x6b\x77\x58\x38\x4f\x52\x49\x51\x3d\x3d', '\x77\x37\x6f\x56\x53\x38\x4f\x53\x77\x6f\x50\x43\x6c\x33\x6a\x43\x68\x4d\x4b\x68\x77\x36\x48\x44\x6c\x73\x4b\x58\x77\x34\x73\x2f\x59\x73\x4f\x47', '\x66\x77\x56\x6d\x49\x31\x41\x74\x77\x70\x6c\x61\x59\x38\x4f\x74\x77\x35\x63\x4e\x66\x53\x67\x70\x77\x36\x4d\x3d', '\x4f\x63\x4f\x4e\x77\x72\x6a\x43\x71\x73\x4b\x78\x54\x47\x54\x43\x68\x73\x4f\x6a\x45\x57\x45\x38\x50\x63\x4f\x63\x4a\x38\x4b\x36', '\x55\x38\x4b\x35\x4c\x63\x4f\x74\x77\x70\x56\x30\x45\x4d\x4f\x6b\x77\x34\x37\x44\x72\x4d\x4f\x58', '\x48\x4d\x4f\x32\x77\x6f\x48\x43\x69\x4d\x4b\x39\x53\x6c\x58\x43\x6c\x63\x4f\x6f\x43\x31\x6b\x3d', '\x61\x73\x4b\x49\x77\x71\x4d\x44\x64\x67\x4d\x75\x50\x73\x4f\x4b\x42\x4d\x4b\x63\x77\x72\x72\x43\x74\x6b\x4c\x44\x72\x4d\x4b\x42\x77\x36\x34\x64', '\x77\x71\x49\x6d\x4d\x54\x30\x74\x77\x36\x52\x4e\x77\x35\x6b\x3d', '\x44\x4d\x4b\x63\x55\x30\x4a\x6d\x55\x77\x55\x76', '\x56\x6a\x48\x44\x6c\x4d\x4f\x48\x56\x63\x4f\x4e\x58\x33\x66\x44\x69\x63\x4b\x4a\x48\x51\x3d\x3d', '\x77\x71\x68\x42\x48\x38\x4b\x6e\x77\x34\x54\x44\x68\x53\x44\x44\x67\x4d\x4f\x64\x77\x72\x6a\x43\x6e\x63\x4f\x57\x77\x70\x68\x68\x4e\x38\x4b\x43\x47\x63\x4b\x71\x77\x36\x64\x48\x41\x55\x35\x2b\x77\x72\x67\x32\x4a\x63\x4b\x61\x77\x34\x49\x45\x4a\x63\x4f\x63\x77\x72\x52\x4a\x77\x6f\x5a\x30\x77\x71\x46\x39\x59\x67\x41\x56', '\x64\x7a\x64\x32\x77\x35\x62\x44\x6d\x33\x6a\x44\x70\x73\x4b\x33\x77\x70\x59\x3d', '\x77\x34\x50\x44\x67\x63\x4b\x58\x77\x6f\x33\x43\x6b\x63\x4b\x4c\x77\x72\x35\x71\x77\x72\x59\x3d', '\x77\x72\x4a\x4f\x54\x63\x4f\x51\x57\x4d\x4f\x67', '\x77\x71\x54\x44\x76\x63\x4f\x6a\x77\x34\x34\x37\x77\x72\x34\x3d', '\x77\x35\x58\x44\x71\x73\x4b\x68\x4d\x46\x31\x2f', '\x77\x72\x41\x79\x48\x73\x4f\x66\x77\x70\x70\x63', '\x4a\x33\x64\x56\x50\x63\x4f\x78\x4c\x67\x3d\x3d', '\x77\x72\x64\x48\x77\x37\x70\x39\x5a\x77\x3d\x3d', '\x77\x34\x72\x44\x6f\x38\x4b\x6d\x4e\x45\x77\x3d', '\x49\x4d\x4b\x41\x55\x6b\x42\x74', '\x77\x36\x62\x44\x72\x63\x4b\x51\x77\x70\x56\x48\x77\x70\x4e\x51\x77\x71\x55\x3d', '\x64\x38\x4f\x73\x57\x68\x41\x55\x77\x37\x59\x7a\x77\x72\x55\x3d', '\x77\x71\x6e\x43\x6b\x73\x4f\x65\x65\x7a\x72\x44\x68\x77\x3d\x3d', '\x55\x73\x4b\x6e\x49\x4d\x4b\x57\x56\x38\x4b\x2f', '\x77\x34\x7a\x44\x6f\x63\x4b\x38\x4e\x55\x5a\x76', '\x63\x38\x4f\x78\x5a\x68\x41\x4a\x77\x36\x73\x6b\x77\x71\x4a\x6a', '\x50\x63\x4b\x49\x77\x34\x6e\x43\x6b\x6b\x56\x62', '\x4b\x48\x67\x6f\x64\x4d\x4f\x32\x56\x51\x3d\x3d', '\x77\x70\x73\x6d\x77\x71\x76\x44\x6e\x47\x46\x71', '\x77\x71\x4c\x44\x74\x38\x4f\x6b\x77\x34\x63\x3d', '\x77\x37\x77\x31\x77\x34\x50\x43\x70\x73\x4f\x34\x77\x71\x41\x3d', '\x77\x71\x39\x46\x52\x73\x4f\x71\x57\x4d\x4f\x71', '\x62\x79\x42\x68\x77\x37\x72\x44\x6d\x33\x34\x3d', '\x4c\x48\x67\x2b\x53\x38\x4f\x74\x54\x77\x3d\x3d', '\x77\x71\x68\x4f\x77\x37\x31\x35\x64\x73\x4f\x48', '\x55\x38\x4f\x37\x56\x73\x4f\x30\x77\x71\x76\x44\x76\x63\x4b\x75\x4b\x73\x4f\x71\x58\x38\x4b\x72', '\x59\x69\x74\x74\x77\x35\x44\x44\x6e\x57\x6e\x44\x72\x41\x3d\x3d', '\x59\x4d\x4b\x49\x77\x71\x55\x55\x66\x67\x49\x6b', '\x61\x42\x37\x44\x6c\x4d\x4f\x44\x54\x51\x3d\x3d', '\x77\x70\x66\x44\x68\x38\x4f\x72\x77\x36\x6b\x6b', '\x77\x37\x76\x43\x71\x4d\x4f\x72\x59\x38\x4b\x41\x56\x6b\x35\x4f\x77\x70\x6e\x43\x75\x38\x4f\x61\x58\x73\x4b\x5a\x50\x33\x44\x43\x6c\x63\x4b\x79\x77\x36\x48\x44\x72\x51\x3d\x3d', '\x77\x6f\x77\x2b\x77\x36\x76\x44\x6d\x48\x70\x73\x77\x37\x52\x74\x77\x6f\x39\x38\x4c\x43\x37\x43\x69\x47\x37\x43\x6b\x73\x4f\x52\x54\x38\x4b\x6c\x57\x38\x4f\x35\x77\x72\x33\x44\x69\x38\x4f\x54\x48\x73\x4f\x44\x65\x48\x6a\x44\x6d\x63\x4b\x6c\x4a\x73\x4b\x71\x56\x41\x3d\x3d', '\x4e\x77\x56\x2b', '\x77\x37\x48\x44\x72\x63\x4b\x74\x77\x70\x4a\x61\x77\x70\x5a\x62', '\x77\x70\x51\x73\x77\x71\x76\x44\x69\x48\x70\x75\x77\x36\x49\x3d', '\x59\x4d\x4b\x55\x77\x71\x4d\x4a\x5a\x51\x3d\x3d', '\x4b\x48\x31\x56\x4b\x63\x4f\x71\x4b\x73\x4b\x31', '\x66\x51\x35\x73\x46\x55\x6b\x6b\x77\x70\x49\x3d', '\x77\x72\x76\x43\x72\x63\x4f\x42\x52\x38\x4b\x6b', '\x4d\x33\x77\x30\x66\x51\x3d\x3d', '\x77\x36\x78\x58\x77\x71\x50\x44\x76\x4d\x4f\x46\x77\x6f\x35\x64'];
|
||||
(function (_0x4c97f0, _0x1742fd) {
|
||||
var _0x4db1c = function (_0x48181e) {
|
||||
while (--_0x48181e) {
|
||||
_0x4c97f0['\x70\x75\x73\x68'](_0x4c97f0['\x73\x68\x69\x66\x74']());
|
||||
}
|
||||
};
|
||||
var _0x3cd6c6 = function () {
|
||||
var _0xb8360b = {
|
||||
'\x64\x61\x74\x61': {
|
||||
'\x6b\x65\x79': '\x63\x6f\x6f\x6b\x69\x65',
|
||||
'\x76\x61\x6c\x75\x65': '\x74\x69\x6d\x65\x6f\x75\x74'
|
||||
}, '\x73\x65\x74\x43\x6f\x6f\x6b\x69\x65': function (_0x20bf34, _0x3e840e, _0x5693d3, _0x5e8b26) {
|
||||
_0x5e8b26 = _0x5e8b26 || {};
|
||||
var _0xba82f0 = _0x3e840e + '\x3d' + _0x5693d3;
|
||||
var _0x5afe31 = 0x0;
|
||||
for (var _0x5afe31 = 0x0, _0x178627 = _0x20bf34['\x6c\x65\x6e\x67\x74\x68']; _0x5afe31 < _0x178627; _0x5afe31++) {
|
||||
var _0x41b2ff = _0x20bf34[_0x5afe31];
|
||||
_0xba82f0 += '\x3b\x20' + _0x41b2ff;
|
||||
var _0xd79219 = _0x20bf34[_0x41b2ff];
|
||||
_0x20bf34['\x70\x75\x73\x68'](_0xd79219);
|
||||
_0x178627 = _0x20bf34['\x6c\x65\x6e\x67\x74\x68'];
|
||||
if (_0xd79219 !== !![]) {
|
||||
_0xba82f0 += '\x3d' + _0xd79219;
|
||||
}
|
||||
}
|
||||
_0x5e8b26['\x63\x6f\x6f\x6b\x69\x65'] = _0xba82f0;
|
||||
}, '\x72\x65\x6d\x6f\x76\x65\x43\x6f\x6f\x6b\x69\x65': function () {
|
||||
return '\x64\x65\x76';
|
||||
}, '\x67\x65\x74\x43\x6f\x6f\x6b\x69\x65': function (_0x4a11fe, _0x189946) {
|
||||
_0x4a11fe = _0x4a11fe || function (_0x6259a2) {
|
||||
return _0x6259a2;
|
||||
};
|
||||
var _0x25af93 = _0x4a11fe(new RegExp('\x28\x3f\x3a\x5e\x7c\x3b\x20\x29' + _0x189946['\x72\x65\x70\x6c\x61\x63\x65'](/([.$?*|{}()[]\/+^])/g, '\x24\x31') + '\x3d\x28\x5b\x5e\x3b\x5d\x2a\x29'));
|
||||
var _0x52d57c = function (_0x105f59, _0x3fd789) {
|
||||
_0x105f59(++_0x3fd789);
|
||||
};
|
||||
_0x52d57c(_0x4db1c, _0x1742fd);
|
||||
return _0x25af93 ? decodeURIComponent(_0x25af93[0x1]) : undefined;
|
||||
}
|
||||
};
|
||||
var _0x4a2aed = function () {
|
||||
var _0x124d17 = new RegExp('\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d');
|
||||
return _0x124d17['\x74\x65\x73\x74'](_0xb8360b['\x72\x65\x6d\x6f\x76\x65\x43\x6f\x6f\x6b\x69\x65']['\x74\x6f\x53\x74\x72\x69\x6e\x67']());
|
||||
};
|
||||
_0xb8360b['\x75\x70\x64\x61\x74\x65\x43\x6f\x6f\x6b\x69\x65'] = _0x4a2aed;
|
||||
var _0x2d67ec = '';
|
||||
var _0x120551 = _0xb8360b['\x75\x70\x64\x61\x74\x65\x43\x6f\x6f\x6b\x69\x65']();
|
||||
if (!_0x120551) {
|
||||
_0xb8360b['\x73\x65\x74\x43\x6f\x6f\x6b\x69\x65'](['\x2a'], '\x63\x6f\x75\x6e\x74\x65\x72', 0x1);
|
||||
} else if (_0x120551) {
|
||||
_0x2d67ec = _0xb8360b['\x67\x65\x74\x43\x6f\x6f\x6b\x69\x65'](null, '\x63\x6f\x75\x6e\x74\x65\x72');
|
||||
} else {
|
||||
_0xb8360b['\x72\x65\x6d\x6f\x76\x65\x43\x6f\x6f\x6b\x69\x65']();
|
||||
}
|
||||
};
|
||||
_0x3cd6c6();
|
||||
}(_0x4818, 0x15b));
|
||||
var _0x55f3 = function (_0x4c97f0, _0x1742fd) {
|
||||
var _0x4c97f0 = parseInt(_0x4c97f0, 0x10);
|
||||
var _0x48181e = _0x4818[_0x4c97f0];
|
||||
if (!_0x55f3['\x61\x74\x6f\x62\x50\x6f\x6c\x79\x66\x69\x6c\x6c\x41\x70\x70\x65\x6e\x64\x65\x64']) {
|
||||
(function () {
|
||||
var _0xdf49c6 = Function('\x72\x65\x74\x75\x72\x6e\x20\x28\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x28\x29\x20' + '\x7b\x7d\x2e\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x28\x22\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x69\x73\x22\x29\x28\x29' + '\x29\x3b');
|
||||
var _0xb8360b = _0xdf49c6();
|
||||
var _0x389f44 = '\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';
|
||||
_0xb8360b['\x61\x74\x6f\x62'] || (_0xb8360b['\x61\x74\x6f\x62'] = function (_0xba82f0) {
|
||||
var _0xec6bb4 = String(_0xba82f0)['\x72\x65\x70\x6c\x61\x63\x65'](/=+$/, '');
|
||||
for (var _0x1a0f04 = 0x0, _0x18c94e, _0x41b2ff, _0xd79219 = 0x0, _0x5792f7 = ''; _0x41b2ff = _0xec6bb4['\x63\x68\x61\x72\x41\x74'](_0xd79219++); ~_0x41b2ff && (_0x18c94e = _0x1a0f04 % 0x4 ? _0x18c94e * 0x40 + _0x41b2ff : _0x41b2ff, _0x1a0f04++ % 0x4) ? _0x5792f7 += String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0xff & _0x18c94e >> (-0x2 * _0x1a0f04 & 0x6)) : 0x0) {
|
||||
_0x41b2ff = _0x389f44['\x69\x6e\x64\x65\x78\x4f\x66'](_0x41b2ff);
|
||||
}
|
||||
return _0x5792f7;
|
||||
});
|
||||
}());
|
||||
_0x55f3['\x61\x74\x6f\x62\x50\x6f\x6c\x79\x66\x69\x6c\x6c\x41\x70\x70\x65\x6e\x64\x65\x64'] = !![];
|
||||
}
|
||||
if (!_0x55f3['\x72\x63\x34']) {
|
||||
var _0x232678 = function (_0x401af1, _0x532ac0) {
|
||||
var _0x45079a = [], _0x52d57c = 0x0, _0x105f59, _0x3fd789 = '', _0x4a2aed = '';
|
||||
_0x401af1 = atob(_0x401af1);
|
||||
for (var _0x124d17 = 0x0, _0x1b9115 = _0x401af1['\x6c\x65\x6e\x67\x74\x68']; _0x124d17 < _0x1b9115; _0x124d17++) {
|
||||
_0x4a2aed += '\x25' + ('\x30\x30' + _0x401af1['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x124d17)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x10))['\x73\x6c\x69\x63\x65'](-0x2);
|
||||
}
|
||||
_0x401af1 = decodeURIComponent(_0x4a2aed);
|
||||
for (var _0x2d67ec = 0x0; _0x2d67ec < 0x100; _0x2d67ec++) {
|
||||
_0x45079a[_0x2d67ec] = _0x2d67ec;
|
||||
}
|
||||
for (_0x2d67ec = 0x0; _0x2d67ec < 0x100; _0x2d67ec++) {
|
||||
_0x52d57c = (_0x52d57c + _0x45079a[_0x2d67ec] + _0x532ac0['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2d67ec % _0x532ac0['\x6c\x65\x6e\x67\x74\x68'])) % 0x100;
|
||||
_0x105f59 = _0x45079a[_0x2d67ec];
|
||||
_0x45079a[_0x2d67ec] = _0x45079a[_0x52d57c];
|
||||
_0x45079a[_0x52d57c] = _0x105f59;
|
||||
}
|
||||
_0x2d67ec = 0x0;
|
||||
_0x52d57c = 0x0;
|
||||
for (var _0x4e5ce2 = 0x0; _0x4e5ce2 < _0x401af1['\x6c\x65\x6e\x67\x74\x68']; _0x4e5ce2++) {
|
||||
_0x2d67ec = (_0x2d67ec + 0x1) % 0x100;
|
||||
_0x52d57c = (_0x52d57c + _0x45079a[_0x2d67ec]) % 0x100;
|
||||
_0x105f59 = _0x45079a[_0x2d67ec];
|
||||
_0x45079a[_0x2d67ec] = _0x45079a[_0x52d57c];
|
||||
_0x45079a[_0x52d57c] = _0x105f59;
|
||||
_0x3fd789 += String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x401af1['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x4e5ce2) ^ _0x45079a[(_0x45079a[_0x2d67ec] + _0x45079a[_0x52d57c]) % 0x100]);
|
||||
}
|
||||
return _0x3fd789;
|
||||
};
|
||||
_0x55f3['\x72\x63\x34'] = _0x232678;
|
||||
}
|
||||
if (!_0x55f3['\x64\x61\x74\x61']) {
|
||||
_0x55f3['\x64\x61\x74\x61'] = {};
|
||||
}
|
||||
if (_0x55f3['\x64\x61\x74\x61'][_0x4c97f0] === undefined) {
|
||||
if (!_0x55f3['\x6f\x6e\x63\x65']) {
|
||||
var _0x5f325c = function (_0x23a392) {
|
||||
this['\x72\x63\x34\x42\x79\x74\x65\x73'] = _0x23a392;
|
||||
this['\x73\x74\x61\x74\x65\x73'] = [0x1, 0x0, 0x0];
|
||||
this['\x6e\x65\x77\x53\x74\x61\x74\x65'] = function () {
|
||||
return '\x6e\x65\x77\x53\x74\x61\x74\x65';
|
||||
};
|
||||
this['\x66\x69\x72\x73\x74\x53\x74\x61\x74\x65'] = '\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a';
|
||||
this['\x73\x65\x63\x6f\x6e\x64\x53\x74\x61\x74\x65'] = '\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';
|
||||
};
|
||||
_0x5f325c['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x63\x68\x65\x63\x6b\x53\x74\x61\x74\x65'] = function () {
|
||||
var _0x19f809 = new RegExp(this['\x66\x69\x72\x73\x74\x53\x74\x61\x74\x65'] + this['\x73\x65\x63\x6f\x6e\x64\x53\x74\x61\x74\x65']);
|
||||
return this['\x72\x75\x6e\x53\x74\x61\x74\x65'](_0x19f809['\x74\x65\x73\x74'](this['\x6e\x65\x77\x53\x74\x61\x74\x65']['\x74\x6f\x53\x74\x72\x69\x6e\x67']()) ? --this['\x73\x74\x61\x74\x65\x73'][0x1] : --this['\x73\x74\x61\x74\x65\x73'][0x0]);
|
||||
};
|
||||
_0x5f325c['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x72\x75\x6e\x53\x74\x61\x74\x65'] = function (_0x4380bd) {
|
||||
if (!Boolean(~_0x4380bd)) {
|
||||
return _0x4380bd;
|
||||
}
|
||||
return this['\x67\x65\x74\x53\x74\x61\x74\x65'](this['\x72\x63\x34\x42\x79\x74\x65\x73']);
|
||||
};
|
||||
_0x5f325c['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x67\x65\x74\x53\x74\x61\x74\x65'] = function (_0x58d85e) {
|
||||
for (var _0x1c9f5b = 0x0, _0x1ce9e0 = this['\x73\x74\x61\x74\x65\x73']['\x6c\x65\x6e\x67\x74\x68']; _0x1c9f5b < _0x1ce9e0; _0x1c9f5b++) {
|
||||
this['\x73\x74\x61\x74\x65\x73']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']()));
|
||||
_0x1ce9e0 = this['\x73\x74\x61\x74\x65\x73']['\x6c\x65\x6e\x67\x74\x68'];
|
||||
}
|
||||
return _0x58d85e(this['\x73\x74\x61\x74\x65\x73'][0x0]);
|
||||
};
|
||||
new _0x5f325c(_0x55f3)['\x63\x68\x65\x63\x6b\x53\x74\x61\x74\x65']();
|
||||
_0x55f3['\x6f\x6e\x63\x65'] = !![];
|
||||
}
|
||||
_0x48181e = _0x55f3['\x72\x63\x34'](_0x48181e, _0x1742fd);
|
||||
_0x55f3['\x64\x61\x74\x61'][_0x4c97f0] = _0x48181e;
|
||||
} else {
|
||||
_0x48181e = _0x55f3['\x64\x61\x74\x61'][_0x4c97f0];
|
||||
}
|
||||
return _0x48181e;
|
||||
};
|
||||
var arg3 = null;
|
||||
var arg4 = null;
|
||||
var arg5 = null;
|
||||
var arg6 = null;
|
||||
var arg7 = null;
|
||||
var arg8 = null;
|
||||
var arg9 = null;
|
||||
var arg10 = null;
|
||||
var l = function () {
|
||||
while (window[_0x55f3('0x1', '\x58\x4d\x57\x5e')] || window['\x5f\x5f\x70\x68\x61\x6e\x74\x6f\x6d\x61\x73']) {
|
||||
}
|
||||
;var _0x5e8b26 = _0x55f3('0x3', '\x6a\x53\x31\x59');
|
||||
String[_0x55f3('0x5', '\x6e\x5d\x66\x52')][_0x55f3('0x6', '\x50\x67\x35\x34')] = function (_0x4e08d8) {
|
||||
var _0x5a5d3b = '';
|
||||
for (var _0xe89588 = 0x0; _0xe89588 < this[_0x55f3('0x8', '\x29\x68\x52\x63')] && _0xe89588 < _0x4e08d8[_0x55f3('0xa', '\x6a\x45\x26\x5e')]; _0xe89588 += 0x2) {
|
||||
var _0x401af1 = parseInt(this[_0x55f3('0xb', '\x56\x32\x4b\x45')](_0xe89588, _0xe89588 + 0x2), 0x10);
|
||||
var _0x105f59 = parseInt(_0x4e08d8[_0x55f3('0xd', '\x58\x4d\x57\x5e')](_0xe89588, _0xe89588 + 0x2), 0x10);
|
||||
var _0x189e2c = (_0x401af1 ^ _0x105f59)[_0x55f3('0xf', '\x57\x31\x46\x45')](0x10);
|
||||
if (_0x189e2c[_0x55f3('0x11', '\x4d\x47\x72\x76')] == 0x1) {
|
||||
_0x189e2c = '\x30' + _0x189e2c;
|
||||
}
|
||||
_0x5a5d3b += _0x189e2c;
|
||||
}
|
||||
return _0x5a5d3b;
|
||||
};
|
||||
String['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65'][_0x55f3('0x14', '\x5a\x2a\x44\x4d')] = function () {
|
||||
var _0x4b082b = [0xf, 0x23, 0x1d, 0x18, 0x21, 0x10, 0x1, 0x26, 0xa, 0x9, 0x13, 0x1f, 0x28, 0x1b, 0x16, 0x17, 0x19, 0xd, 0x6, 0xb, 0x27, 0x12, 0x14, 0x8, 0xe, 0x15, 0x20, 0x1a, 0x2, 0x1e, 0x7, 0x4, 0x11, 0x5, 0x3, 0x1c, 0x22, 0x25, 0xc, 0x24];
|
||||
var _0x4da0dc = [];
|
||||
var _0x12605e = '';
|
||||
for (var _0x20a7bf = 0x0; _0x20a7bf < this['\x6c\x65\x6e\x67\x74\x68']; _0x20a7bf++) {
|
||||
var _0x385ee3 = this[_0x20a7bf];
|
||||
for (var _0x217721 = 0x0; _0x217721 < _0x4b082b[_0x55f3('0x16', '\x61\x48\x2a\x4e')]; _0x217721++) {
|
||||
if (_0x4b082b[_0x217721] == _0x20a7bf + 0x1) {
|
||||
_0x4da0dc[_0x217721] = _0x385ee3;
|
||||
}
|
||||
}
|
||||
}
|
||||
_0x12605e = _0x4da0dc['\x6a\x6f\x69\x6e']('');
|
||||
return _0x12605e;
|
||||
};
|
||||
var _0x23a392 = arg1[_0x55f3('0x19', '\x50\x67\x35\x34')]();
|
||||
arg2 = _0x23a392[_0x55f3('0x1b', '\x7a\x35\x4f\x26')](_0x5e8b26);
|
||||
setTimeout('\x72\x65\x6c\x6f\x61\x64\x28\x61\x72\x67\x32\x29', 0x66a);
|
||||
};
|
||||
var _0x4db1c = function () {
|
||||
function _0x355d23(_0x450614) {
|
||||
if (('' + _0x450614 / _0x450614)[_0x55f3('0x1c', '\x56\x32\x4b\x45')] !== 0x1 || _0x450614 % 0x14 === 0x0) {
|
||||
(function () {
|
||||
}[_0x55f3('0x1d', '\x43\x4e\x55\x59')]((undefined + '')[0x2] + (!![] + '')[0x3] + ([][_0x55f3('0x1e', '\x77\x38\x50\x52')]() + '')[0x2] + (undefined + '')[0x0] + (![] + [0x0] + String)[0x14] + (![] + [0x0] + String)[0x14] + (!![] + '')[0x3] + (!![] + '')[0x1])());
|
||||
} else {
|
||||
(function () {
|
||||
}['\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72']((undefined + '')[0x2] + (!![] + '')[0x3] + ([][_0x55f3('0x1f', '\x4c\x24\x28\x44')]() + '')[0x2] + (undefined + '')[0x0] + (![] + [0x0] + String)[0x14] + (![] + [0x0] + String)[0x14] + (!![] + '')[0x3] + (!![] + '')[0x1])());
|
||||
}
|
||||
_0x355d23(++_0x450614);
|
||||
}
|
||||
|
||||
try {
|
||||
_0x355d23(0x0);
|
||||
} catch (_0x54c483) {
|
||||
}
|
||||
};
|
||||
if (function () {
|
||||
var _0x470d8f = function () {
|
||||
var _0x4c97f0 = !![];
|
||||
return function (_0x1742fd, _0x4db1c) {
|
||||
var _0x48181e = _0x4c97f0 ? function () {
|
||||
if (_0x4db1c) {
|
||||
var _0x55f3be = _0x4db1c['\x61\x70\x70\x6c\x79'](_0x1742fd, arguments);
|
||||
_0x4db1c = null;
|
||||
return _0x55f3be;
|
||||
}
|
||||
} : function () {
|
||||
};
|
||||
_0x4c97f0 = ![];
|
||||
return _0x48181e;
|
||||
};
|
||||
}();
|
||||
var _0x501fd7 = _0x470d8f(this, function () {
|
||||
var _0x4c97f0 = function () {
|
||||
return '\x64\x65\x76';
|
||||
}, _0x1742fd = function () {
|
||||
return '\x77\x69\x6e\x64\x6f\x77';
|
||||
};
|
||||
var _0x55f3be = function () {
|
||||
var _0x3ad9a1 = new RegExp('\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d');
|
||||
return !_0x3ad9a1['\x74\x65\x73\x74'](_0x4c97f0['\x74\x6f\x53\x74\x72\x69\x6e\x67']());
|
||||
};
|
||||
var _0x1b93ad = function () {
|
||||
var _0x20bf34 = new RegExp('\x28\x5c\x5c\x5b\x78\x7c\x75\x5d\x28\x5c\x77\x29\x7b\x32\x2c\x34\x7d\x29\x2b');
|
||||
return _0x20bf34['\x74\x65\x73\x74'](_0x1742fd['\x74\x6f\x53\x74\x72\x69\x6e\x67']());
|
||||
};
|
||||
var _0x5afe31 = function (_0x178627) {
|
||||
var _0x1a0f04 = ~-0x1 >> 0x1 + 0xff % 0x0;
|
||||
if (_0x178627['\x69\x6e\x64\x65\x78\x4f\x66']('\x69' === _0x1a0f04)) {
|
||||
_0xd79219(_0x178627);
|
||||
}
|
||||
};
|
||||
var _0xd79219 = function (_0x5792f7) {
|
||||
var _0x4e08d8 = ~-0x4 >> 0x1 + 0xff % 0x0;
|
||||
if (_0x5792f7['\x69\x6e\x64\x65\x78\x4f\x66']((!![] + '')[0x3]) !== _0x4e08d8) {
|
||||
_0x5afe31(_0x5792f7);
|
||||
}
|
||||
};
|
||||
if (!_0x55f3be()) {
|
||||
if (!_0x1b93ad()) {
|
||||
_0x5afe31('\x69\x6e\x64\u0435\x78\x4f\x66');
|
||||
} else {
|
||||
_0x5afe31('\x69\x6e\x64\x65\x78\x4f\x66');
|
||||
}
|
||||
} else {
|
||||
_0x5afe31('\x69\x6e\x64\u0435\x78\x4f\x66');
|
||||
}
|
||||
});
|
||||
_0x501fd7();
|
||||
var _0x3a394d = function () {
|
||||
var _0x1ab151 = !![];
|
||||
return function (_0x372617, _0x42d229) {
|
||||
var _0x3b3503 = _0x1ab151 ? function () {
|
||||
if (_0x42d229) {
|
||||
var _0x7086d9 = _0x42d229[_0x55f3('0x21', '\x4b\x4e\x29\x46')](_0x372617, arguments);
|
||||
_0x42d229 = null;
|
||||
return _0x7086d9;
|
||||
}
|
||||
} : function () {
|
||||
};
|
||||
_0x1ab151 = ![];
|
||||
return _0x3b3503;
|
||||
};
|
||||
}();
|
||||
var _0x5b6351 = _0x3a394d(this, function () {
|
||||
var _0x46cbaa = Function(_0x55f3('0x22', '\x26\x68\x5a\x59') + _0x55f3('0x23', '\x61\x48\x2a\x4e') + '\x29\x3b');
|
||||
var _0x1766ff = function () {
|
||||
};
|
||||
var _0x9b5e29 = _0x46cbaa();
|
||||
_0x9b5e29[_0x55f3('0x26', '\x61\x48\x2a\x4e')]['\x6c\x6f\x67'] = _0x1766ff;
|
||||
_0x9b5e29[_0x55f3('0x29', '\x56\x25\x59\x52')][_0x55f3('0x2a', '\x50\x5e\x45\x71')] = _0x1766ff;
|
||||
_0x9b5e29[_0x55f3('0x2c', '\x6c\x67\x4d\x30')][_0x55f3('0x2d', '\x4c\x24\x28\x44')] = _0x1766ff;
|
||||
_0x9b5e29[_0x55f3('0x2f', '\x43\x5a\x63\x38')][_0x55f3('0x30', '\x57\x75\x36\x25')] = _0x1766ff;
|
||||
});
|
||||
_0x5b6351();
|
||||
try {
|
||||
return !!window['\x61\x64\x64\x45\x76\x65\x6e\x74\x4c\x69\x73\x74\x65\x6e\x65\x72'];
|
||||
} catch (_0x35538d) {
|
||||
return ![];
|
||||
}
|
||||
}()) {
|
||||
document[_0x55f3('0x33', '\x56\x25\x59\x52')](_0x55f3('0x34', '\x79\x41\x70\x7a'), l, ![]);
|
||||
} else {
|
||||
document[_0x55f3('0x36', '\x79\x41\x70\x7a')](_0x55f3('0x37', '\x4c\x24\x28\x44'), l);
|
||||
}
|
||||
|
||||
debugger;
|
||||
|
||||
function setCookie(name, value) {
|
||||
var expiredate = new Date();
|
||||
expiredate.setTime(expiredate.getTime() + (3600 * 1000));
|
||||
document.cookie = name + "=" + value + ";expires=" + expiredate.toGMTString() + ";max-age=3600;path=/";
|
||||
}
|
||||
|
||||
function reload(x) {
|
||||
setCookie("yemu", x);
|
||||
document.location.reload();
|
||||
}
|
15
6-阻挠爬虫工程师的无限debugger/test
Normal file
15
6-阻挠爬虫工程师的无限debugger/test
Normal file
@ -0,0 +1,15 @@
|
||||
function start_debug(){
|
||||
debugger;
|
||||
}
|
||||
console.log(1111);
|
||||
console.log(2222);
|
||||
console.log(3333);
|
||||
var i=0;
|
||||
while (i < 10){
|
||||
start_debug();
|
||||
i++;
|
||||
console.log("i:", i);
|
||||
}
|
||||
console.log(4444);
|
||||
console.log(5555);
|
||||
console.log(6666);
|
20
7-定位加密参数对应代码位置的方法/Fuction eval
Normal file
20
7-定位加密参数对应代码位置的方法/Fuction eval
Normal file
@ -0,0 +1,20 @@
|
||||
window.__cr_eval = window.eval
|
||||
var myeval = function (src) {
|
||||
console.log(src);
|
||||
debugger;
|
||||
console.log("================ eval end ================")
|
||||
return window.__cr_eval(src)
|
||||
}
|
||||
var _myeval = myeval.bind(null)
|
||||
_myeval.toString = window.__cr_eval.toString;
|
||||
Object.defineProperty(window, 'eval', { value: _myeval })
|
||||
|
||||
window.__cr_fun = window.Function
|
||||
var myfun = function () {
|
||||
var args = Array.prototype.slice.call(arguments, 0, -1).join(","), src = arguments[arguments.length - 1]
|
||||
console.log(src);
|
||||
console.log("================ Function end ================")
|
||||
return window.__cr_fun.apply(this, arguments)
|
||||
}
|
||||
myfun.toString = function() { return window.__cr_fun + "" } // 小花招
|
||||
Object.defineProperty(window, 'Function', { value: myfun })
|
27
7-定位加密参数对应代码位置的方法/cookie
Normal file
27
7-定位加密参数对应代码位置的方法/cookie
Normal file
@ -0,0 +1,27 @@
|
||||
var cookie_cache = document.cookie;
|
||||
Object.defineProperty(document, 'cookie', {
|
||||
get: function() {
|
||||
console.log('Getting cookie');
|
||||
return cookie_cache;
|
||||
},
|
||||
set: function(val) {
|
||||
console.log('Setting cookie', val);
|
||||
var cookie = val.split(";")[0];
|
||||
var ncookie = cookie.split("=");
|
||||
var flag = false;
|
||||
var cache = cookie_cache.split("; ");
|
||||
cache = cache.map(function(a){
|
||||
if (a.split("=")[0] === ncookie[0]){
|
||||
flag = true;
|
||||
return cookie;
|
||||
}
|
||||
return a;
|
||||
})
|
||||
cookie_cache = cache.join("; ");
|
||||
if (!flag){
|
||||
cookie_cache += cookie + "; ";
|
||||
}
|
||||
this._value = val;
|
||||
return cookie_cache;
|
||||
},
|
||||
});
|
11
7-定位加密参数对应代码位置的方法/json
Normal file
11
7-定位加密参数对应代码位置的方法/json
Normal file
@ -0,0 +1,11 @@
|
||||
var my_stringify = JSON.stringify;
|
||||
JSON.stringify = function (params){
|
||||
console.log("yemu", params);
|
||||
return my_stringify(params);
|
||||
};
|
||||
|
||||
var my_parse = JSON.parse;
|
||||
JSON.parse = function (params){
|
||||
console.log("yemu", params);
|
||||
return my_parse(params);
|
||||
};
|
5
7-定位加密参数对应代码位置的方法/websocket
Normal file
5
7-定位加密参数对应代码位置的方法/websocket
Normal file
@ -0,0 +1,5 @@
|
||||
WebSocket.prototype.senda = WebSocket.prototype.send;
|
||||
WebSocket.prototype.send = function (data){
|
||||
console.info("Hook WebSocket", data);
|
||||
return this.senda(data)
|
||||
}
|
36
7-定位加密参数对应代码位置的方法/window attr
Normal file
36
7-定位加密参数对应代码位置的方法/window attr
Normal file
@ -0,0 +1,36 @@
|
||||
var window_flag_1 = 't';
|
||||
var window_flag_2 = 'ccc';
|
||||
|
||||
var key_value_map = {};
|
||||
var window_value = window[window_flag_1];
|
||||
|
||||
Object.defineProperty(window, window_flag_1, {
|
||||
get: function() {
|
||||
console.log('Getting', window, window_flag_1, '=', window_value);
|
||||
debugger;
|
||||
return window_value;
|
||||
},
|
||||
set: function(val) {
|
||||
console.log('Setting', window, window_flag_1, '=', val);
|
||||
debugger;
|
||||
window_value = val;
|
||||
key_value_map[window[window_flag_1]] = window_flag_1;
|
||||
set_obj_attr(window[window_flag_1], window_flag_2);
|
||||
},
|
||||
});
|
||||
|
||||
function set_obj_attr(obj, attr){
|
||||
var obj_attr_value = obj[attr];
|
||||
Object.defineProperty(obj, attr, {
|
||||
get: function() {
|
||||
console.log('Getting', key_value_map[obj], attr, '=', obj_attr_value);
|
||||
// debugger;
|
||||
return obj_attr_value;
|
||||
},
|
||||
set: function(val) {
|
||||
console.log('Setting', key_value_map[obj], attr, '=', val);
|
||||
// debugger;
|
||||
obj_attr_value = val;
|
||||
},
|
||||
});
|
||||
}
|
19
8-代码混淆的原理/README.md
Normal file
19
8-代码混淆的原理/README.md
Normal file
@ -0,0 +1,19 @@
|
||||
# JavaScript 混淆技术
|
||||
|
||||
本文件夹中提供了课程中的样例代码,可以直接用 Node.js 运行。
|
||||
|
||||
首先安装好 Node.js。
|
||||
|
||||
然后安装依赖库:
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
接着就可以运行,如:
|
||||
|
||||
```
|
||||
node demo_string_array.js
|
||||
```
|
||||
|
||||
其他的案例类似
|
BIN
8-代码混淆的原理/__MACOSX/._README.md
Normal file
BIN
8-代码混淆的原理/__MACOSX/._README.md
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_compact.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_compact.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_control_flow_flattening.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_control_flow_flattening.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_dead_code_injection.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_dead_code_injection.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_debug_protection.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_debug_protection.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_disable_console_output.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_disable_console_output.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_domain_lock.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_domain_lock.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_identifier_names_generator.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_identifier_names_generator.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_identifiers_prefix.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_identifiers_prefix.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_rename_globals.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_rename_globals.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_self_defending.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_self_defending.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_string_array.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_string_array.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_target.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_target.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_transform_object_keys.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_transform_object_keys.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._demo_unicode_escape_sequence.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._demo_unicode_escape_sequence.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._main.js
Normal file
BIN
8-代码混淆的原理/__MACOSX/._main.js
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._package-lock.json
generated
Normal file
BIN
8-代码混淆的原理/__MACOSX/._package-lock.json
generated
Normal file
Binary file not shown.
BIN
8-代码混淆的原理/__MACOSX/._package.json
Normal file
BIN
8-代码混淆的原理/__MACOSX/._package.json
Normal file
Binary file not shown.
17
8-代码混淆的原理/demo_compact.js
Normal file
17
8-代码混淆的原理/demo_compact.js
Normal file
@ -0,0 +1,17 @@
|
||||
const code = `
|
||||
let x = '1' + 1
|
||||
console.log('x', x)
|
||||
`
|
||||
|
||||
const options = {
|
||||
compact: false,
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
||||
// var _0x151c=['log'];(function(_0x1ce384,_0x20a7c7){var _0x25fc92=function(_0x188aec){while(--_0x188aec){_0x1ce384['push'](_0x1ce384['shift']());}};_0x25fc92(++_0x20a7c7);}(_0x151c,0x1b7));var _0x553e=function(_0x259219,_0x241445){_0x259219=_0x259219-0x0;var _0x56d72d=_0x151c[_0x259219];return _0x56d72d;};let x='1'+0x1;console[_0x553e('0x0')]('x',x);
|
30
8-代码混淆的原理/demo_control_flow_flattening.js
Normal file
30
8-代码混淆的原理/demo_control_flow_flattening.js
Normal file
@ -0,0 +1,30 @@
|
||||
const code = `
|
||||
(function(){
|
||||
function foo () {
|
||||
return function () {
|
||||
var sum = 1 + 2;
|
||||
console.log(1);
|
||||
console.log(2);
|
||||
console.log(3);
|
||||
console.log(4);
|
||||
console.log(5);
|
||||
console.log(6);
|
||||
}
|
||||
}
|
||||
|
||||
foo()();
|
||||
})();
|
||||
`
|
||||
|
||||
const options = {
|
||||
compact: false,
|
||||
controlFlowFlattening: true
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
20
8-代码混淆的原理/demo_dead_code_injection.js
Normal file
20
8-代码混淆的原理/demo_dead_code_injection.js
Normal file
@ -0,0 +1,20 @@
|
||||
const code = `
|
||||
console.log('abc');
|
||||
console.log('cde');
|
||||
console.log('efg');
|
||||
console.log('hij');
|
||||
`
|
||||
|
||||
const options = {
|
||||
compact: false,
|
||||
deadCodeInjection: true,
|
||||
deadCodeInjectionThreshold: 1
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
17
8-代码混淆的原理/demo_debug_protection.js
Normal file
17
8-代码混淆的原理/demo_debug_protection.js
Normal file
@ -0,0 +1,17 @@
|
||||
const code = `
|
||||
for (let i = 0; i < 5; i ++) {
|
||||
console.log('i', i)
|
||||
}
|
||||
`
|
||||
|
||||
const options = {
|
||||
debugProtection: true
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
14
8-代码混淆的原理/demo_disable_console_output.js
Normal file
14
8-代码混淆的原理/demo_disable_console_output.js
Normal file
@ -0,0 +1,14 @@
|
||||
const code = `
|
||||
console.log('hello world')
|
||||
`
|
||||
const options = {
|
||||
disableConsoleOutput: true
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
15
8-代码混淆的原理/demo_domain_lock.js
Normal file
15
8-代码混淆的原理/demo_domain_lock.js
Normal file
@ -0,0 +1,15 @@
|
||||
const code = `
|
||||
console.log('hello world')
|
||||
`
|
||||
|
||||
const options = {
|
||||
domainLock: ['cuiqingcai.com']
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
17
8-代码混淆的原理/demo_identifier_names_generator.js
Normal file
17
8-代码混淆的原理/demo_identifier_names_generator.js
Normal file
@ -0,0 +1,17 @@
|
||||
const code = `
|
||||
let hello = '1' + 1
|
||||
console.log('hello', hello)
|
||||
`
|
||||
|
||||
const options = {
|
||||
compact: true,
|
||||
identifierNamesGenerator: 'mangled'
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
16
8-代码混淆的原理/demo_identifiers_prefix.js
Normal file
16
8-代码混淆的原理/demo_identifiers_prefix.js
Normal file
@ -0,0 +1,16 @@
|
||||
const code = `
|
||||
let hello = '1' + 1
|
||||
console.log('hello', hello)
|
||||
`
|
||||
|
||||
const options = {
|
||||
identifiersPrefix: 'germey'
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
17
8-代码混淆的原理/demo_rename_globals.js
Normal file
17
8-代码混淆的原理/demo_rename_globals.js
Normal file
@ -0,0 +1,17 @@
|
||||
const code = `
|
||||
var $ = function(id) {
|
||||
return document.getElementById(id);
|
||||
};
|
||||
`
|
||||
|
||||
const options = {
|
||||
renameGlobals: true
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
15
8-代码混淆的原理/demo_self_defending.js
Normal file
15
8-代码混淆的原理/demo_self_defending.js
Normal file
@ -0,0 +1,15 @@
|
||||
const code = `
|
||||
console.log('hello world')
|
||||
`
|
||||
|
||||
const options = {
|
||||
selfDefending: true
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
17
8-代码混淆的原理/demo_string_array.js
Normal file
17
8-代码混淆的原理/demo_string_array.js
Normal file
@ -0,0 +1,17 @@
|
||||
const code = `
|
||||
var a = 'hello world'
|
||||
`
|
||||
const options = {
|
||||
stringArray: true,
|
||||
rotateStringArray: true,
|
||||
stringArrayEncoding: true, // 'base64' or 'rc4' or false
|
||||
stringArrayThreshold: 1,
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
15
8-代码混淆的原理/demo_target.js
Normal file
15
8-代码混淆的原理/demo_target.js
Normal file
@ -0,0 +1,15 @@
|
||||
const code = `
|
||||
console.log('hello world')
|
||||
`
|
||||
|
||||
const options = {
|
||||
target: 'browser-no-eval'
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
22
8-代码混淆的原理/demo_transform_object_keys.js
Normal file
22
8-代码混淆的原理/demo_transform_object_keys.js
Normal file
@ -0,0 +1,22 @@
|
||||
const code = `
|
||||
(function(){
|
||||
var object = {
|
||||
foo: 'test1',
|
||||
bar: {
|
||||
baz: 'test2'
|
||||
}
|
||||
};
|
||||
})();
|
||||
`
|
||||
const options = {
|
||||
compact: false,
|
||||
transformObjectKeys: true
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
15
8-代码混淆的原理/demo_unicode_escape_sequence.js
Normal file
15
8-代码混淆的原理/demo_unicode_escape_sequence.js
Normal file
@ -0,0 +1,15 @@
|
||||
const code = `
|
||||
var a = 'hello world'
|
||||
`
|
||||
const options = {
|
||||
compact: false,
|
||||
unicodeEscapeSequence: true
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
22
8-代码混淆的原理/main.js
Normal file
22
8-代码混淆的原理/main.js
Normal file
@ -0,0 +1,22 @@
|
||||
const code = `
|
||||
let string = 'hello'
|
||||
const count = 5
|
||||
for (let i = 0; i < 5; i ++) {
|
||||
console.log('i', string[i])
|
||||
}
|
||||
`
|
||||
|
||||
const options = {
|
||||
// compact: false,
|
||||
// controlFlowFlattening: true,
|
||||
unicodeEscapeSequence: true
|
||||
|
||||
}
|
||||
|
||||
const obfuscator = require('javascript-obfuscator')
|
||||
|
||||
function obfuscate(code, options) {
|
||||
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||
}
|
||||
|
||||
console.log(obfuscate(code, options))
|
865
8-代码混淆的原理/package-lock.json
generated
Normal file
865
8-代码混淆的原理/package-lock.json
generated
Normal file
@ -0,0 +1,865 @@
|
||||
{
|
||||
"name": "js-obfuscate",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": {
|
||||
"version": "7.7.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.4.tgz",
|
||||
"integrity": "sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"regenerator-runtime": "^0.13.2"
|
||||
}
|
||||
},
|
||||
"@types/color-name": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
|
||||
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/minimatch": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
|
||||
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/validator": {
|
||||
"version": "10.11.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/validator/-/validator-10.11.3.tgz",
|
||||
"integrity": "sha512-GKF2VnEkMmEeEGvoo03ocrP9ySMuX1ypKazIYMlsjfslfBMhOAtC5dmEWKdJioW4lJN7MZRS88kalTsVClyQ9w==",
|
||||
"dev": true
|
||||
},
|
||||
"acorn": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
|
||||
"integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
|
||||
"dev": true
|
||||
},
|
||||
"acorn-jsx": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
|
||||
"integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
|
||||
"dev": true
|
||||
},
|
||||
"amdefine": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
|
||||
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"ansi-escapes": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
|
||||
"integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
|
||||
"dev": true
|
||||
},
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
|
||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
|
||||
"dev": true
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz",
|
||||
"integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/color-name": "^1.1.1",
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"array-differ": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
|
||||
"integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==",
|
||||
"dev": true
|
||||
},
|
||||
"array-union": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
|
||||
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
|
||||
"dev": true
|
||||
},
|
||||
"arrify": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
|
||||
"integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
|
||||
"dev": true
|
||||
},
|
||||
"babel-polyfill": {
|
||||
"version": "6.23.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz",
|
||||
"integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babel-runtime": "^6.22.0",
|
||||
"core-js": "^2.4.0",
|
||||
"regenerator-runtime": "^0.10.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"regenerator-runtime": {
|
||||
"version": "0.10.5",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
|
||||
"integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"babel-runtime": {
|
||||
"version": "6.26.0",
|
||||
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
|
||||
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"core-js": "^2.4.0",
|
||||
"regenerator-runtime": "^0.11.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"regenerator-runtime": {
|
||||
"version": "0.11.1",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
|
||||
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||
"dev": true
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"buffer-from": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
||||
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
|
||||
"dev": true
|
||||
},
|
||||
"chalk": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
|
||||
"integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"chance": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/chance/-/chance-1.1.3.tgz",
|
||||
"integrity": "sha512-XeJsdoVAzDb1WRPRuMBesRSiWpW1uNTo5Fd7mYxPJsAfgX71+jfuCOHOdbyBz2uAUZ8TwKcXgWk3DMedFfJkbg==",
|
||||
"dev": true
|
||||
},
|
||||
"chardet": {
|
||||
"version": "0.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
|
||||
"integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
|
||||
"dev": true
|
||||
},
|
||||
"charenc": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
|
||||
"integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
|
||||
"dev": true
|
||||
},
|
||||
"class-validator": {
|
||||
"version": "0.11.0",
|
||||
"resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.11.0.tgz",
|
||||
"integrity": "sha512-niAmmSPFku9xsnpYYrddy8NZRrCX3yyoZ/rgPKOilE5BG0Ma1eVCIxpR4X0LasL/6BzbYzsutG+mSbAXlh4zNw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/validator": "10.11.3",
|
||||
"google-libphonenumber": "^3.1.6",
|
||||
"validator": "12.0.0"
|
||||
}
|
||||
},
|
||||
"cli-cursor": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
|
||||
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"restore-cursor": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"cli-width": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
|
||||
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
|
||||
"dev": true
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||
"dev": true
|
||||
},
|
||||
"commander": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-4.0.1.tgz",
|
||||
"integrity": "sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==",
|
||||
"dev": true
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
},
|
||||
"core-js": {
|
||||
"version": "2.6.11",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
|
||||
"integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==",
|
||||
"dev": true
|
||||
},
|
||||
"crypt": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
|
||||
"integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
|
||||
"dev": true
|
||||
},
|
||||
"deep-is": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
|
||||
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
|
||||
"dev": true
|
||||
},
|
||||
"encoding": {
|
||||
"version": "0.1.12",
|
||||
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
|
||||
"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"iconv-lite": "~0.4.13"
|
||||
}
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
||||
"dev": true
|
||||
},
|
||||
"escodegen-wallaby": {
|
||||
"version": "1.6.27",
|
||||
"resolved": "https://registry.npmjs.org/escodegen-wallaby/-/escodegen-wallaby-1.6.27.tgz",
|
||||
"integrity": "sha512-DFXbfLTNa/wiQRgqSseKhmzyDhwWJ4c/6IwsdAgA6qYL0ntsmSuuTMovEbA/8oCanSGkUR1qaLsDgKiWPllnjg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esprima": "^2.7.1",
|
||||
"estraverse": "^1.9.1",
|
||||
"esutils": "^2.0.2",
|
||||
"optionator": "^0.8.1",
|
||||
"source-map": "~0.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"estraverse": {
|
||||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
|
||||
"integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"eslint-visitor-keys": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
|
||||
"integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
|
||||
"dev": true
|
||||
},
|
||||
"espree": {
|
||||
"version": "6.1.2",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
|
||||
"integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"acorn": "^7.1.0",
|
||||
"acorn-jsx": "^5.1.0",
|
||||
"eslint-visitor-keys": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"esprima": {
|
||||
"version": "2.7.3",
|
||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
|
||||
"integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
|
||||
"dev": true
|
||||
},
|
||||
"estraverse": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
|
||||
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
|
||||
"dev": true
|
||||
},
|
||||
"esutils": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
|
||||
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
|
||||
"dev": true
|
||||
},
|
||||
"eventemitter3": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz",
|
||||
"integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==",
|
||||
"dev": true
|
||||
},
|
||||
"external-editor": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
|
||||
"integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chardet": "^0.4.0",
|
||||
"iconv-lite": "^0.4.17",
|
||||
"tmp": "^0.0.33"
|
||||
}
|
||||
},
|
||||
"fast-levenshtein": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
|
||||
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
|
||||
"dev": true
|
||||
},
|
||||
"figures": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
|
||||
"integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"escape-string-regexp": "^1.0.5"
|
||||
}
|
||||
},
|
||||
"google-libphonenumber": {
|
||||
"version": "3.2.6",
|
||||
"resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.6.tgz",
|
||||
"integrity": "sha512-6QCQAaKJlSd/1dUqvdQf7zzfb3uiZHsG8yhCfOdCVRfMuPZ/VDIEB47y5SYwjPQJPs7ebfW5jj6PeobB9JJ4JA==",
|
||||
"dev": true
|
||||
},
|
||||
"has-ansi": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
|
||||
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"dev": true
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.24",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
||||
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safer-buffer": ">= 2.1.2 < 3"
|
||||
}
|
||||
},
|
||||
"inquirer": {
|
||||
"version": "3.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.0.6.tgz",
|
||||
"integrity": "sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-escapes": "^1.1.0",
|
||||
"chalk": "^1.0.0",
|
||||
"cli-cursor": "^2.1.0",
|
||||
"cli-width": "^2.0.0",
|
||||
"external-editor": "^2.0.1",
|
||||
"figures": "^2.0.0",
|
||||
"lodash": "^4.3.0",
|
||||
"mute-stream": "0.0.7",
|
||||
"run-async": "^2.2.0",
|
||||
"rx": "^4.1.0",
|
||||
"string-width": "^2.0.0",
|
||||
"strip-ansi": "^3.0.0",
|
||||
"through": "^2.3.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
|
||||
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
|
||||
"dev": true
|
||||
},
|
||||
"chalk": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^2.2.1",
|
||||
"escape-string-regexp": "^1.0.2",
|
||||
"has-ansi": "^2.0.0",
|
||||
"strip-ansi": "^3.0.0",
|
||||
"supports-color": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
|
||||
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"inversify": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/inversify/-/inversify-5.0.1.tgz",
|
||||
"integrity": "sha512-Ieh06s48WnEYGcqHepdsJUIJUXpwH5o5vodAX+DK2JA/gjy4EbEcQZxw+uFfzysmKjiLXGYwNG3qDZsKVMcINQ==",
|
||||
"dev": true
|
||||
},
|
||||
"is-buffer": {
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
|
||||
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
|
||||
"dev": true
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
|
||||
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
|
||||
"dev": true
|
||||
},
|
||||
"is-promise": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
|
||||
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
|
||||
"dev": true
|
||||
},
|
||||
"is-stream": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
|
||||
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
|
||||
"dev": true
|
||||
},
|
||||
"javascript-obfuscator": {
|
||||
"version": "0.18.8",
|
||||
"resolved": "https://registry.npmjs.org/javascript-obfuscator/-/javascript-obfuscator-0.18.8.tgz",
|
||||
"integrity": "sha512-lh/PT3dwLgv2vP9ymsmNZqjpbkDq1SQqpxLYtAerLzmYgHlQOzVpUe3NbFb8tUFNylMeg6ez1iEpA7oOQw/7Tw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "7.7.4",
|
||||
"chalk": "3.0.0",
|
||||
"chance": "1.1.3",
|
||||
"class-validator": "0.11.0",
|
||||
"commander": "4.0.1",
|
||||
"escodegen-wallaby": "1.6.27",
|
||||
"espree": "^6.1.2",
|
||||
"estraverse": "4.3.0",
|
||||
"eventemitter3": "4.0.0",
|
||||
"inversify": "5.0.1",
|
||||
"js-string-escape": "1.0.1",
|
||||
"md5": "2.2.1",
|
||||
"mkdirp": "0.5.1",
|
||||
"multimatch": "4.0.0",
|
||||
"opencollective": "1.0.3",
|
||||
"reflect-metadata": "0.1.13",
|
||||
"source-map-support": "0.5.16",
|
||||
"string-template": "1.0.0",
|
||||
"tslib": "1.10.0"
|
||||
}
|
||||
},
|
||||
"js-string-escape": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz",
|
||||
"integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=",
|
||||
"dev": true
|
||||
},
|
||||
"levn": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
|
||||
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"prelude-ls": "~1.1.2",
|
||||
"type-check": "~0.3.2"
|
||||
}
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.15",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
|
||||
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
|
||||
"dev": true
|
||||
},
|
||||
"md5": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
|
||||
"integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"charenc": "~0.0.1",
|
||||
"crypt": "~0.0.1",
|
||||
"is-buffer": "~1.1.1"
|
||||
}
|
||||
},
|
||||
"mimic-fn": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
|
||||
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
|
||||
"dev": true
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
||||
"dev": true
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
}
|
||||
},
|
||||
"multimatch": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz",
|
||||
"integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/minimatch": "^3.0.3",
|
||||
"array-differ": "^3.0.0",
|
||||
"array-union": "^2.1.0",
|
||||
"arrify": "^2.0.1",
|
||||
"minimatch": "^3.0.4"
|
||||
}
|
||||
},
|
||||
"mute-stream": {
|
||||
"version": "0.0.7",
|
||||
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
|
||||
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
|
||||
"dev": true
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz",
|
||||
"integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"encoding": "^0.1.11",
|
||||
"is-stream": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
|
||||
"dev": true
|
||||
},
|
||||
"onetime": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
|
||||
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mimic-fn": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"opencollective": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/opencollective/-/opencollective-1.0.3.tgz",
|
||||
"integrity": "sha1-ruY3K8KBRFg2kMPKja7PwSDdDvE=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babel-polyfill": "6.23.0",
|
||||
"chalk": "1.1.3",
|
||||
"inquirer": "3.0.6",
|
||||
"minimist": "1.2.0",
|
||||
"node-fetch": "1.6.3",
|
||||
"opn": "4.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
|
||||
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
|
||||
"dev": true
|
||||
},
|
||||
"chalk": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^2.2.1",
|
||||
"escape-string-regexp": "^1.0.2",
|
||||
"has-ansi": "^2.0.0",
|
||||
"strip-ansi": "^3.0.0",
|
||||
"supports-color": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||
"dev": true
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
|
||||
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"opn": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
|
||||
"integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"object-assign": "^4.0.1",
|
||||
"pinkie-promise": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"optionator": {
|
||||
"version": "0.8.3",
|
||||
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
|
||||
"integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"deep-is": "~0.1.3",
|
||||
"fast-levenshtein": "~2.0.6",
|
||||
"levn": "~0.3.0",
|
||||
"prelude-ls": "~1.1.2",
|
||||
"type-check": "~0.3.2",
|
||||
"word-wrap": "~1.2.3"
|
||||
}
|
||||
},
|
||||
"os-tmpdir": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
|
||||
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
|
||||
"dev": true
|
||||
},
|
||||
"pinkie": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
|
||||
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
|
||||
"dev": true
|
||||
},
|
||||
"pinkie-promise": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
|
||||
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pinkie": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"prelude-ls": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
|
||||
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
|
||||
"dev": true
|
||||
},
|
||||
"reflect-metadata": {
|
||||
"version": "0.1.13",
|
||||
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
|
||||
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==",
|
||||
"dev": true
|
||||
},
|
||||
"regenerator-runtime": {
|
||||
"version": "0.13.3",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
|
||||
"integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==",
|
||||
"dev": true
|
||||
},
|
||||
"restore-cursor": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
|
||||
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"onetime": "^2.0.0",
|
||||
"signal-exit": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"run-async": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
|
||||
"integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-promise": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"rx": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
|
||||
"integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=",
|
||||
"dev": true
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
||||
"dev": true
|
||||
},
|
||||
"signal-exit": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
|
||||
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
|
||||
"dev": true
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
|
||||
"integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"amdefine": ">=0.0.4"
|
||||
}
|
||||
},
|
||||
"source-map-support": {
|
||||
"version": "0.5.16",
|
||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
|
||||
"integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"buffer-from": "^1.0.0",
|
||||
"source-map": "^0.6.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"string-template": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz",
|
||||
"integrity": "sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y=",
|
||||
"dev": true
|
||||
},
|
||||
"string-width": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
|
||||
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-fullwidth-code-point": "^2.0.0",
|
||||
"strip-ansi": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
|
||||
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
|
||||
"dev": true
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
|
||||
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^3.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
|
||||
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"through": {
|
||||
"version": "2.3.8",
|
||||
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
|
||||
"dev": true
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.0.33",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
||||
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"os-tmpdir": "~1.0.2"
|
||||
}
|
||||
},
|
||||
"tslib": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
|
||||
"integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
|
||||
"dev": true
|
||||
},
|
||||
"type-check": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
|
||||
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"prelude-ls": "~1.1.2"
|
||||
}
|
||||
},
|
||||
"validator": {
|
||||
"version": "12.0.0",
|
||||
"resolved": "https://registry.npmjs.org/validator/-/validator-12.0.0.tgz",
|
||||
"integrity": "sha512-r5zA1cQBEOgYlesRmSEwc9LkbfNLTtji+vWyaHzRZUxCTHdsX3bd+sdHfs5tGZ2W6ILGGsxWxCNwT/h3IY/3ng==",
|
||||
"dev": true
|
||||
},
|
||||
"word-wrap": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
|
||||
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
}
|
14
8-代码混淆的原理/package.json
Normal file
14
8-代码混淆的原理/package.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "js-obfuscate",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "Germey",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"javascript-obfuscator": "^0.18.8"
|
||||
}
|
||||
}
|
1
9-处理常见代码混淆操作的方法/9-1.js
Normal file
1
9-处理常见代码混淆操作的方法/9-1.js
Normal file
File diff suppressed because one or more lines are too long
1
9-处理常见代码混淆操作的方法/9-2.js
Normal file
1
9-处理常见代码混淆操作的方法/9-2.js
Normal file
File diff suppressed because one or more lines are too long
113
9-处理常见代码混淆操作的方法/9-3.js
Normal file
113
9-处理常见代码混淆操作的方法/9-3.js
Normal file
File diff suppressed because one or more lines are too long
1
9-处理常见代码混淆操作的方法/9-4.js
Normal file
1
9-处理常见代码混淆操作的方法/9-4.js
Normal file
File diff suppressed because one or more lines are too long
244
9-处理常见代码混淆操作的方法/9-5.js
Normal file
244
9-处理常见代码混淆操作的方法/9-5.js
Normal file
File diff suppressed because one or more lines are too long
87
test_pc_小红书破解/client/client-x-s.py
Normal file
87
test_pc_小红书破解/client/client-x-s.py
Normal file
@ -0,0 +1,87 @@
|
||||
import requests
|
||||
import json
|
||||
import time
|
||||
from setting import xhs_account
|
||||
|
||||
|
||||
class XhsApp(object):
|
||||
def __init__(self):
|
||||
self.nodejs_x_s_url = "http://127.0.0.1:3000/get_x_s"
|
||||
self.nodejs_id_url = "http://127.0.0.1:3001/get_sign"
|
||||
self.cookie_url = "https://www.xiaohongshu.com/fe_api/burdock/v2/shield/registerCanvas"
|
||||
self.login_url = "https://customer.xiaohongshu.com/api/cas/loginWithAccount"
|
||||
|
||||
self.sign = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4280.141 " \
|
||||
"Safari/537.36~~~unknown~~~zh-CN~~~24~~~8~~~4~~~-480~~~Asia/Shanghai~~~1~~~1~~~1~~~1~~~unkno" \
|
||||
"wn~~~Linux x86_64~~~Chrome PDF Plugin::Portable Document Format::application/x-google-chrome" \
|
||||
"-pdf~pdf,Chrome PDF Viewer::::application/pdf~pdf,Native Client::::application/x-nacl~,appl" \
|
||||
"ication/x-pnacl~~~~canvas winding:yes~canvas fp:4ed6498d31241a0323aabbcc7f6d68a0~~~false~~~f" \
|
||||
"alse~~~false~~~false~~~false~~~0;false;false~~~0;1;2;3;4;5;6;7;8;9~~~124.04347730432432"
|
||||
|
||||
def get_timestamp(self):
|
||||
t = time.time()
|
||||
return str(round(t * 1000))
|
||||
|
||||
def get_x_s(self, x_t):
|
||||
x_s_data = 'test1test/api/cas/loginWithAccount{"account":"test2","password":"test3",' \
|
||||
'"service":"https://pgy.xiaohongshu.com"}'
|
||||
x_s_data = x_s_data.replace("test1", x_t)\
|
||||
.replace("test2", xhs_account.get('account'))\
|
||||
.replace("test3", xhs_account.get('password'))
|
||||
|
||||
data = {
|
||||
'sign': x_s_data
|
||||
}
|
||||
req = requests.post(self.nodejs_x_s_url, data=data)
|
||||
id = req.text
|
||||
return id
|
||||
|
||||
def get_id(self):
|
||||
data = {
|
||||
'sign': self.sign
|
||||
}
|
||||
req = requests.post(self.nodejs_id_url, data=data)
|
||||
id = req.text
|
||||
return id
|
||||
|
||||
def get_cookie_timestamp2(self, id):
|
||||
data = {
|
||||
'id': id,
|
||||
'sign': self.sign
|
||||
}
|
||||
req = requests.post(self.cookie_url, data=data)
|
||||
canvas = json.loads(req.text).get('data').get('canvas')
|
||||
return canvas
|
||||
|
||||
def get_html(self, timestamp2, x_s, x_t):
|
||||
headers = {
|
||||
'cookie': "timestamp2=" + timestamp2,
|
||||
'x-s': x_s,
|
||||
'x-t': x_t,
|
||||
'content-type': 'application/json;charset=UTF-8'
|
||||
}
|
||||
|
||||
payload = "{\"account\":\"test1\",\"password\":\"test2\"," \
|
||||
"\"service\":\"https://pgy.xiaohongshu.com\"}"
|
||||
payload = payload.replace("test1", xhs_account.get('account')).replace("test2", xhs_account.get('password'))
|
||||
|
||||
req = requests.post(self.login_url, headers=headers, data=payload)
|
||||
return req.text, req.headers
|
||||
|
||||
def run(self):
|
||||
x_t = self.get_timestamp()
|
||||
print('x_t : {}'.format(x_t))
|
||||
|
||||
x_s = self.get_x_s(x_t)
|
||||
print('x_s : {}'.format(x_s))
|
||||
|
||||
id = self.get_id()
|
||||
timestamp2 = self.get_cookie_timestamp2(id)
|
||||
text, headers = self.get_html(timestamp2, x_s, x_t)
|
||||
print(text)
|
||||
print(headers)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
xhs_app = XhsApp()
|
||||
xhs_app.run()
|
53
test_pc_小红书破解/client/client.py
Normal file
53
test_pc_小红书破解/client/client.py
Normal file
@ -0,0 +1,53 @@
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class XhsApp(object):
|
||||
def __init__(self):
|
||||
self.node_js_url = "http://127.0.0.1:3001/get_sign"
|
||||
self.cookie_url = "https://www.xiaohongshu.com/fe_api/burdock/v2/shield/registerCanvas"
|
||||
self.html_url = "https://www.xiaohongshu.com/discovery/item/5ea02f090000000001001a90"
|
||||
# sign 中的参数按需要改动后获取id值
|
||||
self.sign = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4280.141 " \
|
||||
"Safari/537.36~~~unknown~~~zh-CN~~~24~~~8~~~4~~~-480~~~Asia/Shanghai~~~1~~~1~~~1~~~1~~~unkno" \
|
||||
"wn~~~Linux x86_64~~~Chrome PDF Plugin::Portable Document Format::application/x-google-chrome" \
|
||||
"-pdf~pdf,Chrome PDF Viewer::::application/pdf~pdf,Native Client::::application/x-nacl~,appl" \
|
||||
"ication/x-pnacl~~~~canvas winding:yes~canvas fp:4ed6498d31241a0323aabbcc7f6d68a0~~~false~~~f" \
|
||||
"alse~~~false~~~false~~~false~~~0;false;false~~~0;1;2;3;4;5;6;7;8;9~~~124.04347730432432"
|
||||
|
||||
def get_id(self):
|
||||
data = {
|
||||
'sign': self.sign
|
||||
}
|
||||
req = requests.post(self.node_js_url, data=data)
|
||||
id = req.text
|
||||
return id
|
||||
|
||||
def get_cookie(self, id):
|
||||
data = {
|
||||
'id': id,
|
||||
'sign': self.sign
|
||||
}
|
||||
req = requests.post(self.cookie_url, data=data)
|
||||
canvas = json.loads(req.text).get('data').get('canvas')
|
||||
return canvas
|
||||
|
||||
def get_html(self, cookie):
|
||||
Headers = {
|
||||
'cookie': "timestamp2=" + cookie
|
||||
}
|
||||
req = requests.get(self.html_url, headers=Headers)
|
||||
return req.text
|
||||
|
||||
def run(self):
|
||||
id = self.get_id()
|
||||
print(id)
|
||||
canvas = self.get_cookie(id)
|
||||
print(canvas)
|
||||
html = self.get_html(canvas)
|
||||
print(html)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
xhs_app =XhsApp()
|
||||
xhs_app.run()
|
17
test_pc_小红书破解/client/client_test.py
Normal file
17
test_pc_小红书破解/client/client_test.py
Normal file
@ -0,0 +1,17 @@
|
||||
import requests
|
||||
|
||||
url = "https://customer.xiaohongshu.com/api/cas/loginWithAccount"
|
||||
|
||||
payload = "{\"account\":\"feng.bao@winndoo.com\",\"password\":\"Winndoo@com123\"," \
|
||||
"\"service\":\"https://pgy.xiaohongshu.com\"}"
|
||||
|
||||
headers = {
|
||||
'content-type': 'application/json;charset=UTF-8',
|
||||
'x-s': 'OiZk125KZga6ZjcWslMlOidB12MbOY1K0jwvOgACZgA3',
|
||||
'x-t': '1623396152975',
|
||||
'cookie': 'timestamp2=20210611efba504df43e1e6daff3fe96'
|
||||
}
|
||||
|
||||
response = requests.request("POST", url, headers=headers, data=payload)
|
||||
|
||||
print(response.text)
|
75
test_pc_小红书破解/encryption.js
Normal file
75
test_pc_小红书破解/encryption.js
Normal file
@ -0,0 +1,75 @@
|
||||
function encryption(t) {
|
||||
function c(t, e) {
|
||||
return t << e | t >>> 32 - e
|
||||
}
|
||||
|
||||
function u(t, e) {
|
||||
var n, r, o, i, a;
|
||||
return o = 2147483648 & t,
|
||||
i = 2147483648 & e,
|
||||
a = (1073741823 & t) + (1073741823 & e),
|
||||
(n = 1073741824 & t) & (r = 1073741824 & e) ? 2147483648 ^ a ^ o ^ i : n | r ? 1073741824 & a ? 3221225472 ^ a ^ o ^ i : 1073741824 ^ a ^ o ^ i : a ^ o ^ i
|
||||
}
|
||||
|
||||
function e(t, e, n, r, o, i, a) {
|
||||
return u(c(t = u(t, u(u(e & n | ~e & r, o), a)), i), e)
|
||||
}
|
||||
|
||||
function n(t, e, n, r, o, i, a) {
|
||||
return u(c(t = u(t, u(u(e & r | n & ~r, o), a)), i), e)
|
||||
}
|
||||
|
||||
function r(t, e, n, r, o, i, a) {
|
||||
return u(c(t = u(t, u(u(e ^ n ^ r, o), a)), i), e)
|
||||
}
|
||||
|
||||
function o(t, e, n, r, o, i, a) {
|
||||
return u(c(t = u(t, u(u(n ^ (e | ~r), o), a)), i), e)
|
||||
}
|
||||
|
||||
function i(t) {
|
||||
var e, n = "", r = "";
|
||||
for (e = 0; e <= 3; e++)
|
||||
n += (r = "0" + (t >>> 8 * e & 255).toString(16)).substr(r.length - 2, 2);
|
||||
return n
|
||||
}
|
||||
|
||||
var a, s, l, f, p, d, v, h, g, y = Array();
|
||||
for (y = function (t) {
|
||||
for (var e, n = t.length, r = n + 8, o = 16 * ((r - r % 64) / 64 + 1), i = Array(o - 1), a = 0, c = 0; c < n;)
|
||||
a = c % 4 * 8,
|
||||
i[e = (c - c % 4) / 4] = i[e] | t.charCodeAt(c) << a,
|
||||
c++;
|
||||
return a = c % 4 * 8,
|
||||
i[e = (c - c % 4) / 4] = i[e] | 128 << a,
|
||||
i[o - 2] = n << 3,
|
||||
i[o - 1] = n >>> 29,
|
||||
i
|
||||
}(t = function (t) {
|
||||
t = t.replace(/\r\n/g, "\n");
|
||||
for (var e = "", n = 0; n < t.length; n++) {
|
||||
var r = t.charCodeAt(n);
|
||||
r < 128 ? e += String.fromCharCode(r) : (127 < r && r < 2048 ? e += String.fromCharCode(r >> 6 | 192) : (e += String.fromCharCode(r >> 12 | 224),
|
||||
e += String.fromCharCode(r >> 6 & 63 | 128)),
|
||||
e += String.fromCharCode(63 & r | 128))
|
||||
}
|
||||
return e
|
||||
}(t)),
|
||||
d = 1732584193,
|
||||
v = 4023233417,
|
||||
h = 2562383102,
|
||||
g = 271733878,
|
||||
a = 0; a < y.length; a += 16)
|
||||
d = o(d = r(d = r(d = r(d = r(d = n(d = n(d = n(d = n(d = e(d = e(d = e(d = e(s = d, l = v, f = h, p = g, y[a + 0], 7, 3614090360), v = e(v, h = e(h, g = e(g, d, v, h, y[a + 1], 12, 3905402710), d, v, y[a + 2], 17, 606105819), g, d, y[a + 3], 22, 3250441966), h, g, y[a + 4], 7, 4118548399), v = e(v, h = e(h, g = e(g, d, v, h, y[a + 5], 12, 1200080426), d, v, y[a + 6], 17, 2821735955), g, d, y[a + 7], 22, 4249261313), h, g, y[a + 8], 7, 1770035416), v = e(v, h = e(h, g = e(g, d, v, h, y[a + 9], 12, 2336552879), d, v, y[a + 10], 17, 4294925233), g, d, y[a + 11], 22, 2304563134), h, g, y[a + 12], 7, 1804603682), v = e(v, h = e(h, g = e(g, d, v, h, y[a + 13], 12, 4254626195), d, v, y[a + 14], 17, 2792965006), g, d, y[a + 15], 22, 1236535329), h, g, y[a + 1], 5, 4129170786), v = n(v, h = n(h, g = n(g, d, v, h, y[a + 6], 9, 3225465664), d, v, y[a + 11], 14, 643717713), g, d, y[a + 0], 20, 3921069994), h, g, y[a + 5], 5, 3593408605), v = n(v, h = n(h, g = n(g, d, v, h, y[a + 10], 9, 38016083), d, v, y[a + 15], 14, 3634488961), g, d, y[a + 4], 20, 3889429448), h, g, y[a + 9], 5, 568446438), v = n(v, h = n(h, g = n(g, d, v, h, y[a + 14], 9, 3275163606), d, v, y[a + 3], 14, 4107603335), g, d, y[a + 8], 20, 1163531501), h, g, y[a + 13], 5, 2850285829), v = n(v, h = n(h, g = n(g, d, v, h, y[a + 2], 9, 4243563512), d, v, y[a + 7], 14, 1735328473), g, d, y[a + 12], 20, 2368359562), h, g, y[a + 5], 4, 4294588738), v = r(v, h = r(h, g = r(g, d, v, h, y[a + 8], 11, 2272392833), d, v, y[a + 11], 16, 1839030562), g, d, y[a + 14], 23, 4259657740), h, g, y[a + 1], 4, 2763975236), v = r(v, h = r(h, g = r(g, d, v, h, y[a + 4], 11, 1272893353), d, v, y[a + 7], 16, 4139469664), g, d, y[a + 10], 23, 3200236656), h, g, y[a + 13], 4, 681279174), v = r(v, h = r(h, g = r(g, d, v, h, y[a + 0], 11, 3936430074), d, v, y[a + 3], 16, 3572445317), g, d, y[a + 6], 23, 76029189), h, g, y[a + 9], 4, 3654602809), v = r(v, h = r(h, g = r(g, d, v, h, y[a + 12], 11, 3873151461), d, v, y[a + 15], 16, 530742520), g, d, y[a + 2], 23, 3299628645), h, g, y[a + 0], 6, 4096336452),
|
||||
v = o(v = o(v = o(v = o(v, h = o(h, g = o(g, d, v, h, y[a + 7], 10, 1126891415), d, v, y[a + 14], 15, 2878612391), g, d, y[a + 5], 21, 4237533241), h = o(h, g = o(g, d = o(d, v, h, g, y[a + 12], 6, 1700485571), v, h, y[a + 3], 10, 2399980690), d, v, y[a + 10], 15, 4293915773), g, d, y[a + 1], 21, 2240044497), h = o(h, g = o(g, d = o(d, v, h, g, y[a + 8], 6, 1873313359), v, h, y[a + 15], 10, 4264355552), d, v, y[a + 6], 15, 2734768916), g, d, y[a + 13], 21, 1309151649), h = o(h, g = o(g, d = o(d, v, h, g, y[a + 4], 6, 4149444226), v, h, y[a + 11], 10, 3174756917), d, v, y[a + 2], 15, 718787259), g, d, y[a + 9], 21, 3951481745),
|
||||
d = u(d, s),
|
||||
v = u(v, l),
|
||||
h = u(h, f),
|
||||
g = u(g, p);
|
||||
return (i(d) + i(v) + i(h) + i(g)).toLowerCase()
|
||||
}
|
||||
|
||||
module.exports =
|
||||
{
|
||||
encryption
|
||||
};
|
18
test_pc_小红书破解/server/server-x-s.js
Normal file
18
test_pc_小红书破解/server/server-x-s.js
Normal file
@ -0,0 +1,18 @@
|
||||
const express = require('express');
|
||||
const app = express();
|
||||
const encryption = require("../xhs-x-s");
|
||||
var bodyParser = require('body-parser');
|
||||
app.use(bodyParser());
|
||||
|
||||
|
||||
app.post('/get_x_s', function (req, res) {
|
||||
let result = req.body;
|
||||
let sign = result.sign;
|
||||
console.log(sign);
|
||||
result = encryption.encryption(sign);
|
||||
res.send(result.toString());
|
||||
});
|
||||
|
||||
app.listen(3000, () => {
|
||||
console.log("开启服务,端口3000")
|
||||
});
|
18
test_pc_小红书破解/server/server.js
Normal file
18
test_pc_小红书破解/server/server.js
Normal file
@ -0,0 +1,18 @@
|
||||
const express = require('express');
|
||||
const app = express();
|
||||
const encryption = require("../encryption");
|
||||
var bodyParser = require('body-parser');
|
||||
app.use(bodyParser());
|
||||
|
||||
|
||||
app.post('/get_sign', function (req, res) {
|
||||
let result = req.body;
|
||||
let sign = result.sign;
|
||||
console.log(sign);
|
||||
result = encryption.encryption(sign + "hasaki");
|
||||
res.send(result.toString());
|
||||
});
|
||||
|
||||
app.listen(3001, () => {
|
||||
console.log("开启服务,端口3001")
|
||||
});
|
1287
test_pc_小红书破解/xhs-x-s.js
Normal file
1287
test_pc_小红书破解/xhs-x-s.js
Normal file
File diff suppressed because it is too large
Load Diff
269
test_pc_抖音破解/sign.js
Normal file
269
test_pc_抖音破解/sign.js
Normal file
@ -0,0 +1,269 @@
|
||||
function caad(e, t, n) {
|
||||
"use strict";
|
||||
var r = n("23e7")
|
||||
, i = n("4d641").includes
|
||||
, o = n("44d2")
|
||||
, a = n("ae40")
|
||||
, s = a("indexOf", {
|
||||
ACCESSORS: !0,
|
||||
1: 0
|
||||
});
|
||||
r({
|
||||
target: "Array",
|
||||
proto: !0,
|
||||
forced: !s
|
||||
}, {
|
||||
includes: function(e) {
|
||||
return i(this, e, arguments.length > 1 ? arguments[1] : void 0)
|
||||
}
|
||||
}),
|
||||
o("includes")
|
||||
}
|
||||
|
||||
function f3f3(e, t, n) {
|
||||
"use strict";
|
||||
n.d(t, "a", (function() {
|
||||
return o
|
||||
}
|
||||
));
|
||||
n("a4d3"),
|
||||
n("4de4"),
|
||||
n("4160"),
|
||||
n("e439"),
|
||||
n("dbb4"),
|
||||
n("b64b"),
|
||||
n("159b");
|
||||
var r = n("fc11");
|
||||
function i(e, t) {
|
||||
var n = Object.keys(e);
|
||||
if (Object.getOwnPropertySymbols) {
|
||||
var r = Object.getOwnPropertySymbols(e);
|
||||
t && (r = r.filter((function(t) {
|
||||
return Object.getOwnPropertyDescriptor(e, t).enumerable
|
||||
}
|
||||
))),
|
||||
n.push.apply(n, r)
|
||||
}
|
||||
return n
|
||||
}
|
||||
function o(e) {
|
||||
for (var t = 1; t < arguments.length; t++) {
|
||||
var n = null != arguments[t] ? arguments[t] : {};
|
||||
t % 2 ? i(Object(n), !0).forEach((function(t) {
|
||||
Object(r["a"])(e, t, n[t])
|
||||
}
|
||||
)) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : i(Object(n)).forEach((function(t) {
|
||||
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
|
||||
}
|
||||
))
|
||||
}
|
||||
return e
|
||||
}
|
||||
}
|
||||
|
||||
function b0c0(e, t, n) {
|
||||
var r = n("83ab")
|
||||
, i = n("9bf2").f
|
||||
, o = Function.prototype
|
||||
, a = o.toString
|
||||
, s = /^\s*function ([^ (]*)/;
|
||||
r && !("name"in o) && i(o, "name", {
|
||||
configurable: !0,
|
||||
get: function() {
|
||||
try {
|
||||
return a.call(this).match(s)[1]
|
||||
} catch (e) {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function d3b7(e, t, n) {
|
||||
var r = n("00ee")
|
||||
, i = n("6eeb")
|
||||
, o = n("b041");
|
||||
r || i(Object.prototype, "toString", o, {
|
||||
unsafe: !0
|
||||
})
|
||||
}
|
||||
|
||||
function aaa(e, t, n) {
|
||||
"use strict";
|
||||
// n.d(t, "b", (function() {
|
||||
// return C
|
||||
// }
|
||||
// )),
|
||||
// n.d(t, "a", (function() {
|
||||
// return k
|
||||
// }
|
||||
// ));
|
||||
caad;
|
||||
var r = f3f3,
|
||||
i = ({n: "RadarArea"}, b0c0, d3b7, n("3ca3"), n("159b"), n("ddb0"), n("2b3d"), n("83b9"))
|
||||
, o = n.n(i)
|
||||
, a = n("2d83")
|
||||
, s = n.n(a)
|
||||
, l = n("467f")
|
||||
, c = n.n(l)
|
||||
, u = n("30b5")
|
||||
, h = n.n(u)
|
||||
, f = n("7aac")
|
||||
, d = n.n(f)
|
||||
, p = n("932e");
|
||||
var g = function(e) {
|
||||
var t = o()(e.baseURL, e.url)
|
||||
, n = h()(t, e.params, e.paramsSerializer);
|
||||
try {
|
||||
["post", "put", "patch", "delete"].includes(e.method) ? function(e, t) {
|
||||
var n = document.createElement("form");
|
||||
n.method = t.method,
|
||||
n.target = "_blank",
|
||||
n.action = e;
|
||||
var r, i = t.data ? JSON.parse(t.data) : {};
|
||||
t.xsrfHeaderName && ((t.withCredentials || Object(p["a"])(t.url)) && t.xsrfCookieName && (r = d.a.read(t.xsrfCookieName)),
|
||||
r && (i[t.xsrfHeaderName] = r));
|
||||
var o = h()("/", i, t.paramsSerializer)
|
||||
, a = new URL(o,location.origin);
|
||||
a.searchParams.forEach((function(e, t) {
|
||||
var r = document.createElement("input");
|
||||
r.name = t,
|
||||
r.value = e,
|
||||
n.appendChild(r)
|
||||
}
|
||||
)),
|
||||
document.body.appendChild(n),
|
||||
n.submit(),
|
||||
n.remove()
|
||||
}(n, e) : window.open(n, "_blank", "noopener")
|
||||
} catch (a) {
|
||||
var r = {
|
||||
status: 418,
|
||||
statusText: "I'm a teapot",
|
||||
config: e
|
||||
};
|
||||
throw new s.a(a.message,e,null,void 0,r)
|
||||
}
|
||||
var i = {
|
||||
data: void 0,
|
||||
status: 200,
|
||||
statusText: "OK",
|
||||
config: e,
|
||||
headers: {}
|
||||
};
|
||||
return new Promise((function(e, t) {
|
||||
c()(e, t, i)
|
||||
}
|
||||
))
|
||||
}
|
||||
, m = (n("99af"),
|
||||
n("4de4"),
|
||||
n("a15b"),
|
||||
n("d81d"),
|
||||
n("b64b"),
|
||||
n("2532"),
|
||||
n("0122"))
|
||||
, v = n("6821")
|
||||
, y = n.n(v);
|
||||
function b(e) {
|
||||
return Array.isArray(e) || "boolean" == typeof e
|
||||
}
|
||||
function A(e, t, n) {
|
||||
var r = null != t ? t : {}
|
||||
, i = r.include
|
||||
, o = r.enforceWithKeys
|
||||
, a = void 0 === o ? [] : o
|
||||
, s = Object.keys(e);
|
||||
if (n && i) {
|
||||
var l = i.concat(["service_name", "service_method", "sign_strict"]);
|
||||
s = s.filter((function(e) {
|
||||
return l.includes(e)
|
||||
}
|
||||
))
|
||||
}
|
||||
var c = s.sort().map((function(t) {
|
||||
var n = e[t];
|
||||
return function(e) {
|
||||
return null == e
|
||||
}(n) ? "" : t + (!a.includes(t) && function(e) {
|
||||
return ["string", "number"].includes(Object(m["a"])(e))
|
||||
}(n) ? n : t)
|
||||
}
|
||||
)).join("");
|
||||
return y()(c + "e39539b8836fb99e1538974d3ac1fe98")
|
||||
}
|
||||
function _(e) {
|
||||
if (!e || "object" !== Object(m["a"])(e))
|
||||
return e;
|
||||
for (var t = {}, n = 0, r = Object.keys(e); n < r.length; n++) {
|
||||
var i = r[n]
|
||||
, o = e[i];
|
||||
t[i] = b(o) ? JSON.stringify(o) : o
|
||||
}
|
||||
return t
|
||||
}
|
||||
function x(e, t, n) {
|
||||
var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}
|
||||
, o = i.strict
|
||||
, a = i.serializing
|
||||
, s = i.rule
|
||||
, l = {
|
||||
service_name: e,
|
||||
service_method: t,
|
||||
sign_strict: o ? 1 : void 0
|
||||
};
|
||||
return Object(r["a"])(Object(r["a"])(Object(r["a"])({}, a ? _(n) : n), l), {}, {
|
||||
sign: A(Object(r["a"])(Object(r["a"])({}, n), l), s, o)
|
||||
})
|
||||
}
|
||||
var w = {
|
||||
get: "/h/api/gateway/handler_get/",
|
||||
post: "/h/api/gateway/handler_post/"
|
||||
}
|
||||
, C = function(e) {
|
||||
var t;
|
||||
if (e.microservice) {
|
||||
var n = e.microservice
|
||||
, r = e.url
|
||||
, i = null !== (t = e.gatewayURLs) && void 0 !== t ? t : w;
|
||||
["post", "put", "patch", "delete"].includes(e.method) ? (e.data = x(n, r, e.data, {
|
||||
strict: e.gatewayStrictMode,
|
||||
rule: e.gatewaySignRule
|
||||
}),
|
||||
e.url = i.post) : (e.params = x(n, r, e.params, {
|
||||
strict: e.gatewayStrictMode,
|
||||
serializing: !0,
|
||||
rule: e.gatewaySignRule
|
||||
}),
|
||||
e.url = i.get),
|
||||
e.withGatewayHeaders && (e.headers["x-star-service-name"] = n,
|
||||
e.headers["x-star-service-method"] = r)
|
||||
}
|
||||
return e
|
||||
};
|
||||
function S(e) {
|
||||
return (null == e ? void 0 : e.open) && (e = Object(r["a"])(Object(r["a"])({}, e), {}, {
|
||||
adapter: g,
|
||||
unwrap: !1
|
||||
})),
|
||||
e
|
||||
}
|
||||
var k = function(e) {
|
||||
return {
|
||||
axios: e,
|
||||
get: function(e, t, n) {
|
||||
return this.axios.get(t, Object(r["a"])(Object(r["a"])({}, S(n)), {}, {
|
||||
microservice: e
|
||||
}))
|
||||
},
|
||||
post: function(e, t, n, i) {
|
||||
return this.axios.post(t, n, Object(r["a"])(Object(r["a"])({}, S(i)), {}, {
|
||||
microservice: e
|
||||
}))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sign = aaa();
|
Loading…
x
Reference in New Issue
Block a user