Mac OS X 下捕获App局域网通讯包

Mac OS X 下捕获App局域网通讯包

一.抓包模式

因为工作关系,经常要分析App wifi通讯协议。我的开发电脑是Mac Book.

大体有如下几种模式:

+ App与服务器进行http通讯,这种情况下Http调试神器Charles 就派上用场。(这个参见本人其它博文)

+ App 与智能设备进行Wifi设备,一般是TCP包居多,往往不需要联入互联网,只是局域通讯。它需要用抓包软件Wireshark.

本文就是这种局域网Tcp模式,这种模式下无法使用Charles代理器模式,直接在电脑上只能抓自身的wifi包,无法抓到手机与智能设备之间的通讯。

后来综合找到一种可行模式,即Mac OS X打开互联网共享充当一个路由器。然后手机和智能设备均接这个虚拟路由器进行通讯,在Mac OS X 运行Wireshark 来捕获所有经过这个虚拟路由器的包。

二.打开Mac OS X 互联网共享

在英文版也称为Air port 共享。

它需要几个条件:

1. 以太网需接入互联网,通常就是用网线接到自家的真正的路由器上,即使通讯无需互联网,也要如此,否则无法调出互联网共享模式。

  1. 智能设备能使用路由器通讯(一般这个是标准功能)

打开方法如下:

打开系统偏好设置–>共享

在互联网共享中,作如下设置

1. 选择以太网作路由器WAN口联接。

2. 选择“Wi-Fi”共享给其它设备

3. 点击”Wifi 选项”设置这个虚拟路由器的热点名,密码

4. 点击”互联网共享“打开虚拟路由器

启动后,在左上角的Wifi 标志会出现一个小箭头,表示进入wifi共享模式

三.安装wireshark

wireshark 是基于Linux X11图形界面的强大网络工具,因此天然是支持Linux.随着X11 被移植到windows和Mac OS X。WireShark也支持多个操作系统。

Mac OS X 10.10 安装X11应用程序XQuartz

苹果最早在10.3 加入X11支持库,但是在10.10 又移走了对X11的支持,因此开发者必须手工先安装x11支持库 XQuartz .

首先下载

http://xquartz.macosforge.org/downloads/SL/XQuartz-2.7.7.dmg

运行dmg安装,但很奇怪没有在应用程序栏出现图标。重启机器。

但它是安装在 /Applications/Utilities/XQuartz.app 之下,因此你可以手工打开这个应用程序,它会出现一个终端窗口。

安装WireShark

这里 https://www.wireshark.org/download.html

下载mac版安装

在XQuartz终端下执行即可执行

sudo wireshark

注意这里的sudo是必须的,否则没有权限使用wifi的设备结点。

这是运行界面。

注意在Mac Book 下,实际的wifi设备结点是 en1.只有捕获这个网卡的包,才是手机和智能设备之间的包。

开始抓包吧!

这样当你的手机操作时,这时能就看到它的通讯包了!

四.后记

本架构也能捕获App移动互联网http通讯包。但是这一架构过于复杂,需要以太网,wifi,以及WireShark 的界面过于复杂。因此用App作http通讯时,抓包还是用Charles 简单好用(只需wifi即可)

windows7 也能通过虚拟wifi功能实现同样机制,具体参见

http://www.cnblogs.com/94YY/archive/2012/03/03/2378865.html

时间: 2024-12-19 03:35:35

Mac OS X 下捕获App局域网通讯包的相关文章

解决 Mac OS X 下 IntelliJ IDEA、jEdit 等 Java 程序中文标点输入无效的方法

Mac OS X 下基于 Java 的程序(如 IntelliJ IDEA.jEdit 等)会出现中文标点输入无效的问题,在中文输入法状态,可以输入中文字,但输入中文标点最后上去的是英文标点.查阅了相关资料,原来这是 Java 自己的 bug.从 Java 8u51 版本开始就出现了这个 bug,一直到现在最新的 Java 8u72 仍然如此,但是老版本 Java 8u45 是没有这个问题的.所以,可以采取变通的方法,在 Mac OS X 上同时装一个老版本的 JDK 8u45,不会影响已经安装

Mac OS X下的终端基本命令

Mac OS X 启用超级用户的方法 Root user,又名超级用户,是一个权力最高的Unix 账户,Root 的账户能在整个系统里任何部份进行任何"操作",包括:拷贝档案.移动/移除档案.执行程序等.所以,通常 Root 的账户都只会指派给高级专业的用户使用.因此,苹果把Root user 隐藏在MacOS X 里.但有时候我们不得不启用Root用户以便于实现某些操作,可以通过以下三种方法把启动Root账户.方法一:把Mac OS X 的安装光盘放入到光驱中,用光盘启动系统,在安装

Mac OS X下的USB设备连接与访问

由于COM协议的广泛使用,很多设备虽然接口改为了USB,但内部数据通讯协议仍然使用的是COM(即传统的RS232串口协议,新的使用TTL).很多设备使用了PL2302/CH340/FTDI等芯片来通过USB模拟出串口协议,如Arduino/NodeMCU等都采用类似的机制. 在Windows下,安装驱动程序后可以直接在"设备管理器"找到模拟的COM设备(找不到的话,可能驱动有问题了,有时候重新启动或重新安装能解决).在Linux下可以通过lsusb和dmesg列出USB端口和所模拟的C

Qt在Mac OS X下的编程环境搭建(配置Qt库和编译器,有图,很清楚)

尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要配置Qt库和编译器.编译器只能使用苹果公司自主研发的Clang.1.分别下载并安装XCode和Command Line Tools(必须安装),安装完毕后,Clang就有了. https://developer.apple.com/downloads/ 2.下载Qt并默认安装 http://down

Qt在Mac OS X下的编程环境搭建

尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要配置Qt库和编译器.编译器只能使用苹果公司自主研发的Clang.1.分别下载并安装XCode和Command Line Tools(必须安装),安装完毕后,Clang就有了. https://developer.apple.com/downloads/ 2.下载Qt并默认安装 http://down

Mac OS X 下安装python的MySQLdb模块

参考资料: mac os x下python安装MySQLdb模块   http://www.codeif.com/post/1073/ MAC OSX使用Python安装模块有关问题  http://www.myexception.cn/operating-system/1616547.html 在Mac OS X 中安装好了MySQL和Django,在Django中访问MySQL数据库时,提示“ImportError: No module named MySQLdb”,是由于没有安装Pytho

在Mac OS X下安装Android Studio

在Mac OS X下安装Android Studio只需要几步. 1. 下载Android Studio安装包(.dmg). 2. 打开Terminal输入java -version命令查看是否已安装JDK(1.8版本及以上),如果未安装就去http://www.oracle.com/technetwork/java/javase/downloads/index.html下载安装. 3. 双击Android Studio的dmg安装文件,把Android Studio拖放到Application

在mac os x 下升级emacs

大概是09年的时候接触到emacs这个编辑器,当时我们c语言老师用的,他自信满满,而那时我是个vimer,所以每次看他按那么多组合键我就替他感觉手指头累啊. 再后来我用了几年vim写代码,再后来用了许多脚本语言,还有遇到一些问题vim无法解决的. 后来我在12年的时候开始尝试着用emacs. 刚开始确实很不好用,但是后来越来越喜欢emacs. 当然vim我还是在用.现在重新拾起他们两个.我的最爱.哈哈哈哈. 回到正题,emacs在mac os x 下版本太低了.<blockquote>liwe

Mac OS X 下安装使用 Docker

它依赖于 LXC(Linux Container),能从网络上获得配置好的 Linux 镜像,非常容易在隔离的系统中运行自己的应用.也因为它的底层核心是个 LXC,所以在 Mac OS X 下需要在 VirtualBox 中跑一个精小的 LXC(这里是一个 Tiny Core Linux,完全在内存中运行,个头只约 24MB,启动时间小于 5 秒的 boot2docker) 虚拟机,构建在 VirtualBox 中.以后的通信过程就是 docker --> boot2docker --> co