Mac下抓包

阅读目录

  • 1.安装XQuartz
  • 2.安装Wireshark
  • 3.启动Wireshark
  • 4.选择网卡,开始抓包
  • 5.监听抓取802.11无线帧
  • 6.通过RVI抓取iPhone数据包
  • 7.关于监控模式(Monitor Mode)
  • 8.关于Wireshark的BPF权限问题
  • 9.关于数据包的源/目的地址
  • 10.在越狱iPhone上指定网卡(WiFi/xG)抓包

Wireshark针对UNIX Like系统的GUI发行版界面采用的是X Window(1987年更改X版本到X11)。Mac OS X在Mountain Lion之后放弃X11,取而代之的是开源的XQuartz(X11.app)。因此,在Mac OS X上安装Wireshark之前,需要先下载安装XQuartz。

回到顶部

1.安装XQuartz

XQuartz(XQuartz-2.7.6.dmg)安装完成后,按照提示需要注销重新登录,以使XQuartz作为默认的X11 Server。

安装成功后,在终端输入“xterm --help”可查看命令行帮助,输入“xterm -version”可查看xterm版本信息。在终端输入“xterm”或通过菜单“Applications->Terminal”可启动X Window(XQuartz)的终端(xterm)。

回到顶部

2.安装Wireshark

安装OS X 10.6 and later Intel 64-bit版本(Wireshark 1.12.0 Intel 64.dmg)。

安装成功后,在终端输入“wireshark --help”可查看命令行帮助,输入“wireshark --v”可查看wireshark版本信息。

回到顶部

3.启动Wireshark

首次启动Wireshark,提示通过前端X11窗口可以操控Wireshark;由于需要编译字体包,可能需要耗费几分钟。

如果事先没有安装X11(XQuartz),则会提示引导安装X11。

如果事先已经安装好XQuartz(X11),则会引导选择X11.app所在路径。——最新版本的Wireshark 1.12.4 Intel 64.dmg貌似会自动识别已安装的X11路径而无需手动指定。

点击Browse到“/Applications/Utilities/XQuartz.app”,将XQuartz作为Wireshark的X11前端。——最新版本的Wireshark 1.12.4 Intel 64.dmg貌似会自动识别已安装的X11路径而无需手动指定。

如果不出意外的话,Wireshark将成功启动。

回到顶部

4.选择网卡,开始抓包

点击启动首页中的“Interface List”(相当于菜单“Capture->Interfaces”),可以查看本机活跃网卡(通过系统菜单Apple->About This Mac->More Info->Overview->System Report或终端命令ifconfig也可查看)。

(如果弹出错误提示“There are no interfaces on which a capture can be done.”,在终端输入sudo wireshark给wireshark授root权限再重新登陆)

由于本人iMac使用无线接入,故en1(Wireless NIC)和lo0(本机环路)活跃(active),有线网卡en0(Wired NIC)未使用(inactive)。注意:MBP上无线网卡是en0,可通过ifconfig区分识别。

这里可以直接勾选en1,点击Start按钮使用默认Capture Options(默认勾选了混杂模式[promiscuous mode])进行抓包;可以在启动首页点选“Wi-Fi:en1”打开“Edit Interface Settings”,设置(例如可配置Capture Filters只捕捉指定类型或条件的数据包)或使用默认Capture Options开始抓包;也可以从菜单“Capture->Options”着手,选择网卡设置选项开始抓包。

这里选择了无线网卡(Wi-Fi: en1),怎么抓到的是以太网包(Ethernet Packet)呢?实际上它是某些BSD提供的伪以太网头(fake Ethernet headers)。如果要抓取IEEE802.11无线包(Beacon Frame等),则需要开启监听模式[monitor mode],并且将Link-layer header type选为802.11系列选项。

另外,在Display Filters中填写了“http”,将从捕捉到的数据包中过滤出并只显示HTTP协议包。

回到顶部

5.监听抓取802.11无线帧

在“Edit Interface Settings”或“Capture Options”中勾选“Capture packets in monitor mode”开启监听模式,然后勾选Link-layer header type为“802.11”开始抓取无线包。

说明:

(1)iMac开启Monitor Mode时,可能会阻塞网卡导致上不了网,参见下文相关说明。

(2)Windows下抓取802.11无线帧(Management/Control/DataFrame),需要Wireshark配合AirPcap或使用OmniPeek。

(3)常见802.11无线帧(802.11 frames)类型:

(1)Management Frame:

Type/Subtype: Beacon frame (0x0008,Bit[5:0]=00,1000B)

Type/Subtype: Probe Response (0x0005,Bit[5:0]=00,0101B)

(2)Control Frame:

Type/Subtype: 802.11 Block Ack (0x0019,Bit[5:0]=01,1001B)

Type/Subtype: Request-to-send (0x001b,Bit[5:0]=01,1011B)

Type/Subtype: Clear-to-send (0x001c,Bit[5:0]=01,1100B)

Type/Subtype: Acknowledgement (0x001d,Bit[5:0]=01,1101B)

(3)Data Frame:

Type/Subtype: Data (0x0020,Bit[5:0]=10,0000B)

Type/Subtype: Null function (No data) (0x0024,Bit[5:0]=10,0100B)

Type/Subtype: QoS Data (0x0028,Bit[5:0]=10,1000B)

Type/Subtype: QoS Data + CF-Ack + CF-Poll (0x002b,Bit[5:0]=10,1011B)

回到顶部

6.通过RVI抓取iPhone数据包

(1)RVI简介

使用Mac抓取iPhone数据包可通过共享和代理两种方式:

  • 使用Mac的网络共享功能将Mac的网络通过WiFi共享给iPhone连接;
  • 使用代理软件(例如Charles)在Mac上建立HTTP代理服务器。

这两种方式都是将iPhone的网络流量导入到Mac电脑中,通过Mac连接互联网。这就要求Mac本身是联网的,对于网络共享的方式还要求Mac本身的网络不能使用WiFi,而且在iPhone上只能使用WiFi连接,无法抓取到2G/3G网络包。

苹果在iOS 5中新引入了“远程虚拟接口(Remote Virtual Interface,RVI)”的特性,可以在Mac中建立一个虚拟网络接口来作为iOS设备的网络栈,这样所有经过iOS设备的流量都会经过此虚拟接口。此虚拟接口只是监听iOS设备本身的协议栈(但并没有将网络流量中转到Mac本身的网络连接上),所有网络连接都是iOS设备本身的,与Mac电脑本身联不联网或者联网类型无关。iOS设备本身可以为任意网络类型(WiFi/2G/3G),这样在Mac电脑上使用任意抓包工具(tcpdump、Wireshark、CPA)抓取RVI接口上的数据包就实现了对iPhone的抓包。

Mac OS X对RVI的支持是通过终端命令rvictl提供的,在终端(Terminal)中输入“rvictl ?”命令可查看帮助:

==================================================

rvictl Options:

-l, -L                     List currently active devices

-s, -S                     Start a device or set of devices

-x, -X                    Stop a device or set of devices

==================================================

(2)使用rvictl -s命令创建虚拟接口

首先,通过MFI USB数据线将iPhone连接到安装了Mac OS+Xcode 4.2(or later)的Mac机上。iOS 7以上需要搭配Xcode 5.0(or later),抓包过程中必须保持连接。

然后,通过iTunes->Summary或者Xcode->Organizer->Devices获取iPhone的UDID(identifier)。

接着,使用“rvictl -s”命令创建RVI接口,使用iPhone的UDID作为参数。

==================================================

$rvictl -s <UDID>

==================================================

创建成功后,在终端通过ifconfig命令可以看到多了一个rvi0接口。当有多个iOS设备连接iMac时,依次是rvi1,rvi2…,使用“rvictl -l”命令可以列出所有挂接的虚拟接口。

在Wireshark首页选择rvi0,使用默认的Capture Options即可开始对iPhone进行抓包。

下图为抓取的WiFi数据包:

其中iPhone手机连接WiFi动态获取的IP地址为192.168.199.230。

下图为抓取的3G数据包:

说明:联通3G上网动态分配的都是172.20网段(例如172.20.124.251)的这种B类私网地址(172.16.0.0~172.32.255.255)。手机百度中输入IP,ip138中显示的112.97.24.178是深圳联通附近基站对外的公网网关IP地址。

(3)使用rvictl -x命令删除虚拟接口

使用”rvictl -x“命令删除RVI接口,使用iPhone的UDID作为参数。

==================================================

$rvictl -x <UDID>

==================================================

回到顶部

7.关于监控模式(Monitor Mode)

(1)《Wireshark FAQ》:Q 10.1: How can I capture raw 802.11 frames, including non-data (management, beacon) frames?

NOTE: an interface running in monitor mode will, on most if not all platforms, not be able to act as a regular network interface; putting it into monitor mode will, in effect, take your machine off of whatever network it's on as long as the interface is in monitor mode, allowing it only to passively capture packets.

This means that you should disable name resolution when capturing in monitor mode; otherwise, when Wireshark (or TShark, or tcpdump) tries to display IP addresses as host names, it will probably block for a long time trying to resolve the name because it will not be able to communicate with any DNS or NIS servers.

(2)《AirSnort FAQ》:Q 3: What is the difference betwen monitor and promiscuous mode?

Monitor mode enables a wireless nic to capture packets without associating with an access point or ad-hoc network. This is desirable in that you can choose to "monitor" a specific channel, and you need never transmit any packets. In fact transmiting is sometimes not possible while in monitor mode (driver dependent). Another aspect of monitor mode is that the NIC does not care whether the CRC values are correct for packets captured in monitor mode, so some packets that you see may in fact be corrupted.

回到顶部

8.关于Wireshark的BPF权限问题

实际上,我在OS X 10.9.4上安装XQuartz+Wireshark非常顺利,没有出现什么诸如无法发现网卡(nointerface available)的权限问题。

安装前执行“ls -l /dev/bpf*”,bpf0/bpf1/bpf2/bpf3只有“rw-------”权限;安装完成时,再次执行“ls -l /dev/bpf*”,发现权限已经升级为了 “rw-rw----”,即Wireshark已经给当前安装使用Wireshark的user(administrator)所在的group配置了rw权限。相当于执行过“sudo chmod g+rw /dev/bpf*”,并且已经被配置到随机启动,下次开机不用重新执行该命令。

--------------------------------------------------------------------------------

/CapturePrivileges- you must have sufficient privileges to capture packets, e.g. special privileges allowing capturing as a normal user (preferred) or root / Administrator privileges.

In order to capture packets under BSD (including Mac OS X), you must have read access  to the BPF devices in /dev/bpf*.

Enabling and using the "root" user in Mac OS X

Platform-Specific information about capture privileges。

Howto securely configure Mac OS X for network packet sniffing with Wireshark

--------------------------------------------------------------------------------

回到顶部

9.关于数据包的源/目的地址

以第4节中GET http://blog.csdn.net/phunxm为例,仅做简单的分析。

###############################################################

发包的源MAC/IP地址为本机MAC/IP地址。
(1)Destination Mac为00:00:0c:07:ac:24(CISCO All-HSRP-routers_24)
socket编程通常在IP层以上进行,一般不关心MAC地址。我们的电脑也不可能与CSDN博客服务器直接相连,一般要经过很多中间节点(hops)。根据邻居协议,目的MAC地址为下一跳(next hop,[default] gateway/Router)的MAC地址。
通过Network Utility或“route -n get default”或“netstat -rn”命令可获得默认网关为10.64.66.1。通过“arp -a”显示“? (10.64.66.1) at0:0:c:7:ac:24 on en1 ifscope [ethernet]”。
(2)Destination IP为10.14.36.100
按道理,目的IP地址应该为CSDN博客服务器(blog.csdn.net)主机的IP(117.79.157.201),为什么这里的却为A类私网地址(10.14.36.100)呢?

这是因为内网使用了HTTP Proxy,10.14.36.100是proxy.pac基于域名判断出口返回的Proxy Server的IP地址。

###############################################################

收包(HTTP/1.1 200 OK)的目的MAC/IP地址为接收方(本机)的MAC/IP地址。

(1)源IP地址为Proxy Server的IP地址,同上。

(2)源MAC地址一般应为【默认】网关的MAC地址(进出都要过关),实际抓包却发现MAC地址并非【默认】网关的MAC地址,这是什么情况呢?

通过Windoze的“route print”或Mac OS X/UNIX的 “netstat -r”可查看路由表(Routing Tables)信息。通过Windoze的“tracert  10.14.36.100”或Mac OS X/UNIX的“traceroute 10.14.36.100”查看本机到代理10.14.36.100之间的路由信息,第一跳并非默认网关(10.64.66.1),而是10.64.66.2!

这是因为采用了热备路由(HSRP),HSRP协议利用优先级决定哪个路由器成为活动路由器,收包的那个陌生源MAC地址即是热备路由(10.64.66.2)的MAC地址!

回到顶部

10.在越狱iPhone上指定网卡(WiFi/xG)抓包

上文主要讲解的是在不越狱正常权限情况下,通过RVI虚拟接口挂钩抓取iPhone数据包,一台iPhone通常只对应一个RVI虚拟接口。但是iPhone本身支持两种上网模式——WiFi/xG(类似PC工作站多网卡情形),当xG和WiFi同时活跃时(en0为无线网卡,pdp_ip0为3G网卡),iOS将WiFi作为优先默认路由通道。

那么,当需要调试分析xG/WiFi切换或并存时的一些路由策略或临界流量问题时,如何抓取指定通道(WiFi/xG)的数据包呢?使用RVI通过包源IP可能可以区分,但是由于权限等问题,总是不那么方便。此时,通过越狱,在iPhone上安装远程登录工具包(OpenSSH)、网络诊断分析命令行工具network-cmds(arp,ifconfig,ping,traceroute,netstat),然后在WinPC或iMac上通过SSH隧道发送tcpdump命令可指定WiFi/xG网卡进行抓包(SSH远程控制iPhone运行tcpdump抓包),最后通过Wireshark对pcap文件进行分析或统计。

2. HTTP/HTTPS抓包

http://blog.csdn.net/jiangwei0910410003/article/details/41620363/

Mac 下抓包工具安装使用相关推荐

  1. mac下抓包工具proxyman

    今天用charles抓https的数据,结果我网上找了一堆的教程没有一个成功的,诶,愚蠢的我呀,还要找到了一款方便简单的抓包工具proxyman! 官网地址:https://proxyman.io/ ...

  2. Mac下抓包工具Charles的使用

    一.简介 Charles是目前最强大的http调试工具,在界面和功能上远强于Fiddler 1.1 界面功能 工具条包含了Charles的大部分功能 右键请求出现菜单,Charles的右键菜单功能比f ...

  3. linux下 抓包工具下载,Linux下抓包工具tcpdump使用介绍

    Linux下抓包工具tcpdump使用介绍 发布时间:2012-11-30 17:11:39   作者:佚名   我要评论 在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的 ...

  4. Fiddler4入门--手机抓包工具安装和使用说明

    Fiddler4入门--手机抓包工具安装和使用说明.电脑最好是笔记本连同一个wifi,这样能和手机保持统一局域网内. 很多区块链dapp项目方风控做的很差,利用fiddler抓包分析找一些漏洞,然后利 ...

  5. wireshark分析oracle报错,Linux下抓包工具tcpdump以及分析包的工具wireshark

    tcpdump是用来抓取数据的,wireshark则是用于分析抓取到的数据的. 一般需要安装,直接使用yum安装:yum -y install tcpdump即可. Tcpdump使用方法(1)关于类 ...

  6. linux服务器udp抓包工具,Linux下抓包工具tcpdump使用介绍

    点评:在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一,本文将介绍Linux下抓包工具tcpdump使用,需要的朋友可以参考下 在传统的网络分析和测试技术中,嗅探器 ...

  7. 【Fiddler Everywhere】2022最强抓包工具(安装 修改教程)

    人生苦短 我用python 今天来给大家整一个史上最强抓包工具(安装 修改教程)! 源码.资料电子书点击这里 一.Fiddler简介 Fiddler Everywhere 是啥? 从名称上来看, 就大 ...

  8. Wireshrk 3.0.0网络抓包工具安装及使用(图文教程)

    Python 全栈工程师核心面试 300 问深入解析(2020 版)----全文预览 Python 全栈工程师核心面试 300 问深入解析(2020 版)----欢迎订阅 Wireshark网络抓包工 ...

  9. Charles抓包工具安装教程

    Charles抓包工具简介 Charles是常用的网络封包截取工具,在做移动开发和测试时常常需要截取网络封包来分析. Charles是通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都 ...

最新文章

  1. 蓝绿部署、金丝雀发布(灰度发布)、AB测试……
  2. Android--GridView实现动态文字排版
  3. 在学习django的时候
  4. opencv中vc14和vc15的区别?
  5. 图像中值处理MATLAB实现
  6. phpstorm遍历PHP数组,使用PHPStorm对齐数组的键值对
  7. 设计模式(三)创建型模式
  8. 透视变换矩阵(单应矩阵)计算:findHomography 与 getPerspectiveTransform
  9. anguarjs 上传图片预览_JS控制上传图片个数,预览上传图片
  10. iOS开发之五:常用控件--UITextField的使用
  11. html怎么做成响应式的,怎么用html5完成响应式布局?
  12. python 抠图源码_别再自己抠图了,Python用5行代码实现批量抠图
  13. 首旅如家仍计划全年开店800-1000家;万豪旗下双品牌酒店“帆船”于宁夏银川启幕 | 美通企业日报...
  14. oracle密码过期了,oracle密码过期的彻底解决方案
  15. 金融借贷中的风险控制
  16. 系统wmi服务器,wmi的服务器实时监控系统
  17. java jit 原理_java的JIT 工作原理简单介绍
  18. Vue中:error ‘XXXXX‘ is not defined no-undef解决办法
  19. 图标(Icon)和图标按钮(IconButton)
  20. Hive常见面试题汇总

热门文章

  1. 将多个annotation xml文件转换为多个annotation txt文件
  2. 项目总结---05(RocketMq使用对比)
  3. Mysql 高可用部署实践
  4. 在Python中将Firefox扩展与Selenium结合使用
  5. PAT A1091 Acute Stroke ——帘卷西风,人比黄花瘦
  6. 个人免费邮箱可以注册么 收费邮箱的价格贵么
  7. android版本360ui,国产手机UI系统有哪些
  8. android x5全屏白色,x5webview 自定义全屏界面 X5webview完美去掉分享功能和缓存功能(2)...
  9. 计算机毕业设计Python+uniapp+安卓电影院售票管理APP论文(WEB+APP+LW)
  10. 【Python】Python之禅