|
|
现在很多人都拥有QQ空间,并且上传了自己的照片。当你想看看新朋友的庐山真面目,可惜给相册加了密码。是不是很扫兴,现在就教你破解掉这个密码来观看加密相册。# t" m2 N o) t7 H1 b8 P" ?" Y1 f
$ M) a2 r0 e: v% W* V首先打开一个已经加过密的QQ空间相册页面,然后打开IE“工具-internet-选项”,在“常规”中的“internet临时文件夹”下,依次选择删除“cookies”和“删除文件”删除临时文件夹中所有的cookies和文件,然后再点击“设置”,在“设置窗口”选择“查看文件”,这样就打开了IE临时文件夹。
: ]2 D8 M+ |7 V9 N: b D V9 n, C) ?/ v
然后打开需要破解的加密相册,出现一个对话框需要输入密码,这是选择取消,在刷新一下空间,点击“相册”。作完上面的动作后找到临时文件夹,刷新一下,里面会有一个“cgi_qqzone_static”的XML文档。双击打开它,在弹出的对话框中选择“是”,打开的是一个代码文件。按Ctrl+f查找,输入“我”进行查找,找到<![CDATA[ 我 ]]>这段代码,下面那个地址就是QQ相册的封面地址。复制他就能看到加密图片的封面' y3 O% K. U9 D3 T. H# K# i1 p
根据http://izone.qq.com/client/photo ... &album=31931732
* M! Z- L6 i0 m! I1 l8 U% o下载或者翻看Internet临时文件夹下的 photo_password 文件可查到下列语句: [, T: l! {1 U) X
type="text/JavaScript" src=https://www.abc369.net/info/way/"/js/md5.js"></script> 3 }8 W: ~8 L7 X
document.cookie=("album"+albumId+"pwd="+hex_md5(pwd)); 1 |7 Y; o1 x y; r0 z& r' H
对比 md5.js文件可知,此v2.1版本的 JavaScript MD5,且输入的密码转化为32位的字符串。
8 \ Y; t' F' D) s1 O% m+ Q0 k% T: j$ M+ n6 J( R3 q4 Z! T
比较两个地址:
# R1 ^- J0 D0 ? A0 y- Ahttp://photo.qq.com/cgi-bin/izon ... mp;albumid=31931732 - @+ w/ X2 M3 \$ v+ x
/*http://izone.qq.com/client/photo ... amp;album=31931732/这个地址类似可以不看*/
3 w$ ~3 m/ l$ M+ {(此地址为有密码情况下的登陆地址,要求输入密码)
+ N) C2 Y$ m, Phttp://photo.qq.com/cgi-bin/izon ... asswd=&mode=big 6 |6 l5 D3 r' d
(此地址为无密码情况下的登陆地址)
/ M2 H8 s2 k9 e- U2 N, j" |, X# b/ V9 X, V" N0 R
由此可以推断出:
# t) e( e5 \* P: |# Zhttp://photo.qq.com/cgi-bin/izon ... 1931732&passwd=(广告广告广告广告广告*)&mode=big " I$ @- i3 w Z0 O! N" v9 L# U
广告广告为转化后的md5字符串,此地址应该为此地址为有密码情况下的直接登陆地址。
. e2 E Q: v' x% @6 [随便输入一段字符显示如下:
" J h' o, C: ?, l. h* s<?xml version="1.0" encoding="GBK" ?>
) f7 G/ k$ |* B' Q2 O' R0 g<error>密码有误,请重新输入!</error> , ?1 l- E7 n1 ]* V- Q% w s
考虑到在前面有密码情况下的登陆窗口连接为cgi_album_pwd,浏览相册连接为cgi_album_view。
, f( M7 K, g9 f试将登陆地址改为下列方式: ) Z( u }& N5 `5 U: i( ^9 C! ^
http://photo.qq.com/cgi-bin/izon ... 1931732&passwd=(广告广告广告广告广告*)&mode=big
2 ^6 c7 Z! d" s- h6 k: |& A随便输入一段字符显示如下: " s# u0 q. \ z" b* M* q8 F0 r$ w
<?xml version="1.0" encoding="GBK" ?> . b P& I% g7 E% N5 @6 R: X+ m
<data id="31931732" owner="23266229" passwd="81dc" /> ' m) [" B* M8 [6 a
经过换算可知,1234的MD5值是81dc9bdb52d04dc20036dbd8313ed055
0 H6 Z( f D1 I" F8 F+ \2 I& b/ @测试数次 0 q4 u! k% X" H& x+ F+ C3 t
<?xml version="1.0" encoding="GBK" ?> , b8 O! W9 i+ D
<data id="31931732" owner="23266229" passwd="1bbd" /> . C6 o! l+ v( |+ F- k+ q3 M
密码:11111111 MD5:1bbd886460827015e5d605ed44252251 3 ?: e% U/ X3 k/ z# m, e
<?xml version="1.0" encoding="GBK" ?>
, H& F1 p) T+ |& O0 O' d<data id="31931732" owner="23266229" passwd="eccb" /> 1 x4 n9 r4 @0 s3 W( I: P9 Y6 W7 l+ l
密码:3 MD5:eccbc87e4b5ce2fe28308fd9f2a7baf3
1 A! e+ T% R7 y由此可以判断,此处的passwd为密码加密后的前4位。
. |% x1 d; S+ P# Aphoto_password 文件可查到下列语句: ( Z8 M/ d3 a, l
var p="";
" a3 Y7 ^; X( R7 Gif (x!=null) p=x.selectSingleNode("/data").getAttribute("passwd");
2 }! R: C: p0 c判断此passwd应该是数据库中的某字段名。 ' s* ^, O) P. C6 u/ o
if (p!="" && hex_md5(pwd).indexOf(p)!=0){
0 ]& k \3 G, [" c2 W, I, s$ Ualert("密码错误") . h* ~: b- ^' {7 u Q9 P# B' P
document.getElementById("pass").focus(); & j. X! f) N5 [+ d
return; 3 ?- j0 P P$ Z- e f
} + q" U2 h5 v+ |6 T+ @* N6 s
document.cookie=("album"+albumId+"pwd="+hex_md5(pwd));
! V1 v7 m" \% f7 q1 Blocation="/client/photo_static_big.htm?uin="+uin+"&album="+albumId;
& [7 \* w9 g7 l/ m r6 o7 u5 |pwd为输入的密码,经过md5加密。判断此处出现的passwd="eccb"应该是验证输入的密文密码的正确性的。如果正确,使用hex_md5(pwd)进行登陆。 - h) Z. [7 L; _9 \' F
% T; A" p, m# [# s/ u7 T! e- u由于qq相册密码提示为8位,那么如果有心人使用相关工具换算处8位以下的所有数字和字母组合的MD5值做成数据库,那么密码就如同虚设。但是考虑到相册密码意义不大,一般情况下不会有人过于无聊拿机器去跑这东西... 似乎最基本常见的的运算次数为几百万亿次,如果谁又兴趣搞几台服务器跑天把做个数据库倒是蛮好,就是大了点准备个TB级的硬盘矩阵吧。如果怕麻烦可以去国外的几个大型MD5数据库查询
# U% V6 G5 U0 ?# O6 `1 Y9 r |
|