如题,这是某安卓手表开发者模式的密码锁。
import android.content.Context;
import android.provider.Settings.Global;
import android.text.TextUtils;
import com.wolf.kids.framework.device.WolfPlatformManager;
import com.wolf.kids.utils.AESUtils;
import com.wolf.kids.utils.MD5Utils;
import com.wolf.kids.utils.StrUtil;
public class DevelopModeHelper {
private static final String TAG = "DevelopKeyRoute";
public static final String TYPE_DEVELOPER_MODE = "develop_mode_code";
public static final String TYPE_FACTORY_MODE = "factory_mode_code";
private static final String iv = "eip97324acpamzbv";
private final Context mContext;
private String mDevelopCode;
private String mFactoryCode;
private String generateKey() {
String[] sort;
WolfPlatformManager instance = WolfPlatformManager.getInstance(this.mContext);
String deviceKey = instance.getDeviceKey();
String deviceId = instance.getDeviceId();
String encode = MD5Utils.encode(instance.getHardCode());
if (TextUtils.isEmpty(deviceKey)) {
sort = StrUtil.sort(new String[]{instance.getIMEI(), instance.getQRCode(), encode});
} else {
sort = StrUtil.sort(new String[]{deviceKey, deviceId, encode});
}
return MD5Utils.encode(StrUtil.dumpStringArray(sort));
}
private String getCode(String str) {
str = AESUtils.encryptAESBase64(generateKey(), iv, str);
int length = str.length() / 6;
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < 6; i++) {
stringBuilder.append(str.charAt(i * length) % 10);
}
return stringBuilder.toString();
}
public boolean openDevelopMode(String str) {
if (TextUtils.isEmpty(this.mDevelopCode)) {
this.mDevelopCode = getDevelopModeCode();
}
boolean equals = this.mDevelopCode.equals(str);
Global.putInt(this.mContext.getContentResolver(), TYPE_DEVELOPER_MODE, equals);
return equals;
}
public boolean openFactoryMode(String str) {
if (TextUtils.isEmpty(this.mFactoryCode)) {
this.mFactoryCode = getFactoryModeCode();
}
boolean equals = this.mFactoryCode.equals(str);
Global.putInt(this.mContext.getContentResolver(), TYPE_FACTORY_MODE, equals);
return equals;
}
public DevelopModeHelper(Context context) {
this.mContext = context;
}
public static void hideDevelopMode(Context context) {
Global.putInt(context.getContentResolver(), TYPE_DEVELOPER_MODE, 0);
}
public static void hideFactoryMode(Context context) {
Global.putInt(context.getContentResolver(), TYPE_FACTORY_MODE, 0);
}
public static boolean isDevelopModeOpen(Context context) {
return 1 == Global.getInt(context.getContentResolver(), TYPE_DEVELOPER_MODE, 0);
}
public static boolean isFactoryModeOpen(Context context) {
return 1 == Global.getInt(context.getContentResolver(), TYPE_FACTORY_MODE, 0);
}
public String getDevelopModeCode() {
return getCode(TYPE_DEVELOPER_MODE);
}
public String getFactoryModeCode() {
return getCode(TYPE_FACTORY_MODE);
}
}
(注意,上面那段没有放进代码框的也是代码)
我是个小白,不懂代码,希望各位DALAO看看,本人感激不尽。
完整安装包:
这几句表明加密方式和你的设备有关,只有个安装包是解不开的:
String deviceKey = instance.getDeviceKey();
String deviceId = instance.getDeviceId();
String encode = MD5Utils.encode(instance.getHardCode());