那些年做過的ctf之加密篇(加強版)


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

百度百科:http://baike.baidu.com/link?url=R6oWhCdKvzlG8hB4hdIdUT1cZPbFOCrpU6lJAkTtdiKodD7eRTbASpd_YVfi4LMl7N8yFyhVNOz5ki6TC7_5eq

暫沒找到合適的在線解密網站或者好用的腳本,只能對具體問題求解;如有好用的工具,忘不嗇指教!

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。

百科:http://baike.baidu.com/link?url=acaeI3babB7MogPQFh98rDAVSwHfPwh-HnEFTb9cx7DZ5Nz4MkMA14H4SDjBNnOdBsJpliNYa1vnfikQGqvA7K

0x0A 豬圈密碼又稱共濟會密碼

也是一種替換密碼,替換方式如下:

或者可以表示成:

百度百科:http://baike.baidu.com/link?url=yN39kWG2pGd9XHo3RjeUAbd7xs0QlnJ2uHzCJfxC03V-fJcQUdfcJ-WuGoAkKGFVE0AxFK4-98wa4FtzvxRA0_

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM