系列文章目录
第一章 安卓aosp源码编译环境搭建
第二章 手机硬件参数介绍和校验算法
第三章 修改安卓aosp代码更改硬件参数
第四章 编译定制rom并刷机实现硬改(一)
第五章 编译定制rom并刷机实现硬改(二)
第六章 不root不magisk不xposed lsposed frida原生修改定位
第七章 安卓手机环境检测软件分享
第八章 硬改之设备画像
第九章 修改Art虚拟机对指定app的指定函数进行拦截(一)
第十章 修改Art虚拟机对指定app的指定函数进行拦截(二)
前言
傻瓜式操作, 人人都能编译操作系统, 每个感兴趣的人都可以基于谷歌安卓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权限相同,获取代码:
//权限<uses-permissionandroid:name="android.permission. READ_PHONE_STATE” />
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 - 有效范围 99,98,97,全国统一管理
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文章来源:https://www.toymoban.com/news/detail-720200.html
文章来源地址https://www.toymoban.com/news/detail-720200.html
视频教程
到了这里,关于二,手机硬件参数介绍和校验算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!