通过怎么样的算法,能让147399120这个QQ号码变成JSn0L1iqW ?

CoutMoney 2011-02-11 05:29:53
这个是QQ空间中所采用的加密方式 我想查看一MM的空间,问密码她不愿意说,
所以研究了一下QQ空间的密码算法,发现只要攻破这个算法的话,我就可以查看任意一个有密码访问的QQ空间日志了.通过怎么样的算法,能让147399120这个QQ号码变成JSn0L1iqW ?
...全文
589 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
wy811007 2011-02-12
  • 打赏
  • 举报
回复
囧 sp1234 有点打击人了.. 不过.. 说的有道理..
这东西 不是神马人都能弄的..不太明白 抓包什么的.. 我太菜了.. 求教具体教程...
  • 打赏
  • 举报
回复
彩票张可没有根据你的省份证号来“加密”生成彩票号 --> 彩票站可没有根据你的身份证号来“加密”生成彩票号

所以我们来根据QQ号就自己规定了人家QQ服务系统的授权号,这很不现实。
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 coutmoney 的回复:]

回4楼,这个密串是我抓包抓下来的,并不是随机的,每个QQ号对应一个,要是随机的话,也就失去了破解的意义。
[/Quote]

比如你去彩票站投注,那么每一张彩票都有一个唯一的票据单号,然后根据这个单据可以找到你。彩票张可没有根据你的省份证号来“加密”生成彩票号。
chen870201 2011-02-12
  • 打赏
  • 举报
回复
这个一般都是随机的
a726928296 2011-02-12
  • 打赏
  • 举报
回复
三楼的确实逗了点。。。。。
shangwei97 2011-02-12
  • 打赏
  • 举报
回复
破解密码,你不觉得费劲吧。想知道他的空间密码,找他的好友挨个问,挨个骗,比破解这个要来的快。
要是为了兴趣研究一下,倒是不错。哈哈
qq346127416 2011-02-12
  • 打赏
  • 举报
回复
一般密码算法 不可逆的多 比如md5什么的 这真不好破
算法都是自己写的 如果他要是在md5基础上在进行截取移位 那就更没法玩了
要是那么好破 人家早就被客户投诉了
guojh021 2011-02-12
  • 打赏
  • 举报
回复
打电话挂接问姓马的
jie523314 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bacmoz 的回复:]
string Encrypt(string cipher)
{
if (cipher == "147399120")
return "JSn0L1iqW";
return "";
}
[/Quote]
  • 打赏
  • 举报
回复
我猜测破解的可能性比较小,因为你抓到的随机字符串很可能是写到服务器缓存里的,在QQ登陆或者QQ空间登陆的时候就产生的,产生后会发送给客户端一份,当缓存消失时间快到时,服务器会判断用户的在线状态,如果用户在线,更新随机字符串,客户端也更新,若用户不在线,缓存自动消失。
因为是随机产生的,在不知道密码的前提下,基本上没可能进去。
huahuikai615 2011-02-12
  • 打赏
  • 举报
回复
sp1234说的有道理
  • 打赏
  • 举报
回复
瞄了个咪,147399120这个号码是个男的。
Mr_graceless 2011-02-12
  • 打赏
  • 举报
回复
要找到问题的证结所在,你目的是要进入她空间,通过正规技术方向不好办,那么就从其它方面入手吧,社会工程学,又简单又快速的方向,电话欺骗,网络欺骗等等,看本事了
CoutMoney 2011-02-12
  • 打赏
  • 举报
回复
谢谢SP1234热情的回复,谢谢33楼weituo86精辟的分析,weituo86的分析与我想像的有点相近。SP1234说的很有道理,但是没有听懂我的意思,我是想要算法,不是想破解,破解本身在这里是没有意义的。即便是MD5这种不可逆的,只要知道算法的话就能满足欺骗条件。但是就如同你所说的一样,想把算法逆推出来的难度是很大的,我在这里也只是向大家求助,抱着试试看的态度的,并没有太大的希望。
我总结了一下思路,要想欺骗成功,要分析两种情况,第一种是,像weituo86所说的一样,这个值,(抓包下来的名字叫SKEY,猜想含意代表sitekey,即站点密码的意思)skey是由服务器端分配好,并临时返回给客户端的,客户端只能使用,不能自己修改,当客户端提交到服务器端的时候,对该值的合法性进行验证,这样的情况只能是放弃,没得玩了,不在这里谈。
第二种情况就是服务器端通过一个算法来验证是否是合法登录,并不在服务器端保存skey值,这时候我们就有得欺骗了,假想一下这种算法:比如QQ号与登录时间进行相与,或,移位之类的,然后得到SKEY值,只要这个值与服务器端的算法值相吻合,即可操作成功。这样的话就会产生欺骗。

我试验的过程中,抓下来的QQ1的包中有N个参数值向服务器端提交,QQ2的参数个数与QQ1的一样多,也有N个,我将QQ1的N个参数逐一修改,用QQ1的包来欺骗QQ2,当然修改中包括将QQ1包中所有QQ1的QQ号,全换成QQ2的号码。发现在提交的时候只有一个值是起关键性作用的,叫SKEY,其它参数可以通用。

在我试验过程中发现,第一种情况的可能性比较大一点,因为我得到的skey值有时效性的,但不排除有第二种的可能性,因为不知道算法,所以无从试验,放弃了。结贴,谢谢大家
  • 打赏
  • 举报
回复
用QQ来加密?那么你每一次都复制所谓加密的结果不就行了嘛,何必要解密?

而分配一个授权号,何必弄什么“加密算法”呢?只要保证生成的授权号在很长一段时间内,在整个系统(比如在它的100台服务器上都)不可能重复就行了。
  • 打赏
  • 举报
回复
3楼的代码稍微有一点简单化(本来其实就是调侃的),但是其概念方向是完全正确的。

当147399120上线时,我们给它分配一个授权号(甚至说成是随机分配也没有什么大错)。当发现他离线了,不管是客户端主动关闭、服务器端禁止、还是客户端超时而离线(比如超过了20秒钟),这个授权号就被删除了。
yjicdgv 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bacmoz 的回复:]

string Encrypt(string cipher)
{
if (cipher == "147399120")
return "JSn0L1iqW";
return "";
}
[/Quote]
++1
shiming1980 2011-02-11
  • 打赏
  • 举报
回复
事在人为,成功啦说一声
  • 打赏
  • 举报
回复
玩之前最好先对“成功欺骗”到底是什么具体做法先做个比较实际的定义,以免空耗时间,仅仅因为你的QQ1的“实验”就去联想到能够“欺骗成MM的QQ账户”了,这就不切实际了。
  • 打赏
  • 举报
回复
很简单的,只要想一下就行了,比如网络故障、比如客户端停电了,等等,服务器怎么知道客户端离线了?它肯定是要有个间隔,才判断客户离线的了。你在这个时候,进行所谓“关闭QQ”,然后重复发送抄来的前一个消息,这怎么就算是“提交欺骗”了呢?这对服务器来说是正常的消息。
加载更多回复(20)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧