热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WiresharkforMac版抓包的基本用法

Wireshark我使用了一段时间,才知道这是抓包神器,最全最牛逼的抓包软件。当时我之所以要学习Wireshark,是因为要抓取手机端今日头条的请求,看今日头条的懒加载是如何做的,

Wireshark我使用了一段时间,才知道这是抓包神器,最全最牛逼的抓包软件。当时我之所以要学习Wireshark,是因为要抓取手机端今日头条的请求,看今日头条的懒加载是如何做的,从而无耻学习。我就这么直白,不服来打我呀,打我呀打我呀。

o( ̄ヘ ̄o#) 哼,言归正传。
今日头条的手机端的URL为:http://m.toutiao.com

早期的时候,我使用Charles(大花瓶)抓取的时候,今日头条的请求方式还是普通的GET请求。但是不知道从何时开始,大花瓶已经抓不住他了,已经和那些普通妖艳贱货不一样了。
已经变得这么的高冷,让别人无法接近。

从Charles(具体使用方法在本文的最下面)口中得知。

《Wireshark for Mac版 抓包的基本用法》 Charles抓包

我们已经不能从GET和POST中获取到任何的新闻信息,排除了某宝,二手东,和广告的连接,发现了4个Method为Connect有嫌疑的连接。

犯罪嫌疑人有4人,如下:

https://e.crashlytics.com

https://a3.bytecdn.cn

https://i.snssdk.com

https://is.snssdk.com

首先排除第一个Crashlytics,他是统计Crash的工具。
然后排除第二个bytecdn。CDN服务商,网络服务商。
好的接下来两个就是重头戏了。

《Wireshark for Mac版 抓包的基本用法》 Charles能抓到的信息
《Wireshark for Mac版 抓包的基本用法》 CONNECT抓到的乱码

得到的数据辣眼睛

看来Charles已经只能帮我到这了,Charles虽然很方便,GET和POST请求是他的强项,能直接显示URL、请求头、参数名、参数格式,如果返回的是图片,还能直接在Charles中看到图片。但是Charles处理不了TCP、ICMP、UDP、DNS。看到的数据也有限,基本就是应用层的信息,如果想看到物理层的数据帧情况,链路层的帧头部信息,IP的包头部信息,那Charles已然GG了,而且通过大神指点,知道这明摆的就是TCP传输,用Wireshark解析,这好使。

我们先熟悉一下 Wireshark for Mac 的界面。

《Wireshark for Mac版 抓包的基本用法》 Wireshark的页面

点击接口名称之后,就可以看到实时接收的报文。Wireshark会捕捉系统发送和接收的每一个报文。如果抓取的接口是无线并且选项选取的是混合模式,那么也会看到网络上其他报文。

使用Wireshark时最常见的问题,是当您使用默认设置时,会得到大量冗余信息,而且这些信息包括Mac的还有iPhone的,数据量比Charles大的多,以至于很难找到自己需要的部分,所以一定得学会用过滤器。
这就是为什么过滤器会如此重要。它们可以帮助我们在庞杂的结果中迅速找到我们需要的信息。

捕捉过滤器:用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。
显示过滤器:在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改。

比较常用的过滤器:1.输入Method 2.还有就是IP的搜索。
例如,输入“TCP”就会只看到TCP报文。输入的时候,Wireshark会帮助自动完成过滤条件。

《Wireshark for Mac版 抓包的基本用法》 输入“TCP”就会只看到TCP报文

最经常用的:
ip.src == 10.2.189.0 or ip.dst == 10.2.189.0

《Wireshark for Mac版 抓包的基本用法》 通过IP查找

其他常用的:
tcp dst port 3128 显示目的TCP端口为3128的封包。

ip src host 10.1.1.1 显示来源IP地址为10.1.1.1的封包。

host 10.1.2.3 显示目的或来源IP地址为10.1.2.3的封包。

src portrange 2000-2500 显示来源为UDP或TCP,并且端口号在2000至2500范围内的封包。

not imcp 显示除了icmp以外的所有封包。(icmp通常被ping工具使用)

src host 10.7.2.12 and not dst net 10.200.0.0/16 显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。

数据处理:

《Wireshark for Mac版 抓包的基本用法》 数据处理

如图上,可以发现。
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议(但是这里没显示出来)

物理层和链路层还有头部的信息,如果只是普通抓包的话,我们完全用不上。
传输层协议和HTTP协议是大头。其中有一些明显的数据。(比如URL,请求头啊)

万事俱备只抓包

此时找到今日头条的TCP消息,右键,追踪流,TCP流。

《Wireshark for Mac版 抓包的基本用法》 追踪TCP

今日头条!Gotta catch!!

《Wireshark for Mac版 抓包的基本用法》 Gotta catch

终于抓到TCP的内容了,建立了长连接以后,
蓝色的是我对今日头条发送的信息,红色是对方返回的信息。数据还在破解中,抓包过程到此结束。

《Wireshark for Mac版 抓包的基本用法》 TCP的流

总结

今日头条把原先的GET和POST方法,经过了TCP的一轮封装,两个IP地址通过端口长连接以后,这是第一层保护;接着我会给服务器发送我请求的信息,请求的信息通过封装后(估计是又回到了Get请求)给服务器发送,服务器再给我返回信息,这是第二层保护;最后服务器发送的信息,是乱码!!!我的天,居然还是乱码。
嗨!真的好气啊。
这是第三层保护,通过某种加密方式,把返回的json数据加密了,返回的内容完全看不懂,只有通过App的解密,才能知道今日头条的信息。
真有你的。

大体介绍下Charles的流程:

1.配置iPhone或Android 的wifi配置。首先保证Mac电脑和手机是在同一个局域网内。
2.设置手机wifi配置,在HTTP代理中选择手选代理,服务器填写Mac的IP地址。端口使用8888。
(查看Mac的IP地址:系统偏好设置–>网络–>状态–>其IP地址为:xx.xx.xx.xx )
3.此时再打开Charles,接着Charles会问你,是否允许该设备代理上网,选择Allow。
4.此时手机的所有GET和POST请求,都逃不过Charles的追踪。


推荐阅读
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何找到并终止在8080端口上运行的进程的方法,通过使用终端命令lsof -i :8080可以获取在该端口上运行的所有进程的输出,并使用kill命令终止指定进程的运行。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
author-avatar
daadhkiw_267
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有