|
|
现在很多人都拥有QQ空间,并且上传了自己的照片。当你想看看新朋友的庐山真面目,可惜给相册加了密码。是不是很扫兴,现在就教你破解掉这个密码来观看加密相册。
' N- X7 U; ^7 V. v$ s" V3 M
3 B5 m @( c9 q0 R, a2 O$ E首先打开一个已经加过密的QQ空间相册页面,然后打开IE“工具-internet-选项”,在“常规”中的“internet临时文件夹”下,依次选择删除“cookies”和“删除文件”删除临时文件夹中所有的cookies和文件,然后再点击“设置”,在“设置窗口”选择“查看文件”,这样就打开了IE临时文件夹。
6 q: Z* M* j+ l! F5 L( ~7 h/ G6 C2 Y9 E8 X' G6 d
然后打开需要破解的加密相册,出现一个对话框需要输入密码,这是选择取消,在刷新一下空间,点击“相册”。作完上面的动作后找到临时文件夹,刷新一下,里面会有一个“cgi_qqzone_static”的XML文档。双击打开它,在弹出的对话框中选择“是”,打开的是一个代码文件。按Ctrl+f查找,输入“我”进行查找,找到<![CDATA[ 我 ]]>这段代码,下面那个地址就是QQ相册的封面地址。复制他就能看到加密图片的封面# |. N% E/ X8 e! t
根据http://izone.qq.com/client/photo ... &album=31931732 0 J$ A o7 K! n) {1 x+ g
下载或者翻看Internet临时文件夹下的 photo_password 文件可查到下列语句:
* Q* K( f5 @* g" J# Btype="text/JavaScript" src=https://www.abc369.net/info/way/"/js/md5.js"></script>
8 \- y4 w4 a7 qdocument.cookie=("album"+albumId+"pwd="+hex_md5(pwd)); $ o @* G! F r8 y
对比 md5.js文件可知,此v2.1版本的 JavaScript MD5,且输入的密码转化为32位的字符串。 6 A& q2 x3 G9 J2 _+ E
+ ?/ J3 X8 D n- R
比较两个地址: # f! l R2 Q( M8 s$ T" q+ s8 g' A+ H8 Z
http://photo.qq.com/cgi-bin/izon ... mp;albumid=31931732
7 \1 L2 [$ Q8 M- W ~' R/*http://izone.qq.com/client/photo ... amp;album=31931732/这个地址类似可以不看*/ : A g8 k+ ]) { Y5 [' g1 M
(此地址为有密码情况下的登陆地址,要求输入密码) * a; {0 ~: G( J$ D* Z( `
http://photo.qq.com/cgi-bin/izon ... asswd=&mode=big 8 F7 m0 f" c# E$ N( \0 H
(此地址为无密码情况下的登陆地址)
; Q9 m7 o8 ?' U# k h+ S* p: v1 d3 r+ w- j m& D
由此可以推断出:
y! l( O# x- |, k& Ahttp://photo.qq.com/cgi-bin/izon ... 1931732&passwd=(广告广告广告广告广告*)&mode=big
' Y. R3 ?1 Y! V5 } l C广告广告为转化后的md5字符串,此地址应该为此地址为有密码情况下的直接登陆地址。 , m) d8 e1 n7 V% w6 Z8 m
随便输入一段字符显示如下: * k. w; D5 W% C/ {3 h8 y
<?xml version="1.0" encoding="GBK" ?> / d, t6 O8 q: E" h- B2 f
<error>密码有误,请重新输入!</error> 3 y1 b" x/ R" o+ H* K( T' t# r
考虑到在前面有密码情况下的登陆窗口连接为cgi_album_pwd,浏览相册连接为cgi_album_view。
6 d! e: z+ J9 u试将登陆地址改为下列方式: 3 h2 {' ~! B) o
http://photo.qq.com/cgi-bin/izon ... 1931732&passwd=(广告广告广告广告广告*)&mode=big ' q! M! z+ D# P6 \1 C# F+ t' e& _. _
随便输入一段字符显示如下: ( f+ e4 i3 M. G; o
<?xml version="1.0" encoding="GBK" ?>
' L: j0 g1 s' ?. O<data id="31931732" owner="23266229" passwd="81dc" />
2 C4 l8 G' V6 L: R+ ^5 ?/ a经过换算可知,1234的MD5值是81dc9bdb52d04dc20036dbd8313ed055
p& J% k6 c: J测试数次 , e2 K$ S' M) ^( I7 f' R1 T, J6 J
<?xml version="1.0" encoding="GBK" ?>
% o& t8 F/ ?$ n M5 v" V: a<data id="31931732" owner="23266229" passwd="1bbd" />
: Y* H' B2 `9 i. c& ^/ ^+ m密码:11111111 MD5:1bbd886460827015e5d605ed44252251 , f; E5 L7 F& g; j! _8 ], L" J! v
<?xml version="1.0" encoding="GBK" ?> 2 Y. k8 r* W* B" O' \& s+ o' H
<data id="31931732" owner="23266229" passwd="eccb" /> 9 K6 x; p7 |% o% H" t
密码:3 MD5:eccbc87e4b5ce2fe28308fd9f2a7baf3 ) T" B+ R0 F# G: Z
由此可以判断,此处的passwd为密码加密后的前4位。 : f' V8 e0 x% H# X. L
photo_password 文件可查到下列语句:
0 D, N7 A Q/ L- ]+ rvar p=""; 2 o! J8 x* ^% L/ k* g* n7 y) j& {
if (x!=null) p=x.selectSingleNode("/data").getAttribute("passwd");
. B* O" @) F: A4 W- t' {$ Z判断此passwd应该是数据库中的某字段名。
/ W, j! O/ |. A6 e1 y. |" F' Yif (p!="" && hex_md5(pwd).indexOf(p)!=0){ 5 K) W' y4 [% x3 z) R
alert("密码错误")
" \" M" h; S G# ~document.getElementById("pass").focus(); ; _3 k: G- D* u3 Q7 ~* _3 M
return; 1 q! k- @# y8 L! q& q: l. c
} % z4 d* ^( T" e; W; v
document.cookie=("album"+albumId+"pwd="+hex_md5(pwd)); ! b! r# [7 S1 s$ {7 Q
location="/client/photo_static_big.htm?uin="+uin+"&album="+albumId; ! W+ g" P; v( c8 l! w `- Q
pwd为输入的密码,经过md5加密。判断此处出现的passwd="eccb"应该是验证输入的密文密码的正确性的。如果正确,使用hex_md5(pwd)进行登陆。 7 ~7 W) A3 }/ U" Q+ J7 U" O
* n! a0 ^8 i+ V8 y4 t9 o
由于qq相册密码提示为8位,那么如果有心人使用相关工具换算处8位以下的所有数字和字母组合的MD5值做成数据库,那么密码就如同虚设。但是考虑到相册密码意义不大,一般情况下不会有人过于无聊拿机器去跑这东西... 似乎最基本常见的的运算次数为几百万亿次,如果谁又兴趣搞几台服务器跑天把做个数据库倒是蛮好,就是大了点准备个TB级的硬盘矩阵吧。如果怕麻烦可以去国外的几个大型MD5数据库查询( r. @( Q, H4 A# o
|
|