apk中籤名文件探究(*.SF, *.MF,*.RSA)

文章來源:

作者:嘟嘟小灰
鏈接:https://www.jianshu.com/p/e07da93acf98
來源:簡書

1、取一個apk,然後進行不同簽名,生成1.apk、2.apk,並提取META-INF裏面的文件進行比對

在這裏插入圖片描述

def calc_sha1(data):
    sha1obj = hashlib.sha1()
    if not isinstance(data, (bytearray, bytes)):
        with open(data, 'rb') as f:
            sha1obj.update(f.read())
    else:
        sha1obj.update(data)
    print(data)
    return sha1obj.digest(), sha1obj.hexdigest()
2、 *.MF文件比對,通過python排序

在這裏插入圖片描述
發現簽名不一樣,但裏面的文件只要不改變,SHA1-Digest值是一樣的,這裏的SHA值是文件的hash值做base64
如:classes.dex

在這裏插入圖片描述

digest     : b'\x036\xdb9v\xed\x98\x9d\x0c\x86\xed\x13\xa0\x9e\x7f\xc3.\x1c\xe7H'
hexdigest  : 0336db3976ed989d0c86ed13a09e7fc32e1ce748
SHA1-Digest: b'AzbbOXbtmJ0Mhu0ToJ5/wy4c50g=\n'
3、 *.SF 與第二點是一樣的
3.1 第一個 SHA1-Digest-Manifest是對文件*.MF的SHA後再Base64

在這裏插入圖片描述

digest     : b's\xfe\x9a\xc6\x94\x9e\xc8\x16\x00XL&\x8d\x08\x8e\x8d3 \xda\xc8'
hexdigest  : 73fe9ac6949ec81600584c268d088e8d3320dac8
SHA1-Digest: b'c/6axpSeyBYAWEwmjQiOjTMg2sg=\n'
3.2 其他的值是每一項的值做SHA後再Base64

如:
在這裏插入圖片描述

b'Name: classes.dex\r\nSHA1-Digest: AzbbOXbtmJ0Mhu0ToJ5/wy4c50g=\r\n\r\n'
digest     : b'\x0e\x1c\xb4D\xf7G\xd1\x0b\xa1\xc2\x8cT\x14\xee\xe23-\xc01\xc4'
hexdigest  : 0e1cb444f747d10ba1c28c5414eee2332dc031c4
SHA1-Digest: b'Dhy0RPdH0QuhwoxUFO7iMy3AMcQ=\n'
4、*.RSA

這裏保存了簽名的相關信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章