CTF必备技能之编码大全

编码根据百度百科的解释:指的是信息从一个形式或格式传换为另一种形式的过程,也称为计算机编程语言的代码简称编码。从我们的祖先仓颉造字再到0-9的阿拉伯数字的广泛使用,信息的记录和转化的形式也越来越多样化。那么在计算机以及通信等数字化领域,以01数字为基础同样也演变出了适用计算机不同领域的编码方法。其实编码的本质就是在原有字符集的基础上根据规则进行格式的转换,在CTF中misc类型的题中少不了有编码的存在,作为ctf的基础必备技能,为此斗哥整合了目前ctf中出现的各种各样的编码,以作为新手入门的一二指南。

各种字符集的转换有时候不仅是为了可读性等,还有的时候是为了加密,保护数据的机密性,加密的比编码更复杂,此次本文仅涉及简单的古典加密算法。

根据斗哥参加CTF的经验,编码的出题套路大概有三类(注:本文统一把编码后的字符串统称为密文): 简单点:题目直接给你编码后的密文,这时候比的就是对各类编码的认识全不全以及单身多年的手速。 难一点:密文以其他形式存在某种介质文件中,需要结合杂项的分支的知识点(流量分析之类的)找到对应的密文,当然还有出题人的各种奇葩脑洞。 再难点:再难点可能就需要对密文的枚举爆破,比如根据提示加密算法,逆向写出对应的解密算法的脚本,这里就有涉及密码学的相关知识了,需要对编码算法有深入的了解。

虽说出题套路千千万,但咱还是要守住底线,从学好基础知识做起,万变不离其宗~

早在移动互联网普及之前,人们最早接触的就是通信领域,通信领域主要涉及电报电话、无线通信等,现代通信领域的编码主要涉及到二进制数到脉冲信号(模/数,数/模的转化)的转换,还有最早期无线通信里的摩尔斯码,电报电码等。

通信领域的编码

1.摩斯编码

特征特点:用点(.)和划(-)来编码范围0-9、A-Z的字符,字母不区分大小写,两个字母之间的空格用斜杠(/)或者三个点(.)或者一个划(-)表示,两个单词之间的间隔是七个点(.)。 根据摩斯编码的原理,CTF中也有出现过变种的摩斯编码,比如点(.)和划(-)用数字0和1来表示等此类变种的思路。

在线解密&工具: http://www.jb51.net/tools/morse.htm (编码的时候不转换空格) http://ctf.ssleye.com/morse.html (编码的时候不转换空格) http://rumkin.com/tools/cipher/morse.php (空格用斜杠表示)

2.敲击码

特征特点:敲击码是基于5×5方格波利比奥斯方阵来实现的,不同点是是用K字母被整合到C中,因此密文的特征为1-5的两位一组的数字,编码的范围是A-Z字母字符集,字母不区分大小写。

在线解密&工具: http://ctf.ssleye.com/tapcode.html

3.格雷编码

特征特点:由相邻两位数之间只有一个位元改变的二进制数码构成数列集合。传统的二进位系统例如数字3的表示法为011,要切换为邻近的数字4,也就是100时,装置中的三个位元都得要转换,因此于未完全转换的过程时装置会经历短暂的,010,001,101,110,111等其中数种状态,也就是代表着2、1、5、6、7,因此此种数字编码方法于邻近数字转换时有比较大的误差可能范围。格雷码的发明即是用来将误差之可能性缩减至最小。

在线解密&工具: http://www.ab126.com/system/2780.html

4.中文电码

特征特点:密文以4位[0-9]为一组的数字表示,如2435 0766两组数字分别表示汉字中文:”斗哥“。 中文电码,又称中文电报码或中文电报明码,是于电报之中传送中文信息的方法。它是第一个把汉字化作电子讯号的编码表。其中简体中文电码收录了7085个汉字,繁体中文电码收录了9041个汉字。

在线解密&工具: http://www.atool.org/dianma.php

计算机相关的编码

计算机相关的编码主要是与计算机系统中会用到的编码,比如常见的ascii编码、unicode、URL编码等,还有就是我们的就是代码混淆中会遇到的一些编码,以及我们古典加密中常见的换位加密和替换加密等。

01-常见的编码

● 字母表编码

特征特点:用数字1-26或者0-25来编码范围为A-Z/a-z字母字符,字母不区分大小写。

在线解密&工具

http://ctf.ssleye.com/a1z26.html

● 进制编码

特征特点:主要是各进制之间的转换 二进制数,只有01两个字符 八进制数,0开头,用[0-7] 8个字符表示 十六进制数,0x开头,[0-9,a-f ]等十六个个字符表示 在线解密&工具: https://tool.oschina.net/hexconvert

● ASCII编码

特征特点:用1个字节的8位数来编码英文字符集,即所有字母数字等英文符号可以用二进制数、十进制、十六进制来表示。比如大写字母A可分别用二进制数(01000001)、十进制(65)、十六进制(0x41)来表示。

在线解密&工具: http://ctf.ssleye.com/jinzhi.html http://ctf.ssleye.com/cencode.html http://www.ab126.com/goju/1711.html

● GBK/GBK2312编码

特征特点:用2个字节16比特的16进制数表示来编码中文字符集,其中GBK是GBK2312的扩展字符集编码,包含简体、繁体中文、日语、韩语等。比如斗哥斗对应的GBK和GBK2312为B6B7。

在线解密&工具: http://www.mytju.com/classcode/tools/encode_gb2312.asp https://www.qqxiuzi.cn/bianma/zifuji.php

● unicode编码

特征特点:国际标准字符,将全球的各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台文本信息的转换,当编码和解码的字符集出现不一致的时候就会出现乱码。 unicode一般有四种表示形式 &#x [Hex]: The &# [Decimal]: The \U [Hex]: \U0054\U0068\U0065 \U+ [Hex]: \U+0054\U+0068\U+0065

在线解密&工具: http://tool.chinaz.com/tools/unicode.aspx

● UTF-8

特征特点:utf-8是一种可变长的字符编码,主要是为了节省存储空间,编码长度根据编码的字符集从1个字节到6个字节不等。 在线解密&工具: http://tool.chinaz.com/Tools/UTF-8.aspx

● URL编码

特征特点:一个字符ascii码的十六进制,然后在前面加上% 在线解密&工具: http://ctf.ssleye.com/url.html http://tool.chinaz.com/Tools/urlencode.aspx

● base系列编码

1.base64

特征特点:密文由64个字符(A-Z,a-z,0-9,+,/)组成,末尾可能会出现1或2个’=’ 最多有2个 加密原理过程如下:

base64索引表如下:

在线解密&工具: http://ctf.ssleye.com/base64.html

2. base32

特征特点:密文由32个字符(A-Z,2-7)组成,末尾可能会有‘=’,但最多有6个 在线解密&工具: http://ctf.ssleye.com/base64.html

3. base16

特征特点:密文由16个字符(0-9,A-F)组成 在线解密&工具: http://ctf.ssleye.com/base64.html

4. base36

特征特点:密文由36个字符(0-9,a-z)组成,加密仅支持整数数字,解密仅支持字符串,不支持中文 密文由36个字符(0-9,A-Z) 在线解密&工具: http://ctf.ssleye.com/base36w.html

5. base58编码

特征特点: Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址,Base58不使用数字”0”,字母大写”O”,字母大写”I”,和字母小写”l”,以及”+”和”/”符号 在线解密&工具: http://ctf.ssleye.com/base58w.html

6. base62编码

特征特点:密文由62字符(0-9,a-z,A-Z)组成 在线解密&工具: https://base62.io/(支持中文) http://decode-base62.nichabi.com http://ctf.ssleye.com/base62.html(仅支持数字)

7. base91编码

特征特点:密文由91个字符(0-9,a-z,A-Z,!#$%&()*+,./:;<=>?@[]^_`{|}~”)组成 在线解密&工具: http://ctf.ssleye.com/base91.html

02-代码混淆加密

● UUencode

特征特点:一种二进制到文字的编码,将要编码的文件转化为二进制,重新分组进行编码的过程,与base64编码类似。 在线解密&工具: http://web.chacuo.net/charsetuuencode https://www.qqxiuzi.cn/bianma/uuencode.php

● XXencode

特征特点:与xxencode类似,区别是打印的字符不同 在线解密&工具: http://web.chacuo.net/charsetxxencode/

● quoted-printable

特征特点:在所有邮件处理的各式各样的编码中,很多编码的目的都是通过编码的手段使得七位字符的邮件协议体系可以传送八位的二进制文件、双字节语言等等。Quoted-Printable也是这样一些编码中的一个,它的目的同样是帮助非ASCII编码的信件传输通过SMTP。Quoted-Printable编码是字符对应的编码,每个末编码的二进制字符被编码成三个字符,即一个等号和一个十六进制的数字,如‘=AB’。

在线解密&工具 http://www.mxcz.net/tools/QuotedPrintable.aspx

● jjencode

特征特点:将JS代码转换成只有符号的字符串 在线解密&工具: http://utf-8.jp/public/jjencode.html http://www.atoolbox.net/Tool.php?Id=704

● aaencode

特征特点:将JS代码转换成常用的网络表情 在线解密&工具: http://utf-8.jp/public/aaencode.html https://www.qtool.net/decode

● ppencode

特征特点:把Perl代码转换成只有英文字母的字符串 在线解密&工具: http://namazu.org/~takesako/ppencode/demo.html

● rrencode

特征特点:把ruby代码全部转换成符号 在线解密&工具: http://www.lab2.kuis.kyoto-u.ac.jp/~yyoshida/rrencode.html

● JSfuck

特征特点:用6 个字符 ( ) [ ] !+ 来对JavaScript进行编码 在线解密&工具: http://discogscounter.getfreehosting.co.uk/js-noalnum.php http://www.jsfuck.com/

● jother

特征特点: 密文为8个字符! + ( ) [ ] { } 在线解密&工具: jother直接在浏览器(IE可以)的控制台里输入密文即可执行解密

● brainfuck编程语言

特征特点:密文由+.<>[]’ && ‘!.?或者’+-.<>[]’等组成 在线解密&工具: https://www.splitbrain.org/services/ook https://www.nayuki.io/page/brainfuck-interpreter-javascript http://esoteric.sange.fi/brainfuck/impl/interp/i.html

03-古典密码

03古典密码-换位加密

● 栅栏密码(Rail-fence Cipher)

特征特点:栅栏密码是一种简单的移动字符位置的加密方法,加密前后的字符数不变。

栅栏密码的加密方式:把文本按照一定的字数分成多个组,取每组第一个字连起来得到密文1,再取每组第二个字连起来得到密文2……最后把密文1、密文2……连成整段密文。

在线解密&工具: https://www.qqxiuzi.cn/bianma/zhalanmima.php

● 曲路密码(Curve Cipher)

特征特点:曲路密码(Curve Cipher)是一种换位密码,需要事先约定填充的行列数(也就是曲路路径)

在线解密&工具:暂无

● 列移位密码(Columnar Transposition Cipher)

特征特点:列移位密码(Columnar Transposition Cipher)是一种比较简单,易于实现的换位密码,通过一个简单的规则将明文打乱混合成密文。 以明文 The quick brown fox jumps over the lazy dog,密钥 how are u为例: 填入5行7列表(事先约定填充的行列数,如果明文不能填充完表格可以约定使用某个字母进行填充)

密钥:how are u 按how are u在字母表中的出现的先后顺序进行编号,我们就有a为1,e为2,h为3,o为4,r为5,u为6,w为7,所以先写出a列,其次e列,以此类推写出的结果便是密文: 密文:qoury inpho Tkool hbxva uwmtd cfseg erjez

在线解密&工具: http://www.practicalcryptography.com/ciphers/classical-era/columnar-transposition/

03-古典密码-替换加密

● 埃特巴什码(Atbash Cipher)

特征特点:埃特巴什码(Atbash Cipher)是一种以字母倒序排列作为特殊密钥的替换加密 对应关系如下: ABCDEFGHIJKLMNOPQRSTUVWXYZ ZYXWVUTSRQPONMLKJIHGFEDCBA

在线解密&工具

http://www.practicalcryptography.com/ciphers/classical-era/atbash-cipher/

● 凯撒密码(Caesar Cipher)

特征特点:明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文 在线解密&工具: http://planetcalc.com/1434/

● ROT5/13/18/47

特征特点: ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6,以此类推顺序循环。 ROT13:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母,例如当前为A,编码后变成N,当前为B,编码后变成O,以此类推顺序循环。 ROT18:这是一个异类,本来没有,它是将ROT5和ROT13组合在一起,为了好称呼,将其命名为ROT18。 ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126, 在线解密&工具: http://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php

● 猪圈密码(Pigpen Cipher)

特征特点: 图形:

在线解密&工具: http://www.simonsingh.net/The_Black_Chamber/pigpen.html

圣堂武士密码(Templar Cipher)

特征特点

猪圈密码其他变种

特征特点

键盘密码(Keyboard Cipher)

特征/特点:利用键盘的特性制作的密码,常见有计算机的键盘和手机的键盘,加密的方式有坐标法和顺序法。 坐标法: Y轴 1 QWE RTY UIOP 2 ASD FGH JKL 3 ZXC VBN M 12345678910 X轴 eq:密文:2251914161对应明文:story

顺序法: Q W E R T Y U I O P 1 2 3 4 5 6 7 8 9 10 A S D F G H J K L 11 12 13 14 15 16 17 18 19 Z X C V B N M 20 21 22 23 24 25 26 eq:密文:125947对应明文:story

● 手机九宫格键盘密码

特征特点:密文用数字0-9表示a-z的字符集,字母不区分大小写 密文:21222331323341424351525361626371727381828391929394 明文:abcdefghijklmnopqrtuvwxyz 在线解密&工具:米斯特

● 维吉尼亚密码(Vigenère Cipher)

特征特点:维吉尼亚密码(Vigenère Cipher)是在单一恺撒密码的基础上扩展出多表代换密码,根据密钥(当密钥长度小于明文长度时可以循环使用)来决定用哪一行的密表来进行替换,以此来对抗字频统计 在线解密&工具: http://planetcalc.com/2468/(已知密匙) http://rumkin.com/tools/cipher/gronsfeld.php(未知密匙)

● 希尔密码(Hill Cipher)

特征特点:希尔密码(Hill Cipher)是基于线性代数多重代换密码,由Lester S. Hill在1929年发明。每个字母转换成26进制数字:A=0, B=1, C=2…Z=25一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果MOD26。 在线解密&工具: http://www.practicalcryptography.com/ciphers/hill-cipher/

● 波利比奥斯方阵密码(Polybius Square Cipher)

特征特点:波利比奥斯方阵密码(Polybius Square Cipher或称波利比奥斯棋盘)是棋盘密码的一种,是利用波利比奥斯方阵进行加密的密码方式,简单的来说就是把字母排列好,用坐标(行列)的形式表现出来。字母是密文,明文便是字母的坐标。

在线解密&工具:暂无

● 夏多密码(曲折加密)

特征特点:夏多密码是作者麦克斯韦·格兰特在中篇小说《死亡之链》塑造夏多这一英雄人物中所自创的密码 。

在线解密&工具:暂无

● 培根密码(Baconian Cipher)

特征/特点:培根密码(Baconian Cipher)是一种替换密码,每个明文字母被一个由5字符组成的序列替换,最初的加密方式就是由’A’和’B’组成序列替换明文(所以你当然也可以用别的字母),比如字母’D’替换成”aaabb”,以下是全部的对应关系(另一种对于关系是每个字母都有唯一对应序列,I和J与U/V各自都有不同对应序列):

在线解密&工具: http://rumkin.com/tools/cipher/baconian.php

● ADFGX和ADFGVX密码(ADFG/VX Cipher)

特征/特点:ADFGX密码(ADFGX Cipher)是结合了改良过的Polybius方格替代密码与单行换位密码的矩阵加密密码,使用了5个合理的密文字母:A,D,F,G,X,这些字母之所以这样选择是因为当转译成摩尔斯电码(ADFGX密码是德国军队在一战发明使用的密码)不易混淆,目的是尽可能减少转译过程的操作错误。 在线解密&工具: http://www.practicalcryptography.com/ciphers/adfgx-cipher/

● 双密码(Bifid Cipher)

特征/特点:双密码(Bifid Cipher)结合了波利比奥斯方阵换位密码,并采用分级实现扩散,这里的“双”是指用2个密钥进行加密。双密码是由法国Felix Delastelle发明,除此之外Felix Delastelle还发明了三分密码(Trifid Cipher),四方密码(Four-Square Cipher)。还有一个两方密码(Two-Square)与四方密码类似,共轭矩阵双密码(Conjugated Matrix Bifid Cipher)也是双密码的变种。 在线解密&工具: http://www.practicalcryptography.com/ciphers/adfgx-cipher/

现实世界中常用的编码

● 条形码

特征特点:宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符 在线解密&工具: https://online-barcode-reader.inliteresearch.com/

● 二维码

特征特点:用某种特定几何图形按一定规律在平面分步的黑白相间的图形记录数据符号信息 堆叠式 / 行排式二维码:Code 16 k、Code 49、PDF417 矩阵式二维码:QR CODE 在线解密&工具: https://online-barcode-reader.inliteresearch.com/

其他:

● 当铺密码

特征特点:密文由[0-9]数字组成(以当前汉字有多少笔画出头,就是转化成对应的数字) 密文:0123456789 原文:口由中人工大王夫井羊 在线解密&工具: http://www.zjslove.com/3.decode/dangpu/index.html

● 核心价值观编码

特征特点:密文特征为社会主义核心价值观的关键字 在线解密&工具: http://ctf.ssleye.com/cvencode.html

● 与佛论禅

特征特点:密文以”佛曰:如是我闻:”开头,密文一般是与关佛经的汉字 在线解密&工具: http://www.keyfc.net/bbs/tools/tudoucode.aspx

参考: https://blog.csdn.net/pdsu161530247/article/details/75667218

PS:

文中图片均来自互联网。

比较会装傻卖萌

比较想你关注我(* ̄∇ ̄*)

原文发布于微信公众号 - 漏斗社区(newdooneSec)

原文发表时间:2019-03-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券