Compare commits
2 Commits
e640b4f6d2
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 0ef2c09a8e | |||
| 359770896d |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,4 +1,6 @@
|
|||||||
*.apk
|
*.apk
|
||||||
/keys*
|
/keys*
|
||||||
/__pycache__
|
/__pycache__
|
||||||
/.trae
|
/.trae
|
||||||
|
/build
|
||||||
|
/dist
|
||||||
161
README.md
161
README.md
@@ -1,7 +1,158 @@
|
|||||||
# apk-sign-info
|
# APK签名工具
|
||||||
|
|
||||||
生成apk签名文件并查询签名信息(md5、sha-1、sha-256)
|
一个专门用于Android应用签名的工具,帮助开发者轻松生成签名文件和查询签名信息。
|
||||||
|
|
||||||
# Use
|
## 📱 项目简介
|
||||||
运行`main.py`
|
|
||||||
根据ui提示即可
|
这个工具主要完成两个核心任务:
|
||||||
|
1. **生成签名文件** - 创建用于签名APK的keystore文件
|
||||||
|
2. **查询签名信息** - 查看APK或签名文件的MD5、SHA-1、SHA-256等签名指纹信息
|
||||||
|
|
||||||
|
## 🎯 主要功能
|
||||||
|
|
||||||
|
### 1️⃣ 生成签名文件
|
||||||
|
- 可以批量生成多个签名文件
|
||||||
|
- 支持自定义签名文件的名称、别名、密码等参数
|
||||||
|
- 支持在参数中添加随机字符串,增强安全性
|
||||||
|
- 生成的签名文件保存在`keys`目录下
|
||||||
|
|
||||||
|
### 2️⃣ 查询签名信息
|
||||||
|
- 可以查看APK文件的签名指纹(MD5、SHA-1、SHA-256)
|
||||||
|
- 可以查看keystore文件的签名信息
|
||||||
|
- 支持自动读取同目录下的`key.txt`密码文件
|
||||||
|
- 显示RSA公钥的详细信息(模数、指数等)
|
||||||
|
|
||||||
|
### 3️⃣ APK签名功能
|
||||||
|
- 支持使用keystore文件对APK进行签名
|
||||||
|
- 支持v1、v2、v3三种签名版本
|
||||||
|
- 自动查找Android SDK中的apksigner工具
|
||||||
|
|
||||||
|
## 💻 使用方式
|
||||||
|
|
||||||
|
### 方式一:图形界面(GUI)- 推荐新手使用
|
||||||
|
|
||||||
|
直接运行`main.py`,会弹出一个友好的图形界面:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
界面包含:
|
||||||
|
- 签名文件基础名称输入框
|
||||||
|
- 别名、存储密码、密钥密码输入框
|
||||||
|
- 随机字符串长度设置
|
||||||
|
- 生成数量设置
|
||||||
|
- 有效期设置
|
||||||
|
- DN信息设置(组织单位、组织名称等)
|
||||||
|
- "生成签名文件"和"查看签名信息"两个主要按钮
|
||||||
|
|
||||||
|
**操作步骤:**
|
||||||
|
1. 填写签名文件基础名称(例如:keystore)
|
||||||
|
2. 填写别名(例如:alias)
|
||||||
|
3. 填写存储密码和密钥密码
|
||||||
|
4. 可以点击"添加随机符"按钮在光标位置插入`{random}`占位符
|
||||||
|
5. 设置随机字符串长度(默认4位)
|
||||||
|
6. 设置生成数量(默认1个)
|
||||||
|
7. 设置有效期(默认10000天)
|
||||||
|
8. 可选:填写DN信息(组织单位、组织名称等)
|
||||||
|
9. 点击"生成签名文件"按钮
|
||||||
|
10. 生成的文件会保存在`keys`目录下
|
||||||
|
|
||||||
|
### 方式二:命令行模式 - 适合批量操作
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python main.py --name "keystore" --alias "alias" --storepass "password" --keypass "password" --count 1
|
||||||
|
```
|
||||||
|
|
||||||
|
**命令行参数说明:**
|
||||||
|
- `--name`: 签名文件基础名称,可包含多个`{random}`占位符
|
||||||
|
- `--alias`: 别名,可包含多个`{random}`占位符
|
||||||
|
- `--storepass`: 存储密码,可包含多个`{random}`占位符
|
||||||
|
- `--keypass`: 密钥密码,可包含多个`{random}`占位符
|
||||||
|
- `--random-length`: 每个随机字符串的长度,默认4
|
||||||
|
- `--count`: 生成数量,默认1
|
||||||
|
- `--validity`: 有效期(天),默认10000
|
||||||
|
- `--cn`: Common Name,默认Android
|
||||||
|
- `--ou`: Organizational Unit,默认Development
|
||||||
|
- `--o`: Organization,默认AndroidDev
|
||||||
|
- `--l`: Locality,默认Unknown
|
||||||
|
- `--st`: State,默认Unknown
|
||||||
|
- `--c`: Country,默认CN
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
生成一个随机密码的签名文件:
|
||||||
|
```bash
|
||||||
|
python main.py --name "keystore_{random}" --alias "alias_{random}" --storepass "pass_{random}" --keypass "pass_{random}" --count 1
|
||||||
|
```
|
||||||
|
|
||||||
|
批量生成10个签名文件:
|
||||||
|
```bash
|
||||||
|
python main.py --name "keystore_{random}" --alias "alias_{random}" --storepass "pass_{random}" --keypass "pass_{random}" --count 10
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📁 项目结构
|
||||||
|
|
||||||
|
```
|
||||||
|
apk_sign/
|
||||||
|
├── main.py # 程序入口,根据参数决定启动GUI或命令行模式
|
||||||
|
├── src/
|
||||||
|
│ ├── gui.py # 图形界面代码
|
||||||
|
│ ├── batch.py # 批量生成签名文件的核心逻辑
|
||||||
|
│ ├── keystore.py # keystore文件生成相关功能
|
||||||
|
│ ├── signature.py # 签名信息查询功能
|
||||||
|
│ ├── apksigner.py # APK签名功能
|
||||||
|
│ └── utils.py # 工具函数
|
||||||
|
├── keys/ # 生成的签名文件存放目录
|
||||||
|
└── README.md # 项目说明文档
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 技术特点
|
||||||
|
|
||||||
|
1. **纯Python开发** - 使用Python标准库和tkinter图形界面
|
||||||
|
2. **双模式支持** - 既有图形界面也有命令行接口
|
||||||
|
3. **安全性考虑** - 支持随机字符串生成,避免密码重复
|
||||||
|
4. **自动化程度高** - 自动查找Android SDK工具,自动读取密码文件
|
||||||
|
5. **信息完整** - 提供详细的签名信息和公钥信息
|
||||||
|
|
||||||
|
## 📋 安装要求
|
||||||
|
|
||||||
|
### 必需环境
|
||||||
|
- Python 3.6 或更高版本
|
||||||
|
- Java Development Kit (JDK) 8 或更高版本
|
||||||
|
- Android SDK(用于APK签名功能)
|
||||||
|
|
||||||
|
### 可选环境
|
||||||
|
- Android SDK build-tools(用于APK签名功能)
|
||||||
|
|
||||||
|
## 📝 适用场景
|
||||||
|
|
||||||
|
- Android开发者需要生成测试签名
|
||||||
|
- 需要查看APK的签名信息
|
||||||
|
- 批量生成多个不同的签名文件
|
||||||
|
- 需要对APK进行重新签名
|
||||||
|
|
||||||
|
## ❓ 常见问题
|
||||||
|
|
||||||
|
### Q1: 生成的签名文件保存在哪里?
|
||||||
|
A: 所有生成的签名文件都保存在项目根目录下的`keys`文件夹中。
|
||||||
|
|
||||||
|
### Q2: `{random}`占位符是什么意思?
|
||||||
|
A: `{random}`是一个占位符,程序会在生成时将其替换为指定长度的随机字符串。例如,如果你设置名称为`keystore_{random}`,随机长度为4,可能会生成`keystore_a3b2`这样的文件名。
|
||||||
|
|
||||||
|
### Q3: 如何查看签名信息?
|
||||||
|
A: 在GUI界面中,点击"查看签名信息"按钮,选择APK文件或keystore文件,即可查看签名指纹信息。
|
||||||
|
|
||||||
|
### Q4: 支持哪些签名版本?
|
||||||
|
A: 支持v1、v2、v3三种签名版本,默认全部启用。
|
||||||
|
|
||||||
|
### Q5: 为什么需要填写DN信息?
|
||||||
|
A: DN(Distinguished Name)信息是证书的一部分,用于标识证书所有者。虽然不是必需的,但建议填写以便更好地管理签名证书。
|
||||||
|
|
||||||
|
## 📄 许可证
|
||||||
|
|
||||||
|
请查看项目根目录下的LICENSE文件了解许可证信息。
|
||||||
|
|
||||||
|
## 🤝 贡献
|
||||||
|
|
||||||
|
欢迎提交问题和改进建议!
|
||||||
|
|||||||
Reference in New Issue
Block a user