二,手机硬件参数介绍和校验算法

文章目录

  • 前言
  • 一、IMEI
  • 二、IMSI
  • 三、MEID
  • 四、ANDROID_ID
  • 五、设备序列号
  • 六、MAC地址 && 蓝牙地址
  • 补充


前言

傻瓜式操作, 人人都能编译操作系统, 每个感兴趣的人都可以基于谷歌安卓aosp源码定制自己的系统


一、IMEI

由14位16禁制字符和第15位校验位标识组成,而且该码是全世界唯一的,双卡手机有两个码,可通过拨号键盘输入*#06#查看,手机有,平板无,国内开头为86,第15位校验位的计算方法通过C-SHARP实现

APP读取示例:
读取需要android.permission.READ_PHONE_STATE权限

TelephonyManager telephonyManager =(TelephonyManager) context. getSystemService (Context. TELEPHONY SERVICE);String imei = telephonyManager.getDeviceId0; // getImei()

IMEI定义以869818-02-253461-9为例:
TAC[6位] + FAC[2位] + SNR[6] + SP[1]

计算第15位校验位算法(c#)

public bool VerifyImei(string imei) {
  int checkDigit = 0; int addValue = 0; 
  for (int i = 1; i < imei.Length; i++)
  {
    if (i % 2 == 1)
    {
       int result = Convert. ToInt32(imei[imei. Length - i - 1]. ToString()) * 2; 
        if (result > 9) 
        addValue t= (result — 9);
        else
        addValue += result;
        }
        else 
          addValue += Convert. ToInt32(imeilimei. Lngth - i — 1]. ToString());
        }
if (addValue % 10 == 0)
  checkDigit = 0;
 else
  checkDigit = 10 — addValue % 10; 
return (checkDigit - Conver.ToInt32(imei[imei.Length - 1].ToString())) == 0;
}
1).将偶数位数字分别乘以2,分别计算个位数和十位数之和
2).将奇数位数字相加,再加上上一步算得的值
3).假设得出的数个位是0则校验位为0,否则为10减去个位数

二、IMSI

用于区分不同用户在移动蜂窝网络中的识别码,大部分情形下手机和网络之间的通信,会使用随机产生的临时移动用户识别码

  IMSI是区别移动用户的标志,储存在SIM卡中。同样使用0~9的数字,它由MCC+MNC+MSIN三部分组成:
  
例如:460-02-7980097098
    MCC:移动国家码,三个数字,如中国为460
    MNC:移动网号,两个数字,中国移动:00,02,04,07,08,13
    MSIN:移动客户识别号
    
MSIN组成:CC+MOM1M2M3+ABCD
    CC由不同运营商分配,其中的MOM1M23和MDN号码中的HOH1H2H3可存在对应关系,ABCD四位为自由分配。

MNC:中国移动使用00(号段135 136 137 138 139)、02(150 151 152 134 158 159)
            中国移动TD系统(147 187 188 157号段)使用07
            中国联通使用01(131 132 155 156),03(133 134 180 153 189)
            
IMSI与IMEI权限相同,获取代码:
        //权限
TelephonyManager telephonyManager=(TelephonyManager)context. getSystemService(Context.TELEPHONY SERVICE);
string imsi=telephonyManager.getSubscriberId();

三、MEID

CDMA移动终端识别码,双卡手机通常是两个IMEI一个MEID

格式举例:A0-00005E-78C3E7
        99-001788-698930
      MEID由14个十六进制字符标识,第15位为校验位
      
RR-XXXXXXZZZZZZ-C
  RR:范围A0-FF   TIA组织进行分配管理的
  XXXXXX:范围000000-FFFFFF000000-FFFFFF,厂商分配给每台终端的流水号   
  C/CD:0-F,校验码

这些字段被定义为10进制时,有以下格式:
   RR  -  有效范围 999897,全国统一管理
   XXXXXX  -  有效范围 000000--999999
   ZZZZZZ  -  有效范围 000000--999999
   C  -  有效范围 0 -- 9

四、ANDROID_ID

它是一串16禁制字符串,当设备不是手机的时候,例如平板设备,这个值也存在,但是在设备恢复出厂设置后,这个值会改变,不同的设备可能会产生相同的值

import android.provider.Settings;
String ANDROID_id = Settings.system.getString(getContentResolver(),Settings.System.ANDROID_ID);

五、设备序列号

Serial Number 或SN,又叫产品序列号、机器码,由手机厂家自定义通常为不超过16位的16进制字符串

示例: c3a1d2fe

APP通过 android.os.BuildgetSerial0 获取该值,也需要申请READ PHONESTATE权限:

private String get Serial() {
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.0) {
    }else {
       return Build.SERIAL;
       }
 }

六、MAC地址 && 蓝牙地址

MAC地址格式:AA:BB:CC + DD:EE:FF
AA:BB:CC由IEEE组织注册给网络设备的生产商,每个厂商都拥有一个或多个
DD:EE:FF则是由网络设备生产商分配给自己生产的每个拥有MAC地址的设备,互不重复

APP获取该值,需要申请ACCESS WIFI STATE 权限
android.net.wifi.WifiManager wifi = (android.net.wifi.WifiManager)context.getSystemService Context.WIFI SERVICE);
String mac Address = wifi.getConnectionInfo().getMacAddress();
Android 6.0之后,用此方法获取到的Wi-Fi mac地址都为02:00:00:00:00:00 已无效

替代方案是通过读取系统文件/sys/class/net/wlan0/address来获取mac地址
private String getMacAddress(){
    return new BufferedReader(new FileReader(new File("/sys/class/net/wlan0/address"))).readLine();
}  绝大多数情况下该方法也无法获取到MAC地址

目前通行的方式是遍历网络接口:
List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface nif : all) {
    if (!nif.getName () .equalsIgnoreCase("wlan0")) {
     continue;
     }
     byte[] macBytes = nif. getHardwareAddress () ;
     if(macBytes == null) {
    return "";
    }

蓝牙地址:
/frameworks/base/core/java/android/bluetooth/BluetoothAdapter.java
publicString getAddress(){
   try{
          return mManagerService.getAddress();
          } catch (RemoteException e) Log.e(TAG,"",e);}
          return null;
}

补充

除了MAC地址 && 蓝牙地址,还要另外的标识符,可以无视:
UUID,ICCID,OAID,GAID

二,手机硬件参数介绍和校验算法_第1张图片

你可能感兴趣的:(智能手机,算法)