Android开发笔记之《特斯拉-Tesla 代码分析》
转载请注明出处
一、反编译APK文件,查看包结构
// Android库,不多解释
android.support // HttpClient 4.1 repackaged for Android
// http://www.findbestopensource.com/product/httpclientandroidlib
// https://github.com/surespot/httpclientandroidlib
ch.boye.httpclientandroidlib
// 国内用百度地图
com.baidu.*
vi.com.gdi.bgl.android.java // 谷歌的广告系统和移动服务系统
com.google.ads.*
com.google.android.gms // 主要功能实现部分
com.teslamotors.api // 封装了http接口
com.teslamotors.service // 数据交互服务
com.teslamotors.client // 对service接口的封装,供上层的调用
com.leslamotors.data // 控制指令和状态数据的封装, parcel
com.teslamotors.tesla // 主activity,login activity,receiver等实现
com.teslamotors.tesla.fragments // 各种界面的fragment实现
com.teslamotors.util // 零零散散,连工具类都算不得
com.teslamotors.views // 自定义view
二、assets目录下的密钥及证书文件
1. sapi_cert.cer : (百度地图使用)
InputStream ip = this.b.getResources().getAssets().open("sapi_cert.cer");
Certificate certificate = ((CertificateFactory)localObject4).generateCertificate((InputStream)ip);
((InputStream)ip).close();
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
((KeyStore)ks).load(null, null);
((KeyStore)ks).setCertificateEntry("ca", (Certificate)certificate);
2. trust.keystore,在代码中发现以下内容,这是赤裸裸的密钥吗?
private static final java.lang.String TRUST_ASSET = "trust.keystore";
private static final java.lang.String TRUST_PASSWD = "qXD5wUA3qVySNr39Nc8sFEtKXUr3Mg";
Aliase : mykey
加密算法 : RSA,
证书标准 : X.509 公钥:
30 82 01 22 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 03
82 01 0f 00 30 82 01 0a 02 82 01 01 00 b6 e0 2f c2 24 06 c8
6d 04 5f d7 ef 0a 64 06 b2 7d 22 26 65 16 ae 42 40 9b ce dc
9f 9f 76 07 3e c3 30 55 87 19 b9 4f 94 0e 5a 94 1f 55 56 b4
c2 02 2a af d0 98 ee 0b 40 d7 c4 d0 3b 72 c8 14 9e ef 90 b1
11 a9 ae d2 c8 b8 43 3a d9 0b 0b d5 d5 95 f5 40 af c8 1d ed
4d 9c 5f 57 b7 86 50 68 99 f5 8a da d2 c7 05 1f a8 97 c9 dc
a4 b1 82 84 2d c6 ad a5 9c c7 19 82 a6 85 0f 5e 44 58 2a 37
8f fd 35 f1 0b 08 27 32 5a f5 bb 8b 9e a4 bd 51 d0 27 e2 dd
3b 42 33 a3 05 28 c4 bb 28 cc 9a ac 2b 23 0d 78 c6 7b e6 5e
71 b7 4a 3e 08 fb 81 b7 16 16 a1 9d 23 12 4d e5 d7 92 08 ac
75 a4 9c ba cd 17 b2 1e 44 35 65 7f 53 25 39 d1 1c 0a 9a 63
1b 19 92 74 68 0a 37 c2 c2 52 48 cb 39 5a a2 b6 e1 5d c1 dd
a0 20 b8 21 a2 93 26 6f 14 4a 21 41 c7 ed 6d 9b f2 48 2f f3
03 f5 a2 68 92 53 2f 5e e3 02 03 01 00 01
附上解析代码:
public static void parseTeslaKeystore(Context context) {
String password = "qXD5wUA3qVySNr39Nc8sFEtKXUr3Mg";
String fileName = "tesla_trust.keystore";
InputStream inputStream = getAssetFile(context, fileName);
KeyStore keystore = getKeystore(inputStream, password);
echoKeystore(keystore);
}
private static KeyStore getKeystore(InputStream inputStream, String password) {
try {
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(inputStream, password.toCharArray());
inputStream.close();
return keystore;
} catch (IOException e) {
e.printStackTrace();
} catch (CertificateException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
}
return null;
}
private static InputStream getAssetFile(Context context, String fileName) {
Assert.assertNotNull(fileName);
InputStream inputStream = null;
try {
inputStream = context.getAssets().open(fileName);
return inputStream;
} catch (IOException e) {
e.printStackTrace();
}
return inputStream;
}
Android开发笔记之《特斯拉-Tesla 代码分析》的更多相关文章
- Android开发笔记之《Window下安装Ubuntu双系统,Grub无法显示Window选项》
解决方法是: 在terminal里面输入: sudo update-grub 会找到windows的grub 重启电脑就可以了.
- Windows 下安装 Ubuntu 双系统(更新)
Windows + Ubuntu 16.04 ---> 双系统 前言:本篇文章是对之前文章的更新,更新的主内容是把原来用手机拍摄的图片换成了虚拟机的截图,以及对磁盘划分的新的见解和一些使用感受, ...
- 怎样在Win10下安装ubuntu双系统
Win10系统下安装ubuntu系统 安装前准备: 概念 在动手之前,一定要先了解双系统.系统引导.分区这3个概念,这样才能理解安装步骤,应对安装过程中的意外情况. 双系统 双系统就是开机之后,会有一 ...
- win8下安装ubuntu双系统
终于成功在win8下安装成功ubuntu13.10, 安装方法来源于http://forum.ubuntu.org.cn/viewtopic.php?t=446557 下面的文件是该楼主的将安装ubu ...
- [Linux]三种方案在Windows系统下安装ubuntu双系统(转)
在学习linux的过程中,ubuntu无疑是初学者的最佳选择. 下面来列举给Windows系统安装ubuntu双系统的三种方法. 一.虚拟机安装(不推荐) 使用工具:Vmware 如果不是因为迫不得已 ...
- 【学习总结】win7下安装Ubuntu双系统的日常
参考文献 1 - [双系统中删除linux(win7适用) ] 2 - [win7(32位)U盘安装.卸载ubuntu(64位)双系统] 3 - [Windows下安装Ubuntu 16.04双系统] ...
- win7下安装ubuntu双系统的方法及心得体会(ps:要死好几回的节奏)
1.win7下安装ubuntu系统后,可以很好进入ubuntu系统 但是进不去win7,开机有win7选项,但是选择后不管用 方法思路:各种修复win7的mbr 我的问题是:在winpe中发现,根本看 ...
- Win7下安装Ubuntu双系统常见问题
[转自己以前的文章] 导航: ● win7下硬盘安装ubuntu常见问题 ● win7下u盘安装ubuntu常见问题 吐槽: Ubuntu的安装花了我将近15个小时,网上常见的.不常见的问题基本我都 ...
- 学习笔记42—Win7下安装Linux双系统
1.下载Linux镜像:http://mirrors.163.com/ubuntu-releases/18.04.1/ 方法一: 1.用软通牒软件将Linux的镜像写入空的优盘中, 具体如下: 1) ...
- 三种方案在Windows系统下安装ubuntu双系统
一.虚拟机安装(不推荐) 使用工具:Vmware 如果不是因为迫不得已,比如Mac OS对硬件不兼容,Federa安装频繁出错,各种驱动不全等等,不推荐使用虚拟机安装. 个人感觉这是一种对操作系统的亵 ...
随机推荐
- Lucene 单域多条件查询
在Lucene 中 BooleanClause用于表示布尔查询子句关系的类,包括:BooleanClause.Occur.MUST表示and,BooleanClause.Occur.MUST_NOT表 ...
- ASP.NET MVC 5 05 - 视图
PS: 唉,这篇随笔国庆(2015年)放假前几天开始的,放完假回来正好又赶上年底,公司各种破事儿. 这尼玛都写跨年了都,真服了.(=_=#) 好几次不想写了都. 可是又不想浪费这么多,狠不下心删除.没 ...
- Maven:jar 下载相关的问题
在使用Maven下载jar包时,会遇到一些问题,如何解决他们呢? 1.仓库里有jar 包,更新Maven时报仓库里找不到jar包的错误 这个问题,时常在版本有大的变动时出现.(例如:新增加了一些fea ...
- linux分区机制(MBR GPT)简介
- Spring 代理模式及AOP基本术语
一.代理模式: 静态代理.动态代理 动态代理和静态代理区别?? 解析:静态代理需要手工编写代理类,代理类引用被代理对象. 动态代理是在内存中构建的,不需要手动编写代理类 代理的目的:是为了在原有的方法 ...
- 使用JavaMail发送邮件
一.邮件的相关概念 邮件协议.主要包括: SMTP协议:Simple Mail Transfer Protocol,即简单邮件传输协议,用于发送电子邮件 POP3协议:Post Office Prot ...
- PHP基础语法
PHP:超级文本预处理器一,PHP的四对标记 <?php ?> <script language="php"> <script> ...
- 大众点评cat系统的搭建笔记
项目地址:https://github.com/dianping/cat 编译步骤: 这个项目比较另类,把编译需要的jar包,单独放在git分支mvn-repo里了,而且官方文档里给了一个错误的命令提 ...
- [LeetCode] Partition Equal Subset Sum 相同子集和分割
Given a non-empty array containing only positive integers, find if the array can be partitioned into ...
- [LeetCode] Minimum Size Subarray Sum 最短子数组之和
Given an array of n positive integers and a positive integer s, find the minimal length of a subarra ...