如何抓取android手机android网络请求框架

博客访问: 894638
博文数量: 461
博客积分: 918
博客等级: 准尉
技术积分: 3032
注册时间:
认证徽章:
你就不觉得我帅吗
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
如何在Android智能手机上捕获数据包?
本文由CSDN-蚍蜉撼青松【主页:http://blog.csdn.net/howeverpf】原创,转载请注明出处!
&&&&&&& 当前Android系统越来越流行,无论是对于安卓应用的开发人员,还是对于网络安全的研究人员,都有可能需要掌握捕获Android应用通信数据包的方法。根据技术手段不同,常用的抓包方法分两类,一类是通过Android智能移动终端所接入的上层网络设备或线路获取数据流,另一类则是直接在Android移动终端上监听数据流。本文主要探讨第二类方法,下面分别就前期准备、一般步骤、常见问题、扩展说明四方面详谈。(由于本人使用的是Android手机,所以后文在描述的时候都说的是Android手机,但其实本文所说的内容是Android移动终端基本都可以通用的)
&&&&&&&&所谓学以致用,建议大家看了本文之后还是能实际选择一个安卓应用分析一下。我本人利用本文所说的抓包技术实际分析了百度贴吧安卓客户端的网络通信行为,分析结果参见我的上一篇博文《》,也可直接下载PDF版的完整分析报告,地址是:。
一、前期准备
1.1 为Android手机的Root权限解锁
&&&&&&& Root是Android手机系统中的超级管理员账户,Root权限(即底层权限)和我们在Windows系统下的Administrator权限类似。默认状态下,为了防止系统文件被更改,Android系统并没有把Root账户开放给我们普通用户,我们必须先为Root权限解锁才能获取Root权限。网上一般把Android手机的Root权限是否解锁,简称为Android手机是否root过。
&&&&&&& 这些年网上涌现了大量手机root工具,使用你自己的手机型号搜,应该能找到合适你的工具。作为一个华为党,俺最后使用了刷机精灵,两次之后成功解锁Root权限。解锁成功后,刷机精灵会在手机上安装一个授权管理工具,以帮助咱们管理哪些应用和程序可以获取Root授权。最新版的授权管理工具还自带了一个工具箱,可以自由卸载手机上的预装软件和系统软件,很省心,很方便!刷机精灵使用教程参照:《》。
1.2 下载相关工具
&&&&&&& 要用到的工具主要有两个,tcpdump(Android版) 和 adb 。打包下载地址为:。
&&&&&&& tcpdump是Linux系统中普遍使用的一款开源网络协议分析工具,使用方法详参:《》。
&&&&&&& adb是谷歌提供的安卓远程调试工具,应该使用方法详参:《》。如果你前面使用了刷机精灵为手机的Root权限解锁,那么可以在刷机精灵的实用工具里找到Adb命令行,直接调用此工具,而无需专门下载;又或者你以前搭建过安卓开发环境,那么应该也可以在***\platform-tools目录下找到该工具。&
二、一般步骤
&&&&&&&&为了让大家看起来方便,我先把所有步骤拉通放在一张图上,给大家一个直观的印象,如图2-0。(考虑到通用性,在上传tcpdump前修改了手机上目的目录权限,部分手机不用。)
图2-0 在某手机上第一次抓包的完整过程
下面是分步解说,其中有些步骤是仅在第一次使用的时候才需要,用【仅需第一次】标注(也就是图2-0中用白色方框圈起来的部分)。
(1)将&adb.exe&放在合适的目录下,并将该目录的完整路径添加到Windows的&PATH&环境变量中。【仅需第一次】【已经搭建过安卓开发环境则不需要此步】
(2)打开windows命令提示符窗口,输入命令:&adb version&,如果正常显示adb的版本,则说明上一步环境变量设置没有问题,且adb.exe本身完整,如图2-1;反之,则可能是adb.exe本身文件损坏,环境变量设置有误,或者环境变量设置后尚未生效,请自行检查。【仅需第一次】
图2-1 检查adb工具是否正常可用
(3)勾选Android手机的"USB调试",将Android手机与电脑USB相连,在命令提示符窗口输入命令:&adb devices&,若正常显示所连接手机的设备号,则说明连接成功,如图2-2。(注:有些手机的设备号可能读取有问题,显示的是一个问号,这也是可以的,并不会影响后面的操作)
图2-2 查看PC与安卓手机是否连接成功
(4)将&tcpdump&(for Android)上传至Android手机上,在命令提示符窗口中输入命令:adb push& <LocalPath of tcpdump>&& /data/local/tcpdump,如图2-3。【仅需第一次】
图2-3 上传tcpdump
(5)给&tcpdump&增加可执行权限,如图2-4。【仅需第一次】
在命令提示符窗口中使用命令&adb shell&远程打开Android手机上的终端Shell;
在当前Shell中使用su命令获取管理员权限;
在当前Shell中使用&chmod&命令修改&tcpdump&的权限。
图2-4 修改 tcpdump 的权限
(6)使用&tcpdump&抓包,并将结果写入一个pcap文件保存,如图2-5。
在命令提示符窗口中使用命令&adb shell&远程打开Android手机上的终端Shell;
在当前Shell中使用&su&命令获取管理员权限;
在当前Shell中输入命令:&/data/local/tcpdump -p -s 0 -w /sdcard/001.pcap;
在Android手机上进行相关操作,产生通信数据包,通信行为完成后在命令提示符窗口中使用 Ctrl + C 组合键退出当前Shell,以停止抓包。
图2-5 抓包过程&
上述过程中,tcpdump命令的参数含义如下:
  # "-p": disable promiscuous mode (不使用混杂模式)
  # "-s 0": capture the entire packet(-s参数用以指定数据包捕获长度,此处指定为0,意为抓取完整的数据包)
  # "-w *.pcap": write packets to a file (将结果写入一个pcap文件,而不在终端上直接显示)
(7)将抓包结果下载到本地PC上。在命令提示符窗口中使用命令:adb pull /sdcard/001.pcap <LocalPath of&PcapFile&>,如图2-6。
图2-6 下载抓包结果到本地
(8)使用Wireshark等协议分析工具查看抓包结果。
三、常见问题的解决
3.1 部分手机使用adb的push命令上传tcpdump失败
提示信息:"failed to copy 'd:/tcpdump' to '/data/local/tcpdump': Permission denied";
出错原因:该Android手机上的目的目录没有写权限;
解决方法:给Android手机上的目的目录/data/local增加写权限,步骤如图4-1;
图4-1 给/data/local目录增加写权限
3.2 部分手机使用chmod命令改变文件或目录的权限时失败
提示信息:"Read-only file system";
出错原因:从字面上理解,就是说文件系统是只读的,不允许改权限;【好像是在同学的小米手机上遇到的这个问题】
解决方法:重新挂载根目录,并在挂载的时候指定为可读写。步骤如下,
在命令提示符窗口中使用命令&adb shell&远程打开Android手机上的终端Shell;
在当前Shell中使用&su&命令获取管理员权限;
在当前Shell中输入命令:&mount -o remount,rw /&。之后再使用chmod命令应该就没问题了。
四、扩展与说明
4.1 上传tcpdump到Android手机的时候,是否一定要选择/data/local目录
&&&&&&& 应该不是唯一的选择,但是我试过上传到一些其他的目录/sdcard等,会遇到更多的权限限制问题。所以出于方便的考量,建议还是都尽量固定传往/data/local目录。
4.2 使用终端模拟器代替adb工具的shell命令
&&&&&&& 终端模拟器是一款Android平台上的Linux Shell工具,相当于Windows中的CMD命令提示符,有了它,我们可以在Android上进行Linux系统的命令操作。
&&&&&&& 通过前面的描述,我们可以看出,adb工具在这主要起到两个作用,一是基于push、pull命令的文件上传下载(本地PC与Android手机之间的文件交换);二是基于shell命令对Android内置Linux命令行Shell的远程访问(通过Android内置Shell来执行su、chmod、tcpdump等命令或程序)。其中第二个功能可以使用终端模拟器代替。例如图3-1
图3-1 使用终端模拟器执行系统命令
4.3 使用USB文件传输功能代替adb工具的pull命令
&&&&&&& 我们前面在运行tcpdump时,使用-w参数指定了抓包结果的文件保存路径在/sdcard目录下。/sdcard目录对应安卓手机的内部存储空间,也就是我们手机插上USB线,选择“打开USB存储设备”后,用Windows的资源管理器打开所看到的根目录,如图3-2。因此我们可以用USB连接手机后,像访问U盘一般直接获取我们前面抓包生成的001.pcap文件。
图3-2 /sdcard目录对应PC上可见的手机内部存储空间的根目录
4.4 chmod命令中3位(或4位)八进制数字所代表含义的说明
&&&&&&& 那些八进制数字对应着我们要为目标文件/目录设定的权限。先说3位的情况,假使我们将三位八进制数分别看做a,b,c的话,那么a,b,c分别表示User(该档案的属主)、Group(与该档案的属主属于同一个组的用户)、及Other(其他用户)的权限。
&&&&&&& 八进制的a/b/c可以转成3位二进制数,这三位数的取值从高到低分别对应是否具有读、写、执行权限。对应位置1,则有相应权限;反之若置0,则无相应权限。例如:
777 [111,111,111],所有用户均有读、写、执行权限;
700 [111,000,000],只有档案的所有者拥有读、写、执行权限,其他用户无权限;
644 [110,100,100],只有档案的所有者拥有读、写权限,其他用户只有读权限。
&&&&&&& 回看前文,我们在修改 /data/local 权限时设置为777,算是最简单方便,但也是最不安全的该法。可以根据此处的介绍,你可以自行计算权限值该设为多少才是最科学的。
&&&&&&& 至于4位八进制数,则是在3位八进制数的最左边加上1位八进制数来设置特殊属性,该特殊位默认取0。详参:《》
4.5 chmod命令中用数字表示的权限值是否可用文本字符串代替
&&&&&&& 在Linux下工作过的童鞋应该知道,chmod命令中的权限值除了可以用上文所述3位/4位八进制数表示以外,也可以用形如:&[ugoa...][[+-=][rwxX]...] 形式的字符串表示,如下:【以下例子取自博文《》,谢谢该文博主(林榆耿)】
例1.以下两条命令作用相同,都是给FileName的属主分配读、写、执行的权限,给FileName的属主所在组分配读、执行权限,给其他用户仅分配执行权限
# chmod 751 FileName
# chmod u=rwx,g=rx,o=x FileName
例2.以下三条命令作用相同,都是为所有用户仅分配读权限
# chmod 444 FileName
# chmod =r FileName
# chmod a-wx,a+r FileName
&&&&&&& 那么在Android系统中是否可用文本字符串形式的代替八进制数形式的权限值呢?以我实验的结果来看,是不可以的,系统给的错误提示是:"Bad mode"。可能是系统本身不支持吧。
阅读(3211) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。使用Fiddler抓取Android应用程序数据包 - dawnjj - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
使用Fiddler抓取Android应用程序数据包
& 17:04:35
/ 个人分类:
Fiddler能记录客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据。wireshark也是一款抓包工具,更强大,可以抓取除http和https以为的多种网络数据封包,包括TCP、UDP、ARP等网络协议包。有时间再看看使用wireshake怎么获取应用程序的数据包。Fiddler的运行机制其实就是本机上监听8888端口的HTTP代理。 按照以下步骤可以获取到手机端的网络数据。1、PC端安装Fiddler直接安装好运行就可以了。2、配置PC端的Fiddler打开Fiddler菜单项Tools-&Fiddler Options,选中decrypt https traffic和ignore
certificate errors两项,如下图:3、配置Fiddler远程连接点击connections,选中allow remote computers to connect,默认监听端口为8888,若被占用也可以设置,配置好后需要重启Fiddler,如下图:4、配置手机代理手机与PC连接到同一网络,修改网络,选择手动代理,主机名填写电脑的IP,端口为8888.5、手机连接到PC,手机上操作APP,Fiddler就会收到APP发送和返回的消息了。Inspectors tab下有很多查看Request或者Response的消息。其中Raw Tab可以查看完整的消息,Headers tab只查看消息中的headerAndroid开发之获取网络链接状态
投稿:shichen2014
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Android获取网络链接状态的方法,主要是通过ConnectivityManager类来完成的,需要的朋友可以参考下
网络开发是Android程序设计一个非常重要的内容,今天本文就和大家一起分享一下Android网络开发的一点经验。
本文主要通过实例形式说明了Android获取网络链接状态的方法。具体内容如下:
就目前的Android手机来说,可能存在如下5种网络状态:
    ----无网络(这种状态可能是因为手机停机,网络没有开启,信号不好等原因)
    ----使用WIFI上网
    ----CMWAP(中国移动代理)
    ----CMNET上网
    ----2G/3G/4G上网
很多时候我们需要判断用户是否开启网络设置,通常通过ConnectivityManager类来判断网络连接是否存在。
获取网络状态:
那到底如何使用这个类呢?如何和用户进行交互呢?具体示例如下:
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConnectivityManager nw = (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netinfo = nw.getActiveNetworkInfo();
Toast.makeText(MainActivity.this, "当前网络"+add(netinfo.isAvailable())+","+"网络"+app(netinfo.isConnected())+","+"网络连接"+adp(netinfo.isConnected()), Toast.LENGTH_LONG).show();//给用户提示网络状态
String add(Boolean bl){
String s = "不可用";
if(bl==true){
String app(Boolean bl){
String s = "未连接";
if(bl==true){
s="已连接";
String adp(Boolean bl){
String s = "不存在!";
if(bl==true){
s="存在!";
当然一定不要忘记在配置文件中获取网络权限,代码如下:
&!-- 获得网络权限 --&
&uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"
希望本文所述示例对大家Android程序设计有一定的帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具安卓手机如何抓取同一wifi下的所有设备的网络数据包?
已有帐号?
无法登录?
社交帐号登录1354人阅读
Android基础(29)
Useful Tool(1)
最近写项目时经常遇到服务器返回请求超时的情况,头疼得很,因此想着使用网络抓包工具来抓取客户端访问服务器的请求,看看客户端发的请求的内容以及服务器返回的情况。
目前我了解常用的网络数据抓包工具有Charles、fiddler、wireshark这么三种软件,Charles支持抓去http、https协议的请求,不支持socket。使用情况和fiddler基本大同小异。这里就前段使用的网络工具Charles做一个简单的介绍。
第一步:下载和配置Charles
首先是工具下载和安装 首先需要下载java的运行环境支持(一般用burp的人肯定也都有装java环境)。装好java环境后,可以直接去百度搜索并下载charles的破解版,下载到破解版之后,里面一般会有注册的jar文件,然后注册后就可以永久使用了(ps:不注册的话,每次使用30分钟,工具就会自动关闭)。
官方下载链接:
下载要注意看看自己的Windows是32位的还是64位的。
配置Chales:安装好后配置如图
Proxy–&Proxy Settings
第二步:设置Android手机
首先获取PC的ip地址:命令行中输入:ipconfig,获取ip地址
记住IP地址。
下面来对Android手机进行代理设置:
首先确认手机和PC是连接在同一个局域网中
进入手机的设置-&点击进入WLAN设置-&选择连接到的无线网,长按弹出选项框,如图所示:
如果是小米手机,直接进入连接的无线网详情页,底部有选项是否启动代理可以设置。如:
选择修改网络配置:
选择显示高级选项,将代理设置成手动,将上面获取到的ip地址和端口号填入,点击保存。这样就将我们的手机设置成功了。
第三步: 在Charles界面看抓包数据:
备注:后面的几张配置手机代理的图片来自Fiddler的配置:
Charles高级教程可参考:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:33312次
积分:1005
积分:1005
排名:千里之外
原创:67篇
阅读:4364
(4)(10)(4)(16)(10)(10)(3)(1)(1)(1)(10)(3)(2)(1)

我要回帖

更多关于 android 抓取网络视频 的文章

 

随机推荐