最近开始玩梦幻手游,为了领以前端游的返利必须输入将军令,那个已经一年没用了,输入了几次都提示错误(后来证实是系统繁忙而已),我以为是将军令时间不对了,所以用了下官网的修复功能。也对将军令修复原理有了兴趣,故搜了如下文,非常详细的讲了对将军令原理的猜测,感觉十有八九是对的,看完了觉得非常简单的一个功能,让我自己想一时还想不到。

整理的几个关键点:

1.用固定序号确保产出码的唯一性,用时间确保动态性

2.将军令本身的时间准确度是基础,比如在1星期内误差别超过1个小时我感觉就能接受(主要看矫正机制)

3.服务器产出码的时候加入时间矫正因子△t,△t会在验证时通过上下Y秒进行矫正,或者玩家点修复进行大范围匹配前后码进行矫正,初次开启时就是通过前后码匹配矫正的

4.第三点保证了玩家经常性使用△t会自动矫正,长期不使用(若差值超出自动矫正范围了)则启动前后码大范围矫正

【转载自】http://xy2.zhidao.163.com/showtopic/id_2014/

将军令的工作原理:猜想

将军令以帐号+密码+动态密码的形式对游戏id进行保护众所周知,将军令每隔一分钟变化一次6位数密码,俗称动态密码。
由于用户端(将军令)在出厂之后,同服务器端就再没有物理上直接的联系,因而,如何与服务器端保持逻辑上的同步是最大的问题,即如何保证用户端产生的动态密码与服务器端验证的动态密码是一个密码? 
猜测:用户端产生的动态密码是一个与时间有关的动态密码,即密码M与时间T之间存在着关系:M=rand(TX),rand()为随机函数,TX为随机函数的种子,X为另一因素,比如将军令的序列号等。
(1)X是一个服务器端已知的变量,出厂时就已经设定了,最大的可能是将军令的序列号、服务号或者序列号服务号所对应的一个因子,在生产将军令写入初始数据的时候,同时植入用户端和服务器端,由于每个将军令的序列号和服务号唯一,因而,拿不到将军令就无法知道X,也就无法知道动态密码M。
显然,只有因子X是不够的,M=rand(X),是产生了一个密码M,但显然无法动态变化,失去了意义。因而因子T不可缺少。

(2)分析下,植入T之后,服务器端的T1受服务器端时钟影响,用户端T2受用户端时钟影响,问题出现了,如何保证在运行一段时间以后,T1=T2?一个方法是采用高精密的材料,保证在3年的时间里T1=T2,明显成本巨大,以市场上30元左右的电子手表为例,要保证成千上万个电子手表3年内的误差不超过1分钟,可以说是天方夜谈。

(3)假设:服务器端固定T0,引入因子△t,服务器端植入△t,△t为用户端时钟同服务器端时钟之差,即△t=T2-T1。这样,用户端(将军令)端的密码M=rand(T2X),服务器端密码M=rand[(T1+△t)X],这样,对于成千上万的用户端(将军令)在服务器端只要记录了△t,就可以了。这个△t,可以在将军令生产的时候植入服务器端予以记录。

(4)同步的问题可以这样解决,服务器端动态的调整△t。在开通将军令的时候,在提交序列号和动态密码的时候,服务器端计算M=rand[(T1+△t)X],并且在△t的基础上,计算出...,△t-5*60,△t-4*60, △t-3*60, △t-2*60, △t-1*60, △t, △t+1*60, △t+2*60, △t+3*60, △t+4*60, △t+5*60,...这个数列。具体数列长度根据需要来定,由于是随机6位数的函数,在这个数列中是不会出现重复的M的。这样,就可以计算出△t附近前后相差n分钟所产生的密码M,只需要比对提交的动态密码与数列中的哪个值对应,就可以动态的调整△t。假设,动态密码与△t-2*60对应的密码相同,就可以调整△t=△t-2*60。这样,解决了用户端(将军令)从出厂到开通使用所产生的时间误差。这个n,根据实际需要制定,如果出厂1个月就差几个小时的话,那将军令的质量就忒差了。

(6)在确定了△t后,服务器端在每次验证的时候,只要算出M1=rand[(T1+△t-y)X],M=rand[(T1+△t)X],M2=rand[(T1+△t+y)X],就可以算出△t附近y秒的时间的密码M,就是允许将军令有y秒的时间误差。在具体使用中,有人已经测试证明将军令是有时间误差的。如果服务器端的M与将军令的M不一样,而是服务器端的M1与将军令的M一样,就可以实时的进行动态调整△t=△t-y了,实现将军令同服务器端时间上的同步。

(7)电子表的原理:在直流电(电池)的作用下,通过晶体管、音叉、石英晶体、大规模集成电路等等作为振荡器产生一定频率的震荡,通过固定频率的震荡来传动马达,或者驱动液晶屏等来计时。整个系统关键部位是能源(电池),振荡器,表现部分。以石英表为例,在石英晶体的表面施加一定的电压后,石英晶体会产生固定频率的震动,通过分频器后驱动马达,带动指针转动,由于频率固定,指针的转动是匀速的,只要分频调整到与时间一致,就可以计时。所以,电子手表计时是否准确关键看电池、振荡器的质量,我小的时候带的电子手表没电或者换电池后,通常不准,就是受电池电压变化的影响。。。

我想:
1、不可逆的算法,这个很容易实现,数学领域中可以找到很多,随机函数也太多太多。 
2,种子与服务器同步,对应我公式中的TX,同时植入服务器和用户端即可。 
3,每分钟动态刷新密码。植入时间因子就ok了。 
4,关键问题还是同步。从网易前阶段退出的将军令修复的措施来看,应该就是“提醒玩家主动协助对时”,跟新启用将军令几乎是同以道理。而调整频繁问题,也可以采用算法改变调整频率,减轻服务器的负担。 
5,同步的方法还有一些,如果想用的话,可以用“无线控制计时钟表”,原理是标准时间授时中心将标准时间信号进行编码,利用无线电长波发送出去,表端接收时间信号解码,调整时间,保证表端与授时中心时间高度一致。

转载于:https://www.cnblogs.com/vanishfan/p/4377260.html

【转载】网易将军令工作原理相关推荐

  1. 转载:磁盘工作原理、文件系统及i节点、块存储、文件存储、对象存储、DAS、NAS、还有SAN

    本文出自 "11366164" 博客,转载请与作者联系! (一)磁盘工作原理 一般硬盘正面贴有产品标签,主要包括厂家信息和产品信息,如商标.型号.序列号.生产日期.容量.参数和主从 ...

  2. [转载]LFSR的工作原理以及LFSR在CRC上的应用

    LFSR+CRC LFSR(Linear feedback shift register):线性反馈移位寄存器 CRC(cyclic redundancy check):循环冗余校验码   一 LFS ...

  3. 转载 调试器工作原理

    调试器工作原理--基础篇 本文是一系列探究调试器工作原理的文章的第一篇.我还不确定这个系列需要包括多少篇文章以及它们所涵盖的主题,但我打算从基础知识开始说起. 关于本文 我打算在这篇文章中介绍关于Li ...

  4. [转载] Web Service工作原理及实例

    一.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量 ...

  5. 计算机领域经典故事,[转载]计算机的工作原理(1):一个经典的故事

    计算机技术的实现是人类思维的产物,实际上是人类以自己的思维方式为蓝本设计出来的一种模拟机,因此远在工业革命以前,人们就已经在思想上进行了极为类似的的模拟实验,这些可以从我们熟知的一个经典的故事中找出. ...

  6. Servlet 工作原理解析--转载

    原文:http://www.ibm.com/developerworks/cn/java/j-lo-servlet/index.html?ca=drs- Web 技术成为当今主流的互联网 Web 应用 ...

  7. 【转载】现代浏览器的工作原理

    原文:http://taligarsiel.com/Projects/howbrowserswork1.htm 编译:zzzaquarius  http://blog.jobbole.com/1274 ...

  8. 智能家居-电热水器工作原理(转载)

    向科学工作者致敬,这篇文章比网上那些编辑随便写的好多了! -------------------- 电热水器工作原理 作者徐江一帆 水质.内胆与防腐 使用电热水器应注意水质问题.我国地域辽阔,各地水质 ...

  9. Lombok简介、使用、工作原理、优缺点(转载)

    文章转载:https://www.jianshu.com/p/453c379c94bd Lombok简介.使用.工作原理.优缺点 1.Lombok简介 官方介绍 Project Lombok is a ...

最新文章

  1. CentOS修改yum源为阿里云
  2. 13.强符号和弱符号
  3. [Vue.js] 模块化 -- 前端模块化
  4. Android驱动开发第一章
  5. 作业车间调度问题特征与调度效率相关性的研究Correlation of job-shop scheduling problem features with scheduling efficiency
  6. android html文字垂直居中,Android EditText文本不是垂直居中的
  7. Flutter 如何实现禁止手机横屏的功能
  8. iOS PDF 添加图片
  9. win10计算机系统优化设置,这些简单优化能让你的Win10流畅很多
  10. golang从入门到成仙【day02】
  11. 使用Python按时间顺序批量重命名文件
  12. uboot 引导linux内核 参数mem=size,Uncompressing Linux..... done, booting the kernel.
  13. FireFox 必备插件(四)
  14. 一、springboot项目集成大众点评cat
  15. 全球与中国远程摄像机市场深度研究分析报告
  16. HTML5前端视频_Vue项目实战《硅谷外卖》-张晓飞-专题视频课程
  17. 互联网早报 | 小米11正式发布;东风启辰重回东风日产旗下;作业帮完成新一轮超16亿美元融资...
  18. lotus notes java_远程数据库的Lotus Notes Java复制
  19. 通信算法之五十九:SC_FDE系统中的匹配滤波与频偏纠正
  20. 植树节活动策划主题班会PPT

热门文章

  1. mysql --max_allowed_packet=32m,如何修改MySQL-max_allowed_packet
  2. ntr模式_ntr什么意思?
  3. ipython文件每次打开重新运行吗_iPython中的多处理:当我不打开任何文件时打开的文件太多?...
  4. php 编译原理,编译原理
  5. oracle安装后开机很慢,Windows下安装Oracle拖慢开机速度的解决方法
  6. 安卓机更新系统会卡吗_安卓机可以用AirPods Pro吗?告诉你真实体验
  7. 直接修改html文本页面没变化,VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析...
  8. Java一些基础知识的整合
  9. tomcat java垃圾回收_tomcat启动参数配置,内存和垃圾回收
  10. mysql模糊查询 or_mysql的模糊查询