iOS系统网络抓包方法

2023-11-20

原文地址:http://www.cnblogs.com/ydhliphonedev/archive/2011/10/27/2226935.html


在进行iOS开发过程中,经常会遇到各种各样的网络访问问题,以前苦于没有抓包工具,很多网络问题解决起来很痛苦。现在终于好了,本文提供两种方式进行网络抓包:


 


1. 网络共享 + 可视化抓包工具


基本原理
原理比较简单,ios设备通过代理方式共享连接mac电脑的无线网卡,使用抓包工具抓包,然后进行分析(我们推荐使用Wireshark,在MAC系统上也可以使用Paros工具)。


现在以MAC系统下Paros工具为例,详细描述下抓包过程:


操作步骤
1)  首先将MAC电脑的以太网共享给airport,使iOS设备能够通过wifi连接


打开系统偏好设置,找到共享,选择internet共享,在右侧“通过以下方式将”选择以太网,“连接共享给其他电脑”选择airPort。


2)  打开paros ,设置paros的本地代理paros下载地址(http://www.parosproxy.org/)


在paros的tools-》options中选择local proxy,在Address 中输入AirPort的ip地址。输入端口8080。打开系统偏好设置,找到网络,选择左侧的AirPort,可以看到AirPort的地址为169.254.69.225,将该地址填入到上面提到的Address栏中。


3)  使用ios设备连接mac共享出来的网络:在iOS设备中,选择设置-》通用-》网络-》wifi,找到共享的网络,加入。然后在该网络的纤细内容中的http代理部分,选择手动,输入paros中设置的代理ip和端口。


4)  下面就可以使用paros来监控iOS设备的网络,我们打开Safiri,在paros中即可察看到网络的所有请求。


 


2. tcpdump命令 + 可视化抓包工具


基本原理
tcpdump命令是一个网络的抓包的命令行,他能指定具体的设备,也能制定具体的五元组进行捕获链路上的数据包。它可以再终端上打印出来也可以将捕获到得数据写入到一个文件,文件的格式是二进制形式,所以,我在打开该文件的时候才用的工具是UltraEdit。


      当然也可以保存成Wireshark能够识别的pcap格式,然后使用Wireshark进行查看。


操作步骤
1)  采用ssh登陆iphone手机,使用top命令获取:


具体步骤如下:


a)       获取设备IP地址(wifi地址):


b)  在PC上打开终端,输入ssh root@IP地址:


 


         输入密码:alpine (root用户的默认密码)


 


2)  通过“tcpdump -X -s0  -w /data.pcap”命令将tcp数据包保存到iOS设备的根目录下。


 


3)  通过91助手等工具取出pcap文件,在Windows下使用双击使用Wireshark打开查看。


 


  当然也可以不输出到文件,tcpdump的命令格式和参数说明:


    tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]


      [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]


      [ -T 类型 ] [ -w 文件名 ] [表达式 ]


     选型介绍:


      -a     将网络地址和广播地址转变成名字;


  -d     将匹配信息包的代码以人们能够理解的汇编格式给出;


  -dd   将匹配信息包的代码以c语言程序段的格式给出;


  -ddd   将匹配信息包的代码以十进制的形式给出;


  -e     将捕获的包数显示出来


  -f    将外部的Internet地址以数字的形式打印出来;


  -l    使标准输出变为缓冲行形式;


  -n    不把网络地址转换成名字;


  -t     在输出的每一行不打印时间戳;


  -v    输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;


  -vv     输出详细的报文信息;


  -c    在收到指定的包的数目后,tcpdump就会停止;


  -F    从指定的文件中读取表达式,忽略其它的表达式;


  -i     指定监听的网络接口;


  -r    从指定的文件中读取包(这些包一般通过-w选项产生);


  -w   直接将包写入文件中,并不分析和打印出来;


  -T    将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)


 


    在使用该命令的时候,我主要使用的主要选项是:  -i [接口名]  -w [文件名]  -v -vv  -c -X -e


    例如:


    我在从eth0捕获100个数据包的时候,并将数据写入到capture.cap文件中,命令格式为:


    tcpdump -i eth0 -w capture.cap -v -vv -c 100 -X -e


    抓取一个一个ip段之间的数据包:


    tcpdump –s 0 –w socket host 10.1.3.9 and host 10.1.3.84


    如果从eth0且通信协议端口为22,目标IP为192.168.1.100获取数据:


    tcpdump -i eth0 port 22 and src host 192.168.1.100


    此外还有其他的一些关键词:host,(主机) , net( 网关), port(端口) , src(源IP) , dst(目的IP), 正则表达式:and , or。


 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS系统网络抓包方法 的相关文章

  • 无需 iPhone 6 Plus 即可预览 iOS 应用程序

    我已经在 Yosemite 中使用 iPhone 6 和 Quicktime 完成了 iOS 应用程序预览 视频 但我无法在 iTunes Connect 中为 iPhone 6 上传它 而且我没有 iPhone 6 设备 有没有办法在没有
  • 如何修复 ReactiveCocoa(带有 CocoaPods)的安装?

    这里是新手 尝试将 ReactiveCocoa 2 2 4 和 CocoaPods 安装到项目中 但在运行时遇到错误 我用过github 上的这个 podspec https github com CocoaPods Specs blob
  • 如何更改 UINavigationController 后退按钮名称?

    我有一个UIViewController我正在从第一个视图控制器导航到第二个视图控制器 我想更改显示在navigationcontroller为了回去 SecondViewController secondController Second
  • 在 JSQMessagesViewController 中显示 LocationMediaItem

    我刚刚尝试实施LocationMediaItem in my Xamarin iOS应用程序使用JSQMessagesViewController 一切都很顺利 唯一的问题是UICollectionView应该显示位置的单元格永远停留在加载
  • 如何从 Firebase 同步检索数据?

    我有两个集合 即用户和问题 根据使用 userId 登录的用户 我检索currQuestion价值来自users收藏 基于currQuestion值 我需要检索question来自 Firebase 的文档Questions收藏 我使用下面
  • 如何在 Swift 中创建 UIAlertView?

    我一直在努力在 Swift 中创建 UIAlertView 但由于某种原因我无法得到正确的语句 因为我收到此错误 找不到接受提供的 init 重载 论点 我是这样写的 let button2Alert UIAlertView UIAlert
  • iOS 13 检查 CLLocationManager 的临时授权状态

    根据 WWDC 视频 https developer apple com videos play wwdc2019 705 https developer apple com videos play wwdc2019 705 当你要求 Al
  • iOS WKWebView 处理文件下载

    我面临以下问题 在 Web 界面中 文件下载是通过锚标记触发的 如下所示 a href bla blabla a 虽然 Safari 浏览器可以处理此请求并打开一个对话框来处理文件 但 WKWebView 将此视为普通链接并且不对其执行任何
  • 如何在 iOS 中将 Firebase 对象持久保存到磁盘?

    看起来Firebase http www firebase comiOS 实现不支持客户端模型的离线缓存 这在实践中意味着 对于需要身份验证的 Firebase 应用程序 您需要首先进行身份验证并等待 Firebase 完成登录 检查用户身
  • 如何使用 SwiftUI 获取多个屏幕上的键盘高度并移动按钮

    以下代码获取键盘显示时的键盘高度 并将按钮移动键盘高度 在转换源 ContentView 和转换目标 SecibdContentView 处以相同的方式执行此移动 但按钮在转换目标处不移动 如何使按钮在多个屏幕上移动相同 import Sw
  • 为具有多个目标和不同平台的项目编写 Podfile

    我正在准备一个支持 OS X 和 iOS 的 Pod 我的 pod 有一些自己的依赖项 这些依赖项在 podspec 文件中定义 因此我使用 Podfile 来管理我用来开发 pod 和运行测试的项目的依赖项 我正在使用 CocoaPods
  • 与新 Apple Music 应用程序中相同的动态状态栏

    是否可以动态着色statusBar这是在新的苹果音乐应用程序 Edit iOS 8 4 中的新 Apple Music 应用程序具有此功能 打开应用程序 选择并播放歌曲 状态栏为白色 向下滑动播放器控制器以查看 我的音乐 控制器 它有黑色状
  • 是否可以使用UIPageControl来控制UITableView的移动?

    从Apple示例 PageControl 中我们可以知道UIPageControl可以用来控制scrollview中页面的移动 由于 UITableView 是 UIScrollView 的子类 我想使用 UIPageControl 来控制
  • 如何使用 Swift 将“完成”按钮添加到 iOS 中的数字键盘?

    它在默认键盘上工作得很好 但我无法让它在数字键盘上工作 有任何想法吗 据我所知 你不能在键盘部分添加 完成 按钮 你应该添加一个inputAccessoryView to the UITextField or UITextView 如果这就
  • Swift:协议、结构、类

    我开始学习 Swift 语言 但在理解协议 结构和类方面遇到了困难 我来自 Android 方面的编程 所以我相信 Swift 协议基本上是 Java 接口 其中每一个的正确用例是什么 这些类比并不 完全 正确 但这就是我所理解的要点 是的
  • 命令 /Applications/Xcode-beta.app/Contents/Developer/usr/bin/atool 失败,退出代码 255

    它发生在新的 Xcode7 beta 中 CompileAssetCatalog Users admin Library Developer Xcode DerivedData InstaAd ddgdnbxlpxipirebpndfmgr
  • cameraOverlayView 防止使用 allowedEditing 进行编辑

    在我的应用程序中 使用以下行在拍摄照片后对其进行编辑 移动和缩放 效果很好 imagePicker setAllowsEditing YES 但如果我还使用cameraOverlayView 则编辑模式将不再起作用 屏幕出现 但平移和捏合手
  • removeItemAtPath 完成

    我正在以这种方式删除路径上的文件 UIPanGestureRecognizer gesture UIPanGestureRecognizer sender UIButton button UIButton gesture view UIPa
  • 如何在 iOS 上固定证书的公钥

    在提高我们正在开发的 iOS 应用程序的安全性时 我们发现需要对服务器的 SSL 证书 全部或部分 进行 PIN 操作以防止中间人攻击 尽管有多种方法可以做到这一点 但当您搜索此内容时 我只找到了固定整个证书的示例 这种做法会带来一个问题
  • cordova插件条码扫描仪打不开扫描

    我的条形码扫描仪插件有问题 我不是天才 我不太了解如何编写网络应用程序 我使用phonegap和cordova 并且尝试制作一个网络应用程序 在单击链接后扫描条形码 我之前已经使用此命令行安装了该插件 cordova plugin add

随机推荐

  • ubuntu server 安装配置阿里云镜像源加快安装速度

    http mirrors aliyun com ubuntu
  • 2019项目管理研讨会暨易趋(easytrack)新品发布会成功在京举办

    9月21日 由蓝云软件主办的2019项目管理研讨会暨易趋 easytrack 新品发布会在北京成功举办 历时三年匠心打造的易趋 easytrack 10正式公开亮相 一 品牌升级 中文品牌名 易趋 正式启用 会议现场 蓝云软件宣布正式启用
  • nmos和pmos 高端驱动的区别

    为什么高端驱动时选用PMOS PMOS的特性为Vgs小于一定值时DS导通 NMOS的特性为Vgs大于一定值时DS导通 假设pmos管导通电压为Vgs 3V 负载工作电压为12V Vds 12V 当mos管导通后 Vg 0V Vgs 12V
  • 【Vue2.0源码学习】内置组件篇-keep-alive

    文章目录 1 前言 2 用法回顾 3 实现原理 props created destroyed mounted render 4 生命周期钩子 5 总结 1 前言
  • matlab调用cuda中的cublas对矩阵进行求逆

    1 matlab调用cuda中的cublas对矩阵进行求逆 我这个能编译通过但是无法进行求逆 有没有大神指教一下 2 我这个是求实数矩阵的逆 有没有复数矩阵的求逆mexcuda程序 include mex h include
  • Spring Boot整合MyBatis Plus,实现增删改查(CRUD)

    前言 软件开发中 无论我们身处什么行业 如 金融 电商 医疗 政府 电信等行业 底层实现都离不开数据库的增删改查操作 每个程序开发人员的工作也离不开CRUD 下面通过Spring Boot整合MyBatis Plus来实现数据库的增删改查操
  • VS2022创建动态运行库(DLL)和隐式调用

    创建动态运行库 一 打开VS2022 新建一个DLL工程 二 在项目中新建一个头文件 输入以下代码 pragma once ifdef BUILD DLL 当源文件中有 define BUILD DLL时执行dllexport BUILD
  • 高德地图实现聚合点功能实例

    在进地图API开发时 有时会出现海量数据展示 这里就不得不使用聚合点功能 减少页面初始化过程中加载过多数据而导致卡顿现象 这里通过高德地图API为例 通过简单实例 带大家了解下聚合点实现方法 一 引入相关资源
  • 网站架构探测&chrome插件用于信息收集

    文章目录 0x01 网站架构探测 云悉 潮汐指纹 0x02 chrome插件用于信息收集 添加插件的方法 官网添加方法 开发者模式添加 Wappalyzer 下载方法 功能 FOFA Pro view 下载方法 ModHeader 0x01
  • 博客搭建二:NexT主题相关设置beta

    安装NexT 在你的博客根目录 git clone https github com iissnan hexo theme next themes next 不同版本的NexT配置文件略有不同 本次使用的是hexo theme next 7
  • 多线程(九):JUC组件

    在来时juc组件前 我们先把上一章遗漏的部分给补上 synchronized 实现策略 锁升级 无锁 gt 偏向锁 gt 轻量级锁 gt 重量级锁 还有一个 锁消除 锁消除即删除不必要的加锁操作 JVM在运行时 对一些 在代码上要求同步 但
  • sort快速排序

    sort快速排序 使用sort必须要有相应的头文件 include
  • 中标麒麟系统把玩记录

    1 指令发送邮件 echo content mail vs this is title a a sh XXX XX com 其中 content代表发送的内容 thisistitle代表邮件主题 a sh为附件 2 开机运行脚本 在etc
  • 田忌赛马java代码算法,AcWing 1489. 田忌赛马——Java版代码

    import java io import java util public class 田忌赛马 public static void main String args throws IOException BufferedReader
  • Thrift快速入门

    文章目录 Thrift的安装 windows下安装 Linux下安装 Thrift的使用 编写IDL文件 命名空间 namespace 基本数据类型 类型定义 typedef 结构体类型 struct 枚举类型 enum 异常类型 exce
  • MybatisX简介

    MybatisX简介 前言 一 什么是MybatisX 二 如何使用 1 安装插件 2 创建一个mybatis项目或者于项目中引入mybatis依赖 3 快速生成示例 3 1 快速生成mapper方法 3 2 MybatisX Genera
  • 使用lattice包的bwplot函数绘制箱图比较多个模型在不同指标上的性能差异(R语言)

    使用lattice包的bwplot函数绘制箱图比较多个模型在不同指标上的性能差异 R语言 箱图是一种常用的数据可视化方法 用于表示一组数据的分布特征 包括中位数 四分位数 异常值等 在比较多个模型在多个指标上的性能差异时 箱图可以提供直观的
  • NCCL相关笔记

    本文仅代表个人观点 不保证正确性 一 NCCL简介 1 什么是NCCL NCCL是NVIDIA集合通信库 NVIDIA Collective Communications Library 的简称 是用于加速多GPU之间通信的库 能够实现集合
  • #css# 【四】如何使用hover,实现父对子的样式改变?

    css 如何使用hover 实现父对子的样式改变 思路及做法 鼠标移动到父盒子的时候 里面所有的子盒子的样式都发生变化的 只需要直接在hover后面加上空格 并且加上子盒子的类名 里面再写其他样式 父盒子的类名 hover 子盒子的类名 这
  • iOS系统网络抓包方法

    原文地址 http www cnblogs com ydhliphonedev archive 2011 10 27 2226935 html 在进行iOS开发过程中 经常会遇到各种各样的网络访问问题 以前苦于没有抓包工具 很多网络问题解决