导航菜单

页面标题

页面副标题

Fix Locker v1.5 - ResetPasswordWithToken.java 源代码

正在查看: Fix Locker v1.5 应用的 ResetPasswordWithToken.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.user.a4keygen.activity;

import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.user.a4keygen.DeviceAdminReceiver;
import com.user.a4keygen.R;
import com.user.a4keygen.sharedprefrence.SharedPrefManager;
import com.user.a4keygen.webutil.WebClientService;
import java.nio.charset.StandardCharsets;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Base64;

public class ResetPasswordWithToken extends AppCompatActivity {
    private static final String PREFS_NAME = "password-token";
    private static final String TOKEN_NAME = "token";
    private DevicePolicyManager mDpm;

    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.activity_rebood_device);
        this.mDpm = (DevicePolicyManager) getSystemService(DevicePolicyManager.class);
        byte[] activeResetPasswordToken = getActiveResetPasswordToken();
        String stringExtra = getIntent().getStringExtra("password");
        if (!WebClientService.isNull(stringExtra)) {
            resetPasswordWithToken(activeResetPasswordToken, stringExtra);
        } else {
            resetPasswordWithToken(activeResetPasswordToken, null);
        }
    }

    private byte[] createNewPasswordToken() {
        byte[] generateRandomPasswordToken = generateRandomPasswordToken();
        if (!this.mDpm.setResetPasswordToken(DeviceAdminReceiver.getComponentName(this), generateRandomPasswordToken)) {
            showToast(getString(R.string.set_password_reset_token_failed));
            return generateRandomPasswordToken;
        }
        savePasswordResetTokenToPreference(generateRandomPasswordToken);
        return generateRandomPasswordToken;
    }

    private byte[] getActiveResetPasswordToken() {
        byte[] loadPasswordResetTokenFromPreference = loadPasswordResetTokenFromPreference(this);
        return loadPasswordResetTokenFromPreference == null ? createNewPasswordToken() : loadPasswordResetTokenFromPreference;
    }

    public byte[] loadPasswordResetTokenFromPreference(Context context) {
        String string = context.createDeviceProtectedStorageContext().getSharedPreferences(PREFS_NAME, 0).getString(TOKEN_NAME, null);
        if (string == null) {
            return null;
        }
        Toast.makeText((Context) this, (CharSequence) string, 0).show();
        return Base64.getDecoder().decode(string.getBytes(StandardCharsets.UTF_8));
    }

    private void savePasswordResetTokenToPreference(byte[] bArr) {
        SharedPreferences.Editor edit = createDeviceProtectedStorageContext().getSharedPreferences(PREFS_NAME, 0).edit();
        if (bArr != null) {
            Toast.makeText((Context) this, (CharSequence) Base64.getEncoder().encodeToString(bArr), 0).show();
            edit.putString(TOKEN_NAME, Base64.getEncoder().encodeToString(bArr));
        } else {
            edit.remove(TOKEN_NAME);
        }
        edit.commit();
    }

    public byte[] generateRandomPasswordToken() {
        try {
            return SecureRandom.getInstance("SHA1PRNG").generateSeed(32);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }

    private void removePasswordToken() {
        if (!this.mDpm.clearResetPasswordToken(DeviceAdminReceiver.getComponentName(this))) {
            showToast(getString(R.string.clear_password_reset_token_failed));
        } else {
            savePasswordResetTokenToPreference(null);
        }
    }

    private void resetPasswordWithToken(byte[] bArr, String str) {
        if (bArr != null) {
            if (this.mDpm.resetPasswordWithToken(DeviceAdminReceiver.getComponentName(this), str, bArr, 2)) {
                showToast(getString(R.string.reset_password_with_token_succeed, new Object[]{"****"}));
                SharedPrefManager.getInstance(this).savePassword(str);
                return;
            } else {
                showToast("Failed to reset password");
                return;
            }
        }
        showToast("Token is null");
    }

    private void showToast(String str) {
        Toast.makeText((Context) this, (CharSequence) str, 1).show();
    }
}