TA的每日心情 | 开心 2024-12-9 18:45 |
---|
签到天数: 124 天 [LV.7]常住居民III
|
欢迎您注册加入!这里有您将更精采!
您需要 登录 才可以下载或查看,没有账号?注册
x
拿起工具,反编译swf文件,一看……
找全算法相关的as脚本如下:-
- view plaincopy to clipboardprint?
- var by:String = "0123456789abcdef";
-
- function encode(param1:String) : Array
- {
- var _loc_2:Array = new Array();
- var _loc_3:Number = param1.length * 8;
- var _loc_4:Number = 255;
- var _loc_5:Number = 0;
- while (_loc_5 < _loc_3)
- {
- //trace((_loc_5>>5)+"=loc5");
- var a = _loc_2[_loc_5 >> 5];
- var b = (param1.charCodeAt(_loc_5 / 8) & _loc_4);
- _loc_2[_loc_5 >> 5] = (a | b << (24 - _loc_5 % 32));
- _loc_5 = _loc_5 + 8;
- }
- _loc_2[_loc_3 >> 5] = _loc_2[_loc_3 >> 5] | 128 << 24 - _loc_3 % 32;
- _loc_2[(_loc_3 + 64 >> 9 << 4) + 15] = _loc_3;
- return _loc_2;
- }// end function
-
-
-
- function f(param1:Number, param2:Number, param3:Number, param4:Number) : Number
- {
- if (param1 < 20)
- {
- return param2 & param3 | ~param2 & param4;
- }
- if (param1 < 40)
- {
- return param2 ^ param3 ^ param4;
- }
- if (param1 < 60)
- {
- return param2 & param3 | param2 & param4 | param3 & param4;
- }
- return param2 ^ param3 ^ param4;
- }// end function
-
- function Uz(param1:Number) : Number
- {
- if (param1 < 20)
- {
- return 1518500249;
- }
- if (param1 < 40)
- {
- return 1859775393;
- }
- if (param1 < 60)
- {
- return 2400959708;
- }
- return 3395469782;
- }// end function
-
-
-
- var int1;
- var int2;
- var int3;
- var int4;
- var int5;
-
- function encode2(param1:Array) : Array
- {
- var _loc_11:Number = 0;
- var _loc_12:Number = 0;
- var _loc_13:Number = 0;
- var _loc_14:Number = 0;
- var _loc_15:Number = 0;
- var _loc_16:Number = 0;
- var _loc_17:Number = 0;
- var _loc_2:Number = 1732584193;
- var _loc_3:Number = 4023233417;
- var _loc_4:Number = 2562383102;
- var _loc_5:Number = 271733878;
- var _loc_6:Number = 3285377520;
- var _loc_7:Number = param1.length;
- var _loc_8:Array = new Array(80);
- var _loc_9:Number = 0;
- while (_loc_9 < _loc_7)
- {
-
- _loc_11 = _loc_2;
- _loc_12 = _loc_3;
- _loc_13 = _loc_4;
- _loc_14 = _loc_5;
- _loc_15 = _loc_6;
- _loc_16 = 0;
- while (_loc_16 < 80)
- {
-
- if (_loc_16 < 16)
- {
- _loc_8[_loc_16] = param1[_loc_9 + _loc_16];
- //trace(_loc_2+"<>"+_loc_17);
- }
- else
- {
- var bb = _loc_8[_loc_16 - 3] ^ _loc_8[_loc_16 - 8] ^ _loc_8[_loc_16 - 14] ^ _loc_8[_loc_16 - 16];
-
- _loc_8[_loc_16] = mv(bb, 1);
-
-
- }
-
- var cc = f(_loc_16, _loc_12, _loc_13, _loc_14) ;
- var dd = Uz(_loc_16);
- //trace("cc["+cc+"]dd["+dd+"]");
- _loc_17 = mv(_loc_11, 5) + cc + _loc_15 + int(_loc_8[_loc_16]) + dd;
- //trace("_loc_17="+_loc_17);
- _loc_15 = _loc_14;
- _loc_14 = _loc_13;
- _loc_13 = mv(_loc_12, 30);
- trace(_loc_16+","+_loc_12+","+_loc_13+","+_loc_14+",_loc_12="+_loc_12);
- _loc_12 = _loc_11;
- _loc_11 = _loc_17;
-
- _loc_16++;
- }
-
- _loc_2 = _loc_2 + _loc_11;
- _loc_3 = _loc_3 + _loc_12;
- _loc_4 = _loc_4 + _loc_13;
- _loc_5 = _loc_5 + _loc_14;
- _loc_6 = _loc_6 + _loc_15;
- _loc_9 = _loc_9 + 16;
- //trace("_loc_9=="+_loc_9+",_loc_7="+_loc_7);
- }
- var _loc_10:Array = new Array();
- //new Array().writeInt(_loc_2);
- _loc_10.push(_loc_3);
- _loc_10.push(_loc_4);
- _loc_10.push(_loc_5);
- _loc_10.push(_loc_6);
- //_loc_10.position = 0;
- //_-TP = new ByteArray();
- //_-TP.writeBytes(_loc_10);
- //_-TP.position = 0;
- int1 = _loc_2;
- int2 = _loc_3;
- int3 = _loc_4;
- int4 = _loc_5;
- int5 = _loc_6;
-
- trace(_loc_2+","+_loc_3+","+","+_loc_4+","+_loc_5+","+_loc_6);
- return _loc_10;
- }// end function
-
-
-
-
-
-
- function getPastureKey(param1:Number):String{
- var _loc_6:Number = 0;
- var _loc_2:String = "97b2d!@0b8f1@&%#$xsf";
- var _loc_3:String = _loc_2.substr(param1 % 10, 100);
- var _loc_4:Array = encode(param1 + _loc_3);
- var _loc_5:Array = encode2(_loc_4);
- trace(int1+"===");
- trace(int2+"===");
- trace(int3+"===");
- trace(int4+"===");
- trace(int5+"===");
-
- return method1(int1, true) + method1(int2, true) + method1(int3, true) + method1(int4, true) + method1(int5, true);
-
- }
-
-
-
-
-
- function method1(param1:Number, param2:Boolean) : String
- {
- var _loc_4:Number = 0;
- var _loc_5:Number = 0;
- var _loc_3:String = "";
- if (param2)
- {
- _loc_4 = 0;
- while (_loc_4 < 4)
- {
-
- _loc_3 = _loc_3 + (by.charAt(param1 >> (3 - _loc_4) * 8 + 4 & 15) + by.charAt(param1 >> (3 - _loc_4) * 8 & 15));
- _loc_4++;
- }
- }
- else
- {
- _loc_5 = 0;
- while (_loc_5 < 4)
- {
-
- _loc_3 = _loc_3 + (by.charAt(param1 >> _loc_5 * 8 + 4 & 15) +by.charAt(param1 >> _loc_5 * 8 & 15));
- _loc_5++;
- }
- }
- return _loc_3;
- }// end function
-
-
-
- function mv(param1:Number, param2:Number) : Number
- {
- var aa = param1 << param2 | param1 >>> (32 - param2);
- //trace(param1+"========="+param2+"======aa============="+aa);
- return aa;
- }// end function
-
-
- var by:String = "0123456789abcdef";
- function encode(param1:String) : Array
- {
- var _loc_2:Array = new Array();
- var _loc_3:Number = param1.length * 8;
- var _loc_4:Number = 255;
- var _loc_5:Number = 0;
- while (_loc_5 < _loc_3)
- {
- //trace((_loc_5>>5)+"=loc5");
- var a = _loc_2[_loc_5 >> 5];
- var b = (param1.charCodeAt(_loc_5 / 8) & _loc_4);
- _loc_2[_loc_5 >> 5] = (a | b << (24 - _loc_5 % 32));
- _loc_5 = _loc_5 + 8;
- }
- _loc_2[_loc_3 >> 5] = _loc_2[_loc_3 >> 5] | 128 << 24 - _loc_3 % 32;
- _loc_2[(_loc_3 + 64 >> 9 << 4) + 15] = _loc_3;
- return _loc_2;
- }// end function
-
-
-
- function f(param1:Number, param2:Number, param3:Number, param4:Number) : Number
- {
- if (param1 < 20)
- {
- return param2 & param3 | ~param2 & param4;
- }
- if (param1 < 40)
- {
- return param2 ^ param3 ^ param4;
- }
- if (param1 < 60)
- {
- return param2 & param3 | param2 & param4 | param3 & param4;
- }
- return param2 ^ param3 ^ param4;
- }// end function
- function Uz(param1:Number) : Number
- {
- if (param1 < 20)
- {
- return 1518500249;
- }
- if (param1 < 40)
- {
- return 1859775393;
- }
- if (param1 < 60)
- {
- return 2400959708;
- }
- return 3395469782;
- }// end function
-
-
-
- var int1;
- var int2;
- var int3;
- var int4;
- var int5;
-
- function encode2(param1:Array) : Array
- {
- var _loc_11:Number = 0;
- var _loc_12:Number = 0;
- var _loc_13:Number = 0;
- var _loc_14:Number = 0;
- var _loc_15:Number = 0;
- var _loc_16:Number = 0;
- var _loc_17:Number = 0;
- var _loc_2:Number = 1732584193;
- var _loc_3:Number = 4023233417;
- var _loc_4:Number = 2562383102;
- var _loc_5:Number = 271733878;
- var _loc_6:Number = 3285377520;
- var _loc_7:Number = param1.length;
- var _loc_8:Array = new Array(80);
- var _loc_9:Number = 0;
- while (_loc_9 < _loc_7)
- {
-
- _loc_11 = _loc_2;
- _loc_12 = _loc_3;
- _loc_13 = _loc_4;
- _loc_14 = _loc_5;
- _loc_15 = _loc_6;
- _loc_16 = 0;
- while (_loc_16 < 80)
- {
-
- if (_loc_16 < 16)
- {
- _loc_8[_loc_16] = param1[_loc_9 + _loc_16];
- //trace(_loc_2+"<>"+_loc_17);
- }
- else
- {
- var bb = _loc_8[_loc_16 - 3] ^ _loc_8[_loc_16 - 8] ^ _loc_8[_loc_16 - 14] ^ _loc_8[_loc_16 - 16];
-
- _loc_8[_loc_16] = mv(bb, 1);
-
-
- }
-
- var cc = f(_loc_16, _loc_12, _loc_13, _loc_14) ;
- var dd = Uz(_loc_16);
- //trace("cc["+cc+"]dd["+dd+"]");
- _loc_17 = mv(_loc_11, 5) + cc + _loc_15 + int(_loc_8[_loc_16]) + dd;
- //trace("_loc_17="+_loc_17);
- _loc_15 = _loc_14;
- _loc_14 = _loc_13;
- _loc_13 = mv(_loc_12, 30);
- trace(_loc_16+","+_loc_12+","+_loc_13+","+_loc_14+",_loc_12="+_loc_12);
- _loc_12 = _loc_11;
- _loc_11 = _loc_17;
-
- _loc_16++;
- }
-
- _loc_2 = _loc_2 + _loc_11;
- _loc_3 = _loc_3 + _loc_12;
- _loc_4 = _loc_4 + _loc_13;
- _loc_5 = _loc_5 + _loc_14;
- _loc_6 = _loc_6 + _loc_15;
- _loc_9 = _loc_9 + 16;
- //trace("_loc_9=="+_loc_9+",_loc_7="+_loc_7);
- }
- var _loc_10:Array = new Array();
- //new Array().writeInt(_loc_2);
- _loc_10.push(_loc_3);
- _loc_10.push(_loc_4);
- _loc_10.push(_loc_5);
- _loc_10.push(_loc_6);
- //_loc_10.position = 0;
- //_-TP = new ByteArray();
- //_-TP.writeBytes(_loc_10);
- //_-TP.position = 0;
- int1 = _loc_2;
- int2 = _loc_3;
- int3 = _loc_4;
- int4 = _loc_5;
- int5 = _loc_6;
-
- trace(_loc_2+","+_loc_3+","+","+_loc_4+","+_loc_5+","+_loc_6);
- return _loc_10;
- }// end function
-
-
-
-
-
-
- function getPastureKey(param1:Number):String{
- var _loc_6:Number = 0;
- var _loc_2:String = "97b2d!@0b8f1@&%#$xsf";
- var _loc_3:String = _loc_2.substr(param1 % 10, 100);
- var _loc_4:Array = encode(param1 + _loc_3);
- var _loc_5:Array = encode2(_loc_4);
- trace(int1+"===");
- trace(int2+"===");
- trace(int3+"===");
- trace(int4+"===");
- trace(int5+"===");
-
- return method1(int1, true) + method1(int2, true) + method1(int3, true) + method1(int4, true) + method1(int5, true);
- }
-
-
-
-
- function method1(param1:Number, param2:Boolean) : String
- {
- var _loc_4:Number = 0;
- var _loc_5:Number = 0;
- var _loc_3:String = "";
- if (param2)
- {
- _loc_4 = 0;
- while (_loc_4 < 4)
- {
-
- _loc_3 = _loc_3 + (by.charAt(param1 >> (3 - _loc_4) * 8 + 4 & 15) + by.charAt(param1 >> (3 - _loc_4) * 8 & 15));
- _loc_4++;
- }
- }
- else
- {
- _loc_5 = 0;
- while (_loc_5 < 4)
- {
-
- _loc_3 = _loc_3 + (by.charAt(param1 >> _loc_5 * 8 + 4 & 15) +by.charAt(param1 >> _loc_5 * 8 & 15));
- _loc_5++;
- }
- }
- return _loc_3;
- }// end function
-
-
- function mv(param1:Number, param2:Number) : Number
- {
- var aa = param1 << param2 | param1 >>> (32 - param2);
- //trace(param1+"========="+param2+"======aa============="+aa);
- return aa;
- }// end function
复制代码 as代码都找到了,然后把它翻译成c#或java,即可:
c#代码结果:-
- view plaincopy to clipboardprint?
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Collections;
-
-
- namespace com.sourceware.util
- {
- class PastureKey
- {
-
-
-
-
-
-
- public static string getPastureKey(int farmTime)
- {
- string _loc_2 = "97b2d!@0b8f1@&%#$xsf";
- string _loc_3 = _loc_2.Substring(farmTime % 10, _loc_2.Length - farmTime % 10);
- int[] _loc_4 = m1(farmTime + _loc_3);
- ArrayList all = encode2(_loc_4, 16);
- return method1((Int64)all[0], true) + method1((Int64)all[1], true) + method1((Int64)all[2], true) + method1((Int64)all[3], true) + method1((Int64)all[4], true);
- }
-
-
-
- private static int[] m1(string param1)
- {
- int[] _loc_2 = new int[100];
- int _loc_3 = param1.Length * 8;
- int _loc_4 = 255;
- int _loc_5 = 0;
- while (_loc_5 < _loc_3)
- {
- var a = _loc_2[_loc_5 >> 5];
- var b = (char.Parse(param1.Substring(_loc_5 / 8, 1)) & _loc_4);
- _loc_2[_loc_5 >> 5] = (a | b << (24 - _loc_5 % 32));
- _loc_5 = _loc_5 + 8;
- }
- _loc_2[_loc_3 >> 5] = _loc_2[_loc_3 >> 5] | 128 << 24 - _loc_3 % 32;
- _loc_2[(_loc_3 + 64 >> 9 << 4) + 15] = _loc_3;
- return _loc_2;
- }// end function
-
-
-
- private static System.Collections.ArrayList encode2(int[] param1, int len)
- {
- Int64 _loc_11 = 0;
- Int64 _loc_12 = 0;
- Int64 _loc_13 = 0;
- Int64 _loc_14 = 0;
- Int64 _loc_15 = 0;
- int _loc_16 = 0;
- Int64 _loc_17 = 0;
- Int64 _loc_2 = 1732584193;
- Int64 _loc_3 = 4023233417;
- Int64 _loc_4 = 2562383102;
- Int64 _loc_5 = 271733878;
- Int64 _loc_6 = 3285377520;
-
- int _loc_7 = len;
- Int64[] _loc_8 = new Int64[80];
- int _loc_9 = 0;
- while (_loc_9 < _loc_7)
- {
-
- _loc_11 = _loc_2;
- _loc_12 = _loc_3;
- _loc_13 = _loc_4;
- _loc_14 = _loc_5;
- _loc_15 = _loc_6;
- _loc_16 = 0;
- while (_loc_16 < 80)
- {
-
- if (_loc_16 < 16)
- {
- _loc_8[_loc_16] = param1[_loc_9 + _loc_16];
- //System.Console.WriteLine(_loc_2 + "<>" + _loc_17);
- }
- else
- {
- Int64 bb = _loc_8[_loc_16 - 3] ^ _loc_8[_loc_16 - 8] ^ _loc_8[_loc_16 - 14] ^ _loc_8[_loc_16 - 16];
- _loc_8[_loc_16] = mv(bb, 1);
- System.Console.WriteLine("bb[" + bb + "]result[" + mv(bb, 1) + "]");
-
- }
-
- Int64 cc = f((Int64)_loc_16, (Int64)_loc_12, (Int64)_loc_13, (Int64)_loc_14);
- //System.Console.WriteLine(_loc_16 + "," + _loc_12 + "," + _loc_13 + "," + _loc_14 + ",cc=" + cc);
-
- Int64 dd = Uz(_loc_16);
- //System.Console.WriteLine("cc[" + cc + "]dd[" + dd + "]");
-
-
- _loc_17 = mv(_loc_11, 5) + cc + _loc_15 + _loc_8[_loc_16] + dd;
-
- //System.Console.WriteLine("[" + mv(_loc_11, 5) + "][" + (int)cc + "][" + _loc_15 + "][" + _loc_8[_loc_16] + "][" + dd + "]");
-
-
- _loc_15 = _loc_14;
- _loc_14 = _loc_13;
- _loc_13 = mv(_loc_12, 30);
- //System.Console.WriteLine("13=" + _loc_13 + ",12=" + _loc_12);
-
- _loc_12 = _loc_11;
- _loc_11 = _loc_17;
-
- _loc_16++;
- }
-
- _loc_2 = (_loc_2 + _loc_11);
-
- _loc_3 = (_loc_3 + _loc_12);
- _loc_4 = (_loc_4 + _loc_13);
- _loc_5 = (_loc_5 + _loc_14);
- _loc_6 = _loc_6 + _loc_15;
- _loc_9 = _loc_9 + 16;
- }
- ArrayList _loc_10 = new ArrayList();
- _loc_10.Add(_loc_2);
- _loc_10.Add(_loc_3);
- _loc_10.Add(_loc_4);
- _loc_10.Add(_loc_5);
- _loc_10.Add(_loc_6);
-
- return _loc_10;
- }// end function
-
-
-
-
- public static Int64 f(Int64 param1, Int64 param2, Int64 param3, Int64 param4)
- {
- int a = (int)param1;
- int b = (int)param2;
- int c = (int)param3;
- int d = (int)param4;
-
-
- if (a < 20)
- {
- return b & c | ~b & d;
- }
- if (a < 40)
- {
- return b ^ c ^ d;
- }
-
- if (a < 60)
- {
- return b & c | b & d | c & d;
- }
- return b ^ c ^ d;
- }// end function
-
- private static Int64 Uz(Int64 param1)
- {
- if (param1 < 20)
- {
- return 1518500249;
- }
- if (param1 < 40)
- {
- return 1859775393;
- }
- if (param1 < 60)
- {
- return 2400959708;
- }
- return 3395469782;
- }// end function
-
-
- public static Int64 mv(Int64 param1, int param2)
- {
- int aa = (int)param1 << (int)param2;
- uint bb = (uint)((uint)param1 >> (32 - param2));
-
- Int64 cc = (Int64)(aa | bb);
- return cc;
- }// end function
-
-
- private static string method1(Int64 param1, bool param2)
- {
- string by = "0123456789abcdef";
- int _loc_4 = 0;
- int _loc_5 = 0;
- string _loc_3 = "";
- if (param2)
- {
- _loc_4 = 0;
- while (_loc_4 < 4)
- {
-
- _loc_3 = _loc_3 + (by.Substring((int)(param1 >> (3 - _loc_4) * 8 + 4 & 15), 1) + by.Substring((int)(param1 >> (3 - _loc_4) * 8 & 15), 1));
- _loc_4++;
- }
- }
- else
- {
- _loc_5 = 0;
- while (_loc_5 < 4)
- {
-
- _loc_3 = _loc_3 + (by.Substring((int)(param1 >> _loc_5 * 8 + 4 & 15), 1) + by.Substring((int)(param1 >> _loc_5 * 8 & 15), 1));
- _loc_5++;
- }
- }
- return _loc_3;
- }// end function
-
-
-
- }//end class
- }
复制代码 |
|