本文只是讲过分析的过程 中间说到的算法 有兴趣的可以自己去扣出来
好了进入正题 抓包
http://im.58.com/msg/sendmessage?params=U9SUUmb3NfdmVyc2lvbj0xMS4wJmFwcGlkPTEwMDMzLWdqJTQwakhnY2lla3E2UmxvJnNka192ZXJzaW9uPTQ2MzAmY29udGVudF9zaWduPTc4NTM0YjcxZmYxZjkwZDAwYTkyMjlhODljNDY5MTMz0dXNlcl9pZD03MDY3MDkxODMmc291cmNlPTMmaW1fdG9rZW49YTBkNzI4N2Y4OWYwNGY0NTljYTcyNGIwNTI2ZjczN2UmY2xpZW50X3ZlcnNpb249MS4wJmNsaWVudF90eXBlPXBjd2ViJm9zX3R5cG&version=j1.0
Imh0dHA6Ly96anRhaXpob3UuZ2FuamkuY29tL3pwYmFpaHVvbGluZ3Nob3UvMjIwMDkwOTk2MHguaHRtXCJ9LFwiZ2pfZGVmaW5lXCI6W1wiMDU0MTU0XCIsW1wicG9zdFwiLHtcImlkXCI6XCI1NTIyNDgyOV80NDlfNF82MDlcIixcInRpdGxlXCI6XCLlupfplb8v5Y2W5Zy657uP55CGXCIsXCJ1cmxcIjpcImh0dHA6Ly96anRhaXpob3UuZ2FuamkuY29tL3pwYmFpaHVvbGluZ3Nob3UvMjIwMDkwOTk2MHguaHRtXCJ9XV19In0sInJlZmVyIjp7fX01eyJzZW5kZXJfaWQiOiI3MDY3MDkxODMiLCJzZW5kZXJfc291cmNlIjoiMyIsInRvX2lkIjoiNDYzNzQyOTIwIiwidG9fc291cmNlIjozLCJtc2dfdHlwZSI6Miwic2hvd190eXBlIjoidGV4dCIsImNvbnRlbnQiOnsibXNnIjoiMDU0MTU0IiwidHlwZSI6InRleHQiLCJleHRyYSI6IntcImdqX3Bvc3RfY29udGVudFwiOntcImlkXCI6XCI1NTIyNDgyOV80NDlfNF82MDlcIixcInRpdGxlXCI6XCLlupfplb8v5Y2W5Zy657uP55CGXCIsXCJ1cmxcIjpc
数据中 红色为加密部分 可以看出 提交是全密文 只有包头sendmessage params version这三个参数有分析价值
为了节省时间 前两个我就不说了...结果多 分析咋 要靠那两个搞 很慢 我们直接看第三个值 j1.0
断点后 找到上一层 发现g.url 正是POST提交的包头 这样一来 线索就很大了 如下图
找到函数后 发现f(g.url.split("?")[1]) 用输出来看 里面的函数是提交参数 那么F函数 就是加密函数
断点后发现 这里便是所有参数加密的地方了
第一次传进的是POST的提交参数 (里面的算法自己可以去找)
第二次是POST的包名
可以看到 里面还有一个sign签名 这个很简单 留给神通广大的易友 {:soso__7830123361734069590_1:}
走到这 算法基本明了了 采用的是变异的Base64算法和Sign的MD5
自己写了一份 测试 没有出现问题 返回正常
发表评论: