拿到题目
一串加密密文
fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=
下载附件之后拿到源码
<?php
function encrypt($data,$key)
{
$key = md5('ISCC');
$x = 0;
$len = strlen($data);
$klen = strlen($key);
for ($i=0; $i < $len; $i++) {
if ($x == $klen)
{
$x = 0;
}
$char .= $key[$x];
$x+=1;
}
for ($i=0; $i < $len; $i++) {
$str .= chr((ord($data[$i]) + ord($char[$i])) % 128);
}
return base64_encode($str);
}
?>
题目先将ISCC做MD5
然后将md5后的值作为密钥
再进行ASCII码转换取模
最后base64加密
写个python
解密这一串字符
得到flag
Flag:{asdqwdfasfdawfefqwdqwdadwqadawd}
import base64
mkey='729623334f0aa2784a1599fd374c120d'
ikey=''
str="fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA="
s1=base64.b64decode(str)
lens=len(s1)
x=0
for i in range(0,lens):
if x==len(mkey):
x=0
j=mkey[x]
ikey=ikey+j
x=x+1
#print ikey
print len(ikey)
dstr=''
for i in range(0,lens):
k=ord(s1[i])-ord(ikey[i])
if k>=0:
d=k
dstr=dstr+chr(d)
print d
print chr(d)
elif k<0:
d=128+ord(s1[i])-ord(ikey[i])
print d
dstr=dstr+chr(d)
print chr(d)
print dstr
print len(s1)
print ord(mkey[0])
print base64.b64decode(str)