Problem: [CISCN 2022 东北]crackme_Android
[[toc]]
思路
- apk在jadx中打开,查找关键代码
EXP
import java.security.MessageDigest;
import java.util.Arrays;
public class A {
public static String md5(String info) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(info.getBytes(StandardCharsets.UTF_8));
byte[] encryption = md5.digest();
StringBuilder stringBuffer = new StringBuilder();
for (byte b : encryption) {
if (Integer.toHexString(b & 255).length() == 1) {
stringBuffer.append("0");
stringBuffer.append(Integer.toHexString(b & 255));
} else {
stringBuffer.append(Integer.toHexString(b & 255));
}
}
return stringBuffer.toString();
} catch (Exception e) {
return "";
}
}
public static void generateAllStrings(int length) {
// 字符集:数字和字母
char[] chars = new char[62];
int index = 0;
for (char c = '0'; c <= '9'; c++) {
chars[index++] = c;
}
for (char c = 'A'; c <= 'Z'; c++) {
chars[index++] = c;
}
for (char c = 'a'; c <= 'z'; c++) {
chars[index++] = c;
}
String mm = "8393931a16db5a00f464a24abe24b17a9040b57d9cb2cbfa6bdc61d12e9b51f2789e8a8ae9406c969118e75e9bc65c4327fbc7c3accdf2c54675b0ddf3e0a6099b1b81046d525495e3a14ff6eae76eddfa1740cd6bd483da0f7684b2e4ec84b371f07bf95f0113eefab12552181dd832af8d1eb220186400c494db7091e402b0";
int split_count = (int) Math.ceil((double)(mm.length())/32);
String[] m_arr = new String[split_count];
for (int i =0 , j= 0; i < mm.length(); i += 32) {
m_arr[j++] = mm.subSequence(i, i + 32).toString();
}
for (int m =0 ; m < m_arr.length; m++) {
for (int i = 0; i < chars.length; i++) {
for (int j = 0; j < chars.length; j++) {
for (int k = 0; k < chars.length; k++) {
for (int l = 0; l < chars.length; l++) {
String temp = "" + chars[i] + chars[j] + chars[k] + chars[l];
if(m_arr[m].equals(md5(temp))){
System.out.print(temp);
}
}
}
}
}
}
}
public static void main(String[] args) {
generateAllStrings(4);
}
}
总结
- jadx基本使用
- java语言
- 穷举爆破
