cocos2d-js 手游解密jsc和WebSocket数据aes加密解密分析②(3)

博客内容主要探讨了cocos2d-js手游中WebSocket数据的aes加密解密过程,包括aesKey和aesIV的生成方式,以及如何通过本地存储验证解密结果。博主通过实验发现,需要去掉数据前20位进行解密,并展示了部分解密后的十六进制数据。文章最后强调了系统化学习和知识体系构建的重要性。
摘要由CSDN通过智能技术生成

e.prototype.send = function(e, t, o) {

if (!cc.game.isPaused() && this.state != n.broken) {

var r = new s.default.Head();

r.wMainCmdID = e;

r.wSubCmdID = t;

var i = {

head: r,

content: o

}, c = new a.NetDataWithBY();

if (!this.aesKeyBuffer) {

this.aesKeyBuffer = u.CryptoTool.randomAesKeyBuffer();

this.aesIvBuffer = u.CryptoTool.randomAesIvBuffer();

}

c.setAes(this.aesKeyBuffer, this.aesIvBuffer);//setAes 的调用

c.initWithData(i);

c.getState() == s.default.ENetDataState.normal ? c.isPingMsg() ? this.unshiftSendArray(c) : c.isKernelDetectSocketMsg() ? this.unshiftSendArray(c) : n.reconnecting == this.state ? this.backupArraySend.push(c) : this.sendArray.push(c) : cc.error(h, this.cachekey, "send", "send fail, the NetData state is not normal");

}

};

我们要找的aesKey 和 aesIV, 是由 aesKeyBuffer和 aesIvBuffer 赋值。

分析可以得知,aesKey和aesIV都是每次启动随机生成的。


if (!this.aesKeyBuffer) {  //这里判断密钥是否创建

    //创建随机密钥 和 向量

    this.aesKeyBuffer = u.CryptoTool.randomAesKeyBuffer();

    this.aesIvBuffer = u.CryptoTool.randomAesIvBuffer();

}





//取Key

e.randomAesKeyBuffer = function() {

    return n(16);

};

//取Iv

e.randomAesIvBuffer = function() {

    return n(16);

};



//生成随机

function n(e) {

    for (var t = [], o = 0; o < e; o++){ 

        t.push(Math.floor(255 * Math.random() + 1));

    }

    return new Uint8Array(t);

}

那么我们就测试一下,把重要数据写到本地验证一下。


//js 写文件到本地方法

var writablePath = jsb.fileUtils.getWritablePath();

writablePath += "xdd/";

var fileName = "bufferToData" + "_file.js";

var fullPath = writablePath + fileName;

jsb.fileUtils.createDirectory(writablePath);

jsb.fileUtils.writeStringToFile(JSON.stringify("我的内容"), fullPath);

修改js代码保存->加密->放回缓存位置,打开游戏(具体方法请看上集ÿ

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值