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安装频繁出错,各种驱动不全等等,不推荐使用虚拟机安装. 个人感觉这是一种对操作系统的亵 ...
随机推荐
- Android中的自定义控件(一)
自定义控件是根据自己的需要自己来编写控件.安卓自带的控件有时候无法满足你的需求,这种时候,我们只能去自己去实现适合项目的控件.同时,安卓也允许你去继承已经存在的控件或者实现你自己的控件以便优化界面和创 ...
- node.js+socket.io配置详解
由于我是在win7的环境下,在这里就以win7系统为例进行讲解了. 首先需要在nodejs官网下载最新版的node.js,下载完毕直接安装即可,安装成功后在cmd命令行中执行node指令,如下结果就说 ...
- 【转】用JitPack发布开源库时附加文档和源码
来自:http://www.gcssloop.com/course/jitpack-sources-javadoc 用JitPack发布开源库时附加文档和源码 很早之前写过一篇用JitPack发布An ...
- Laravel大型项目系列教程(三)之发表文章
Laravel大型项目系列教程(三)之发表文章 一.前言 上一节教程中完成了用户管理,这节教程将大概完成发表Markdown格式文章并展示的功能. 二.Let's go 1.数据库迁移 文章模块中我们 ...
- Unity、c#中的拓展方法讲解
很早以前看过这个东西,但是没有真正的用到过,希望之后会用到上面的方法, 大概的意思是这样的c#中尤其在用Unity的时候,已有的框架提供给我们一些固定的方法,但是有时我们想对这些方法进行修改, 这时我 ...
- Hibernate 系列 07 - Hibernate中Java对象的三种状态
引导目录: Hibernate 系列教程 目录 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久化的角度关注应用对象的生命周期. 持久化声明周期是Hi ...
- PHP相关笔记
扩展包(相关链接):https://packagist.org/: 插件postman主要应用于web开发时get.post请求时查看其响应:
- centos6.5无法访问网络
1.在network Adapter选中,右侧是否是选中为NAT 2.打开网络和共享中心-->更改适配器设置,VMnet8和VMnet1是否是自动获取了IP,自动获取ip连接上后 3.右击本地连 ...
- ubuntu无限卡在logo界面
ubuntu默认的是lightdm显示管理器,GDM就是Gnome display manager,lightdm是ubuntu开发的代替gdm的显示管理器.如果ubuntu进不去图形界面,除了重新安 ...
- 使用httpclient发送get或post请求
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建 ...