zoukankan      html  css  js  c++  java
  • iOS系统网络抓包方法

    版权声明:本文为博主原创文章,未经博主同意不得转载。

    https://blog.csdn.net/wutiyixin/article/details/30221273

        在进行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地址。输入port8080。打开系统偏好设置,找到网络,选择左側的AirPort,能够看到AirPort的地址为169.254.69.225,将该地址填入到上面提到的Address栏中。

    3)  使用ios设备连接mac共享出来的网络:在iOS设备中,选择设置-》通用-》网络-》wifi。找到共享的网络。增加。

    然后在该网络的纤细内容中的http代理部分,选择手动,输入paros中设置的代理ip和port。

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

     

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

    • 基本原理

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

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

    • 操作步骤

    1)  採用ssh登陆iphone手机。使用top命令获取:

    具体过程例如以下:

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

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

     

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

     

    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且通信协议port为22。目标IP为192.168.1.100获取数据:

        tcpdump -i eth0 port 22 and src host 192.168.1.100

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

     

  • 相关阅读:
    Infopath Notify 弹出提示信息
    window.showModalDialog 返回值
    【转】获得正文内容中的所有img标签的图片路径
    Json Datable Convert
    Sharepoint 列表 附件 小功能
    Surgey 权限更改
    SQL 触发器用于IP记录转换
    Caml语句 查询分配给当前用户及当前组
    jquery 1.3.2 auto referenced when new web application in VSTS2010(DEV10)
    TFS diff/merge configuration
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10883527.html
Copyright © 2011-2022 走看看