初始化项目

This commit is contained in:
2026-01-05 14:29:08 +08:00
commit 993f1347dd
11 changed files with 1738 additions and 0 deletions

186
debug_openssl.py Normal file
View File

@@ -0,0 +1,186 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
调试脚本查看OpenSSL命令的输出
"""
import subprocess
import os
import tempfile
# 测试配置
test_keystore = "keys/key34/keystore.keystore"
test_apk = "keys/key34/app-signed-34.apk"
test_storepass = "password"
test_alias = "alias"
test_keypass = "password"
def debug_keystore_modulus():
"""调试keystore的模数提取"""
print("=== 调试keystore的模数提取 ===")
# 创建临时目录
with tempfile.TemporaryDirectory() as temp_dir:
# 导出证书
cert_pem_path = os.path.join(temp_dir, 'cert.pem')
export_command = [
'keytool',
'-export',
'-keystore', test_keystore,
'-storepass', test_storepass,
'-alias', test_alias,
'-rfc',
'-file', cert_pem_path
]
print(f"执行命令: {' '.join(export_command)}")
result = subprocess.run(export_command, capture_output=True, text=True)
print(f"返回码: {result.returncode}")
print(f"输出: {result.stdout}")
print(f"错误: {result.stderr}")
if result.returncode == 0:
# 提取公钥
pubkey_path = os.path.join(temp_dir, 'pubkey.pem')
x509_command = [
'openssl', 'x509',
'-in', cert_pem_path,
'-pubkey',
'-noout',
'-out', pubkey_path
]
print(f"\n执行命令: {' '.join(x509_command)}")
result = subprocess.run(x509_command, capture_output=True, text=True)
print(f"返回码: {result.returncode}")
print(f"输出: {result.stdout}")
print(f"错误: {result.stderr}")
if result.returncode == 0:
# 查看公钥内容
print(f"\n公钥内容:")
with open(pubkey_path, 'r') as f:
print(f.read())
# 尝试使用openssl rsa -modulus
rsa_command = [
'openssl', 'rsa',
'-pubin',
'-in', pubkey_path,
'-modulus',
'-noout'
]
print(f"\n执行命令: {' '.join(rsa_command)}")
result = subprocess.run(rsa_command, capture_output=True, text=True)
print(f"返回码: {result.returncode}")
print(f"输出: {result.stdout}")
print(f"错误: {result.stderr}")
# 尝试使用openssl rsa -text
rsa_command = [
'openssl', 'rsa',
'-pubin',
'-in', pubkey_path,
'-text',
'-noout'
]
print(f"\n执行命令: {' '.join(rsa_command)}")
result = subprocess.run(rsa_command, capture_output=True, text=True)
print(f"返回码: {result.returncode}")
print(f"输出: {result.stdout}")
print(f"错误: {result.stderr}")
def debug_apk_modulus():
"""调试APK的模数提取"""
print("\n=== 调试APK的模数提取 ===")
# 创建临时目录
with tempfile.TemporaryDirectory() as temp_dir:
import zipfile
# 提取APK中的证书
with zipfile.ZipFile(test_apk, 'r') as apk:
cert_files = [f for f in apk.namelist() if f.endswith('.RSA') or f.endswith('.DSA') or f.endswith('.EC')]
print(f"找到的证书文件: {cert_files}")
if cert_files:
cert_file = cert_files[0]
cert_path = os.path.join(temp_dir, 'cert.RSA')
apk.extract(cert_file, temp_dir)
os.rename(os.path.join(temp_dir, cert_file), cert_path)
# 使用pkcs7提取公钥
pem_path = os.path.join(temp_dir, 'cert.pem')
pkcs7_command = [
'openssl', 'pkcs7',
'-inform', 'DER',
'-in', cert_path,
'-print_certs',
'-out', pem_path
]
print(f"执行命令: {' '.join(pkcs7_command)}")
result = subprocess.run(pkcs7_command, capture_output=True, text=True)
print(f"返回码: {result.returncode}")
print(f"输出: {result.stdout}")
print(f"错误: {result.stderr}")
if result.returncode == 0:
# 提取公钥
pubkey_path = os.path.join(temp_dir, 'pubkey.pem')
x509_command = [
'openssl', 'x509',
'-in', pem_path,
'-pubkey',
'-noout',
'-out', pubkey_path
]
print(f"\n执行命令: {' '.join(x509_command)}")
result = subprocess.run(x509_command, capture_output=True, text=True)
print(f"返回码: {result.returncode}")
print(f"输出: {result.stdout}")
print(f"错误: {result.stderr}")
if result.returncode == 0:
# 查看公钥内容
print(f"\n公钥内容:")
with open(pubkey_path, 'r') as f:
print(f.read())
# 尝试使用openssl rsa -modulus
rsa_command = [
'openssl', 'rsa',
'-pubin',
'-in', pubkey_path,
'-modulus',
'-noout'
]
print(f"\n执行命令: {' '.join(rsa_command)}")
result = subprocess.run(rsa_command, capture_output=True, text=True)
print(f"返回码: {result.returncode}")
print(f"输出: {result.stdout}")
print(f"错误: {result.stderr}")
# 尝试使用openssl rsa -text
rsa_command = [
'openssl', 'rsa',
'-pubin',
'-in', pubkey_path,
'-text',
'-noout'
]
print(f"\n执行命令: {' '.join(rsa_command)}")
result = subprocess.run(rsa_command, capture_output=True, text=True)
print(f"返回码: {result.returncode}")
print(f"输出: {result.stdout}")
print(f"错误: {result.stderr}")
if __name__ == "__main__":
debug_keystore_modulus()
debug_apk_modulus()