密码加密了
把if mis(request("password"))="PlPloPLulinZV"
改在if request("password")="PlPloPLulinZV"
密码就是PlPloPLulinZVpasswordif Epass(trim(request.form(password)))=q[url=#]_[/url]ux624q|p then
response.cookies(password)=8811748
...
很明显,用的是Epass函数把输入的[url=http://hackbase.com/hacker]密码[/url]进行加密,然后将得到的密文和原密文进行比对。如果稍有点[url=http://hackbase.com/hacker/program]编程[/url]基础的话,特别是VB,那么Epass里的加密算法将一目了然。如果没有,那么,没关系,相经过我的讲解,你很快就会明白。函数中,保存[url=http://hackbase.com/hacker]密码[/url]的变量是pass。pass&zxcvbnm,./ 将pass里的内容与zxcvbnm,./相连接得到一个新的字符串。left(pass&zxcvbnm,./,10)取前10位。StrReverse函数将得到的10位字符串次序颠倒。len(pass)获得[url=http://hackbase.com/hacker]密码[/url]的长度。下面是一个循环。将得到的字符串中的每一位的Ascii码-[url=http://hackbase.com/hacker]密码[/url]长度+取整(字符所在位*1.1),然后将得到的数值转换成字符重新连接。最后将得到的字符串中有字符的全部替换成B,这样密文的产生了。如果我们提取加密算法用自己的密文替换原有密文,那么相映的[url=http://hackbase.com/hacker]密码[/url]也会变成你的[url=http://hackbase.com/hacker]密码[/url]。但我说过了,这并不是真正意义上的破解。
假如我们输入的是love,加密过程如下
love
lovezxcvbnm,./ 连接
lovezxcvbn 取前10位
nbvcxzevol 次序颠倒
n
110(ascii)-4(位数)+int(1(位置)*1.1)=107
107的ascii码为k,依次类推,最后密文:
k`ucy|hzts
我们可以通过密文和加密算法反推出[url=http://hackbase.com/hacker]密码[/url]。从算法的最后一步开始往上推。最后一步用B替换所有,有没必要将B替换回呢,答案是否定的。只要我们能得到最后的密文,[url=http://hackbase.com/hacker]密码[/url]不一样也是有可能的。如果有10个B,那原[url=http://hackbase.com/hacker]密码[/url]的个数就2的10次方个,虽然原[url=http://hackbase.com/hacker]密码[/url]只有一个,但是1024个[url=http://hackbase.com/hacker]密码[/url]都是正确的。如果要完美破解的朋友,可以自己试着编写全部的组合。那么这步可以忽略了。
上面的算法很清晰
chr(asc(mid(temppass,j,1))-templen+int(j*1.1))
我们只要简单的将+和-换一下就可以了。
chr(asc(mid(temppass,j,1))+templen-int(j*1.1))
但是还有一个问题,我们事先不知道[url=http://hackbase.com/hacker]密码[/url]的长度,没关系,幸好[url=http://hackbase.com/hacker]密码[/url]在1-10位之间,不太长。
那么我们可以用一个1到10的循环求出所有可能的[url=http://hackbase.com/hacker]密码[/url],再将其用StrReverse函数次序颠倒。
那么最后得到的[url=http://hackbase.com/hacker]密码[/url]我们该怎么确定哪个就是呢。可以根据pass&zxcvbnm,./,看除[url=http://hackbase.com/hacker]密码[/url]最后是否有zxvbnm,./的前几位。
那么这就是真正的[url=http://hackbase.com/hacker]密码[/url]。那么如果[url=http://hackbase.com/hacker]密码[/url]是10位,将是永远正确的,因为后面不存在连接。所以我们可能得到两个答案。
以下便是我编写的解密函数
function Ccode(code)
for templen1=1 to 10
mmcode=
for j=1 to 10
mmcode=mmcode+chr(asc(mid(code,j,1))+templen1-int(j*1.1))
next
Ccode=strReverse(mmcode)
response.write [url=http://hackbase.com/hacker]密码[/url]&templen1&:&Ccode&
if mid(Ccode,templen1+1,10-templen1)=left(zxcvbnm,./,10-templen1) and templen110 then result=left(Ccode,templen1)
next
response.write 最后[url=http://hackbase.com/hacker]密码[/url]:&result
end functionPlPloPLulinZV