博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android下移植tcpflow
阅读量:4587 次
发布时间:2019-06-09

本文共 1218 字,大约阅读时间需要 4 分钟。

     tcpflow是linux平台下的开源抓包工具,它能监听网络url,获取http请求的各种数据。tcpflow可以说是tcpdump的简约版。要想将tcpflow移植到Android平台中,就需要通过shell调用经NDK编译tcpflow后的可执行文件,以及它所依赖的库文件,因为Linux上的架构和Android上的arm架构不一样。网上没有tcpflow的中文资料,更别说移植到android了。如果用谷歌搜索,能搜到tcpflow的github站点以及相关英文资料,但是仍没有移植到Android上的。这就是我目前的工作内容,几乎每一步都是困难重重。

    整个步骤可以分为四步,第一步,在linux上用g++编译下载好的tcpflow源码,地址:。第二步,理解源码,去掉多余的部分,毕竟Android上存储空间资源有限。第三步,用NDK将tcpflow源码以及它所依赖的lib库文件编译成可执行文件。第四步,通过java调用shell脚本,运行su,获取root权限,运行可执行程序。
    第一步,在linux上编译tcpflow源码。这一步是很关键,也很蛋疼,我花了整整一个星期。我用的是在vmware虚拟机上装的ubuntu12.04系统。首先,在终端通过git下载源码,下载好以后,进入tcpflow目录,执行sh bootstrap.sh,会生成markfile文件。执行./configure,会检查依赖库,如果缺少相应的库,会提示有错误,请用apt-get install安装相应的库。如果通过了,再执行make install,程序会被编译并运行起来。执行ifconfig,会列出本机上所有的网络接口,执行tcpflow -p -c -i eth0 port 80,-i 后面是网络接口名称。程序会监听网络接口eth0,打开浏览器,终端就会输出监听到的网络数据。数据可以在终端显示,也可以保存到文件中,还能生成报表。
    第二步,你可能需要定制自己的tcpflow项目,那就要去看源码了,譬如去掉生成报表,把数据写到一个文件中去。你也可以拓展,将文件发送到服务器上去,然后删除文件。    
  第三步,用NDK编译tcpflow源码,用的是Android.mk文件和Application.mk文件,Application.mk可以用来设置编译器的参数,譬如C++的标准输入输出,异常,rtti。由于tcpflow依赖libpcap,ssl,crypto等开源库,所以也需要用NDK编译上述开源库的源文件。
    第四步,由于监听网络接口,Android中需要root权限,也许可以用临时root。用java运行时取得shell通道,运行su,获取root权限,运行可执行程序。     后期的挑战在于临时root,文件的写入和发送,模块的调用。

转载于:https://www.cnblogs.com/lsc183/p/tcpflow.html

你可能感兴趣的文章
量子测量
查看>>
教你配置安全的ProFTPD服务器(上)
查看>>
bzoj 1226: [SDOI2009]学校食堂Dining
查看>>
spm3构建多入口项目
查看>>
Java:基本语法
查看>>
HTTP头的Expires与Cache-control
查看>>
ASIHTTPRequest 详解 例子
查看>>
多线程并发库
查看>>
Props 和 IActorRef 3
查看>>
转载 页面加载完后执行js代码
查看>>
远程SSH连接服务与基本排错
查看>>
浏览器渲染页面原理
查看>>
VC dumpbin dll 导出 lib
查看>>
【Lua】Lua的几点优化原则
查看>>
兼容IE8以下,获取className节点的元素(document.getElementsByClassName()兼容写法)。
查看>>
安装apache
查看>>
git链接远程库
查看>>
[转]asp.net 防止外部提交数据
查看>>
android用户界面之Gallery3D学习资料汇总
查看>>
[编写高质量代码:改善java程序的151个建议]建议62 警惕数组的浅拷贝
查看>>