標籤:
用shell寫了一個查看apk簽名的指令碼。代碼很少也很簡單
支援遞迴目錄查詢
#!/bin/bash#使用方法 ./getcertificate.sh xx.apkget_signature() { path=`jar tf "$1" | grep RSA` #尋找apk中RSA檔案 jar xf $1 $path #把RSA檔案解壓出來 keytool -printcert -file $path #查看指紋認證 rm -r $path #刪除之前解壓的檔案}mypath=`pwd`filepath=""if [ -d .temp_for_certificate ]then echo ".temp_for_certificate is exist,remove it first!" exitfimkdir .temp_for_certificatecd .temp_for_certificatecount=0while [ -n "$1" ] do if [ `expr substr "$1" 1 1` = "/" ] #絕對路徑 then filepath="$1" else #相對路徑 filepath="$mypath/$1" fi if [ -d $filepath ] then all_apk=`find $filepath -name "*.apk"` for apk_path in $all_apk do count=$[$count+1] echo "(#$count) "`basename "$apk_path"`":" filepath=$apk_path get_signature "$filepath" echo "-----------------------------------------------------------" done else count=$[$count+1] echo "(#$count) "`basename "$1"`":" get_signature "$filepath" echo "-----------------------------------------------------------" fi shiftdone cd ..rm -r .temp_for_certificateecho "done!"
(將其儲存到檔案,命名為getcertificate.sh)
使用方法:
Leo-MBP:a kangyi$ ./getcertificate.sh test1.apk test2.apk
輸出:
(#1) Superuser.apk:
所有者:CN=Adam Shanks, OU=Android, O=SoupCoconut, L=FWB, ST=Florida, C=US
簽發人:CN=Adam Shanks, OU=Android, O=SoupCoconut, L=FWB, ST=Florida, C=US
序號:4c614057
有效期間: Tue Aug 10 20:04:39 CST 2010 至Sat Dec 26 20:04:39 CST 2037
認證指紋:
MD5:D2:42:30:AA:BE:81:62:30:FE:B4:0E:F1:CF:11:B0:C0
SHA1:5F:11:3F:C2:C2:0A:7C:9B:D9:28:19:22:6A:32:A1:90:4B:75:EF:8B
簽名演算法名稱:SHA1withRSA
版本: 3
--------------------------------------------
(#2) Skype3.0.apk:
所有者:CN=Skype, OU=Mobile Client, O=Skype, L=London, C=GB
簽發人:CN=Skype, OU=Mobile Client, O=Skype, L=London, C=GB
序號:4c0e1962
有效期間: Tue Jun 08 18:20:18 CST 2010 至Fri Jul 20 18:20:18 CST 2040
認證指紋:
MD5:37:5F:1A:56:C5:2A:51:FF:35:F3:6C:C5:A6:69:54:EC
SHA1:77:18:07:D1:B8:41:4D:69:89:E7:D8:EF:0B:97:97:24:3B:93:1F:95
簽名演算法名稱:SHA1withRSA
版本: 3
--------------------------------------------
指令碼也支援遞迴目錄,比如
Bash代碼: Leo-MBP:a kangyi$ ./getcertificate.sh app/A.apk app/Dir1 app/Dir2/
查看簽名也可以使用jarsigner
Bash代碼 :jarsigner -verify -verbose -certs Superuser.apk
jarsigner詳細用法詳見協助
原文地址:http://su1216.iteye.com/blog/1884363
Shell指令碼查看apk簽名資訊