storeP12 函数详解
📦 script.js 把私钥+证书打包成 PKCS12 导出。
📎 源码在线查看:
script.js(storeP12)
做什么
当 hook 捕获到 App 的客户端私钥+证书链时,storeP12 用 Java KeyStore + BouncyCastle 打包成 .p12 写入 /sdcard/Download/。
流程
关键 Java 调用
javascript
var KeyStore = Java.use("java.security.KeyStore");
var FileOutputStream = Java.use("java.io.FileOutputStream");
var String = Java.use("java.lang.String");
var ks = KeyStore.getInstance("PKCS12", "BC");
ks.load(null, null);
var pwdChars = ...; // "r0ysue".toCharArray()
ks.setKeyEntry("client", pri, pwdChars, certChain);
var fos = FileOutputStream.$new(path);
ks.store(fos, pwdChars);
fos.close();文件名
/sdcard/Download/<包名>_<随机串>.p12,包名从 ActivityThread.currentApplication 取,随机串避免覆盖。
密码
固定 r0ysue(r0capture 作者标识)。导出后用此密码导入 mitmproxy/keystore-explorer。
前提
- spawn 模式(attach 太晚证书已取走)
- App 已有存储权限
- App 确实用了客户端证书(不是所有 App 都有)