IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> android apk文件里MANIFEST.MF、CERT.SF、CERT.RSA三者的关系 -> 正文阅读

[移动开发]android apk文件里MANIFEST.MF、CERT.SF、CERT.RSA三者的关系

拿某apk举例
用7z解压*.apk,可以看到如下目录
这里有三个重要的文件MANIFEST.MF、CERT.SF、CERT.RSA,它们的用途是对apk进行签名,我们今天就来分析三者之间的关系

1.?MANIFEST.MF

MANIFEST.MF文件内容是

Manifest-Version: 1.0
Created-By: 1.0 (Android SignApk)

Name: META-INF/services/javax.ws.rs.ext.MessageBodyWriter
SHA-256-Digest: ****AaoOiGNRVH9r6iGb5fv0s2ODOAIT6dwnkv***fI=

Name: *
SHA-256-Digest: *

......

SHA-256-Digest的值是直接对该文件做sha256计算的结果。

2. CERT.SF

CERT.SF文件的内容是:

Signature-Version: 1.0
X-Android-APK-Signed: 2
SHA-256-Digest-Manifest: ****Ei3aTaMbAXMg7Rr304ocINfE6wy90Mlsxu***2Q=
Created-By: 1.0 (Android SignApk)

Name: META-INF/services/javax.ws.rs.ext.MessageBodyWriter
SHA-256-Digest: ****dbjojNgoyNv+KK8wLZARBNtHmq8y4XVtRQ***yk=

Name: *
SHA-256-Digest: *

......

CERT.SF文件的内容由来:
SHA-256-Digest:后面的内容是MANIFEST.MF对应行的连接前后共三行做摘要而来。
可以使用如下python代码

用Python做哈希之HMAC_SHA*_BASE64_晓翔仔的博客-CSDN博客在很多场景下,需要生成难以猜测的字符串,会采用选取一个key,将原code用hmac sha1制作成一个160比特的哈希并BASE64编码的形式。这里便是一个python代码。pytho版本3.9。推荐使用VSCODE调试python,可以一间安装pythonpython代码:import hmacimport base64from hashlib import sha1def hash_hmac_sha1_base64(key, code, sha1): hma.https://blog.csdn.net/qq_33163046/article/details/120985360

令test_str取值

test_str = 'Name: META-INF/services/javax.ws.rs.ext.MessageBodyWriter\r\nSHA-256-Digest: ****AaoOiGNRVH9r6iGb5fv0s2ODOAIT6dwnkv***fI=\r\n\r\n'

设置method?

hash_method = "hash256_base64"

可以计算出结果。

hash256 base64 is  ****dbjojNgoyNv+KK8wLZARBNtHmq8y4XVtRQ***yk=

3. CERT.RSA

CERT.RSA文件包括两个部分“certificat + signature”


3.1 certificate:


ERT.RSA更改后缀为.p7b,就可以打开查看公钥了。选择detail,点击copytofile后选择第二项“base64 encoded”,可以导出XX.cer的证书文件。

?

openssl x509 -in XX.cer -pubkey ?-noout > XX.pem 可以产生公钥的16进制字符串
可以用以下命令看到证书里公钥

ubuntu@ip-172-*-*-20:~/work$ openssl x509 -in pubkey.cer -pubkey  -noout > pubkey.pem
ubuntu@ip-172-*-*-20:~/work$ cat pubkey.pem
-----BEGIN PUBLIC KEY-----
MIIB*********************************************
-----END PUBLIC KEY-----

3.2 signature:


经过二进制文件比对,同一个目录下两个apk证书相同,最后256bytes不同,很显然这是 RSA(2048)私钥加密后的签名,加密的什么呢?加密的是CERT.SF文件。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 08:57:51  更:2021-11-26 08:59:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:56:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码