精华内容
下载资源
问答
  • 网络抓包原理

    万次阅读 多人点赞 2018-06-08 16:27:02
    # 网络抓包原理及常用抓包工具本文以App作为例子,实际应用不限于App范围。## 1. 为什么要抓包1. 定位网络接口问题2. 分析其他App数据接口 3. 学习网络协议,使用抓包工具分析网络数据更直观 大部分场合都可以通过...

    # 网络抓包原理及常用抓包工具

    本文以App作为例子,实际应用不限于App范围。

    ## 1. 为什么要抓包

    1. 定位网络接口问题

    2. 分析其他App数据接口

    3. 学习网络协议,使用抓包工具分析网络数据更直观 

    大部分场合都可以通过程序调试来定位问题,但有些场景使用抓包来定位接口问题更准确、更方便,如以下场景:

    * 你发送数据给后台,但后台没有收到,可以对接口进行抓包分析,看是后台处理有问题,还是App没有将数据发出去,或是App发送数据格式有误

    * 你和后台接口联调测通,但业务数据对不上,你认为是后台问题,后台认为是你发的问题,可以抓包确认问题所在

    * 线上App出现bug需要定位,但你没在公司,没有代码可调试,可直接抓包分析

    * App页面渲染缓慢,抓包看下接口响应时长,是不是后台出现性能问题

    * 需要测试弱网环境下App的体验?抓包工具可设置流量限制,可设置接口堵塞

    * 想改变某接口的响应报文?想多次重发某一请求,但App业务流程有限制?可以试试抓包工具提供的功能

    ## 2. 抓包的原理

    要实现对App的网络数据抓包,需要监控App与服务器交互之间的网络节点,监控其中任意一个网络节点(网卡),获取所有经过网卡中的数据,对这些数据按照网络协议进行解析,这就是抓包的基本原理。

    但是中间网络节点,不受我们控制,所以基本无法实现抓包的,只能在客户端和服务端进行抓包。

    通常我们监控本地网卡数据,如下图:

     

     

    > 手机、本地网络属于客户端侧的抓包,接入设备、服务器属于后台侧的抓包,两者没有什么不同

    `本地网络`指的是WIFI的路由,如果直接抓路由器的包还是比较麻烦的,因此我们会在`手机``本地路由`之间加一层`代理服务`,这样只要抓代理服务的网络数据即可:

     

     

    虽然在`手机`侧也可实现抓包,但和`本地路由`一样,抓包比较麻烦,如果不是没有办法,尽量还是不在手机侧抓包。但是有一种情况必须在手机端抓包,那就是在4G网络情况下:


     4G网络状态下如何抓包,以及它的劣势,我们后面章节再细讲。

    ## 3. 网络协议

    抓包实际上是分析网络协议的一种过程,尽管繁琐的细节劳动都让抓包工具做了,但我们还是需要了解下基础的网络协议,好帮助我们更好的分析问题。

    首先需要了解下经典的OSI七层网络模型,以及每层的作用,其次对TCPHTTP协议简单了解。

     

    > 虚线框中的部分是需要着重了解的。

    #### HTTPSHTTP有什么不同?

    HTTPS是基于HTTP协议的一种改进,在`TCP之上`的会话层增加安全处理。对于应用层来说,HTTPSHTTP没有什么不同,也就是说,HTTPS是保证网络传输的安全性,对业务数据无侵入。

     

    简化理解大概是这个样子:

     

     SSLTLS是保证安全传输的协议,包括证书认证、加解密和数字签名。

    项目中HTTPS的链路:

     

    因此,客户端与后台,编写网络接口时,不需要关心SSLTLS,按照HTTP协议处理即可。

    既然HTTPS在网络传输是经过加密的,那么抓包抓到的数据就是密文,不经过解密是无法看到报文的。针对这个问题,如上图WIFI环境下设置代理的方式可以解决,具体思路是:

     

     

    所以整个网络链路依然是HTTPS在传输,但代理服务自己可以获取到明文数据。

    ## 4. 常用抓包工具

    比较常用的抓包工具大概有4个,主要用作互补,配合使用基本所有平台、所有抓包需求都能满足:

     

     

    * fidder  windows平台最受欢迎抓包工具,免费、易用

    * charles  Mac平台下最佳抓包工具,易于使用,收费软件,可一直试用

    * wireShark  老牌抓包工具,跨平台,功能齐全、强大

    * tcpdump  命令行程序,适用于手机系统和后台系统

    `需要说明的是,tcpdump可将数据保存成文件,直接用wireShark打开分析,针对后台或手机抓包使用起来十分方便。`

    几个工具间的使用关系:

    1. 如果是windows平台,使用fidder

    2. 如果是Mac平台,使用charles

    3. 如果是linux平台(手机或后台),使用tcpdump

    4. 如果抓非HTTP(S)协议的包,如TCP包,则使用wireShark 

    ## 5. 真机抓包 

    为什么要真机抓包?必定是没有办法设置代理服务了,如4G网络情况下直接和移动基站链接,没法设置代理服务。凡是非4G网络状态下,都不建议真机抓包。 

    #### 5.1 iOS真机抓包

    iOS 5后,apple引入了RVI remote virtual interface的特性,它只需要将iOS设备使用USB数据线连接到mac上,然后使用rvictl工具以iOS设备的UDID为参数在Mac中建立一个虚拟网络接口rvi,就可以在mac设备上使用tcpdumpwireshark等工具对创建的接口进行抓包分析。

    具体步骤:

    1. 获得iOS设备的UDID

    2. 使用USB数据线将iOS设备和MAC连接

    3. 创建RVI接口 `rvictl -s <UDID>`

    4. 使用wireShark抓取`rvi0`虚拟接口

    5. 移除RVI接口 `rvictl -x <UDID>`

    > 真机抓包,意味着无法获取HTTPS的明文数据,因此真机抓包的意义不大,只能用户分析网络接口连通性,正确性,无法分析业务报文是否正确。

    #### 5.2 android真机抓包

    androidlinux系统,和后台一样可以使用tcpdump命令来抓包,但是需要root权限,因为一般手机系统不带有抓包命令`tcpdump`,需要自行安装。

    安装tcpdump

    1. 下载android版本的[tcpdump](https://www.androidtcpdump.com)

    2. adb shell

    3. su #切换root用户

    4. chmod 777 /data/local  #修改目标路径权限,这里是/data/local

    5. adb push tcpdump /data/local #tcpdump拷贝到目标路径

    > tcpdump命令不能执行,需要赋予该文件chmod +x tcpdump

    使用tcpdump

    1. adb shell

    2. su

    3. /data/local/tcpdump -p -vv -s 0 -i any -w /data/local/capture.pcapng

    这是就已经进入抓包状态,手机所有的网络请求都会被捕获,并保存到capture文件中。

    导出capture文件:

    1. adb pull /data/local/capture.pcapng .  #导出到当前目录

    2. 使用wireShark打开capture文件,进行浏览分析

    > 若进行pushpull操作不成功,可能是因为不让直接操作/data/local等系统目录,可以先pullsd卡,在将文件从sd卡拷贝到/data/local,反之依然。

     

     

     

     

     

     

     

     

     

    展开全文
  • 一. 什么是抓包? 在应用的开发调试中,查看软件实际运行时HTTP/HTTPS通信的请求数据和返回数据,从而分析问题的过程就叫做抓包。...抓包原理其实很简单,PC上的Fiddler监听一个端口,比如8888,在Android测试.

    一. 什么是抓包?

    在应用的开发调试中,查看软件实际运行时HTTP/HTTPS通信的请求数据和返回数据,从而分析问题的过程就叫做抓包。通常我们说的抓包主要是分为两种:

    • 使用Wireshark抓取传输层的TCP/UDP通信包。
    • 使用Fiddler或者Charles抓取应用层的HTTP/HTTPS通信包。

    在大部分场景下,我们只是需要抓取应用层的HTTP/HTTPS数据包也就是第二种方式。

    二. 抓包的原理.

    抓包的原理其实很简单,PC上的Fiddler监听一个端口,比如8888,在Android测试机上连接同一个局域网,配置网络代理,指向该PC的8888端口,这样一来测试机的所有网络通信都会被转发到PC的8888端口,进而被Fiddler捕获,然后就可以对数据包进行分析。经常用的网络协议分为HTTP和HTTPS,HTTPS在HTTP上进行了加密操作,所以对这两种请求进行抓包也有不同。

    对HTTP请求进行抓包

    对于HTTP协议,因为本身就是明文传输,所以可以直接看到数据报文,除非对这些明文在传输时进行二次加密,但那是另一种情况,这里暂不分析。

    对HTTPS请求进行抓包

    对于双向加密的HTTPS,正常情况下,即使能以中间人的方式拿到通信报文,但是因为没有密钥,同样也不能看到具体的传输内容。基于HTTPS加密通信的建立过程,和密钥交换方式,如果在加密通信建立之前,截取服务端发送的包含证书的报文,伪装成服务端,把自己的证书发给客户端,然后拿到客户端返回的包含对称加密通信密钥的报文,以服务端自己的公钥加密后发给服务端,这样一来,双向加密通信建立完成,而中间人实际拿到了通信的密钥,所以可以查看、修改HTTPS的通信报文,这就是典型的Man-in-the-middle attack即MITM中间人攻击。
    这样似乎看起来,HTTPS也不是那么安全,当然不能这么说了,实现MITM最关键的一点,是中间人要把服务端证书替换成自己的证书发给客户端,让客户端相信自己就是服务端,那么问题是,客户端为什么会信任而进行替换呢?HTTPS之所以安全,是因为它用来建立加密通信的证书是由权威的CA机构签发的,受信的CA机构的根证书都会被内嵌在Windows, Linux, macOS, Android, iOS这些操作系统里,用来验证服务端发来的证书是否是由CA签发的。CA机构当然不可能随便给一个中间人签发不属于它的域名证书,那么只有一个很明显的办法了,把中间人的根证书,导入到客户端的操作系统里,以此来完成建立加密通信时对中间人证书的验证。

    所以,在一定的情况下,HTTPS通信是可以被监听的,抓包的实现基础,是Android测试机导入Fiddler或者Charles的根证书。

    无论是fidder和charles都是充当了一个中间人代理的角色来对HTTPS进行抓包:

    • 截获客户端向发起的HTTPS请求,佯装客户端,向真实的服务器发起请求。
    • 截获真实服务器的返回,佯装真实服务器,向客户端发送数据。
    • 获取了用来加密服务器公钥的非对称秘钥和用来加密数据的对称秘钥。
      HTTPS中间人攻击

    三. Android设备抓包问题

    1. Android6.0 及以下系统

    可以直接使用FIddler进行抓包。

    2. Android7.0 及以上系统

    在Android 7.0及以上的设备上测试时,发现又抓不到HTTPS了。原因是,Google在Android 7.0时更改了App对操作系统本地证书的信任机制,在Android 7.0之前,默认信任系统预置证书和用户自导入证书,在Android 7.0(API 24)之后,为了保障App的通信安全,避免被第三方抓包,做了些改动,App默认只信任系统预置证书,而不再信任用户自导入证书(把MITM的ssl证书,安装到 受信任的凭据 -> 用户)抓出来的https的请求,都是加了密的,无法看到原文了.解决的方式有如下几种:

    • 修改App的AndroidManifest网络安全配置,信任用户自导入证书。
    • Root测试机或自编译系统,把Fiddler根证书设置为系统预置证书。
    • 在Android 7.0以下的测试机中抓包。
    • targetSDK版本设置为24以下。

    方式一
    如果是自己公司开发的应用那么在 Android 工程目录的 res 底下创建一个 xml 文件夹,然后在内部创建一个名为 “network_security_config.xml” 的文件。

    	  <network-security-config>
    	    <base-config cleartextTrafficPermitted="true">
    	        <trust-anchors>
    	            <certificates src="system" overridePins="true" />
    	            <certificates src="user" overridePins="true" />
    	        </trust-anchors>
    	    </base-config>
    	  </network-security-config>
    

    在 AndroidManifest 里的标签中,添加代码:

    	android:networkSecurityConfig="@xml/network_security_config"
    

    这种方式只适用于能自己修改源码的应用。

    方式二

    方式三和方式四用的比较少.

    四. 选择抓包工具

    主流的Http/Https抓包工具有Fiddler、Charles等。Mac上用的较多的一般是Charles。两种工具的使用方式大同小异,本文主要讲Fiddler抓包工具的使用。

    1. 下载Fiddler:

    官网下载
    百度云 提取码:fqdr

    2. 安装Fiddler:

    • 将安装包进行安装。
    • 找到安装的目录,将启动文件发送到桌面快捷方式。
      image.png

    3. Fiddler工作原理.

    Fiddler是以代理WEB服务器的形式工作的,它默认使用代理地址**:127.0.0.1**, 端口**:8888**。 当Fiddler开启时会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。

    五. Fiddler相关设置

    1. 浏览器设置代理.

    当Fiddler启动后,会默认将代理设为了127.0.0.1 端口号为8888。有些浏览器需要手动设置代理,在浏览器设置里面进行代理设置:

    2. Fiddler开启抓包.

    要使用Fiddler进行抓包,首先需要确保Capture Traffic是开启的(安装后是默认开启的),勾选File->Capture Traffic3。

    3. Fiddler工具面板.


    说明注释、重新请求、删除会话、继续执行、流模式/缓冲模式、解码、保留会话、监控指定进程、寻找、保存会话、切图、计时、打开浏览器、清除IE缓存、编码/解码工具、弹出控制监控面板、MSDN、帮助。
    两种模式:

    • **缓冲模式(Buffering Mode)**Fiddler直到HTTP响应完成时才将数据返回给应用程序。可以控制响应,修改响应数据。但是时序图有时候会出现异常。
    • **流模式(Streaming Mode)**Fiddler会即时将HTTP响应的数据返回给应用程序。更接近真实浏览器的性能。时序图更准确,但是不能控制响应。

    4. Fiddler会话面板.


    各种图标的含义:

    5. Fiddler页签功能.

    5.1 Statistics

    这一部分是统计信息视图,显示了所有HTTP通信,展示了哪些文件生成了当前请求的页面。可以选择一个或多个会话,然后得出所选会话的统计信息:

    5.2 Inspectors

    分为上下两个部分,上半部分是请求头部分,下半部分是响应头部分。对于每一部分,提供了多种不同格式查看每个请求和响应的内容。JPG 格式使用 ImageView 就可以看到图片,HTML/JS/CSS 使用 TextView 可以看到响应的内容。Raw标签可以查看原始的符合HTTP标准的请求和响应头。Auth则可以查看授权Proxy-Authorization 和 Authorization的相关信息。Cookies标签可以看到请求的cookie和响应的set-cookie头信息。

    5.3 AutoResponder

    Fiddler比较重要且比较强大的功能之一。可用于拦截某一请求,并重定向到本地的资源,或者使用Fiddler的内置响应。可用于调试服务器端代码而无需修改服务器端的代码和配置,因为拦截和重定向后,实际上访问的是本地的文件或者得到的是Fiddler的内置响应。

    5.4 Composer

    HTTP Request发射器。功能是创建HTTPRequest,然后发送。

    5.5 Filter(过滤器)
    • 开启过滤功能:
    • 加载过滤功能:

    6. Fiddler过滤方式

    6.1 内外网过滤:

    6.2 对host过滤:


    输入多个HOST,多个之前用半角逗号或者回车分隔;
    支持通配符:*,baidu.com;

    6.3 Client Process(进程)过滤
    • Show only traffic from:你可以指定只捕获哪个Windows进程中的请求;
    • Show only Internet Explorer traffic:只显示IE发出的请求;
    • Hide Windows RSS platform traffic:隐藏Windows RSS平台发出的请求;

    image.png

    image.png

    6.4 Request Headers过滤

    请求header过滤规则:
    经常使用:Show only if URL contains;
    Flag requests with headers:标记带有特定header的请求;
    Delete request headers:删除请求header;
    Set request header设置请求的header;
    image.png

    6.5 Breakpoints

    断点设置规则:
    Break request on HTTP POST:给所有POST请求设置断点;
    Break request on HTTP GET with QueryString:给所有带参数的GET请求设置断点;
    Break response on Content-Type:给特定的Content-Type设定断点;

    6.6 Response Status Code过滤

    响应HTTP状态过滤规则:
    Hide success(202,204,206):隐藏响应成功的session(202,204,206);
    Hide Authentication demands(401):隐藏未经授权被拒绝的session(401);
    Hide redirects(300,301,302,303,307):隐藏重定向的session(300,301,302,303,307);
    Hide Not Modified(304):隐藏无变更的session(304);

    6.7 Response Type and Size

    响应类型和大小过滤规则:
    Show all Content-Type:显示所有响应类型;
    Hide smaller than ?KB:隐藏小于指定大小的session;
    Hide larger than ?KB:隐藏大于指定大小的session;
    Time HeatMap:获得即时数据(绿色阴影代表响应时间在50毫秒以内;超过50毫秒但在300毫秒之内的响应条目没有颜色;响应时间在300至500毫秒之间的会涂以黄色;超过500毫秒的用红色底纹显示);
    Block script files:阻止脚本文件,显示为404;
    Block image files:阻止图片文件;
    Block SWF files:阻止SWF文件;
    Block CSS files:阻止CSS文件;

    6.8 Response Headers

    响应header过滤规则:
    Flag response that set cookies:标记会设置cookie的响应;
    Flag response with headers:标记带有特定header的响应;
    Delete response headers:删除响应header;
    Set response header:设置响应的header;

    六. Fiddler断点功能

    断点的主要作用:篡改和伪造数据。
    1.为什么要打断点呢?
    比如一个购买的金额输入框,输入框前端做了限制100-1000,那么我们测试的时候,需要测试小于100的情况下。很显然前端只能输入大于100的。这时我们可以先抓到接口,修改请求参数,绕过前端,传一个小于100的数,检查服务端的功能是否OK。也就是说接口测试其实是不需要管前端的,主要测后端的功能。
    例如:
    使用支付宝购买虚拟商品,往支付宝跳转时,篡改了小的金额,结果购买虚拟商品成功了。(原本10元的商品,0.01元就搞定了)。多么可怕的一个bug。

    断点可以打到两个地方:

    1. before response:这个是打在request请求的时候,未到达服务器之前。
    2. after response:也就是服务器响应之后,在Fiddler将响应传回给客户端之前。


      选中before requests选项后,请求一个网址:

      进入到断点了

    对数据进行拦截并且修改:



    通过最后的结果可以看到数据已经被我们拦截并且修改成功了。

    七. Fiddler抓取https请求

    fiddler抓取https原理
    Fiddler处理HTTPS请求的原理
    Fiddler抓取https原理-知乎
    在抓取https的数据包时,fiddler会话栏目会显示“Tunnel to….443”的信息,这个是什么原因呢?
    connect表示https的握手(也就是认证信息,只要是https就要进行认证),只要不是满篇的Tunnel to….443,就没有任何问题。我们可以选择将这类信息进行隐藏。





    查看一下证书,Actions—>open windows certificate Manager


    如果还是不能抓包成功参考一下解决:
    强烈推荐(原创亲测)!!!Fiddler抓取https设置详解(图文)

    八. 移动设备抓包.

    1. Fiddler设置允许手机远程连接。

    如果想要捕获手机上的通信数据,就需要手机连接上Fiddler代理,而Fiddler默认是不允许其他设备进行连接的,解决办法:点击 Fiddler->Tools -> Options,在 Connections 面板选中 Allow remote computers to connect 允许其他设备连接(此操作需重启Fiddler生效)。

    2. 获取安装Fiddler的Pc的ip地址。

    • 通过fiddler里面查看
    • 通过windows命令行查看

    3. Android设备抓包

    注意:需要手机和电脑在同一局域网里面才可以进行抓包
    在手机设置里面找到自己连接的WiFi长按,弹出修改网络弹窗,选择修改网络,点击高级选项的下拉菜单,选择手动,配置好主机和端口号,然后确定就可以对手机进行抓包了。



    4. IOS设备抓包


    手机安装根证书。

    在手机上需要安装Fiddler根证书,因为Fiddler是通过自己生成的证书对网络请求重新签名进行https会话解密的,如果不安装证书的话只能抓取HTTP请求。
    打开手机浏览器,输入Fiddler Server地址, 跳转到 Fiddler Echo Service 证书下载页,点击FiddlerRoot certificate下载并安装;


    然后输入手机密码,安装好证书。

    注意:如果手机设置代理后,测玩之后记得恢复原样(去掉手动设置的代理),要不然手机无法正常上网。

    展开全文
  • 感谢和转载于: ... 本文以App作为例子,实际应用不限于App范围。 前言:本来只打算放链接的,但是看见文本是以富文本格式展示的,却是以...1. 为什么要抓包 定位网络接口问题 分析其他App数据接口 学...

    感谢和转载于:
    https://blog.csdn.net/l61052319940708/article/details/80624900
    本文以App作为例子,实际应用不限于App范围。
    前言:本来只打算放链接的,但是看见文本是以富文本格式展示的,却是以markdown写的= =,强迫症犯了,实在喜欢整洁的格式= =

    1. 为什么要抓包

    1. 定位网络接口问题

    2. 分析其他App数据接口

    3. 学习网络协议,使用抓包工具分析网络数据更直观

    大部分场合都可以通过程序调试来定位问题,但有些场景使用抓包来定位接口问题更准确、更方便,如以下场景:

    • 你发送数据给后台,但后台没有收到,可以对接口进行抓包分析,看是后台处理有问题,还是App没有将数据发出去,或是App发送数据格式有误

    • 你和后台接口联调测通,但业务数据对不上,你认为是后台问题,后台认为是你发的问题,可以抓包确认问题所在

    • 线上App出现bug需要定位,但你没在公司,没有代码可调试,可直接抓包分析

    • App页面渲染缓慢,抓包看下接口响应时长,是不是后台出现性能问题

    • 需要测试弱网环境下App的体验?抓包工具可设置流量限制,可设置接口堵塞

    • 想改变某接口的响应报文?想多次重发某一请求,但App业务流程有限制?可以试试抓包工具提供的功能

    2. 抓包的原理

    要实现对App的网络数据抓包,需要监控App与服务器交互之间的网络节点,监控其中任意一个网络节点(网卡),获取所有经过网卡中的数据,对这些数据按照网络协议进行解析,这就是抓包的基本原理。

    但是中间网络节点,不受我们控制,所以基本无法实现抓包的,只能在客户端和服务端进行抓包。

    通常我们监控本地网卡数据,如下图:

    在这里插入图片描述

    手机、本地网络属于客户端侧的抓包,接入设备、服务器属于后台侧的抓包,两者没有什么不同

    本地网络指的是WIFI的路由,如果直接抓路由器的包还是比较麻烦的,因此我们会在手机本地路由之间加一层代理服务,这样只要抓代理服务的网络数据即可:

    在这里插入图片描述

    虽然在手机侧也可实现抓包,但和本地路由一样,抓包比较麻烦,如果不是没有办法,尽量还是不在手机侧抓包。但是有一种情况必须在手机端抓包,那就是在4G网络情况下:

    在这里插入图片描述

    4G网络状态下如何抓包,以及它的劣势,我们后面章节再细讲。

    3. 网络协议

    抓包实际上是分析网络协议的一种过程,尽管繁琐的细节劳动都让抓包工具做了,但我们还是需要了解下基础的网络协议,好帮助我们更好的分析问题。

    首先需要了解下经典的OSI七层网络模型,以及每层的作用,其次对TCP、HTTP协议简单了解。

    在这里插入图片描述

    虚线框中的部分是需要着重了解的。

    HTTPS与HTTP有什么不同?

    HTTPS是基于HTTP协议的一种改进,在TCP之上的会话层增加安全处理。对于应用层来说,HTTPS和HTTP没有什么不同,也就是说,HTTPS是保证网络传输的安全性,对业务数据无侵入。

    简化理解大概是这个样子:

    在这里插入图片描述

    SSL和TLS是保证安全传输的协议,包括证书认证、加解密和数字签名。

    项目中HTTPS的链路:
    在这里插入图片描述

    因此,客户端与后台,编写网络接口时,不需要关心SSL或TLS,按照HTTP协议处理即可。

    既然HTTPS在网络传输是经过加密的,那么抓包抓到的数据就是密文,不经过解密是无法看到报文的。针对这个问题,如上图WIFI环境下设置代理的方式可以解决,具体思路是:

    在这里插入图片描述

    所以整个网络链路依然是HTTPS在传输,但代理服务自己可以获取到明文数据。

    4. 常用抓包工具

    比较常用的抓包工具大概有4个,主要用作互补,配合使用基本所有平台、所有抓包需求都能满足:

    在这里插入图片描述

    • fidder windows平台最受欢迎抓包工具,免费、易用

    • charles Mac平台下最佳抓包工具,易于使用,收费软件,可一直试用

    • wireShark 老牌抓包工具,跨平台,功能齐全、强大

    • tcpdump 命令行程序,适用于手机系统和后台系统

    需要说明的是,tcpdump可将数据保存成文件,直接用wireShark打开分析,针对后台或手机抓包使用起来十分方便。

    几个工具间的使用关系:

    1. 如果是windows平台,使用fidder

    2. 如果是Mac平台,使用charles

    3. 如果是linux平台(手机或后台),使用tcpdump

    4. 如果抓非HTTP(S)协议的包,如TCP包,则使用wireShark

    5. 真机抓包

    为什么要真机抓包?必定是没有办法设置代理服务了,如4G网络情况下直接和移动基站链接,没法设置代理服务。凡是非4G网络状态下,都不建议真机抓包。

    5.1 iOS真机抓包

    iOS 5后,apple引入了RVI remote virtual interface的特性,它只需要将iOS设备使用USB数据线连接到mac上,然后使用rvictl工具以iOS设备的UDID为参数在Mac中建立一个虚拟网络接口rvi,就可以在mac设备上使用tcpdump,wireshark等工具对创建的接口进行抓包分析。

    具体步骤:

    1. 获得iOS设备的UDID

    2. 使用USB数据线将iOS设备和MAC连接

    3. 创建RVI接口 rvictl -s <UDID>

    4. 使用wireShark抓取rvi0虚拟接口

    5. 移除RVI接口 rvictl -x <UDID>

    真机抓包,意味着无法获取HTTPS的明文数据,因此真机抓包的意义不大,只能用户分析网络接口连通性,正确性,无法分析业务报文是否正确。

    5.2 android真机抓包

    android是linux系统,和后台一样可以使用tcpdump命令来抓包,但是需要root权限,因为一般手机系统不带有抓包命令tcpdump,需要自行安装。

    安装tcpdump:

    1. 下载android版本的tcpdump

    2. adb shell

    3. su #切换root用户

    4. chmod 777 /data/local #修改目标路径权限,这里是/data/local

    5. adb push tcpdump /data/local #将tcpdump拷贝到目标路径

    若tcpdump命令不能执行,需要赋予该文件chmod +x tcpdump

    使用tcpdump:

    1. adb shell

    2. su

    3. /data/local/tcpdump -p -vv -s 0 -i any -w /data/local/capture.pcapng

    这是就已经进入抓包状态,手机所有的网络请求都会被捕获,并保存到capture文件中。

    导出capture文件:

    1. adb pull /data/local/capture.pcapng . #导出到当前目录

    2. 使用wireShark打开capture文件,进行浏览分析

    若进行push及pull操作不成功,可能是因为不让直接操作/data/local等系统目录,可以先pull到sd卡,在将文件从sd卡拷贝到/data/local,反之依然。


    作者:吊儿郎当小女子
    来源:CSDN
    原文:https://blog.csdn.net/l61052319940708/article/details/80624900
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 抓包原理分为网络原理和底层原理1.网络原理: 1)本机环境-直接抓本机网卡进出的流量:直接在终端安装ws,然后ws抓本机网卡的与互联网通信的流量。 2)集线器环境(老网络)-集线器:向其他所有端口都会泛洪,抓...

    抓着寒假的尾巴,2.28,更新一波。

    抓包原理分为网络原理底层原理

    1.网络原理:

                        1)本机环境-直接抓本机网卡进出的流量:直接在终端安装ws,然后ws抓本机网卡的与互联网通信的流量。

                  2)集线器环境(老网络)-集线器:向其他所有端口都会泛洪,抓整个局域网里面的包。

                             *集线器-hub

    展开全文
  • c语言抓包并分析

    2015-01-21 09:08:08
    纯c语言实现抓包,分析包的来源IP,硬件地址和目的地IP硬件地址,以及以太网类型,对原始套接字学习有所帮助
  • 一、wireshark抓包原理

    2020-12-25 14:10:29
    一、什么样的“”能够被wireshark抓住? 1、本机 说明:即直接抓取进出本机网卡的流量。这种情况下,wireshark会绑定本机的一块网卡。 2、集线器 说明:用于抓取流量泛洪,冲突域内的数据包,即整个局域网的...
  • 1.1.2 Wireshark安装入门之抓包原理.mp4 1.1.3 WireShark安装入门之初始安装.mp4 1.1.4 WireShark安装入门之快速抓包.mp4 1.1.5 Wireshark安装入门之界面介绍.mp4 1.2.1 Wireshark进阶调试之显示界面设置.mp4 1.2.2 ...
  • 网络设备无线路由器相关行业从事5年以上,有丰富经验。 根据所学知识编写的入门基础知识文档,适合小白对WIFI感兴趣或者同行专业人士学习。
  • 软件测试工作中,我们时常需要查看接口请求、或者服务器的返回,携带的参数、请求地址、返回的参数、或者token、cookies是否正确,文档中介绍了几种常用的方式。既有PC端,又有移动端,初步介绍了常用的几种方式,...
  • 网络工程原理课程设计抓包Java代码
  • 该资源为网络协议原理课程中的网络抓包与分析实验的实验报告
  • Fiddler抓包原理解析

    千次阅读 2019-08-20 21:23:11
    是位于客户端和服务器端之间的http(s)代理,它通过代理的方式获取程序http通讯的数据,可以用其检测网页和服务器的交互情况,记录所有客户端和服务器间的http请求,针对特定的http(s)请求,分析网络传输的数据,支持...
  • 最近在用Wireshark抓包工具的时候,老感觉这东西用起来很简单,功能强大,所以想了解他的实现原理,我就自己好奇写了一个实现基本功能的demo吧。 其实叫抓包工具,其实就是抓取流经自己网卡的所有ip包,我们能够...
  • Wireshark网络抓包入门之入门原理 Wireshark原理 网络抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作。也用来检查网络安全,抓包也经常被用来进行数据截取等。 Wireshark软件功能:分析底层...
  • WireShark抓包网络原理

    2019-10-14 18:53:04
    抓包原理: 本机安装wireshark后自动绑定一个网卡 抓取电脑网卡进出的流量 还可以通过集线器抓取整个局域网的流量 另一种是交换机环境 交换机环境分为端口镜像,ARP欺骗,MAC泛洪 交换机属于链路层,通信完全采用...
  • libpcap抓包原理分析

    千次阅读 2013-02-26 18:49:37
    为了更好的理解代码的实现过程,我关注了Libpcap的抓包原理,至于详细的实现暂时还没有研究。 1libpcap的工作原理 1.1组成部分  libpcap主要由两部份组成:网络分接头(Network Tap)和数据过滤器(Packet ...
  • 本篇我们从总体看下tcpdump工具的抓包原理,通过学习了解并掌握其实现的机制,为后续进一步底层操作做准备。1.1.1.1 如何实现先来看看包传递过来的流程,如下图。包从网卡到内存,到内核态,最后给用户程序使用。...
  • 前文分享了Wireshark安装入门和一个抓取网站用户名和密码的案例,本篇文章将继续深入学习Wireshark的抓包原理知识,并分享数据流追踪、专家信息操作,最后结合NetworkMiner工具抓取了图像资源和用户名密码。...
  • wireshark学习笔记----抓包网络原理

    千次阅读 2019-07-28 02:00:47
    抓包是我们常见的分析网络的一种方式,根据不同的抓包方式,网络原理也有所不同。 本机环境 直接抓包本机网卡进出流量,这种抓包是直接抓取本地与互联网上交互的数据包,直接在本机上抓取。 集线器环境 集线器环境...
  • wireshark抓包实战(一),抓包原理

    千次阅读 2020-01-17 11:53:40
    一、什么样的““能被wireshark抓住呢? 1.本机 即直接抓取进出本机网卡的流量。这种情况下,wireshark会绑定本机的一块网卡。 2.集线器 用于抓取流量泛洪,冲突域内的数据包,即整个局域网的数据包。 ...
  • 浅谈HTTPS通信机制和Charles抓包原理

    万次阅读 2018-06-17 16:44:57
    网络请求是应用开发的基础,在开发过程中经常需要通过抓包来分析网络问题,了解HTTP基础知识和HTTPS通信机制对...3)浅谈HTTPS抓包原理,为什么Charles能够抓取HTTPS报文? 1. HTTP基础知识:URL和报文结构 1....
  • fiddler抓包原理解析

    万次阅读 多人点赞 2019-02-21 20:41:39
    一、fiddler简介 Fiddler是一款免费且功能强大的数据包抓取软件。...fiddler包含了一个强大的基于事件脚本的子系统,并且能够使用.net框架语言扩展。...二、Fiddler工作原理 Fiddler是位于客户端和服...
  • Wireshark之抓包原理剖析

    千次阅读 2019-11-22 13:04:59
    1. 网卡      网卡是局域网(LAN,全称是:Local Area NetWork)中连接计算机和传输介质的接口,它工作在...网卡的书面语是网络适配器/网络接口卡。如图1所示,为Inter I250网卡示意图。            ...
  • 2)分析网络层IP 包头格式,理解各字段的作用,对于分段和校验和进行验证; 3)使用Wireshark 软件捕获在使用ARP 消息,分析其消息格式,理解其工作原理; 4)使用Wireshark 捕获DHCP 消息,分析其消息序列,...
  • https协议 和 Charles 进行https抓包原理

    千次阅读 2018-05-21 08:42:04
    6. Charles 抓包原理 客户端向服务器发起HTTPS请求 Charles拦截客户端的请求,伪装成客户端向服务器进行请求 服务器向“客户端”(实际上是Charles)返回服务器的CA证书 Charles拦截服务器的响应,获取服务器证书...
  • Fiddler抓包原理: Fiddler为什么能抓包?Fiddler 本质是一个Web代理服务器。它的默认工作端口是8888 我们可以查看Fiddler的工作端口。启动Fiddler,在菜单栏中单击Tools——》fiddler options——》Connections ...
  • 因为 集线器是一种物理层的设备 他不会识别数据包 只会将接受到的数据包进行防洪法发送出去 抓包软件可以可以通过 网络监视数据包 进行抓包分析 交换机环境 (1)端口镜像方式 交换机的转发数据的模式 是根据它的...
  • 基于socket编程,完美适用于VS2017,可以实现简单的抓包以及协议分析,内含过滤器,包括对抓取数据的导入导出,以及解析内容的excel的导出。如果想免积分下载,请私信我。还是希望能够在弄清楚原理之后,自己写一写...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,702
精华内容 15,080
关键字:

网络抓包原理