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

至少有三种方法可以获得像签名时间这样的东西。有第一种是使用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 **

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385728.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大牛手把手教你!2021大厂Java面试经历

我听到的一些发声 你们赚的钱已经可以了: 我一个发小是做土木工程的,上海大学博士,参与很多著名建筑的工程,但是从薪资上看,还不如一些稍微像样的公司的6年多的高级开发。为什么?这就是行业的红利&#xf…

登录华为账户显示无法连接服务器,App提示连接不到服务器

App提示连接不到服务器 内容精选换一换本章节指导您使用MongoDB客户端,通过弹性云服务器内网方式连接GaussDB(for Mongo)集群实例。操作系统使用场景:弹性云服务器的操作系统以Linux为例,客户端本地使用的计算机系统以Windows为例。目标实例必…

大牛深入讲解!9次Java面试经验总结

阿里巴巴Java岗面试题分享 1.HashMap 的内部结构?内部原理?和 HashTable 的区别,假如发⽣了 hash 碰撞,如何设计能让遍历效率⾼? 2.讲一讲讲讲 ConcurrentHashMap吧。 3.讲一下JVM虚拟机内存结构,以及它…

ajax不支持post,AJAX不能正确发送POST变量

你sendMessage功能是不完全正确 - 看看这看看它是否有帮助。在最初检查的receiveReq状态不参照实例化XMLHttpRequest对象sendReq功能 - 也,请求绝不会因为open和send电话是代码内发送,即使它已经使用sendReq检查响应的块...var sendReq getXmlHttpReque…

大牛深入讲解!最经典的HashMap图文详解

栈和队列部分(10) 设计一个有getMin功能的栈(士★☆☆☆) 由两个栈组成的队列(尉★★☆☆) 如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆) 猫狗队列(士★☆☆☆&am…

服务器几种系统,服务器有几种操作系统

服务器有几种操作系统 内容精选换一换公共镜像是由华为云官方提供的镜像,适配了弹性云服务器或裸金属服务器兼容性并安装了必要的初始化插件,所有用户均可使用,涵盖大部分主流操作系统。本文介绍公共镜像类型和公共镜像特点。华为云提供的公共…

Java面试题2021,文末有福利

正文 做了 3~5 年编程开发,你已经积累了不少项目经验,扩宽了技术广度,也许已发力成为团队管理者。到了这个阶段,大家却常有这种感受:感觉自己卡在瓶颈进步缓慢,技术水平很难像早期一样实现大幅突破&#x…

移动端上传大文件到服务器,android上传大文件到服务器地址

android上传大文件到服务器地址 内容精选换一换安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器。例如QQ.exe。在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器。例如QQ.exe。本地磁盘映…

moxa服务器udp协议设定,Moxa Nport串口服务器漏洞全球统计报告(Moxa Nport Vulnerability Global Census Report)...

ICS-ALERT-16-099-01ICS-CERT在4月8日发布了ICS-ALERT-16-099-01,报告中指出了Moxa NPort model 6110, firmware Version 1.13,Moxa NPort model 5110, firmware Version 2.5,Moxa NPort models 5130 and 5150, firmware Version 3.5, andMoxa NPort models 6150, 6…

Java面试题中高级,java引用数据类型和基本数据类型区别

4步套路,解决动态规划问题 1、确定问题状态 提炼最后一步的问题转化 2、转移方程,把问题方程化 3、按照实际逻辑设置初始条件和边界情况 4、确定计算顺序并求解 结合实例感受下: 你有三种硬币,分别面值2元,5元和7…

小企业服务器设置位置,小企业服务器配置

小企业服务器配置 内容精选换一换使用企业主机安全服务,您将可以同时使用消息通知服务接收告警通知信息,使用统一身份认证服务管理用户权限,利用云审计服务审计用户行为。企业主机安全服务的Agent软件可安装在华为云ECS服务器/BMS服务器/HECS…

Java面试题及答案2020,kafka教程分享

三面头条 面试岗位是后台研发工程师,地点选择了上海,通过大佬内推,跳过死亡笔试,加上疫情期间,所以直接视频面,从3点开始,断断续续到晚上8点结束。 一共三轮技术面试,每一轮都要写代…

Java面试题及答案2020,安卓java编程软件app

一面(一个半小时) 首先自我介绍 了解Web层开发?数据库索引了解么?聚簇索引,非聚簇索引?索引分类? 了解数据库都由哪些引擎?分别有什么区别和使用场景? 了解分布式&…

Java面试题及答案,java对外提供接口

Redis简介 Redis与Memcached区别Redis优点Redis缺点 Redis数据类型 StringHashListSetSorted set Redis事务 MULTI&EXEC(原子执行,并非互斥)WATCH&UNWATCH(原子执行乐观锁) Redis分布式锁 排他锁 SETNX带有…

Java面试题及答案,我把所有Java框架整理成了PDF

第1章 初识Redis 初识Redis,带领读者进入Redis的世界,了解它的前世今生、众多特性、应用场景、安装配置、简单使用,最后对Redis发展过程中的重要版本进行说明,可以让读者对Redis有一个全面的认识。 1.1Redis特性 1.2Redis使用场景…

Java面试题库,java四舍五入保留小数点后两位输出

第5章 持久化 持久化,Redis的持久化功能有效避免因进程退出造成的数据丢失问题,本章首先介绍RDB和AOF两种持久化配置和运行流程,其次对常见的持久化问题进行定位和优化,最后结合Redis常见的单机多实例部署场景进行优化。 5.1 RDB …

Java面试题库,java核心技术第十版下载

阿里巴巴篇 1.扎实的计算机专业基础,包括算法和数据结构,操作系统,计算机网络,计算机体系结构,数据库等2.具有扎实的Java编程基础,理解IO、多线程等基础框架3.熟练使用Linux系统的常用命令及shell有一定了…

Java面试题整理,java常用排序算法图解

微服务架构 ①微服务概念: ②Spring Cloud微服务架构: 海量数据处理 ①:经典的海量数据处理面试题 高可用架构 ①基于 Hystrix 实现高可用: ②限流: ③熔断: 高并发架构 ①消息队列: ②搜索…

Java面试题2020,单击更改以将java安装到其他文件夹

工作的前两年 如果你不能拼爹,或者不想拼爹,最好的方法是拼实力。 合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。 所以,你必须要从基层做起。当然,所谓的基…

Java面试题中高级,javaif循环语句

微服务是什么 微服务起源于2005年Peter Rodgers博士在云端运算博览会提出的微Web服务(Micro-Web-Service),根本思想类似于Unix的管道设计理念。2014年,由Martin Fowler 与 James Lewis共同提出了微服务的概念,定义了微服务架构风格是一种通过…