iOS神器Thor的初次使用

前两天找ios旧版app的接触到这个软件:Thor,恰巧有一个博主有介绍Thor和分享了一些过滤器,看了之后这让我对Thor产生了很大的兴趣,于是就下载了这个软件(其实也是闲的)。

简单使用了两天,也只是普通的抓包,像我这种从未接触过相关内容的人基本上看不懂那些抓到的数据包。还记得之前Windows的Fiddler抓包工具,当时是用人用来改数据然后撸实物,改各种网页的数据什么的…Thor也可以做到,主要的操作是设置断点,在响应信息体回传的时候修改返回的数据等等。如果只是普通的抓包那肯定是不够的,Thor强大之处就是可以使用过滤器。

下面以修改bilibili的myinfo信息体回传修改为例吧。
设置断点那些需要极高的专业知识…然而我连网络是怎么连接的都不知道,所以我是拆了一个其他人的过滤器研究了一下,大概知道了原理所在,但是要真正的去写一个带断点的过滤器还是不会…

一.过滤器的普通设置:
1.抓包协议:HTTP以及HTTPS
2.匹配http的方法:GETPOST
3.包含的域名:

1
2
3
4
api.bilibili.com
app.bilibili.com
pay.bilibili.com
bangumi.bilibili.com

4.包含的关键字:

1
2
3
4
5
6
7
8
/pgc/view/app/season
/x/v2/dm/post
/pgc/player/api/playurl
/player/api/v2/playurl
/paywallet/wallet/getUserWallet
/x/v2/account/myinfo
/x/v2/account/mine
/x/space/app/index

其中包含的域名和关键字的作用就是使用该过滤器之后Thor只抓这些匹配的数据包

二.设置断点
这一块我找了很久的教程,就没有看到过…
首先要新建一个断点,命名无所谓,最主要的是写请求阶段:

1
2
3
4
5
TCP连接前
请求头发送前
请求信息体发送前
响应头回传前
响应信息体回传前

嗯,这么五大部分…我都不知道怎么去写,但是我拆包了解了响应信息体回传前是什么原理。
新建一个响应体回传前的规则:
判断条件为空,也就是无论怎么样我都会去执行条件满足的操作
备注无所谓

然后是条件满足的时候应该怎么去做,下面以替换等级信息体为例:

1
^@rsp.bodyText "level":\d+" "level":8"

其中^是操作符:替换或插入
操作对象:@rsp.bodyText
正则表达式:level”:\d+
替换值:level”:8

这里的作用就是抓到level信息体之后替换掉其中的值,但是有一点是,咱们的信息是在服务器上面的,软件显示多少我们能够更改,但是其实际是没用的…所以只是娱乐娱乐。
还有一些规则:

1
2
3
4
5
^@rsp.bodyText "type":\d+" "type":2"
^@rsp.bodyText "level":\d+" "level":8"
^@rsp.bodyText "due_date":\d+" "due_date":4070923932"
^@rsp.bodyText "vipType":\d+,"vipStatus":\d+" "vipType":2,"vipStatus":1"
^@rsp.bodyText "vip_type":\d+,"vip_status":\d+" "vip_type":2,"vip_status":1"

都是照搬的别人的,我不会什么正则表达式…额,也就大概了解一下其中的原理,搞来搞去我也没啥兴趣了…要先从海量的数据包中找到自己要修改的东西实在太累了,往往抓一次两次是不够的,需要很多很多次的调试才能得到想要的结果,这点还是很佩服写出哔哩哔哩这个过滤器的作者。