有时候我们对数据进行加密会选择各种各样的方法,比如QQ坦白说的加密,真是够奇葩的,第一次见到这种加密,程序员应该心情很美丽,居然能这么做。下面就以QQ坦白说解密为例,讲解下C#中不常用的一些命令。
QQ坦白说是http://ti.qq.com的一款产品,通过获取QQ用户的cookies,模拟提交查询可以得到所有坦白说数据,不过发送者的QQ号是加密的,解密方法如下。
首先获取到cookies后,通过计算skey的左移5位数据,对应字符的键代码,并在5381的基础上加上这些值最终得到一个数值,这个值就是用来请求坦白说数据的标识。
左移计算方式
左移几位就乘以2的N次方。
在计算机中采用2进制,一位最大为2,满2进一,移动一位就增加2。
比如,将10左移3位就是:10X2X2X2移动几次就乘几次。
右移相反,除以2的N次方。这里就不多解释了,参照上面的左移。
将上面的信息后,我们会得到一串类似下面的json数据。
复制
{ "code":0, "data":{ "list":[ { "fromNick":"一个认识7年的男生", "fromEncodeUin":"*S1*oKvPoK6kow6zNKSFNKCk7wvi", "group":0, "fromFaceUrl":"man.png", "fromGender":0, "toUin":1016134519, "toNick":"", "topicId":10142, "topicName":"霸气这两个字的本人", "timestamp":1528589816 } ], "cookie":"CgAQ+Nvx2AU=", "finish":1 } }
本站json在线解析工具快速格式化json数据,帮助阅读。
fromNick就是发送者的名称。
fromEncodeUin就是发送者的QQ号码,不过被加密了,下面讲解密。
topicName发送的内容。
timestamp发送的时间,时间戳的形式。
将fromEncodeUin前面的四位字符去掉,即去掉*S1*。
然后以2位字符作为一个数据,与下表比对,没有的就一个字符比对,最终计算出结果。
评论 (0)