|
|
现在很多人都拥有QQ空间,并且上传了自己的照片。当你想看看新朋友的庐山真面目,可惜给相册加了密码。是不是很扫兴,现在就教你破解掉这个密码来观看加密相册。
) H F* M Q5 A" B, t1 ?
* \5 y- L$ k7 z* B) {6 D: C首先打开一个已经加过密的QQ空间相册页面,然后打开IE“工具-internet-选项”,在“常规”中的“internet临时文件夹”下,依次选择删除“cookies”和“删除文件”删除临时文件夹中所有的cookies和文件,然后再点击“设置”,在“设置窗口”选择“查看文件”,这样就打开了IE临时文件夹。
4 ?$ A8 S) q' a0 t6 [. F C+ R) j- A5 [
然后打开需要破解的加密相册,出现一个对话框需要输入密码,这是选择取消,在刷新一下空间,点击“相册”。作完上面的动作后找到临时文件夹,刷新一下,里面会有一个“cgi_qqzone_static”的XML文档。双击打开它,在弹出的对话框中选择“是”,打开的是一个代码文件。按Ctrl+f查找,输入“我”进行查找,找到<![CDATA[ 我 ]]>这段代码,下面那个地址就是QQ相册的封面地址。复制他就能看到加密图片的封面) L" ]3 }9 e- C t9 T
根据http://izone.qq.com/client/photo ... &album=31931732
1 I! E9 p+ |6 k* S X. g7 o" P下载或者翻看Internet临时文件夹下的 photo_password 文件可查到下列语句: ) ~' H8 F5 n d# _+ G
type="text/JavaScript" src=https://www.abc369.net/info/way/"/js/md5.js"></script>
+ E8 K9 _# ?; F) @6 ^* Bdocument.cookie=("album"+albumId+"pwd="+hex_md5(pwd));
0 G( y; t) V- A0 K& ~对比 md5.js文件可知,此v2.1版本的 JavaScript MD5,且输入的密码转化为32位的字符串。 8 U4 ?- u; @3 a) h S2 z, S3 @2 K
& p. y5 G& R! x- E0 i
比较两个地址:
1 y8 @4 e) s% @- ]: B: Whttp://photo.qq.com/cgi-bin/izon ... mp;albumid=31931732 1 g/ m3 Q* Q+ G0 @ u
/*http://izone.qq.com/client/photo ... amp;album=31931732/这个地址类似可以不看*/ ' A2 o: R6 `6 h5 N4 a5 V3 N) b
(此地址为有密码情况下的登陆地址,要求输入密码) 5 O5 n# M' K# d2 |9 m
http://photo.qq.com/cgi-bin/izon ... asswd=&mode=big 3 [: s5 a; J* A) x k/ O% L) N
(此地址为无密码情况下的登陆地址)
6 m0 s. Q! E" o% B; R- f) {9 n5 h" z
由此可以推断出: 0 k( s3 X8 s' v j
http://photo.qq.com/cgi-bin/izon ... 1931732&passwd=(广告广告广告广告广告*)&mode=big
; u1 m8 t% { n9 f9 f( T广告广告为转化后的md5字符串,此地址应该为此地址为有密码情况下的直接登陆地址。 ' ]! m/ z' q8 y7 g
随便输入一段字符显示如下:
1 T: a* G: I( ~& j8 w4 j6 N<?xml version="1.0" encoding="GBK" ?> 0 K& O, n! ^4 J2 u% s3 r* R2 i5 ^/ i
<error>密码有误,请重新输入!</error>
/ h! I% v2 i# X! u/ [7 v8 Z3 j考虑到在前面有密码情况下的登陆窗口连接为cgi_album_pwd,浏览相册连接为cgi_album_view。 - {6 }# q6 N5 }% B
试将登陆地址改为下列方式:
" j( l, r* i; g; m2 dhttp://photo.qq.com/cgi-bin/izon ... 1931732&passwd=(广告广告广告广告广告*)&mode=big 6 P+ H/ J' r3 X9 W% s; U
随便输入一段字符显示如下: $ F8 [+ i) G1 D9 e1 \, ?+ L/ K
<?xml version="1.0" encoding="GBK" ?>
6 z+ c o# [+ m% m* C1 n6 n<data id="31931732" owner="23266229" passwd="81dc" /> 0 Z2 k: V4 H1 r. A1 o& Q
经过换算可知,1234的MD5值是81dc9bdb52d04dc20036dbd8313ed055
7 L% ~& ]" a# R; c% f/ `6 H测试数次
6 R6 a, O" [+ y; D7 `) |<?xml version="1.0" encoding="GBK" ?> 6 c7 G) N) V! p% c" j
<data id="31931732" owner="23266229" passwd="1bbd" />
" t4 Q% l: `- _+ u. z n密码:11111111 MD5:1bbd886460827015e5d605ed44252251 3 T/ j7 k1 {. V3 r0 ]8 a2 B
<?xml version="1.0" encoding="GBK" ?> # |6 o4 Z$ N @4 K5 H# x
<data id="31931732" owner="23266229" passwd="eccb" />
' y X/ m3 H C+ c" V- u3 d2 X密码:3 MD5:eccbc87e4b5ce2fe28308fd9f2a7baf3
d* j5 S+ h7 b/ @7 Z由此可以判断,此处的passwd为密码加密后的前4位。
( n& {. b. x ?1 d7 i/ {- j9 N! vphoto_password 文件可查到下列语句:
2 Z' r0 Q( j/ ^- tvar p=""; 5 G3 ]* u, y' v
if (x!=null) p=x.selectSingleNode("/data").getAttribute("passwd");
( z/ _+ s# V+ m% d& N判断此passwd应该是数据库中的某字段名。
. C0 k% P- v3 }6 R( |; eif (p!="" && hex_md5(pwd).indexOf(p)!=0){ 1 F1 ^: _) w2 h7 u) h2 [
alert("密码错误")
" F& h0 m! _9 J4 J fdocument.getElementById("pass").focus();
* O$ u$ t7 y4 y3 `/ C5 t( freturn;
+ }9 `7 m I+ r, @, }- s# G}
, o: P; Z& W. H. {document.cookie=("album"+albumId+"pwd="+hex_md5(pwd)); % \- `0 s0 H* X$ N3 O+ x4 C/ b
location="/client/photo_static_big.htm?uin="+uin+"&album="+albumId;
8 u7 x7 \/ B7 S9 m+ r4 A6 Dpwd为输入的密码,经过md5加密。判断此处出现的passwd="eccb"应该是验证输入的密文密码的正确性的。如果正确,使用hex_md5(pwd)进行登陆。
3 K6 A8 }5 i- ^- ~. x
; n7 }& r8 d5 |; j/ S$ `5 k2 b1 x; l由于qq相册密码提示为8位,那么如果有心人使用相关工具换算处8位以下的所有数字和字母组合的MD5值做成数据库,那么密码就如同虚设。但是考虑到相册密码意义不大,一般情况下不会有人过于无聊拿机器去跑这东西... 似乎最基本常见的的运算次数为几百万亿次,如果谁又兴趣搞几台服务器跑天把做个数据库倒是蛮好,就是大了点准备个TB级的硬盘矩阵吧。如果怕麻烦可以去国外的几个大型MD5数据库查询
, w8 z8 W% j6 b/ ?( N% U+ s7 ^6 C: v" Y- L |
|