1- Insecure Storage
Vamos a revisar primero la función de login
LoginActivity.java
En concreto el siguiente método:
java
protected void fillData() throws BadPaddingException, NoSuchPaddingException, IllegalBlockSizeException, NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException, InvalidAlgorithmParameterException {
SharedPreferences settings = getSharedPreferences("mySharedPreferences", 0);
String username = settings.getString("EncryptedUsername", null);
String password = settings.getString("superSecurePassword", null);
if (username != null && password != null) {
byte[] usernameBase64Byte = Base64.decode(username, 0);
try {
this.usernameBase64ByteString = new String(usernameBase64Byte, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
this.Username_Text = (EditText) findViewById(R.id.loginscreen_username);
this.Password_Text = (EditText) findViewById(R.id.loginscreen_password);
this.Username_Text.setText(this.usernameBase64ByteString);
CryptoClass crypt = new CryptoClass();
String decryptedPassword = crypt.aesDeccryptedString(password);
this.Password_Text.setText(decryptedPassword);
return;
}
if (username == null || password == null) {
Toast.makeText(this, "No stored credentials found!!", 1).show();
} else {
Toast.makeText(this, "No stored credentials found!!", 1).show();
}
}Según el código se están guardando en la típica carpeta de preferencias, para encontrarla:

Y dentro de mySharedPreferences.xml se guardan cifradas con AES y luego base64

Se tratan de creds de terceros, no se deberían guardar en un archivo:
CWE-312, insecure storage
Si se quiere implementar autofill se debería usar Autofill Framework de Android (AutofillManager, API 26+) o el Credential Manager (API 34+, o androidx.credentials)
Si observamos en DoTranfer.java cuando se termina de hacer una transferencia el log se guarda en un archivo en el almacenamiento externo
java
String MYFILE = Environment.getExternalStorageDirectory() + "/Statements_" + DoTransfer.this.usernameBase64ByteString + ".html";
BufferedWriter out2 = new BufferedWriter(new FileWriter(MYFILE, true));
out2.write(status);
out2.write("<hr>");
out2.close();
return;Accesible sin niquiera root

