V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
honkew
V2EX  ›  问与答

算不出来了

  •  1
     
  •   honkew · 2015-10-03 10:19:06 +08:00 · 2172 次点击
    这是一个创建于 3357 天前的主题,其中的信息可能已经有所发展或是发生改变。

    抓包得到的 post 数据
    aid:202550601
    utt:1262
    platform:b6c13e26323c537d
    cid:afbe8fd3d73448c9
    deviceId:bdf02d37c4c65b2db2f787488f876e59
    playType:main
    uuid:bdf02d37c4c65b2db2f787488f876e59
    v:57649d8c27a7dcd4784792219953c168
    version:1.0
    vid:73ae4fcc72ed61eae9f0ced13d80623f
    ut:1443833658083

    下面是 flash 里面的计算方式,根据其他值算出 v 值

    try 
        {
            this._holder.runtimeData.authenticationError = false;
            s = uint(0 ^ 2391461978).toString();
            ut = new Date().time;
            uts = ut.toString();
            utt = String(ut % 1000 * int(uts.substr(0, 2)) + (100 + this._segmentIndex));
            MdStr = this._holder.runtimeData.albumId + "_" + this._holder.runtimeData.communicationlId + "_" + this._holder.runtimeData.vid + "_" + uts + "_" + utt + "_" + s;
            vt = com.qiyi.player.base.utils.MD5.calculate(MdStr);
            this._log.debug("primitive MD5 String :" + MdStr);
            this._log.debug("MD5 String:" + vt);
            request = new flash.net.URLRequest(com.qiyi.player.core.Config.VIP_AUTH_URL);
            variables = new flash.net.URLVariables();
            variables.ut = ut;
            variables.vid = this._holder.runtimeData.vid;
            variables.cid = this._holder.runtimeData.communicationlId;
            variables.aid = this._holder.runtimeData.albumId;
            variables.utt = utt;
            variables.v = vt;
            variables.version = "1.0";
            if (!(com.qiyi.player.user.impls.UserManager.getInstance().user && com.qiyi.player.user.impls.UserManager.getInstance().user.P00001)) 
            {
            };
            variables.uuid = com.qiyi.player.base.uuid.UUIDManager.instance.uuid;
            variables.deviceId = com.qiyi.player.base.uuid.UUIDManager.instance.uuid;
            if (this._holder.runtimeData.playerType) 
            {
                variables.playType = this._holder.runtimeData.playerType.name;
            }
            variables.platform = "b6c13e26323c537d";
            request.method = flash.net.URLRequestMethod.POST;
            request.data = variables;
        }
    

    大概就是
    aid + "" + cid + "" + vid + "" + uts + "" + utt + "_" + uint(0 ^ 2391461978).toString();

    md5('202550601'.''.'afbe8fd3d73448c9'.''.'73ae4fcc72ed61eae9f0ced13d80623f'.''.'1443833658083'.''.'1262'.'_'.abs(0 ^ 2391461978));

    算出来的值和 v 值不一样,哪错了

    第 1 条附言  ·  2015-10-04 08:43:39 +08:00
    已经解决
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2725 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:34 · PVG 08:34 · LAX 16:34 · JFK 19:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.