1. 程式人生 > >一行指令,獲取APK簽名摘要,versioncode等資訊

一行指令,獲取APK簽名摘要,versioncode等資訊

 從最初的100行程式碼,縮減到目前的一半,除去註釋什麼的,程式碼縮減了一大半,

就是使用如下指令,在cmd視窗執行如下指令,將會返回簽名摘要資訊

keytool -printcert -jarfile xxx.apk# 最後是你APK的位置,好像zip壓縮也可以

下面是以FacebookAPK進行的測試,返回的結果 

完整的程式碼如下,核對兩個APK簽名是否一致,以及獲取APK versionCode資訊,一樣使用一條指令,把當前指令獲取之後,使用.read()方法,將從字串中獲取目標資訊,可以採用正則表示式獲取 所需內容

import os
import sys
import io
import re

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

# summary
def get_apk_signature(path):
    try:
        output = os.popen("keytooL -printcert -jarfile %s" % path).read()

        pattern_md5 = re.compile(r"MD5:.*")
        pattern_sha = re.compile(r'SHA\d{1,3}:.*')

        return re.findall(pattern_md5, output), re.findall(pattern_sha, output)

    except Exception as e:
        print(e)

# return versioncode
def get_versionCode(apkpath):
    output = os.popen("aapt dump badging %s" % apkpath).read()

    match = re.compile(r"versionCode='(\d+)'")
    return re.findall(match, output)

# check version_code
def check_versioncode(apk_path, apk_path1):
    version_code = []
    if apk_path.endswith(".apk") and apk_path1.endswith(".apk"):
        version_code.append(get_versionCode(apk_path))
        version_code.append(get_versionCode(apk_path1))
    else:
        return "please input right apk path"
    """
       output = 1   can update
       output = -1  can't update
       """
    if eval(version_code[0][0]) == eval(version_code[1][0]):
        return 1
    else:
        return -1

def check_signature(apk_path, apk_path1):
    result = []
    result.append(get_apk_signature(apk_path))
    result.append(get_apk_signature(apk_path1))
    """
    output = 1   same signature
    output = -1  different signature
    """
    if result[0] == result[1]:
        return 1
    else:
        return -1
if __name__ == "__main__":
    apk_path = r"C:\Users\Desktop\com.apk"
    apk_path1 = r"C:\Users\Desktop\\com1.apk"
    print(check_signature(apk_path, apk_path1))
    print(check_versioncode(apk_path, apk_path1))

相關推薦

一行指令獲取APK簽名摘要versioncode資訊

 從最初的100行程式碼,縮減到目前的一半,除去註釋什麼的,程式碼縮減了一大半, 就是使用如下指令,在cmd視窗執行如下指令,將會返回簽名摘要資訊 keytool -printcert -jarfile xxx.apk# 最後是你APK的位置,好像zip壓縮也可以 下面

android app內動態獲取apk簽名md5與keytool獲取的一致

首先使用keytool命令列獲取: cmd中使用命令列:keytool -list -keystore D:\Desktop\app_key 根據提示輸入keystore的密碼,回車就可以看到簽

android studio 如何匯出apk建立apk簽名

當使用android studio完成了專案開發後,想要將專案匯出為 apk 格式該怎麼辦,本人綜合了網上的資料,並結合自身實踐整理後得出下述可行的方法。希望對您有所幫助! 具體方法步驟如下 1、 開啟軟體並找“Build”選項,開啟生成apk簽名的視窗 即 Build---

ionic 自定義指令無法獲取繫結值ngModelController.$viewValue無法使用

最近因為專案需要,自定義了一個外來鍵指令,用於選擇model中巢狀的model,可是在指令處於編輯狀態的時候獲取ng-model初始化值的時,在link函式中通過ngModelController獲取$viewValue無法獲取到,自己便通過另一個種方式解決了這

eclipseandroid studio 簽名打包獲取MD5 SHA1(應用的簽名

引入: (1)專案的收官階段,我們比用到的簽名,打包,上傳應用商店。。。 (2)在開發的中途接入第三方的sdk時候經常需要我們的簽名的md5去獲取相應的appID(比如微信分享,登陸需要專案的應用簽名

phongap 命令列簽名apk簽名成功但是安裝時提示包解析錯誤

phongap  命令列簽名,apk簽名成功,但是安裝時提示包解析錯誤 利用phonegap  建立Android工程時 ,進行 apk 簽名時,簽名成功,但是apk安裝時提示包解析錯誤; phonegap建立工程詳細步驟,及問題解決方式: 進入工作目錄  : 建立

python實現QQ機器人(自己主動登錄獲取群消息發送群消息)

keep fine 繼續 fill iss data while [0 ssi 一次偶然的機會我看見了一個群裏的一個QQ號總是依據你所發的消息自己主動回復,當時非常感覺到奇妙。我知道能夠模擬登錄站點,沒想到居然也能模擬登錄QQ,首先自己想到的就是怎樣實現模擬登錄PC端的

自動登錄TP-LINK路由器獲取所有信息重啟等等實用方法

cti host ads date output png ict .text 只有一個 用Python自動登錄TP-LINK路由器,獲取信息,重啟等操作 思路:想獲取TP-LINK裏面的所有信息,必須首先登錄,然後提交相應的操作(比如重啟) 1、 做任何操作,首先得登錄到

微信小程序的按下擡起事件下拉選擇框的事件及點擊確定的方法函數獲取時間的方法省市區的方法。

bin img util req fun data hang UNC 日期 擡起按下的事件: 擡起事件: bind:touchstart="nanOne" 把這條屬性放到標簽裏就可以了 在JS中 nanOne: function () {     this.setDa

嵌入式Linux標準IO獲取檔案大小fgetc()定位流獲取檔案大小fteel()、rewind()/fseek()處理錯誤資訊perror()/strerror()

#include <stdio.h> #include <errno.h> #include <string.h> int get_file_size(const char *file); int main(int argc, const char *a

java w3c解析xml檔案獲取指定節點內容讀取外部配置檔案。

原始碼: package com.ys.adage.utils; import com.ys.adage.message.CodeObjectResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.

使用AddPermission獲取Android6.o許可權附上一個自定義的dialog簡單實用。

先來看看效果。。 1.新增AddPermission的依賴 gitbub地址:https://github.com/yanzhenjie/AndPermission implementation ‘com.yanzhenjie:permission:2.0.0-rc1

C#如何操控FTP獲取FTP檔案或資料夾列表獲取FTP檔案大小FTP上傳FTP刪除檔案FTP新建資料夾、刪除資料夾

C#如何操控FTP 出處:http://www.cnblogs.com/rond/archive/2012/07/30/2611295.html,http://www.cnblogs.com/rond   關於FTP的應用免不了要對FTP進行增刪查改什麼的。通過搜尋,整理和修改

切面的用法獲取切點的引數以及返回值

監聽到了impl下面的所有的方法     ps:注意   由@Before註解定義的方法會在 execution() 表示式內的方法被呼叫之前執行 由@After註解定義的方法會在 execution()表示式內的方法被呼叫

資料庫思想——從資料庫取出日期獲取日期的月份並在檢視中迴圈顯示

index.php: public function index() { $sql=db('users') ->field('rtime') ->select(); foreach($sql as

微信網頁授權獲取微信code獲取access_tocken,獲取使用者資訊

微信開發中,經常有這樣的需求:獲得使用者頭像、繫結微訊號給使用者發信息.. 那麼實現這些的前提就是授權!   1.配置安全回撥域名:   在微信公眾號請求使用者網頁授權之前,開發者需要先到公眾平臺官網中的“開發 - 介面許可權 - 網頁服務 - 網頁帳號 - 網

微信公眾號開發獲取token獲取公眾號粉絲獲取Unionid傳送客戶訊息

public class WeChatUtil { /** * 獲取token */ private static String ACCESSTOKENURL = "https://api.weixin.qq.com/cgi-bin/t

微信網頁授權獲取微信code獲取access tocken 獲取使用者資訊

微信開發中,經常有這樣的需求:獲得使用者頭像、繫結微訊號給使用者發信息.. 那麼實現這些的前提就是授權!1.配置安全回撥域名:在微信公眾號請求使用者網頁授權之前,開發者需要先到公眾平臺官網中的“開發 - 介面許可權 - 網頁服務 - 網頁帳號 - 網頁授權獲取使用者基本資訊”的配置選項中,修改授權回撥域名,值

shell中獲取字串長度的方法獲取陣列元素個數獲取陣列元素陣列遍歷

有一個變數var,其值為abbbbsdadhkajsd,設它的長度為len,則用shell獲取此字串的長度,方法如下: len=${#var} 有一個數組A=(a b c d e f) ${A[0]}代表陣列A中的第一個元素a, ${A[@]}是陣列A中的全部元素, ${#

網易頁面的網路爬蟲獲取網易頁面的所有文字資訊

#coding=utf-8 #--------------------------------------- # 程式:網易爬蟲 # 作者:ewang # 日期:2016-7-6 # 語言:Python 2.7 # 功能:獲取網易頁面中的文字資訊並儲存到