至少有三种方法可以获得像签名时间这样的东西。有第一种是使用keytool:

$ keytool -printcert -jarfile sample.apk

Signer #1:

Signature:

Owner: CN=GService inc, OU=G Service inc, O=G, L=New York, ST=New York, C=US

Issuer: CN=GService inc, OU=G Service inc, O=G, L=New York, ST=New York, C=US

Serial number: 6f30f864

Valid from: Thu Dec 17 04:12:27 PST 2015 until: Wed Dec 12 04:12:27 PST 2035

Certificate fingerprints:

MD5: 4D:36:65:14:59:5B:74:8F:2C:9D:92:30:F6:1D:90:8A

SHA1: A8:85:7B:72:4C:EE:55:83:09:D5:AC:5D:1A:02:80:C5:F6:83:2B:40

SHA256: 04:A7:24:9F:35:D5:8D:7E:F6:0F:73:81:35:5D:23:16:0D:FC:EA:61:C4:15:61:CC:06:8D:36:D9:C6:55:12:B7

Signature algorithm name: SHA256withRSA

Version: 3

Extensions:

#1: ObjectId: 2.5.29.14 Criticality=false

SubjectKeyIdentifier [

KeyIdentifier [

0000: C1 C5 19 32 72 47 46 C5 01 CC 4B AF 12 40 3D D2 [email protected]=.

0010: B5 52 45 5E .RE^

]

]

这可以让你的证书已经创建了可能的时间:Thu Dec 17 04:12:27 PST 2015。

二是使用jarsigner:

$ jarsigner -verify -verbose sample.apk

sm 4284 Wed Apr 13 11:03:18 PDT 2016 AndroidManifest.xml

sm 9193 Wed Apr 13 11:03:18 PDT 2016 res/drawable-hdpi-v4/ic_launcher.png

sm 5057 Wed Apr 13 11:03:18 PDT 2016 res/drawable-mdpi-v4/ic_launcher.png

sm 14068 Wed Apr 13 11:03:18 PDT 2016 res/drawable-xhdpi-v4/ic_launcher.png

sm 1408 Wed Apr 13 11:03:18 PDT 2016 resources.arsc

sm 20388 Wed Apr 13 11:03:18 PDT 2016 classes.dex

s 523 Wed Apr 13 11:03:18 PDT 2016 META-INF/MANIFEST.MF

576 Wed Apr 13 11:03:18 PDT 2016 META-INF/CERT.SF

1368 Wed Apr 13 11:03:18 PDT 2016 META-INF/CERT.RSA

s = signature was verified

m = entry is listed in manifest

k = at least one certificate was found in keystore

i = at least one certificate was found in identity scope

这让你似乎是在APK中的所有条目的最后修改时间。他们在这个APK中都是一样的,但他们有时会有所不同。所有最后修改时间可能必须大于“有效期”的日期。

第三个选项是用Java编程方式使用JarFile:

private static void printCertInfo(String jarPath) throws Exception {

// verify = true is key here

JarFile apkFile = new JarFile(jarPath, true);

JarEntry androidManifestEntry = apkFile.getJarEntry("AndroidManifest.xml");

if (androidManifestEntry == null) {

System.err.println("APK has no AndroidManifest.xml");

System.exit(-1);

}

// Need to fully read stream to verify cert

System.out.println("Android manifest probably signed: " + androidManifestEntry.getLastModifiedTime());

ByteStreams.copy(apkFile.getInputStream(androidManifestEntry), ByteStreams.nullOutputStream());

// Assuming only signed with a single cert (not always true, but you get the idea)

X509Certificate cert = (X509Certificate) androidManifestEntry.getCertificates()[0];

System.out.println("Android manifest cert probably created: " + cert.getNotBefore());

System.out.println("Full cert: " + cert.toString());

}

你可能会认为你可以使用androidManifestEntry.getCodeSigners()[0].getTimestamp()但它总是null,我不知道它是什么。上面的代码给出了这样的输出:

Android manifest probably signed: 2016-04-13T18:03:18Z

Android manifest cert probably created: Thu Dec 17 04:12:27 PST 2015

Full cert: [

[

Version: V3

Subject: CN=GService inc, OU=G Service inc, O=G, L=New York, ST=New York, C=US

Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

// ** SNIP -- you get the idea **

apk获取服务器时间文件名,如何根据APK文件获取应用程序签名时间相关推荐

  1. ubuntu下linux:curl使用ftp获取服务器上指定目录的所有文件集合以及下载

    curl使用ftp获取服务器上指定目录的所有文件集合以及下载 直接编译可用,注意修改测试main函数内的字符串,注释我觉得写的挺详细了,跑不起来的评论区可问 头文件 #ifndef FTP_DOWNL ...

  2. 获取服务器信息目录失败是怎么回事,获取服务器列表失败...(是怎么回事)附解决方法...

    获取服务器列表失败...这种是什么错误,是怎么回事呢?我相信很多成人都遇到过这种错误,无论你是玩家还是开的GM,既然有问题,那么比如就会有解决的方法,今天我们就说说获取服务器列表失败...(是怎么回事 ...

  3. 第五人格获取服务器信息失败,第五人格正在获取版本信息更新失败怎么办

    第五人格正在获取版本信息怎么回事?相信最近很多玩家在进入第五人格游戏的时候一直会卡在一个显示"正在获取版本信息"的界面,而且在获取一段时间后再显示获取更新失败,请重新尝试,那么这个 ...

  4. 第五人格获取服务器信息失败,第五人格正在获取版本信息解决办法 [图]

    第五人格正在获取版本信息怎么回事?相信最近很家在进入第五人格游戏的时候一直会卡在一个显示"正在获取版本信息"的界面,而且在获取一段时间后再显示获取更新失败,请重新尝试,那么这个是什 ...

  5. 熹妃传获取服务器信息,熹妃传阅历怎么获取_熹妃传阅历获取攻略_手心游戏

    熹妃传阅历是用来升级技能的,所点技能越高,阅历消耗得越多.熹妃传阅历不够了怎么办?阅历怎么获取呢?接下来就由小编为大家带来熹妃传阅历获取攻略. 熹妃传阅历获取攻略 1.当差,让随从当差抄经来获取阅历. ...

  6. php 获取 ios udid,苹果ios通过描述文件获取udid

    苹果ios通过描述文件获取udid 需要准备的东西 1,安装描述文件只支持https的回调地址,所以需要申请https域名 2,描述文件签名,不安装也可,只要能接受红色的字 步骤: 1,准备xml文件 ...

  7. python获取ftp所有文件名_在Python中获取最新的FTP文件夹名称

    小编典典 如果您的FTP服务器支持MLSD命令,则解决方案很简单: 如果您要根据修改时间戳记做出决定: entries = list(ftp.mlsd()) Only interested in di ...

  8. 九阴真经 正在获取服务器列表信息,九阴真经生活心得高效获取指南

    九阴真经中生活职业是比较难升级的,但是生活职业又是游戏中必不可少的一个部分.下面我们将为玩友们提供一些技巧,帮你最大效率的刷生活心得! 前言:对于生活职业的修炼我想大家最烦的就是刷生活心得了吧,制造系 ...

  9. php 框架获取服务器,Thinkphp 框架基础之源码获取、环境要求与目录结构分析

    本文实例讲述了Thinkphp 框架基础之源码获取.环境要求与目录结构.分享给大家供大家参考,具体如下: 获取ThinkPHP 获取ThinkPHP的方式很多,官方网站(http://thinkphp ...

最新文章

  1. Matplotlib可视化散点图、配置X轴为对数坐标、并使用线条(line)连接散点图中的数据点(Simple Line Plot with Data points in Matplotlib)
  2. Java字符串的10大热点问题盘点
  3. css居中无效的解决办法
  4. 介绍两款WordPress文章转移插件
  5. 【SICP练习】140 练习3.71
  6. [转]ListView滚动到底部自动加载数据
  7. 15个最佳jQuery的翻页书效果的例子
  8. 使用Swagger辅助开发Fabric Application的Web API
  9. 通过GUID生成可持久化的PID
  10. CHAPTER 28 VMX SUPPORT FOR ADDRESS TRANSLATION
  11. PMP项目管理学习心得分享
  12. 【Java】菜鸟教程Java基础测试刷题笔记
  13. Pointer Generator Network 和 PEGASUS
  14. 一元二次方程虚根求法java_请问怎么用C语言求一元二次方程的虚根
  15. linux下 不显示光驱,Windows7电脑下不显示光驱盘符的解决方法
  16. 运动世界校园【夜神模拟器——步频脚本一键导入】
  17. Java操作Word自动生成目录
  18. 戴森史上最轻吸尘器全球首发,搭配吸头后仅重1.5千克
  19. 微赞html写入,微赞WZ-后台一键更新-授权
  20. Java选择语句练习

热门文章

  1. 布里斯托大学计算机科学专业排名,2021年布里斯托大学世界及专业排名 多个领域位居全英前十!...
  2. hujingwei oracle_Oracle收缩表空间
  3. java二嗨租车项目_Java入门第二季6-1租车项目代码
  4. python polar函数_Python可视化很简单,可是你会吗?python绘制饼图、极线图和气泡图,让我来教教你吧,一文教会!!!...
  5. android webview sql database,websql在openDatabase报version mismatch错误,请问怎么解决?
  6. vscode python第三方库检测_VSCode中使用Pylint检查python代码
  7. android 360加固 例子,[原创]利用VirtualApp实现360加固的soHook简单例子
  8. php 新浪url,PHP URL函数详解
  9. Win32ASM学习[21]:宏汇编(1)
  10. 数组中出现次数超过一半的数