一些CTF编码脚本
首先推薦這篇文章,網(wǎng)上有多次轉(zhuǎn)載,這是我見過日期比較早的 CTF中那些腦洞大開的編碼和加密
凱撒密碼
1 flag='flag{abcdef}' 2 c='' 3 n=20 4 for i in flag: 5 if 'a' <= i <='z': 6 i=chr(((ord(i)-ord('a'))+n)%26+ord('a')) 7 c+=i 8 print c柵欄密碼
1 n= 5 2 m = "flag{0123456789abcdef}" 3 c='' 4 for x in range(n): 5 for i in range(len(m)): 6 if((n - i + x) % n == 0): 7 c+=m[i] 8 print c 9 10 n=5 11 m='' 12 c=list(c) 13 zero=(n-len(c))%n 14 n=(len(c)+zero)/n 15 if zero != 0: 16 for i in range(1,zero): 17 c.insert(-n*i+1,'0') 18 c.append('0') 19 for x in range(n): 20 for i in range(len(c)): 21 if((n - i + x) % n == 0): 22 m+=c[i] 23 if zero!= 0: 24 m=m[:-zero] 25 print m?
曼徹斯特編碼與解碼
1 flag = bin(int('flag{0123456789abcdef}'.encode('hex'),16))[2:] 2 s='00' 3 for i in range(len(flag)): 4 if flag[i]=='1': 5 s+='10' 6 else: 7 s+='01' 8 print hex(int(s,2))[2:-1] 9 #296969a56956696a6a9a5a555a565a595a5a5a655a665a695a6a5a955a9669566959695a6965696669696aa6 10 r="" 11 for i in range(len(s)/2): 12 if s[i*2:i*2+2] == '10': 13 r += '1' 14 else: 15 r += '0' 16 print hex(int(r,2))[2:-1].decode('hex') 17 #flag{0123456789abcdef}差分曼徹斯特編碼與解碼
1 #coding=utf-8 2 flag = bin(int('flag{0123456789abcdef}'.encode('hex'),16))[2:] 3 s='01' # or '10' 4 for i in range(len(flag)): 5 if flag[i]=='1': 6 s+=s[-2:][::-1] 7 else: 8 s+=s[-2:] 9 print hex(int(s,2))[2:-1] 10 #6565659565569a99665959555956a6a55959596aa696a69aa69959aaa6569aa9655a9aa69a95656965656669 11 r="" 12 tmp = 0 13 for i in xrange(len(s)/2): 14 c = s[i*2] 15 if c == s[i*2 - 1]: 16 r += '1' 17 else: 18 r += '0' 19 print hex(int(r,2))[2:-1].decode('hex') 20 #flag{0123456789abcdef}?
轉(zhuǎn)載于:https://www.cnblogs.com/kagari/p/10833116.html
總結(jié)
- 上一篇: 想知道:成都市文昌路看守所在哪?
- 下一篇: 复用io selectors模块