Android Iphone设备抓包方法.docx
- 文档编号:9402945
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:18
- 大小:904.64KB
Android Iphone设备抓包方法.docx
《Android Iphone设备抓包方法.docx》由会员分享,可在线阅读,更多相关《Android Iphone设备抓包方法.docx(18页珍藏版)》请在冰点文库上搜索。
AndroidIphone设备抓包方法
针对手持设备抓包
Fiddler:
通过windowsPC平台抓取Android设备http传输包
Fiddler是一个http调试代理,它能够记录所有的你电脑和互联网之间的http通讯,Fiddler可以也可以让你检查所有的http通讯,设置断点,以及Fiddle所有的“进出”的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。
Fiddler要比其他的网络调试器要更加简单,因为它仅仅暴露http通讯还有提供一个用户友好的格式。
此方法只适应于抓取http。
此方法的最大优点是,可以拦截发出或者收到的http,可以修改http的request和response数据。
因此用此方法可以模拟一些特殊场景(如包无响应、模拟一些很难出现的错误码等)。
此方法最好有一台拥有无线网卡的电脑。
利用Fiddler抓包,适合大多数走代理的应用,优点
(1)无需root
(2)对Android和Iphone同样适用(3)操作更简单方便(第一次安装配置,第二次只需设置代理即可)(4)数据包的查看更清晰易懂,Fiddler的UI更简单明了
下面,我以我的一次实践为例,向大家介绍如何操作。
环境:
Windows7、G11(android4.0.3)
1、首先,确保安装Fiddler的电脑和手机在同一局域网内,因为要将手机的代理指向PC机,不能互相访问是不行的。
2、Fiddler开启远程连接。
Fiddler主菜单Tools->FiddlerOptions…->Connections页签,选中Allowremotecomputerstoconnect。
3、重启Fidler(这一步很重要,必须做)。
4、获取PC的IP地址:
获得安装Fiddler这台电脑在局域网内的IP,在手机上设置代理服务器的时候会用到,开始菜单打开运行窗口(快捷键Win+R),输入cmd回车,进入Windows命令行工具,输入ipconfig回车,获取PC的ip地址:
5、设置手机代理:
需要手机和安装Fiddler电脑在同一WIFI下,手机连接到WIFI。
打开手机的WIFI设置界面,选中连接的WIFI,长按,弹出如下界面,选择“修改网络”。
将使用代理服务器打勾,并填上刚才在PC机上ipconfig获得的IP地址192.168.1.95,端口号填Fiddler默认的8888
点击保存,这样就完成了代理的设置。
可以通过Fiddler抓去http数据包了。
Fiddler:
通过windowsPC平台对IPhone手机的数据进行抓包分析
HTTP连接Debug工具(MicrosoftFiddler)2.4.4.5官方安装版
立即下载
Fiddler绝对称得上是"抓包神器",Fiddler不但能截获各种浏览器发出的HTTP请求,也可以截获各种智能手机发出的HTTP/HTTPS请求。
Fiddler能捕获ISO设备发出的请求,比如IPhone,IPad,MacBook.等等苹果的设备。
同理,也可以截获Andriod,WindowsPhone的等设备发出的HTTP/HTTPS。
前提条件:
安装Fiddler的机器,跟Iphone在同一个网络里,否则IPhone不能把HTTP发送到Fiddler的机器上来。
HTTP数据抓包(Fiddler2)V2.2.0绿色中文版评分:
7.8
类别:
编程辅助 大小:
628KB 语言:
中文
查看详细信息>>
截获智能手机发出的HTTP包有什么用?
用处一:
手机软件程序员利用Fiddler,可以截获手机发出的HTTP包,从而调试程序
用处二:
软件测试人员用于测试智能手机上的软件。
用处三:
可以用来在App应用商店中刷排名
配置Fiddler, 允许"远程连接"
打开Fiddler, Tools->FiddlerOptions。
(配置完后记得要重启Fiddler).
选中"DecrptHTTPStraffic", Fiddler就可以截获HTTPS请求
选中"Allowremotecomputerstoconnect". 是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来
获取Fiddler所在机器的IP地址
这个简单吧。
我Fidder所在的机器地址是:
192.168.1.104
IPhone上安装Fiddler证书
这一步是为了让Fiddler能捕获HTTPS请求。
如果你只需要截获HTTP请求,可以忽略这一步
1.首先要知道Fiddler所在的机器的IP地址:
假如我安装了Fiddler的机器的IP地址是:
192.168.1.100
2.打开IPhone的Safari,访问 http:
//192.168.1.104:
8888,点"FiddlerRootcertificate"然后安装证书
IPhone上配置Fiddler为代理
打开IPhone, 找到你的网络连接,打开HTTP代理,输入Fiddler所在机器的IP地址(比如:
192.168.1.104)以及Fiddler的端口号8888
大功告成,开始抓包
现在IPhone上的应用(比如Safari, firefox, itunes,AppStore)发出的HTTP/HTTPS都可以被Fiddler获取。
实例:
打开Safari,
1.输入 看看Fiddler能否捕获。
2. 输入 看看Fiddler能否捕获。
是不是HTTP和HTTPS都截获到了?
?
?
?
, 你不但能截获,还可以下断点,修改Request,修改Response,Dowhatyouwant.
用完了,记得把IPhone上的Fiddler代理关闭,以免IPhone上不了网。
只能捕获HTTP,而不能捕获HTTPS的解决办法
有时候会发现,Fiddler只能捕获IPhone发出得HTTP请求,而不能捕获HTTPS请求,原因可能是证书没有安装好。
解决办法是:
1.先把IPhone上所有的Fiddler证书删除(拿出IPhone,点”设置“->“通用”->"描述文件")
2.安装上面的方法,重新安装Fiddler证书
tcpdump+wireshark:
Android设备
一、前期准备
1.1为Android手机的Root权限解锁
Root是Android手机系统中的超级管理员账户,Root权限(即底层权限)和我们在Windows系统下的Administrator权限类似。
默认状态下,为了防止系统文件被更改,Android系统并没有把Root账户开放给我们普通用户,我们必须先为Root权限解锁才能获取Root权限。
网上一般把Android手机的Root权限是否解锁,简称为Android手机是否root过。
这些年网上涌现了大量手机root工具,使用你自己的手机型号搜,应该能找到合适你的工具。
作为一个华为党,俺最后使用了刷机精灵,两次之后成功解锁Root权限。
解锁成功后,刷机精灵会在手机上安装一个授权管理工具,以帮助咱们管理哪些应用和程序可以获取Root授权。
最新版的授权管理工具还自带了一个工具箱,可以自由卸载手机上的预装软件和系统软件,很省心,很方便!
刷机精灵使用教程参照:
《手机root权限获取方法:
[4]刷机精灵》。
1.2下载相关工具
要用到的工具主要有两个,tcpdump(Android版)和adb。
打包下载地址为:
tcpdump是Linux系统中普遍使用的一款开源网络协议分析工具,使用方法详参:
《Tcpdump的详细用法》。
adb是谷歌提供的安卓远程调试工具,应该使用方法详参:
《ADB命令介绍》。
如果你前面使用了刷机精灵为手机的Root权限解锁,那么可以在刷机精灵的实用工具里找到Adb命令行,直接调用此工具,而无需专门下载;又或者你以前搭建过安卓开发环境,那么应该也可以在***\platform-tools目录下找到该工具。
二、一般步骤
为了让大家看起来方便,我先把所有步骤拉通放在一张图上,给大家一个直观的印象,如图2-0。
(考虑到通用性,在上传tcpdump前修改了手机上目的目录权限,部分手机不用。
)
图2-0在某手机上第一次抓包的完整过程
下面是分步解说,其中有些步骤是仅在第一次使用的时候才需要,用【仅需第一次】标注(也就是图2-0中用白色方框圈起来的部分)。
(1)将 adb.exe 放在合适的目录下,并将该目录的完整路径添加到Windows的 PATH 环境变量中。
【仅需第一次】【已经搭建过安卓开发环境则不需要此步】
(2)打开windows命令提示符窗口,输入命令:
adbversion ,如果正常显示adb的版本,则说明上一步环境变量设置没有问题,且adb.exe本身完整,如图2-1;反之,则可能是adb.exe本身文件损坏,环境变量设置有误,或者环境变量设置后尚未生效,请自行检查。
【仅需第一次】
图2-1检查adb工具是否正常可用
(3)勾选Android手机的"USB调试",将Android手机与电脑USB相连,在命令提示符窗口输入命令:
adbdevices ,若正常显示所连接手机的设备号,则说明连接成功,如图2-2。
(注:
有些手机的设备号可能读取有问题,显示的是一个问号,这也是可以的,并不会影响后面的操作)
图2-2查看PC与安卓手机是否连接成功
将 tcpdump (forAndroid)上传至Android手机上,在命令提示符窗口中使用命令 adbshell 远程打开Android手机上的终端Shell;
在当前Shell中使用su命令获取管理员权限;
在当前Shell中使用 chmod 命令修改 tcpdump 的权限。
chmod777/data/local
在命令提示符窗口中输入命令:
adbpush
【仅需第一次】注意
图2-3上传tcpdump
(5)给 tcpdump 增加可执行权限,如图2-4。
【仅需第一次】
在命令提示符窗口中使用命令 adbshell 远程打开Android手机上的终端Shell;
在当前Shell中使用su命令获取管理员权限;
在当前Shell中使用 chmod 命令修改 tcpdump 的权限。
chmod6755/data/local/tcpdump
图2-4修改tcpdump的权限
(6)使用 tcpdump 抓包,并将结果写入一个pcap文件保存,如图2-5。
在命令提示符窗口中使用命令 adbshell 远程打开Android手机上的终端Shell;
在当前Shell中使用 su 命令获取管理员权限;
在当前Shell中输入命令:
/data/local/tcpdump-p-s0-w/sdcard/001.pcap;
在Android手机上进行相关操作,产生通信数据包,通信行为完成后在命令提示符窗口中使用Ctrl+C组合键退出当前Shell,以停止抓包。
图2-5抓包过程
上述过程中,tcpdump命令的参数含义如下:
#"-p":
disablepromiscuousmode(不使用混杂模式)
#"-s0":
capturetheentirepacket(-s参数用以指定数据包捕获长度,此处指定为0,意为抓取完整的数据包)
#"-w*.pcap":
writepacketstoafile(将结果写入一个pcap文件,而不在终端上直接显示)
(7)将抓包结果下载到本地PC上。
在命令提示符窗口中使用命令:
adbpull/sdcard/001.pcap
图2-6下载抓包结果到本地
(8)使用Wireshark等协议分析工具查看抓包结果。
三、常见问题的解决
3.1部分手机使用adb的push命令上传tcpdump失败
提示信息:
"failedtocopy'd:
/tcpdump'to'/data/local/tcpdump':
Permissiondenied";
出错原因:
该Android手机上的目的目录没有写权限;
解决方法:
给Android手机上的目的目录/data/local增加写权限,步骤如图4-1;
图4-1给/data/local目录增加写权限
3.2部分手机使用chmod命令改变文件或目录的权限时失败
提示信息:
"Read-onlyfilesystem";
出错原因:
从字面上理解,就是说文件系统是只读的,不允许改权限;【好像是在同学的小米手机上遇到的这个问题】
解决方法:
重新挂载根目录,并在挂载的时候指定为可读写。
步骤如下,
在命令提示符窗口中使用命令 adbshell 远程打开Android手机上的终端Shell;
在当前Shell中使用 su 命令获取管理员权限;
在当前Shell中输入命令:
mount-oremount,rw/ 。
之后再使用chmod命令应该就没问题了。
3.3remountfailed
adbremount
remountfailed:
Permissiondenied
超级ADBadbdInsecure是强制使用非安全模式的应用,可以直接push/pull系统目录下的文件而不需要使用su事先转移,方便调试和传输。
必须要root(S-OFF)
3.4adbpull
adbpull/sdcard/005.pcapd:
/
cannotcreate'd:
\/005.pcap':
Nosuchfileordirectory
路径改为C:
/即可
四、扩展与说明
4.1上传tcpdump到Android手机的时候,是否一定要选择/data/local目录
应该不是唯一的选择,但是我试过上传到一些其他的目录/sdcard等,会遇到更多的权限限制问题。
所以出于方便的考量,建议还是都尽量固定传往/data/local目录。
4.2使用终端模拟器代替adb工具的shell命令
终端模拟器是一款Android平台上的LinuxShell工具,相当于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上可见的手机内部存储空间的根目录
有时电脑上看不到sdcard的pcap文件,只要在Android设备上对改文件copy粘贴操作后电脑就能看到复制版
4.4chmod命令中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。
详参:
《linux系统中chmodnnnnfile命令中的n怎么是四位啊不是三位吗?
》
4.5chmod命令中用数字表示的权限值是否可用文本字符串代替
在Linux下工作过的童鞋应该知道,chmod命令中的权限值除了可以用上文所述3位/4位八进制数表示以外,也可以用形如:
[ugoa...][[+-=][rwxX]...]形式的字符串表示,如下:
【以下例子取自博文《chmod命令详解》,谢谢该文博主lyg105504(林榆耿)】
例1.以下两条命令作用相同,都是给FileName的属主分配读、写、执行的权限,给FileName的属主所在组分配读、执行权限,给其他用户仅分配执行权限
#chmod751FileName
#chmodu=rwx,g=rx,o=xFileName
例2.以下三条命令作用相同,都是为所有用户仅分配读权限
#chmod444FileName
#chmod=rFileName
#chmoda-wx,a+rFileName
那么在Android系统中是否可用文本字符串形式的代替八进制数形式的权限值呢?
以我实验的结果来看,是不可以的,系统给的错误提示是:
"Badmode"。
可能是系统本身不支持吧。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android Iphone设备抓包方法 Iphone 设备 方法