触摸精灵吧 关注:11,848贴子:44,848
  • 3回复贴,共1页

【教程】网络时间限制的实现

取消只看楼主收藏回复

对于加密脚本,除了串号绑定,通常还需要进行时间限制。如果使用系统时间,则用户可以通过修改系统时间来达到延长使用时间的目的。因此,我们可以采用网络时间来进行限制,下面就来介绍下网络时间限制的实现。
注意,本教程适合有一定基础的人看,建议先看“简易网络验证的实现”:http://tieba.baidu.com/p/3699579718
。
在“简易网络验证的实现”中,我们提到使用网页记录串号,然后进行验证。但是,往往仅记录串号是不够的,除非脚本一经授权永久使用。如果想进行时间限制,则不仅需要记录串号,还需要记录到期时间。如果当前时间还没到到期时间,则正常执行,如果到期了,则提示并退出脚本。

其中,"ABCDEFG“代表记录的串号,20150514代表到期时间为2015年5月14日,中间用英文分号隔开。这里只是一种写法示范,大家可以采用其它的记法,不过脚本也需要进行相应的改动。


1楼2015-04-14 11:07回复
    触摸精灵实现:


    3楼2015-04-14 12:27
    回复
      2026-10-11 20:40:46
      广告
      不感兴趣
      开通SVIP免广告
      为了方便观看,贴出源码:
      -------------------------------------------------------------------------------------------------------
      function main()
      --获取页面源码
      data = httpGet("http://url.qmail.com/pM0U2Ze1")
      --获取网络时间
      netTime = getNetTime()
      --检查页面源码及网络时间是否获取成功
      if data == "" or netTime == -1 then
      badNet()
      end
      --获取设备串号
      id = getDeviceID()
      --在页面中匹配串号与时间
      flag, year, month, day = string.match(data, "("..id..")"..";".."(%d%d%d%d)(%d%d)(%d%d)")
      --串号验证,如果没找到则验证失败,否则检查是否到期
      if flag == nil then
      ban()
      else
      tt = os.date("*t", netTime)
      if tt.year > tonumber(year) then
      timeOut()
      else
      if tt.month > tonumber(month) then
      timeOut()
      else
      if tt.day > tonumber(day) then
      timeOut()
      end
      end
      end
      end
      --验证成功,继续执行后续的脚本
      notifyMessage("验证成功,执行后续的脚本", 3000)
      end
      --脚本到期
      function timeOut()
      notifyMessage("脚本已到期!", 3000)
      os.exit(0)
      end
      --网络故障
      function badNet()
      notifyMessage("验证失败,请检查网络连接!", 3000)
      os.exit(0)
      end
      --脚本未授权
      function ban()
      notifyMessage("验证失败,脚本未授权!", 3000)
      os.exit(0)
      end


      4楼2015-04-14 12:36
      收起回复
        这个程序的主要难点在于在页面中匹配串号与时间、检查是否到期,主要是string.match()、os.date()的用法,这两个函数的用法非常丰富,大家可以自己查阅相关资料,多加练习进行掌握。


        6楼2015-04-14 17:25
        回复