[旧帖]

[原创]基于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日志输出。此处记录一下我的实践过程,供大家参考!

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

  1. 基于Proxy思想的Android插件框架

    本文所有代码托管在Github:android-plugin 意义 研究插件框架的意义在于以下几点: 减小安装包的体积,通过网络选择性地进行插件下发 模块化升级,减小网络流量 静默升级,用户无感知情况 ...

  2. 野外求生版android平板,四防、太阳能、GPS!野外求生Android平板登场

    Earl 标榜自己是"野外求生平板",它拥有野外活动人士最需要的功能,例如准确的 GPS,配合专业的远足攀山地图.能够连接 ANT+ 和蓝牙 4.0 用作监测心跳速度,亦可利用作 ...

  3. android学生管理实例,学生管理系统-基于SQLite数据库的Android应用

    //方法:获取所有学生的姓名 public void getBasicInfo(MyOpenHelper helper){ SQLiteDatabase db = helper.getWritable ...

  4. android如何调取网站后台的图片,基于Bmob后台开发Android的APP项目——从后端获取图片,以及在后端上上传图片...

    第一次写博客感觉还心情还挺激动.当听说有Bmob为移动端制定的后台,正好现在我还并未学会开发后台,于是抱着尝试的心去了解一下(其实我还是个小萌新). 下面这些操作的前提已经创建好项目. 1 . 直接在 ...

  5. Android近场通信---NFC基础(一)

    Android近场通信---NFC基础(一) 本文介绍在Android系通过你所能执行的基本任务。它解释了如何用NDEF消息格式来发送和接收NFC数据,并且介绍了支持这些功能的Android框架API ...

  6. android IPC通信(下)-AIDL

    android IPC通信(上)-sharedUserId&&Messenger android IPC通信(中)-ContentProvider&&Socket 这篇 ...

  7. Android消息通信之无所不能的第三方开源项目EventBus

     Android消息通信之无所不能的第三方开源项目EventBus 在Android开发中,消息通信在开发过程中是比较重要但比较略微繁琐的过程,比如,Activity与Fragment之间的消息通 ...

  8. 开发基于 Google Map 的 Android 应用

    开发基于 Google Map 的 Android 应用 张 谦, 软件工程师, IBM 吴 校军, 高级软件工程师, IBM 苏 琳, 软件工程师, IBM 简介: 随着移动互联网应用的迅速发展,利 ...

  9. 邮件TLS/SSL加密通信

    邮件TLS/SSL加密通信 问题 本案例要求为基于Postfix+Dovecot的邮件服务器提供加密通信支持,主要完成以下任务操作: 1)为SMTP服务(postfix)添加TLS/SSL加密通信支持 ...

最新文章

  1. android获取手机通讯录
  2. 在leangoo 里怎么设置工作量估算,添加附件,设置截止时间?
  3. c++的uint8不赋值_2021国考 | 用对方法后,赋值法竟然变得如此简单!
  4. 手机淘宝以秒杀抢滩校园市场
  5. nginx学习笔记(7)Nginx如何处理一个请求---转载
  6. 数据中心机房消防演练方案
  7. (网址收藏)Golang模块之HTTP
  8. 谷歌已推送 Android Q Beta 1
  9. 计算机录取高考生过程,解密高考录取过程:人机结合 打造“阳光高招”
  10. grep搜索子目录中包含某字符串的特定文件
  11. df添加一行 python_Python为输出的数据绘制表格
  12. (C++)wchar_t 转 string / TCHAR转为char/判断是否进程运行/获得目标进程的入口
  13. python不会英语不会数学怎么自学-文科女生学Python:学过初中数学和英语就能懂的编程逻辑...
  14. idea怎么调试jsp页面_一文学会JSP
  15. LOJ#2764. 「JOI 2013 Final」JOIOI 塔
  16. 图数据库扫盲和图数据选用
  17. 雷电3接口能干嘛_Sonnet发布雷电3接口双卡读卡机RED MINIMAG Pro
  18. 平板电脑如何刷linux,平板电脑刷windows的方法是什么_如何把平板刷windows图文步骤...
  19. 一份写给极客的智能家居指南
  20. 总结低代码海报平台编辑器难点

热门文章

  1. mysql直接执行文件格式_Windows 环境下执行 .sql 格式文件方式
  2. PDH光端机常见故障及解决方法介绍
  3. [渝粤教育] 西南科技大学 货币银行学 在线考试复习资料
  4. [渝粤教育] 西南科技大学 建筑制图 在线考试复习资料(1)
  5. 业界对物联网技术最常见的三大误区解读
  6. 物联网未来发展的十大趋势
  7. 招远西苑学校计算机老师,招远市西苑学校积极开展综合实践活动
  8. Matlab库中过采样函数rcosflt参数及源代码详解(翻译)
  9. 2018安徽省计算机一级试题答案,2018年计算机等一级考试试题100题及参考答案.docx...
  10. 同步服务老是报错_悬而未决:MYSQL配置好主从同步后没有报错,但数据一直没有同步过来是什么原因? | 学步园...