移动抓包2——使用

前言

我们什么时候进行过抓包。“每时每刻都抓”,这个观点我本人是比较欣赏的,虽然自己也没有做到。

当我们在测试或者调试时,可以习惯性的开启抓包,虽然可能一天的内容都不需要。

有一个场景,你拉着开发同学说,“XXX,错误了,为什么?”。他说,“你跑次,[ 我抓个包 | 打下日志 | 定个断点 ]”。这种表现就一般了。如果他可以说“好的,我看下日志”。这种答复能让你觉得他掌握了一切。

是的,问题复现可以,但是可能会错失很多。所以时刻保持记录是非常好的。说多了,我们进入正题。

通过之前的《移动抓包基础篇》,大家都希望有更多使用方面的说明。今天就用Charles聊一些个人的使用习惯。


一、普通消息分析

1. 找到你要看的消息

在工作中有看到过很多同学,都是在Structure模式下查看包。谈不上诧异,但是我觉得这会影响效率。所以需要灵活使用StructureSequence

1.1 Structure模式

Structure会把消息归类展示,对于初步观察消息有很好的作用。

比如你想看http://web.youni.im/的某条消息,在Structure下能够很好的找到,

1.2 Sequence模式

既然Structure下那么方便找到消息,为什么还要Sequence

Sequence是细致分析消息。比如多个消息之间的关系,调用先后顺序。例如:是ABB还是BAB只有在Sequence下分析了。

在该模式下,消息泛滥,刚使用的用户肯定是瞬间崩溃。这时可以通过Filter留下那些自己关心的。好了,你的世界又清净了。

1.3 总的来说

不熟悉消息的情况下,可以先用Structure定位到消息。习惯之后,在通过Sequence分析消息。

2. 消息来了,我们看些什么

2.1 在Overview的选项卡中有很多信息

个人习惯关注以下内容:(其实,在实际过程中,我都很少看Overview了)

  • URL:简单看看,是不是我们要看的那个请求;
  • Response Code:重点;
  • Method:瞟一眼;
  • Duration:有时候分析问题非常有用。

2.2 Contents下有更多实际东西

根据个人习惯可以切换不同的选项卡进行查看。如果是JSON消息,那么TextJSON TextRaw都可以看到较多信息。这里用Raw举例:

  • 上方是Request,下方是Response;
  • 无论是Req还是Rsp,都包含header、body部分。有同学会问,为什么图中的Rsp没有看到body?原因很简单,因为服务器就是没有回。O(∩_∩)O哈哈~
  • 这里充满了各种内容:URLMethodUser-AgentCookieStatuts CodeReq BodyRsp Body等,这些都是我们常规分析需要关注的。

好了,你已经看到了有效的HTTP包头、包体的相关数据。其实看抓包还有个好处,能够帮助你进一步了解HTTP协议。


二、Protobuf消息解析

Charles集成了PB消息的解析功能。如果简单看看,其实也够了,缺点是他的展现方式比较老土。下面就介绍下可用的解析方式。

1. Charles解析PB

Charles关于PB的介绍,内容挺多,有兴趣可以看看。传送门

1.1 生成desc文件

首先我们需要获取到待显示的消息的desc文件。该文件是由对应消息的proto文件生成。你问我proto是什么?既生亮何生……

此处运行命令:起~~

1
protoc -oXXX.desc YYY.proto

目标已经获得,打完收工!

1.2 设置消息的显示规则

  • 找到对应的消息,右键 => View Request As => Protocol Buffers...

  • 对话框中选择Open Descriptor Registry

  • 增加已经生成的desc

  • 选择有效的消息类型

  • 惊喜出现,Contents的显示选项中多了2个PB相关的。Go ahead,试试看。

设置了请求,响应的设置方法亦然。

之前的显示关系单个请求的。如果全局可以在Viewer Mappings中设置,自己找。

1.3 消息分析

从之前的图片可以看出,Charles显示PB有2个已知问题:

  1. 容错比较差。一旦有必要字段缺失,就会报错。这个错误是不是影响解析,我不太清楚。
  2. 信息展示以序号为key。这个太致命了,消息数据多了就基本不能看。(不知道是不是生成DESC文件的原因)

2. 自定义程序解析

其实Charles能直接解析PB也是后来才发现的。一开始对于这个烦人的问题,LZ就写了个简单的程序去解读。

在这简单介绍下功能,代码就不贴了。如果有需要可以线下联系我获取代码(go写的200多行)或者可执行程序。

2.1 获取消息的Hex信息,全选Copy

2.2 粘贴到文件中,命名data.txt

2.3 执行程序

是不是看上去爽多了。还能适配直接导出的消息体,功能还行,不一一描述了。


三、其他补充

  • 为什么我已经安装了证书,但是还不能抓HTTPS包呢?

    这里有2个可能:

    1. 应用校验了证书。因为你安装的证书是Charles的,应用一看,不对,就错误了;
    2. 消息METHOD。HTTP有很多方法,其中GETPOST最常见,他们可以被抓包。现在CONNECT型的消息也很多 ,这类HTTPS消息不能被抓包解析。
  • 不会看包怎么办?

    可以先学习HTTP协议。再最简单,可以了解下HTTP的响应码,然后看看包里是不是有200。

  • 我在Charles里面右键选中的消息,怎么没有菜单弹出?

    左移鼠标到有文字的地方,再来。有木有,一般人我不告诉他。


结束语

关于抓包已经写了2篇,不过还是说的不多。感谢大家的阅读,有问题、需要,可留言,可线下直接找我。

3Q,88