Android加密通信防抓包,[原创]基于Taintdroid思想的android ssl\tsl保密通信抓包研究(未成功,分享一下思路)...

[旧帖]

[原创]基于Taintdroid思想的android ssl\tsl保密通信抓包研究(未成功,分享一下思路)

0.00元

2014-5-12 22:07

1565

[旧帖]

[原创]基于Taintdroid思想的android ssl\tsl保密通信抓包研究(未成功,分享一下思路)

0.00元

2014-5-12 22:07

1565

这篇文章我先在CSDN上发了,看雪上没有权限发帖,就将就着吧。

最近在研究https加密通信的android端的数据包抓取研究

有两个思路:

1.通过taintdroid在相应的https请求java调用接口处打印log日志方法;编写https请求demo apk,验证日志输出

2.通过源码级工具调试,在https请求相应地方下断点,进行数据追踪

目前,研究taintdroid基础上,做了一些尝试:

1.首先熟悉下载和编译taintdroid步骤,以下为官方网站:

http://appanalysis.org/download.html

编译之前的环境配置工作参照android官方网站:http://source.android.com/source/initializing.html

建议:ubuntu12.04 64位,swap空间设置12G以上,硬盘空间50G以上

2.查看源码,在https调用api处,打印日志,打印出通信内容;

根据taintdroid中的追踪ssl加密通信代码,可知通信使用的类如下:

\libcore\luni\src\main\java\org\apache\harmony\xnet\provider\jsse\OpenSSLSocketImpl.java

具体taintdroid代码如下:

public void write(byte[] buf, int offset, int byteCount) throws IOException {

BlockGuard.getThreadPolicy().onNetwork();

synchronized (writeLock) {

checkOpen();

Arrays.checkOffsetAndCount(buf.length, offset, byteCount);

if (byteCount == 0) {

return;

}

// begin WITH_TAINT_TRACKING

int tag = Taint.getTaintByteArray(buf);

FileDescriptor fd = socket.getFileDescriptor$();

if (tag != Taint.TAINT_CLEAR) {

int disLen = byteCount;

if (byteCount > Taint.dataBytesToLog) {

disLen = Taint.dataBytesToLog;

}

// We only display at most Taint.dataBytesToLog characters in logcat

String dstr = new String(buf, offset, disLen);

// replace non-printable characters

dstr = dstr.replaceAll("\\p{C}", ".");

String addr = (fd.hasName) ? fd.name : "unknown";

String tstr = "0x" + Integer.toHexString(tag);

Taint.log("SSLOutputStream.write(" + addr + ") received data with tag " + tstr + " data=[" + dstr + "]");

}

// end WITH_TAINT_TRACKING

NativeCrypto.SSL_write(sslNativePointer, socket.getFileDescriptor$(),

OpenSSLSocketImpl.this, buf, offset, byteCount);

}

}

代码中if (tag != Taint.TAINT_CLEAR)判断是否为污点标记数据,是,则通过Taint.log()来实现logcat日志输出,这里为了实现所有的输出打印,删除判断条件,打印所有数据:

String dstr = new String(buf, offset, byteCount);

dstr = dstr.replaceAll("\\p{C}", ".");

Taint.log("SSLOutputStream.write(1111) received data with tag 2222 data=[" + dstr + "]");

3.编译相应ROM,刷机到相应手机,此处使用的nexus4

4.编写https请求apk demo

参照博客,代码完全相同,修改url地址即可

http://blog.csdn.net/yzwlord/article/details/9565821

5.在刷好rom的运行APK,打开logcat日志,查看打印输出

使用如下命令

adb shell logcat -v time *:S TaintLog:*

注:笔者认为此方法应该完全可行,但是实际效果却是没有ssloutput日志输出。此处记录一下我的实践过程,供大家参考!

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

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

相关文章

app store 关键词

如何选取关键字,让你的应用关键词越来越多? 很多朋友在做应用商店优化的时候,都会遇到一个让人很头疼的问题:如何选取关键词?关键词的质量直接关系到App的自然下载量,所以,我们应该用科学的办法…

android 调用微信语音识别,Android 仿微信语音识别

参考于:Android模仿微信语音聊天功能,这代码跑起来有问题,自己改动了一下,基本上没什么大问题先贴下效果图1、三个布局文件activity_main.xmldialog_manger.xmlitem_layout2.自定义的类(1)DialogMangerpackage com.nickming.view;…

android sendmessage和post的区别,handler中post和send方式区别

handler中post和send方式的区别1、从用法上send:发送的是Messagepost:发送的是Runnable对象具体用法,如下代码演示:MainActivity.javapublic class MainActivity extends AppCompatActivity {private TextView textView;private s…

耐心新来按部就班

当快速解决问题的思路行不通时,需要停下来,慢慢一步一步分析,找到问题根源,然后解决问题。转载于:https://www.cnblogs.com/Tpf386/p/8579365.html

Java:不朽的对象和对象复活

什么是对象复活? 当没有其他对象引用该对象时,该Java对象可以进行垃圾回收。 当JVM:s垃圾收集器最终将要删除未使用的对象时,将调用该对象的finalize()方法。 但是,如果我们再次使用对象自己的finalize()方法重新创建对…

老罗android oat,入门ART虚拟机(5)——OAT文件

Android安全交流群:478084054先贴老罗的一张图:再摘一段老罗的描述:“作为Android私有的一种ELF文件,OAT文件包含有两个特殊的段oatdata和oatexec,前者包含有用来生成本地机器指令的dex文件内容,后者包含生…

C#给字符串赋予字面值——字符串插入、转义序列的使用

1.占位符、字符串插入 给字符串赋予字面值时,经常遇见在字符串中包含变量的情况,用连接符进行拼接、转换的方式比较麻烦、还容易出错。C#提供了较为便捷的处理方式,即‘占位符’,以及C#6的新功能‘插入字符串’(没记错…

Dajngo-Xadmin 修改菜单摆放排序

问题: Xadmin 默认是读取了所有被注册到 xadmin 的模型生成对应的菜单!这个是没问题的 ,但是xadmin又对菜单做了 "通过菜单名称" 排序.英文状态下我们的排列至少是 a-z排列的,但是一到中文就乱了,完全不符合我们的要求. 解决办法: 要到达按照我们 在 django 的 setti…

华为鸿蒙2.0什么核心,鸿蒙系统2.0:安卓最核心部分基本已去除,将带来全新的体验...

早些时候,华为在东莞举办的华为2020华为开发者大会如期召开,在大会上华为正式发布了鸿蒙系统2.0,并称将于明年应用到智能手机上,其中升级了EMUI 11的用户可以优先获得体验鸿蒙系统2.0的资格,瞬间将会议推向高潮。值得一…

fork join框架使用_Java:使用Fork / Join框架的Mergesort

fork join框架使用此项的目的是显示一个Fork / Join RecursiveAction的简单示例,而不是过多地探讨合并排序的可能优化方法,或者比使用Exkutor / Join Pool优于现有的基于Java 6的现有实现(如ExecutorService)的相对优势。 以下是使…

Java最大公约数和最小公倍数的求法(辗转相除法)

这道题计算了三个数的最小公倍数 1 import java.util.Scanner;2 3 public class D {4 public static int gcd(int a,int b) {5 int max a>b?a:b;6 int min a<b?a:b;7 if(max%min ! 0) {8 return gcd(min,max%min);9 …

html隐藏块元素过度动画,CSS3实现DIV图层隐藏到显示的过渡效果

本文介绍CSS3实现DIV图层隐藏到显示的过渡效果&#xff0c;可用于产品列表的产品简介过渡显示与隐藏等&#xff0c;希望对你有所帮助。CSS3的transition过渡属性对于页面元素的显隐并没有提供过渡方法&#xff01;所以DIV图层从display&#xff1a;none到display&#xff1a;bl…

Java 8:在2分钟内将智能流与数据库一起使用

快速流媒体 当Java 8最终问世时&#xff0c;我和一些大学开始了一个开源项目&#xff0c;以利用Java 8的流库使整个Java / DB问题进一步向前发展&#xff0c;以便将数据库表视为纯Java 8流。 速度诞生了&#xff01; 哇&#xff0c;现在我们可以做类型安全的数据库应用程序了&a…

MapReduce 详解

MapReduce的整个运行分为两个阶段&#xff1a; Map和Reduce Map阶段由一定数量的Map Task组成 输入格式的数据格式化&#xff1a;InputFormat 数日数据的处理:Mapper 数据分组&#xff1a;Partitioner 下面流程图&#xff1a; 1. Map task 首先从HDFS上Read文件&#xff0c;通过…

16福师计算机应用基础在线作业,16春季福师《计算机应用基础》在线作业二.doc...

16春季福师《计算机应用基础》在线作业二福师《计算机应用基础》在线作业二一、单选题(共 40 道试题&#xff0c;共 80 分。)1. ( )都是系统软件。. OS 和MIS. WPS和UNIX. UNIX和Wor. OS和UNIX正确答案&#xff1a;2. 在幻灯片浏览视图中&#xff0c;下列( )操作不能实现。. 复…

早期访问中具有NetBeans的Oracle公共云Java服务

谁期望发生这种情况&#xff1a;Oracle正在开发公共云产品&#xff0c;并且即将开始正式启动的迹象已经出现。 在正式宣布之后将近一年&#xff0c;我被邀请加入所谓的“抢先体验”计划&#xff0c;以试驾新服务并提供反馈。 多亏负责产品的经理Reza Shafii &#xff0c;我才可…

如何解析C语言的声明

一个声明&#xff1a;int *p[] 分为四部分&#xff1a; &#xff08;1&#xff09;p &#xff08;2&#xff09;p右面的符号&#xff08;可以什么都没有&#xff09; &#xff08;3&#xff09;p左面的符号&#xff08;可以什么都没有&#xff09; &#xff08;4&#xff09;最…

HTML5调整图像垂直边距,77.通过vspace和hspace属性可以分别调整图像的垂直边距和水平边距。()()...

具有东方建筑特色、&#xff0e;通图像规模宏大、气势雄伟的古代建筑群是( )属性水平完成规定的大作业分别Which of the following parks are the urban parks of New York?调整的垂Which of the following countries have once occupied New York city in the 17th century?…

JLBH示例1 –为什么应在上下文中对代码进行基准测试

在这篇文章中&#xff1a; 使用JMH和JLBH进行日期序列化的并排示例 在微基准中测量日期序列化 测量日期序列化作为适当应用程序的一部分 如何为您的JLBH基准添加探针 了解在上下文中衡量代码的重要性 在上一篇文章“ JLBH简介 ”中&#xff0c;我们介绍了JLBH&#xff08…

Javac可以编译,Java显示找不到或无法加载主类

运行时候加入完整包名。转载于:https://www.cnblogs.com/theWinter/p/8594354.html