ctf中一些最常见的加解密。用Python来一一理解。
————
首先是base64全家桶。相信大家应该遇到过这种题,需要一连串的贝斯解码。用Python就能很方便的解决这个问题:
首先import base64
然后直接一行代码加密解密。
key=base64.b64decode("")
key=base64.b32decode("")
key=base64.b16decode("")
所以你需要贝斯64、32、16连环解码时,一行代码就能搞定:
key=base64.b64decode(base64.b32decode(base64.b16decode("")))
附加说明:md5、sha1加密格式:
a=hashlib.md5()
a.update(name.encode("utf-8"))
a.hexdigest()
a=hashlib.sha1()
a.update(name.encode("utf-8"))
a.hexdigest()
————
栅栏密码。 这个栅字,哎,中华文化博大精深。再深究吧。
先贴源码吧。是网上流传的py2的一个版本。
e="f5-lf5aa9gc9{-8648cbfb4f979c-c2a851d6e5-c}"
elen = len(e)
field=[]
for i in range(2,elen):
if(elen%i==0):
field.append(i)
for f in field:
b = int(elen / f)
result =
for i in range(elen):
a = i % b;
result.update()
d = ''
for i in range(b):
d = d + result[i]
print (str(f)+'栏时,解密结果为: '+d)
还是比较直观的。
————
字符串翻转。 看了i春秋上的c语言实现的版本。然后我用Python试了试:
a="}~144_0t_em0c14w{galf"
b=""
for i in range(len(a)):
b=b+a[len(a)-1:]
a=a[:len(a)-1]
print(b)
最后用Python的切片
print(a[::-1])
。。。是不是想笑。的确啊,py大法好,早用早超生。
————
凯撒解密。(这个凯撒这个名字,是我年少轻狂时写的一部小说里面的主角。当时我还不知道这个加密方法的。有点猿粪蛤。)
def kaisa(lstr):
returnStr = ''
for p in range(127):
str1 = ''
for i in lstr:
temp = chr((ord(i)+p)%127)
if 32
str1 = str1 + temp
feel = 1
else:
feel = 0
break
if feel == 1:
returnStr = returnStr + str1 + '\n'
return returnStr
print(kaisa("btgbteg"))
这个解密方法好像是米斯特安全团队那个框架里面的。
还有超多py的解密脚本在里面,但那个框架我是真用不来。太高端。
————
另外还有1337编码,rc4,当铺密码等等一些。
来不及写了。
最近受伤了难受
和玻璃过不去的我
永远 挂外科
领取专属 10元无门槛券
私享最新 技术干货