Skip to content

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 都有)

相关文档 ​

基于 VitePress 构建 · 教学用途