Shell脚本查看apk签名信息

用shell写了一个查看apk签名的脚本。代码很少也很简单

支持递归目录查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash
 
#使用方法 ./getcertificate.sh xx.apk
 
get_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!"
     exit
fi
 
mkdir .temp_for_certificate
cd .temp_for_certificate
count=0
while  [ -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
     shift
done 
cd ..
rm -r .temp_for_certificate
echo  "done!"

  

使用方法:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ADB是Android开发工具包(Android Developer Tools)中的一个工具,主要用来与模拟器或连接到真机的Android设备通信。在Android应用开发中,我们常常需要使用ADB来查看应用包的签名信息,这对于应用开发和发布都非常重要。以下是ADB查看APK签名的具体步骤: 1. 首先,我们需要将要查看签名APK文件放到ADB的安装目录中,通常是根目录下的platform-tools文件夹中。 2. 然后,我们需要打开命令提示符或终端窗口(Windows系统可按住Shift键并右键点击根目录中的空白处,选择“在此处打开命令窗口”)。 3. 输入以下命令:adb shell 4. 在shell中,我们需要使用以下命令来查看所需APK文件的签名信息:(注意:在命令中,<apk-file>需要被替换为实际的APK文件名。) keytool -printcert -jarfile <apk-file> 5. 在执行上述命令后,如果APK文件已经签名,将会输出证书的详细信息,包括证书的序列号、公钥、颁发者、有效期等信息。如果APK文件没有签名,将会输出“no manifest”的信息,表示没有签名信息。 通过以上步骤,我们便可以用ADB查看APK签名信息了。这对于开发者来说非常重要,因为签名是Android应用程序的一种重要保护机制,确保应用程序不被恶意程序所替换。此外,也可以通过签名来验证应用程序的身份,确保用户下载并安装到的是正版应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值