找到mainactivity函数
1. 用户名和密码的检查
2. 密码的加密然后 - 1 的操作
for (int i = 0; i < bArr.length; i++) {bArr[i] = (byte) (bArr[i] - 1);
}
这段代码通过遍历字节数组中的每个元素,将每个元素的值减去 1,并更新数组。这里的 byte
强制转换确保处理后的值仍然在字节的范围内(-128 到 127)。
找字符段strings.xml之类的
密文:3lkHi9iZNK87qw0p6U391t92qlC5rwn5iFqyMFDl1t92qUnL6FQjqln76l-P
passwd:c232666f1410b3f5010dc51cec341f58
package com.company;public class HexByteManipulation {public static void main(String[] args) {// 定义原始的十六进制字符串String hexString = "c232666f1410b3f5010dc51cec341f58";// 将十六进制字符串转换为字节数组byte[] bArr = hexStringToByteArray(hexString);// 对每个字节执行加 1 操作for (int i = 0; i < bArr.length; i++) {bArr[i] = (byte) (bArr[i] + 1);}// 将修改后的字节数组转换回十六进制字符串String resultHexString = byteArrayToHexString(bArr);// 输出结果System.out.println("原始十六进制字符串: " + hexString);System.out.println("处理后的十六进制字符串: " + resultHexString);}// 将十六进制字符串转换为字节数组public static byte[] hexStringToByteArray(String hexString) {int len = hexString.length();byte[] data = new byte[len / 2];for (int i = 0; i < len; i += 2) {data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)+ Character.digit(hexString.charAt(i+1), 16));}return data;}// 将字节数组转换为十六进制字符串public static String byteArrayToHexString(byte[] bytes) {StringBuilder sb = new StringBuilder();for (byte b : bytes) {sb.append(String.format("%02x", b));}return sb.toString();}
}
转换完的passwd:c33367701511b4f6020ec61d35f259
密码为654321
nc 一下
换表base64
import base64
import string
string = "3lkHi9iZNK87qw0p6U391t92qlC5rwn5iFqyMFDl1t92qUnL6FQjqln76l-P"
tableBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
tableNew= "TGtUnkaJD0frq61uCQYw3-FxMiRvNOB/EWjgVcpKSzbs8yHZ257X9LldIeh4APom"
flag = base64.b64decode(string.translate(str.maketrans(tableNew, tableBase64)))
print (flag)
//{212f4548-03d1-11ec-ab68-00155db3a27e}