MarkdownPad Document
那些年做過的ctf之加密篇(加強版)
大部分轉自WooYun知識庫,加入了筆者自己的理解
0x01 Base64
Base64: ZXZhbCgkX1BPU1RbcDRuOV96MV96aDNuOV9qMXVfU2gxX0oxM10pNTU2NJC3ODHHYWJIZ3P4ZWY=
Base64編碼要求把3個8位字節(3*8=24)轉化為4個6位的字節(4*6=24),之后在6位的前面補兩個0,形成8位一個字節的形式。 如果剩下的字符不足3個字節,則用0填充,輸出字符使用'=',因此編碼后輸出的文本末尾可能會出現1或2個'='
Base32: Base32和Base64相比只有一個區別就是,用32個字符表示256個ASC字符,也就是說5個ASC字符一組可以生成8個Base字符,反之亦然。
base64在線編解碼:http://base64.xpcha.com/
base32在線解碼(需翻牆):http://emn178.github.io/online-tools/base32_decode.html
或者使用python腳本解碼:
1 C:\Python27>python 2 Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32 3 Type "help", "copyright", "credits" or "license" for more information. 4 >>> import base64 5 >>> str = 'haha' 6 >>> base64.b64encode(str) 7 'aGFoYQ==' 8 >>> base64.b64decode('aGFoYQ==') 9 'haha'
把腳本中的b64decode換為b32decode即可實現base32的解碼
0x02 希爾密碼
希爾密碼:密文: 22,09,00,12,03,01,10,03,04,08,01,17 (明文:wjamdbkdeibr)
解題思路:使用的矩陣是 1 2 3 4 5 6 7 8 10
暫沒找到合適的在線解密網站或者好用的腳本,只能對具體問題求解;如有好用的工具,忘不嗇指教!
0x03 柵欄密碼
柵欄密碼:把要加密的明文分成N個一組,然后把每組的第1個字連起來,形成一段無規律的話。
密文樣例:tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren.
解密程序:
1 char s[]= "tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren."; 2 char t[86]= ""; 3 int i,j,k; 4 k=0; 5 for (i=0;i<17;i++) 6 { 7 for(j=0;j<5;j++) 8 { 9 t[k++]= ch[j*17+i]; 10 } 11 } 12 for(i=0;i<85;i++) 13 { 14 printf("%c",t[i]); 15 }
或者利用本篇末尾提供的密碼機器
0x04 凱撒密碼
凱撒密碼:通過把字母移動一定的位數來實現加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一個固定數目進行偏移后被替換成密文。
密文樣例:U8Y]:8KdJHTXRI>XU#?!K_ecJH]kJGbRH7YJH7YSH]=93dVZ3^S8$:8"&:9U]RH;g=8Y!U92'=j$KH]ZSj&[S#!gU#*dK9.
解題思路:得知是凱撒加密之后,嘗試進行127次輪轉爆破:或者利用本篇末尾提供的密碼機器;
lstr="""U8Y]:8KdJHTXRI>XU#?!K_ecJH]kJGbRH7YJH7YSH]=93dVZ3^S8$:8"&:9U]RH;g=8Y!U92'=j$KH]ZSj&[S#!gU#*dK9."""
解密腳本:
1 for p in range(127): 2 str1 = '' 3 for i in lstr: 4 temp = chr((ord(i)+p)%127) 5 if 32<ord(temp)<127 : 6 str1 = str1 + temp 7 feel = 1 8 else: 9 feel = 0 10 break 11 if feel == 1: 12 print(str1)
0x05 Unicode
類似於ASCII碼的一種編碼方式:(詳細資料http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html)
密文樣例:\u5927\u5bb6\u597d\uff0c\u6211\u662f\u0040\u65e0\u6240\u4e0d\u80fd\u7684\u9b42\u5927\u4eba\uff01\u8bdd\u8bf4\u5fae\u535a\u7c89\u4e1d\u8fc7\
在線解密:tool.chinaz.com/Tools/Unicode.aspx
0x06 brainfuck
請看我的另一篇關於Barinfuck與Ook!的博文http://www.cnblogs.com/WangAoBo/p/6373318.html
0x07 摩斯密碼
就是影視劇中經常見到的那種密碼
密文樣例:-- --- .-. ... .
在線解密:http://www.jb51.net/tools/morse.htm
在線解密:http://www.zou114.com/mesm/
或者利用本篇末尾提供的密碼機器
0x08 jsfuck
類似於brainfuck,也是一種替換密碼,由( ) [ ] { } ! + 等符號組成
在線解密:http://utf-8.jp/public/jsfuck.html
在線解密:http://www.jsfuck.com/
在線解密:http://patriciopalladino.com/files/hieroglyphy/
或者直接再Chrome或者FIrefox的控制台中運行即可解碼
0x09 培根密碼
培根所用的密碼是一種本質上用二進制數設計的。不過,他沒有用通常的0和1來表示,而是采用a和b。
0x0A 豬圈密碼又稱共濟會密碼
也是一種替換密碼,替換方式如下:
或者可以表示成:
0x0B CRC32
密文樣例:4D1FAE0B
1 import zlib 2 def crc32(st): 3 crc = zlib.crc32(st) 4 if crc > 0: 5 return "%x" % (crc) 6 else: 7 return "%x" % (~crc ^ 0xffffffff)
本文持續更新,密碼機器v1.0下載鏈接:http://pan.baidu.com/s/1hrIvpWS 密碼:pdhx