逆向某春秋航空算法

经抓包分析得知,某秋app每次页面请求,会先向/ECMember/secretKey/getSecret 发送一次请求,很有可能是获取密钥,请求和响应均是base64编码后的密文。


抓包分析

在这里插入图片描述

在这里插入图片描述

反编译

这里我们用jeb打开

在这里插入图片描述

从图中看到,加了壳,从包名可以看到是梆梆的壳,我们用IDA动态调试,并从内存中dump出dex的方式脱一下壳,并用jadx打开并导出源代码,用idea打开

在这里插入图片描述

寻找data和响应报文处理逻辑

直接在idea中打开搜索,并输入"data"

在这里插入图片描述

我们选择 HttpRequestUtils的a方法并进去,看到内容如下

public static String a(ReselectSeatArg reselectSeatArg) throws RemoteAccessException {
        ...
        try {
            String[] a = DESCrypter.a();
            Map hashMap2 = new HashMap();
            hashMap2.put("data", DESCrypter.c(JsonConvert.a(hashMap), a[0]));
            String a2 = new HttpRequesterProxy(UrlConstant.Y, hashMap2, 30).a();
            if (a2.trim().length() != 0) {
                return a2;
            }
            throw new RemoteAccessException(BasicUtils.a((int) R.string.ERR001));
        } catch (Exception e) {
            throw new RemoteAccessException(BasicUtils.a((int) R.string.ERR001));
        }
    }

是一个DES算法,进入DESCrypter.a()

public static String[] a() throws Exception {
        return a.getSecrets(new HttpRequesterProxy(UrlConstant.N, 30).a());
    }

 这里跟前面我们抓包分析得一样,是取密钥的。
再进入 DescrypterUtil的getSecrets方法

public java.lang.String[] getSecrets(java.lang.String r1) {
 ....
    }

还原算法

public static String recvData(String str) throws IOException {
...
}

public static String decode(String arg10) throws Exception {
...
byte[] decode = Base64.decodeBase64(arg10);
return new String(v0.doFinal(decode), "utf-8");
}

public static String encode(String arg9) throws Exception {
        SecretKey v1 = SecretKeyFactory.getInstance("desede")
                .generateSecret(new DESedeKeySpec("**************)".getBytes()));
        Cipher v0 = Cipher.getInstance("***/***/****");
        v0.init(1, ((Key) v1), new IvParameterSpec("***".getBytes()));
        return Base64.encodeBase64String(v0.doFinal(arg9.getBytes("utf-8")));
    }

验证算法正确性

在这里插入图片描述

将抓包取得的请求参数data和响应报文解密,均还原出了可读的json字符串,说明加解密已完全成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章