|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
0. 思考及初步实践。
动手能力强的同学可能已经抓包看了微信的登陆流程,
不论你是手机端抓的包,还是web端抓的包,
都有一些疑问: 当我重复这个(些)包并不能达到登陆的效果,
进行到这里你可能就会想到它内部肯定是进行了一些处理,
做些随机凭证之类,
在手机端的那些客户端进行的处理,不论哪个系统,
都不是我们所熟悉的(好吧,至少是我不熟悉的),
那么完全放弃了从手机端开拓的打算。
剩下的我们只有从web端来研究。
web端只有一个二维码登陆的页面,
那只能通过手机来进行登陆,
也就是说,
我们想搞清楚并用Python来模拟登陆的话,
只能弄懂手机端的逻辑,so。
我们放弃登陆好了。
P.s: web端的逻辑如果你有兴趣可以分析一下js来看看是怎么实现的。
下面是我通过抓包的初步分析,但是没有找到关键的包,
所以没法肯定具体的逻辑。
我们略过登陆,直接查看发送信息会发出什么包。
- {"BaseRequest":{"Uin":2700614435,"Sid":"1xa0CgYyGQLgMfmK","Skey":"@crypt_58e39768_daf6abd630e291fb99588830f2903a26","DeviceID":"e714098947588354"},"Msg":{"Type":1,"Content":"1","FromUserName":"@0bd9896927ef932232b39a8873f266e7f7de671dd00653d1cdc62bc070366805","ToUserName":"@ed33a6acea2d045d3e92b4457eaee914028e6e2d9b4af7514493304f08531fa1","LocalID":"14683815235940403","ClientMsgId":"14683815235940403"},"Scene":0}
复制代码
这是POST的数据区。
可以看到其中Content区域就是我们发送的内容,
FromUserName就是我们自己的用户名,
ToUserName就是发送用户的用户名,
但是这都是些加密的信息。
那么我们只需要获取到这些就能通过Python重放了吗?
我们让这个包通过,然后重放,
当你重放这个包时,
会发现虽然服务器返回了200,
也没有什么错误,但是对方却没有接收到内容。
- {"BaseRequest":{"Uin":2700614435,"Sid":"1xa0CgYyGQLgMfmK","Skey":"@crypt_58e39768_daf6abd630e291fb99588830f2903a26","DeviceID":"e018419521627948"},"Msg":{"Type":1,"Content":"3","FromUserName":"@0bd9896927ef932232b39a8873f266e7f7de671dd00653d1cdc62bc070366805","ToUserName":"@ed33a6acea2d045d3e92b4457eaee914028e6e2d9b4af7514493304f08531fa1","LocalID":"14683821068190520","ClientMsgId":"14683821068190520"},"Scene":0}
复制代码
通过抓第二只包我们发现改变的内容只有localID和ClientMsgId, (Content)不算。
我们这次直接重放,不让原有的包通过,
发现内容发不出去。
1. 思考。
抓包重发已经行不通了,
剩下的方法似乎也只有探寻js这一条路可选,
那么我们是分析js还是另寻他路呢,
我是没有分析js,实在是有些难懂。
那么: 如果让你来做这样一个软件,你用什么方法来实现呢?
要教教我呦~~。
|
|