@javascript
最近打了場ctf,真的是被各類編碼以及加密方式給搞怕了,因此,今天就來整理一下ctf中常見的編碼,順便給此次比賽作一個總結。php
原網站連接:html
計算機中的數據都是按字節存儲。一個字節(Byte)由8個二進制位組成(bit)。(組成範圍是0~255(28)) 一個字節一共能夠用來表示256種不一樣的狀態,每個狀態對應一個符號,就是256個符號,從00000000到11111111。java
簡述 :mysql
ASCII 碼是對英語字符與二進制位之間的關係,作了統一規定。git
基本的 ASCII 字符集共有 128 個字符,其中有 96 個可打印字符,包括經常使用的字母、數字、標點符號等,github
如:空格SPACE 是32(二進制:00100000);web
數字0 是48(二進制:00110000);算法
大寫字母A 是65(二進制:01000001)。sql
另外還有 32 個控制字符(不能打印出來)。
這128個符號,只佔用了一個字節的後面7位,最前面的一位統一規定爲0。
特徵: 只含有數字
0-9, 49-57
A-Z, 65-90
a-z, 97-122
舉例:
明文:hello,world. 十六進制:0x680x650x6c0x6c0x6f0xff0c0x770x6f0x720x6c0x640x2e 十進制:1041011081081112551211911111410810046 二進制:011010000110010101101100011011000110111100101100011101110110111101110010011011000110010000101110
ASCII碼對照表
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Xwhz2PqG-1605780409798)(../img/1605670745231.png)]
base16 / base32 / base64 / base58 / base85 / base 100
簡述:
**Base16編碼是將二進制文件轉換成由16個字符組成的文本 **
base32的編碼表是由(A-Z、2-7)32個可見字符構成,「=」符號用做後綴填充。
base64的編碼表是由(A-Z、a-z、0-九、+、/)64個可見字符構成,「=」符號用做後綴填充。
base58的編碼表相比base64少了數字0,大寫字母I,O,小寫字母 l (這個是L),以及符號‘+’和‘/’
base91的密文由91個字符(0-9,a-z,A-Z,!#$%&()*+,./:;<=>?@[]^_`{|}~」)組成
**Base100編碼/解碼工具(又名:Emoji表情符號編碼/解碼),可將文本內容編碼爲Emoji表情符號;同時也能夠將編碼後的Emoji表情符號內容解碼爲文本。 **
原理:
具體原理再也不詳細描述,(主要是太耗時間,能夠自行百度)
舉例:
明文:hello,world.123456
base16: 68656C6C6F2C776F726C642E313233343635 特徵:大寫字母(A-Z)和數字(0-9),不用‘=’補齊。
base32: NBSWY3DPFR3W64TMMQXDCMRTGQ3DK=== 特徵:大寫字母(A-Z)和數字(2-7),不滿5的倍數,用‘=’補齊。
base64: aGVsbG8sd29ybGQuMTIzNDY1 特徵:大小寫字母(A-Z,a-z)和數字(0-9)以及特殊字符‘+’,‘/’,不滿3的倍數,用‘=’補齊。
base58: 2smDFYXWKE8vc8XA8dadEYcSqcQb 特徵:相比Base64,Base58不使用數字"0",字母大寫"O",字母大寫"I",和字母小寫"l",以及"+"和"/"符號,最主要的是後面不會出現'='。
base85: BOu!rDst>tGAhM<A1fSl1GgsI 特徵:特色是奇怪的字符比較多,可是很難出現等號
明文:hello,world.123456 base91: TPwJh>go2Tv!_,aRA2IbLmA 特徵:由91個字符(0-9,a-z,A-Z,!#$%&()*+,./:;<=>?@[]^_`{|}~」)組成 不支持中文。
base100: 👟👜👣👣👦📦💳💃👮👦👩👣👛🐥🐨🐩🐪🐫🐬🐭 特徵:就是一堆Emoji表情
在線編碼
簡述:
通常MD5值是32位由數字「0-9」和字母「a-f」所組成的字符串,字母大小寫統一;若是出現這個範圍之外的字符說明這多是個錯誤的md5值,就不必再拿去解密了。
16位值是取的是8~24位。
特徵:
有固定長度,通常是32位或者16位
由數字「0-9」和字母「a-f」組成
舉例:
明文:hello,world.123456 md5(hello,world.123456,32) = 5189503aae1b1c0a6fbf7ea9e3128ab0 md5(hello,world.123456,16) = ae1b1c0a6fbf7ea9
在線加解密
簡述
SHA1是一種密碼散列函數,SHA1能夠生成一個被稱爲消息摘要的160位,20字節的散列值,散列值一般的呈現形式爲40位十六進制數。這種加密和MD5相似。
特徵:
有固定長度,爲40位的字符串
舉例:
明文:hello,world.123456 sha1(hello,world.123456)= 0179303b8f08fbc3d16cd23a4be5828790e12375
在線加解密
簡述:
HMAC (Hash-based Message Authentication Code) 經常使用於接口簽名驗證,這種算法就是在前兩種加密的基礎上引入了祕鑰,而祕鑰又只有傳輸雙方纔知道,因此基本上是破解不了的 。
特徵:
和MD5相似,可是有祕鑰。
舉例:
在線加解密:
簡述:
這種加密是Windows的哈希密碼,是 Windows NT 早期版本的標準安全協議。與它相同的還有Domain Cached Credentials(域哈希)。
舉例:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yIepnHXf-1605780409801)(../img/NTLM示例.png)]
在線解密:
# | 算法 | 長度 |
---|---|---|
1 | md5 | 32/16 |
2 | sha1 | 40 |
3 | sha256 | 64 |
4 | sha512 | 128 |
5 | adler32 | 8 |
6 | crc32 | 8 |
7 | crc32b | 8 |
8 | fnv132 | 8 |
9 | fnv164 | 16 |
10 | fnv1a32 | 8 |
11 | fnv1a64 | 16 |
12 | gost | 64 |
13 | gost-crypto | 64 |
14 | haval128,3 | 32 |
15 | haval128,4 | 32 |
16 | haval128,5 | 32 |
17 | haval160,3 | 40 |
18 | haval160,4 | 40 |
19 | haval160,5 | 40 |
20 | haval192,3 | 48 |
21 | haval192,4 | 48 |
22 | haval192,5 | 48 |
23 | haval224,3 | 56 |
24 | haval224,4 | 56 |
25 | haval224,5 | 56 |
26 | haval256,3 | 64 |
27 | haval256,4 | 64 |
28 | haval256,5 | 64 |
29 | joaat | 8 |
30 | md2 | 32 |
31 | md4 | 32 |
32 | ripemd128 | 32 |
33 | ripemd160 | 40 |
34 | ripemd256 | 64 |
35 | ripemd320 | 80 |
36 | sha224 | 56 |
37 | sha3-224 | 56 |
38 | sha3-256 | 64 |
39 | sha3-384 | 96 |
40 | sha3-512 | 128 |
41 | sha384 | 96 |
42 | sha512/224 | 56 |
43 | sha512/256 | 64 |
44 | snefru | 64 |
45 | snefru256 | 64 |
46 | tiger128,3 | 32 |
47 | tiger128,4 | 32 |
48 | tiger160,3 | 40 |
49 | tiger160,4 | 40 |
50 | tiger192,3 | 48 |
51 | tiger192,4 | 48 |
52 | whirlpool | 128 |
53 | mysql | 老MYSQL數據庫用的,16位,且第1位和第7位必須爲0-8 |
54 | mysql5 | 40 |
55 | NTLM | 32 |
56 | Domain Cached Credentials | 32 |
簡述:
以上都是非對稱性加密算法,就是引入了密鑰,密文特徵與Base64相似,
在線解密:
非對稱加密
簡述:
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。
它用兩個字節來編碼一個字符,字符編碼通常用十六進制來表示.
舉例:
Unicode有如下四種編碼方式:
明文:hello,world.
&#x [hex]:hello,world. &# [hex]:hello,world. \u [hex]:\U0068\U0065\U006C\U006C\U006F\U002C\U0077\U006F\U0072\U006C\U0064\U002E \u+ [hex]:\U+0068\U+0065\U+006C\U+006C\U+006F\U+FF0C\U+0077\U+006F\U+0072\U+006C\U+0064\U+002E
在線編碼:
簡述:
字符實體是用一個編號寫入HTML代碼中來代替一個字符,在使用瀏覽器訪問網頁時會將這個編號解析還原爲字符以供閱讀。
舉例:
明文:hello,world. 十進制:hello,world. 十六進制:hello,world.
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oWM5P8YX-1605780409803)(../img/HTML實體編碼.png)]
在線加解密:
簡述:
Escape/Unescape加密解碼/編碼解碼,又叫%u編碼,其實就是字符對應UTF-16 16進製表示方式前面加%u。Unescape解碼/解密,就是去掉"%u"後,將16進制字符還原後,由utf-16轉碼到本身目標字符。如:字符「中」,UTF-16BE是:「6d93」,所以Escape是「%u6d93」,反之也同樣!
舉例:
明文:hello,world. 密文:%u0068%u0065%u006c%u006c%u006f%uff0c%u0077%u006f%u0072%u006c%u0064%u002e
在線加解密:
簡述:
url編碼又叫百分號編碼,是統一資源定位(URL)編碼方式。URL地址(常說網址)規定了經常使用地數字,字母能夠直接使用,另一批做爲特殊用戶字符也能夠直接用(/,:@等),剩下的其它全部字符必須經過%xx編碼處理。 如今已經成爲一種規範了,基本全部程序語言都有這種編碼,如js:有encodeURI、encodeURIComponent,PHP有 urlencode、urldecode等。編碼方法很簡單,在該字節ascii碼的的16進制字符前面加%. 如 空格字符,ascii碼是32,對應16進制是'20',那麼urlencode編碼結果是:%20。
特徵:
編碼前面都有%
舉例:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-sqQeSWfX-1605780409806)(../img/URL編碼.png)]
在線加解密:
簡述:
Hex 全稱 是Intel HEX。Hex文件是由一行行符合Intel HEX文件格式的文本所構成的ASCII文本文件。在Intel HEX文件中,每一行包含一個HEX記錄。這些記錄由對應機器語言碼和/或常量數據的十六進制編碼數字組成。
特徵:
十六進制(Hexadecimal)
它是計算機中數據的一種表示方法,由0-9,A-F組 成,字母不區分大小寫。
與10進制的對應關係是:0-9不變,A-F對應10-15。
舉例:
明文:hello,world. 密文(帶%):%68%65%6c%6c%6f%ef%bc%8c%77%6f%72%6c%64%2e 密文(不帶%):68656C6C6FEFBC8C776F726C642E
在線加解密:
特徵:
一堆顏文字構成的js代碼,在F12中可直接解密執行
舉例:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6RPmHes2-1605780409807)(../img/1605750605378.png)]
在線加密:
解密在F12的console中
簡述:
jother是一種運用於javascript語言中利用少許字符構造精簡的匿名函數方法對於字符串進行的編碼方式。
特徵:
只用 **! + ( ) [ ] { } **這八個字符就能完成對任意字符串的編碼。可在F12中解密執行
舉例:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KW1bCswg-1605780409809)(../img/1605751409787.png)]
在線解密:
Jother
特徵:
與jother很像,只是少了{ }
舉例:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JeIl5Zq8-1605780409810)(../img/1605751794549.png)]
在線加密:
解密在F12的console中
簡述:
它是多用途互聯網郵件擴展(MIME) 一種實現方式。有時候咱們能夠郵件頭裏面可以看到這樣的編碼;
特徵:
任何一個8位的字節值可編碼爲3個字符:一個等號」=」後跟隨兩個十六進制數字(0–9或A–F)表示該字節的數值.
舉例:
明文:天上掉下了個豬八戒 密文:=E5=A4=A9=E4=B8=8A=E6=8E=89=E4=B8=8B=E4=BA=86=E4=B8=AA=E7=8C=AA=E5=85=AB=E6=88=92
在線編碼:
我就吃過該編碼的虧,當時不知道啊/(ㄒoㄒ)/~~
簡述:
XXencode將輸入文本以每三個字節爲單位進行編碼。若是最後剩下的資料少於三個字節,不夠的部份用零補齊。這三個字節共有24個Bit,以6bit爲單位分爲4個組,每一個組以十進制來表示所出現的數值只會落在0到63之間。以所對應值的位置字符代替。
特徵:
字符範圍是:
0-9,A-Z,a-z,
一共64個字符。跟base64打印字符相比,就是UUencode多一個「-」 字符,少一個」/」 字符。
舉例:
明文:hello,world. 密文:BO4JgP4yXf5RjQalY9U++
在線加解密:
簡述:
UUencode是一種二進制到文字的編碼,最先在unix郵件系統中使用,全稱:Unix-to-Unix encoding,UUencode將輸入文本以每三個字節爲單位進行編碼,若是最後剩下的資料少於三個字節,不夠的部份用零補齊。三個字節共有24個Bit,以6-bit爲單位分爲4個組,每一個組以十進制來表示所出現的字節的數值。這個數值只會落在0到63之間。而後將每一個數加上32,所產生的結果恰好落在ASCII字符集中可打印字符(32-空白…95-底線)的範圍之中。
舉例:
明文:hello,world. 密文:,:&5L;&\L=V]R;&0N
在線解密&工具:
特徵:
將JS代碼轉換成經常使用的網絡表情
舉例:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-B1dSP7Ym-1605780409811)(../img/1605772666057.png)]
在線加解密:
特徵:
將JS代碼轉換成只有符號的字符串
舉例:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-A19nMNgs-1605780409811)(../img/1605779161126.png)]
在線加解密:
簡述:
Brainfuck是一種極小化的計算機語言,按照"Turing complete(完整圖靈機)"思想設計的語言,它的主要設計思路是:用最小的概念實現一種「簡單」的語言。
特徵:
BrainFuck 語言只有八種符號,全部的操做都由這八種符號 (> < + - . , [ ]) 的組合來完成。
舉例:
明文:hello,world. 密文:+++++ +++++ [->++ +++++ +++<] >++++ .---. +++++ ++..+ ++.<+ +++++ ++[-> ----- ---<] >---. <++++ ++++[ ->+++ +++++ <]>++ +++++ ++++. ----- ---.+ ++.-- ----. ----- ---.< +++++ ++[-> ----- --<]> ----- .<
在線加解密:
簡述:
摩爾斯電碼(Morse Code)是由美國人薩繆爾·摩爾斯在1836年發明的一種時通時斷的且經過不一樣的排列順序來表達不一樣英文字母、數字和標點符號的信號代碼,摩爾斯電碼主要由如下5種它的代碼組成:
/
劃分)莫爾斯電碼對應表:
A .- | B -... | C -.-. | D -.. | E . | F ..-. | G --. | H .... | I .. | J .--- |
---|---|---|---|---|---|---|---|---|---|
K -.- | L .-.. | M -- | N -. | O --- | P .--. | Q --.- | R .-. | S ... | T - |
U ..- | V ...- | W .-- | X -..- | Y -.-- | Z --.. | 0 ----- | 1 .---- | 2 ..--- | 3 ...-- |
4 ....- | 5 ..... | 6 -.... | 7 --... | 8 ---.. | 9 ----. | . .-.-.- | , --..-- | ? ..--.. | - -....- |
= -...- | : ---... | ; -.-.-. | ( -.--. | ) -.--.- | / -..-. | " .-..-. | $ ...-..- | ' .----. | ¶ .-.-.. |
_ ..--.- | @ .--.-. | ! ---. | ! -.-.-- | + .-.-. | ~ .-... | # ...-.- | & . ... | ⁄ -..-. |
特徵:
由 **. - "空格" / **表示。
舉例:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gmLE7aZs-1605780409812)(../img/1605776280497.png)]
在線加解密:
特徵:
字符所有是社會主義核心價值觀。
舉例:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xmdLUxx6-1605780409813)(../img/1605778636185.png)]
在線加解密:
特徵:
密文以」佛曰:如是我聞:」開頭,密文通常是與關佛經的漢字
舉例:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-v4op8S2N-1605780409813)(../img/1605779656659.png)]
在線工具:
· · · 一些簡單編碼沒有寫, 之後遇到其餘的編碼,再補充到後面。。。