(参考书目:《CTF特训营》FlappyPig战队著)
(未经声明的语言,默认为python2)
字符串转化为编码
s="flag"
print s.encode("hex")
编码转化为字符串
print hex(num)[2:-1].decode("hex")
在解题过程中,一般使用PyCrypto库中的long_to_bytes和bytes_to_long函数进行转换
from Crypto.Util.number import bytes_to_long
c=flag{123456}
print bytes_to_long(c)
特点:有%
打开文件%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d
import urllib
d="%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d"
print urllib.unquote(d)
得出答案flag{and 1=1}
由.和_组成的代码,中间以空格或者/间隔
解密网站:
https://tool.lu/morse/
还做到过robomunication,是人读的
emmm,我觉得还是自己好好听,好好记一下吧,可以用audacity或者Cool Edit等音频软件辅助一下...
解密网站:
http://codertab.com/JsUnFuck
代码太长了,放一部分吧..
[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])
用文件分析器或者用winhex打开发现是.doc文件
(Emmm...总感觉这个题对密集恐惧症同学不那么友好0.0)
然后改后缀,发现是jsfuck,直接用网站破解
解密网站:
http://ctf.ssleye.com/uu.html
没有小写字母
没做到过这个编码的题目...Emmmm
base64 a-z A-Z 0-9 + / ==补位
base32 A-Z 2-7 ==补位
base16非常接近hex(base16是大写,然后hex是小写,其余不变)
加密代码:
import base64
print "flag".encode("base64")
print base64.b16encode("flag")
print base64.b32encode("flag")
print base64.b64encode("flag")
解密代码:
import base64
print "ZmxhZw==".decode("base64")
print base64.b16decode("666C6167")
print base64.b16decode("MZWGCZY=")
print base64.b16decode("ZmxhZw==")
推荐去解密网站去解base32和64,因为补位不当的话,可能分解不出来
base32网站:
https://www.qqxiuzi.cn/bianma/base.php
base64网站:
https://www.qqxiuzi.cn/bianma/base64.htm
我在做题中还发现了很多奇怪的编码...
解码网站:
http://code.mcdvisa.com/
密文:2053082329700207187313440356
明文:我喜欢信息安全
特征:长度是4的倍数
解密网站:
http://hi.pcmoe.net/buddha.html
密文:新佛曰:諸隸僧降壽吽諸壽陀壽摩隸僧缽薩嚤訶陀夷所迦菩諦吽心所羅劫壽吶壽心壽修哆莊咒愍彌降壽蜜哆咒缽壽菩壽吽壽降夷色塞如如囑壽囑
明文:我喜欢信息安全
特征:自己看0.0
解密网站:
https://www.qqxiuzi.cn/zh/pinyin/
(如果你语文够好,当我没说0.0)
密文:淛匶襫黼瀬鎶
明文:这就是flag
特征:生僻字
加密网站:
https://atool.vip/corevalue/
密文:诚信自由公正爱国爱国敬业民主友善爱国平等敬业公正敬业友善公正友善爱国公正友善自由诚信文明友善自由文明友善爱国自由诚信民主诚信平等诚信富强民主诚信自由公正爱国民主诚信富强诚信平等友善爱国平等友善自由诚信自由爱国敬业诚信自由平等爱国平等友善自由爱国
明文:我喜欢信息安全
特征:全部都是社会主义核心价值观的24字
(没背过的快去背!!!!!)
密文:lafgea{s_eyay_scyprt}o
密钥:3124
明文:flag{easy_easy_crypto}
解密代码:(《CTF特训营》书中代码)
def shift_decrypt(c,k):
l=len(k)
m=""
for i in range(0,len(c),l):
tmp_m=[""]*l
if i+l>=len(c):
tmp_c=c[i:]
use=[]
for kindex in range(len(tmp_c)):
use.append(int(k[kindex])-l)
use.sort()
for kindex in range(len(tmp_c)):
tmp_m[kindex]=tmp_c[use.index(int(k[kindex])-l)]
else:
tmp_c=c[i:i+l]
for kindex in range(len(tmp_c)):
tmp_m[kindex]=tmp_c[int(k[kindex])-1]
m+="".join(tmp_m)
return m
c="lafgea{s_eyay_scyprt}o"
k="3124"
print shift_decrypt(c,k)
(好像平时做题没见过,可能是我做的太少了吧0.0或者是太简单了)
好没技术含量的密码,散了,不写了
没用过的密码,只有01248组成
解密代码:
def c01248_decode(c):
l=c.split("0")
origin = ‘abcdefghijklmnopqrstuvwxyz‘
r = ‘‘
for i in l:
tmp=0
for num in i:
tmp+=int(num)
r+=origin[tmp-1]
return r
print c01248_decode("8842101220480224404014224202480122")
可以用米斯特安全团队制作的CTFcrackTools解密,也可以用代码解密:
def zhalan_decrypt(c,k):
l=len(c)
partnum=l/k
if l%k!=0:
partnum+=1
m=[""]*l
for i in range(0,l,partnum):
if i+partnum>=len(c):
tmp_c=c[i:]
else:
tmp_c=c[i:i+partnum]
for j in range(len(tmp_c)):
m[(j*k+i/partnum)%l]=tmp_c[j]
return "".join(m)
c="f{lm_alzaihhahnmaaga_ah}"
for i in range(1,len(c)):
if len(c)%i==0:
print zhalan_decrypt(c,i)
可以用米斯特安全团队制作的CTFcrackTools解密,也可以用代码解密:
def caesar_decrypt(c,k):
r=""
for i in c:
r+=chr((ord(i)-k)%128)
return r
def caesar_brute(c,match_str):
result=[]
for k in range(128):
tmp=caesar_decrypt(c,k)
if match_str in tmp:
print tmp
return 0
c="39.4H/?BA2,0.2@.?J"
caesar_brute(c,‘‘)
其中k默认是3
SYNT对应flag,如出现SYNT,考虑ROT13
解密网站:
https://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php
c=am+b mod n
解密代码:
import primefac
def affine_decode(c,a,b,origin="abcdefghijklmnopqrstuvwxyz"):
r=""
n=len(origin)
ai=primefac.modinv(a,n)%n
for i in c:
if origin.find(i)!=1:
r+=origin[(ai*(origin.index(i)-b))%n]
else:
r+=i
return r
print affine_decode("ihhwvcswfrcp",5,8)
def affine_guessab(m1,c1,m2,c2,origin="abcdefghijklmnopqrstuvwxyz"):
x1=origin.index(m1)
x2=origin.index(m2)
y1=origin.index(c1)
y2=origin.index(c2)
n=len(origin)
dxi=primefac.modinv(x1-x2,n)%n
a=dxi*(y1-y2) % n
b=(y1-a*x1)%n
return a,b
print affine_guessab("a","i","f","h")
buuctf里面题目小学生密码学也是用这种方法
(就是MC上附魔台的奇妙文字)
密文:g vjganxsymda ux ylt vtvjttajwsgt bl udfteyhfgt
oe btlc ckjwc qnxdta
vbbwwrbrtlx su gnw nrshylwmpy cgwps, lum bipee ynecgy gk jaryz frs fzwjp, x puej jgbs udfteyhfgt, gnw sil uuej su zofi. sc okzfpu bl lmi uhzmwi, x nyc dsj bl lmi enyl ys argnj yh nrgsi. nba swi cbz ojprbsw fqdam mx. cdh nsai cb ygaigroysxn jnwwi lr msylte.
cw mekr tg jptpzwi kdikjsqtaz, ftv pek oj pxxkdd xd ugnj scr, yg n esqxwxw nba onxw au ywipgkj fyiuujnxn gnss xwnz onxw jnahl avhwwxn vzkjpu nrofch fvwfoh. v jwhppek lmi vyutfp hbiafp hcguj at nxw gyxyjask ib hw seihxsqpn vtvjttajwsx ds zzj xnegfsmtf egz wtrq lt mbcukj sc hy. qty wnbw ss bbxsq vxtnl ys ghrw zw cbx vt cdh vgxwtfy ssc brzzthh bl wsjdeiwricg cw mekr zjzi grgktr ib lwfv.
破解网站:
https://quipqiup.com/
https://www.guballa.de/vigenere-solver
(第二个比第一个强大,但需要科 学 shang 网)
原文:https://www.cnblogs.com/yhr001/p/13513267.html