0%

[CISCN 2022 东北]crackme_Android WriteUp

2024-08-26 20:00By
S3c0ldW4ng
安卓逆向JAVAMOBILEmd5

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语言
  • 穷举爆破
还没有人赞赏,快来当第一个赞赏的人吧!
  
© 著作权归作者所有

加载中...

加载失败
广告
×
评论区
添加新评论