Giter Club home page Giter Club logo

Comments (4)

iambus avatar iambus commented on September 28, 2024

这个很久没用过了。刚才简单试了下,一时看不出来是怎么算的。可能要稍后找时间再细看了。

from youku-lixian.

cscscheng avatar cscscheng commented on September 28, 2024

key的计算变复杂了很多..用st时间减去60秒再做了内部的一些自己写的算法.破解了pptv的播放器swf.大概看了下..
哪天我给你贴代码...flash的代码..我不太看得懂...
看你忙不过来啊...呵呵..加油啊

from youku-lixian.

cscscheng avatar cscscheng commented on September 28, 2024

config.dMillis = Date.parse(xmldown.servertime) - 60 * 1000 - Date.parse(new Date().toUTCString());
_loc_1 = Utils.constructKey((config.dMillis + Date.parse(new Date().toUTCString())) / 1000);
public static const SERVER_KEY:String = "qqqqqww";

public static function getkey(param1:String) : uint
{
var _loc_5:String = null;
var _loc_6:uint = 0;
var _loc_7:uint = 0;
var _loc_2:* = param1.split("");
var _loc_3:uint = 0;
var _loc_4:Number = 0;
while (_loc_4 < _loc_2.length)
{

            _loc_5 = _loc_2[_loc_4];
            _loc_6 = _loc_5.charCodeAt(0);
            _loc_7 = _loc_6 << _loc_4 % 4 * 8;
            _loc_3 = _loc_3 ^ _loc_7;
            _loc_4 = _loc_4 + 1;
        }
        return _loc_3;
    }// end function

   static function encrypt(param1:String, param2:String) : String
    {
        var _loc_5:uint = 0;
        var _loc_6:uint = 0;
        var _loc_7:uint = 0;
        var _loc_13:uint = 0;
        var _loc_14:uint = 0;
        var _loc_15:uint = 0;
        var _loc_16:uint = 0;
        var _loc_17:uint = 0;
        var _loc_18:uint = 0;
        var _loc_19:uint = 0;
        var _loc_20:uint = 0;
        var _loc_21:uint = 0;
        var _loc_22:uint = 0;
        var _loc_23:uint = 0;
        var _loc_24:int = 0;
        var _loc_25:uint = 0;
        var _loc_26:uint = 0;
        var _loc_27:uint = 0;
        var _loc_28:uint = 0;
        var _loc_29:uint = 0;
        var _loc_30:uint = 0;
        var _loc_31:uint = 0;
        var _loc_32:uint = 0;
        var _loc_33:uint = 0;
        var _loc_34:uint = 0;
        var _loc_35:uint = 0;
        var _loc_36:uint = 0;
        var _loc_37:uint = 0;
        var _loc_38:uint = 0;
        var _loc_39:uint = 0;
        var _loc_40:uint = 0;
        var _loc_41:uint = 0;
        var _loc_3:int = 16;
        var _loc_4:* = getkey(param2);
        var _loc_8:* = param1.split("");
        var _loc_9:* = param2.split("");
        var _loc_10:* = _loc_4;
        _loc_5 = _loc_4 << 8 | _loc_10 >>> 24;
        _loc_6 = _loc_10 << 16 | _loc_10 >>> 16;
        _loc_7 = _loc_10 << 24 | _loc_10 >>> 8;
        var _loc_11:String = "";
        var _loc_12:uint = 0;
        while (_loc_12 + _loc_3 <= _loc_8.length)
        {

            _loc_13 = _loc_8[_loc_12].charCodeAt(0) << 0;
            _loc_14 = _loc_8[(_loc_12 + 1)].charCodeAt(0) << 8;
            _loc_15 = _loc_8[_loc_12 + 2].charCodeAt(0) << 16;
            _loc_16 = _loc_8[_loc_12 + 3].charCodeAt(0) << 24;
            _loc_17 = _loc_8[_loc_12 + 4].charCodeAt(0) << 0;
            _loc_18 = _loc_8[_loc_12 + 5].charCodeAt(0) << 8;
            _loc_19 = _loc_8[_loc_12 + 6].charCodeAt(0) << 16;
            _loc_20 = _loc_8[_loc_12 + 7].charCodeAt(0) << 24;
            _loc_21 = 0 | _loc_13 | _loc_14 | _loc_15 | _loc_16;
            _loc_22 = 0 | _loc_17 | _loc_18 | _loc_19 | _loc_20;
            _loc_23 = 0;
            _loc_24 = 0;
            while (_loc_24 < 32)
            {

                _loc_23 = _loc_23 + DELTA;
                _loc_33 = (_loc_22 << 4) + _loc_4;
                _loc_34 = _loc_22 + _loc_23;
                _loc_35 = (_loc_22 >>> 5) + _loc_5;
                _loc_36 = _loc_33 ^ _loc_34 ^ _loc_35;
                _loc_21 = _loc_21 + _loc_36;
                _loc_37 = (_loc_21 << 4) + _loc_6;
                _loc_38 = _loc_21 + _loc_23;
                _loc_39 = _loc_21 >>> 5;
                _loc_40 = _loc_39 + _loc_7;
                _loc_41 = _loc_37 ^ _loc_38 ^ _loc_40;
                _loc_22 = _loc_22 + _loc_41;
                _loc_24++;
            }
            _loc_25 = _loc_21 >>> 0 & 255;
            _loc_26 = _loc_21 >>> 8 & 255;
            _loc_27 = _loc_21 >>> 16 & 255;
            _loc_28 = _loc_21 >>> 24 & 255;
            _loc_29 = _loc_22 >>> 0 & 255;
            _loc_30 = _loc_22 >>> 8 & 255;
            _loc_31 = _loc_22 >>> 16 & 255;
            _loc_32 = _loc_22 >>> 24 & 255;
            _loc_11 = _loc_11 + getCharFromAscii(_loc_21 >>> 0 & 255);
            _loc_11 = _loc_11 + getCharFromAscii(_loc_21 >>> 8 & 255);
            _loc_11 = _loc_11 + getCharFromAscii(_loc_21 >>> 16 & 255);
            _loc_11 = _loc_11 + getCharFromAscii(_loc_21 >>> 24 & 255);
            _loc_11 = _loc_11 + getCharFromAscii(_loc_22 >>> 0 & 255);
            _loc_11 = _loc_11 + getCharFromAscii(_loc_22 >>> 8 & 255);
            _loc_11 = _loc_11 + getCharFromAscii(_loc_22 >>> 16 & 255);
            _loc_11 = _loc_11 + getCharFromAscii(_loc_22 >>> 24 & 255);
            _loc_12 = _loc_12 + _loc_3;
        }
        _loc_11 = _loc_11 + param1.substr(8, 8);
        return _loc_11;
    }// end function


    public static function Str2Hex(param1:String) : String
    {
        var _loc_7:Number = NaN;
        var _loc_8:Number = NaN;
        var _loc_2:String = "0123456789abcdef";
        var _loc_3:* = _loc_2.split("");
        var _loc_4:* = param1.split("");
        var _loc_5:* = new Array(2 * _loc_4.length + 1);
        var _loc_6:* = _loc_4.length;
        var _loc_9:int = 0;
        while (_loc_9 < _loc_6)
        {

            if (_loc_9 < 8)
            {
                _loc_7 = _loc_4[_loc_9].charCodeAt(0) & 15;
                _loc_8 = _loc_4[_loc_9].charCodeAt(0) >>> 4 & 15;
                _loc_5[2 * _loc_9] = _loc_3[_loc_4[_loc_9].charCodeAt(0) & 15];
                _loc_5[2 * _loc_9 + 1] = _loc_3[_loc_4[_loc_9].charCodeAt(0) >>> 4 & 15];
            }
            else
            {
                _loc_5[2 * _loc_9] = _loc_3[Math.floor(Math.random() * 15)];
                _loc_5[2 * _loc_9 + 1] = _loc_3[Math.floor(Math.random() * 15)];
            }
            _loc_9++;
        }
        return _loc_5.join("");
    }// end function

    public static function time2String(param1:Number) : String
    {
        var _loc_8:Number = NaN;
        var _loc_2:* = new Array(8);
        var _loc_3:* = new ByteArray();
        var _loc_4:String = "0123456789abcdef";
        var _loc_5:* = "0123456789abcdef".split("");
        var _loc_6:uint = 0;
        while (_loc_6 < 8)
        {

            _loc_8 = param1 >>> 28 - _loc_6 % 8 * 4 & 15;
            _loc_2[_loc_6] = _loc_5[_loc_8];
            _loc_6 = _loc_6 + 1;
        }
        var _loc_7:* = _loc_2.join("");
        return _loc_2.join("");
    }// end function

    public static function constructKey(param1:Number) : String
    {
        var _loc_2:* = time2String(param1);
        var _loc_3:* = _loc_2.split("");
        if (_loc_3.length < 16)
        {
            _loc_2 = add(_loc_2, 16 - _loc_3.length);
        }
        var _loc_4:String = "";
        var _loc_5:* = Utils.SERVER_KEY;
        if (Utils.SERVER_KEY.length < 16)
        {
            _loc_5 = add(_loc_5, 16 - _loc_5.length);
        }
        _loc_4 = Utils.encrypt(_loc_2, _loc_5);
        _loc_4 = Utils.Str2Hex(_loc_4);
        return _loc_4;
    }// end function

    public static function add(param1:String, param2:Number) : String
    {
        var _loc_3:Number = 0;
        while (_loc_3 < param2)
        {

            param1 = param1 + getCharFromAscii(0);
            _loc_3 = _loc_3 + 1;
        }
        return param1;
    }// end function

from youku-lixian.

hack2012 avatar hack2012 commented on September 28, 2024

同求,你目前的这个算法已经不能使用了。

from youku-lixian.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.