编程技术分享平台

网站首页 > 技术教程 正文

[按键精灵]给设备自定义一个“机器码”

xnh888 2024-10-22 18:05:46 技术教程 34 ℃ 0 评论

大家好,我是公众号3分钟学堂的郭立员,今天来讲一下自定义机器码。

一、机器码的概念

用于区分设备不同的信息其实都可以叫机器码,常见的如设备id,imsi码,imei码,除此之外还有设备mac地址,ip地址,设备类型,sim卡id,只要是能够区分和别的设备不同的数据都可以作为“机器码”。

二、机器码对于脚本的用途

如果是自己写自己用的脚本,机器码其实用途不大,真正使用到机器码是卖脚本,限制使用脚本的设备数量。

比如出售脚本卡密限制一机一码,也就是激活码和机器码一一绑定,如果用户修改了自己的机器码,使多个设备变成相同的机器码,这样就可以多个设备使用一个激活码,对于脚本作者来说这就是损失。

三、怎么限制用户修改机器码

常用的方式是使用心跳检测,脚本会在固定间隔时间给服务器发送信号,如果正常使用,一段时间就发送一次信号给服务器,但是如果是多个设备同时使用就会出现一段时间收到多个信号,服务器可以知道有人修改了机器码,从而限制这些设备使用脚本。

除了心跳检测以外,还有一种方法是做一个“非标机器码”,脚本在首次运行时给使用设备做一个记号,这个记号就当做设备机器码,这样用户常规修改的机器码是无法修改。

四、自定义机器码

基本思路是在首次使用脚本时,在设备上新建一个文件,存储一个特定的数据,这个数据当做设备的机器码。

几个问题:

①、判断首次使用的方法,可以读取特定文件,如果这个文件不存在那就是首次使用脚本。

②、新建的文件存放在什么位置

针对于安卓设备一般就是存在/sdcard 这个路径下,因为所有设备都存在这个路径,具有普遍性。

不过为了安全起见,可以存在目录下某个系统文件夹,存放的位置保证两点就行,一是具有普通性所有设备都有,二是私密性不要让别人轻易找到

③、文件以什么格式存储

常见是用txt文本,不过对于按键来说不写文件后缀也可以读写,这样能让设备自带编辑没法轻易打开。

至于文件命令,还是私密的原则,尽可能的让别人看不出来是文件是和机器码有关系的。

④、机器码的内容

这个就全凭自己喜好,首先机器码不能是固定值,保证每个设备都是不同的机器码。

所以可以使用的如随机字符、时间戳等具有相对唯一性的内容。

其次是可以使用多种内容的混合,比如随机字符+时间戳+设备名称,目的还是让机器码具有唯一性。

最后是字符长度的问题,要看你对接网络验证平台的要求,如果没有长度限制,那么就随便弄,如果有限制就做缩减,像截取法,只截取生成字符的一部分当做机器码,或者做base64加密、MD5加密也可以缩减字符长度。

五、代码编写

TracePrint GetDevice_Id()


Function GetDevice_Id()
    Dim Path_ID = "/sdcard/open"
    If Dir.Exist(Path_ID) = 0 or Len(file.read(Path_ID)) = 0 Then 
        Dim Rnd_Str = ""
        Dim Str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        For 10
            Dim Rnd_num = int(len(Str)*rnd() + 1)
            Rnd_Str = Rnd_Str&Mid(Str,Rnd_num,1)
        Next
        Dim Device_id = Encode.Md5(Rnd_Str & Time())
        TracePrint Device_id
        file.Write(Path_ID,Device_id)
    End If
    GetDevice_Id = file.Read(Path_ID)
End Function

封装成函数了,之后可以直接调用这个函数生成一个机器码。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表