CTF 常见密码编码及其解决方案
CTF 常见密码编码及其解决方案#
一些工具(在线)#
CyberChef:very very goooood
随波逐流工作室:very good
千千秀字:里面有一些很多自创的奇怪加密算法……
一些工具(离线)#
CyberChef
,[随波逐流]CTF编码工具
计算机常用编码类#
ASCII编码#
ASCII(发音: /ˈæski/),American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言,并等同于国际标准**ISO/IEC 646**。
URL编码#
百分号编码(英语:Percent-encoding),又称URL编码(URL encoding)是特定上下文的统一资源定位符(URL)的编码机制,实际上也适用于统一资源标志符(URI)的编码。也用于为application/x-www-form-urlencoded MIME准备数据,因为它用于通过HTTP的请求操作(request)提交HTML表单数据。
Base家族#
Base64
Base64(基底64)是一种基于64个可打印字符来表示二进制数据的表示方法。由于log264=6,所以每6个比特为一个单元,对应某个可打印字符。3个字节相当于24个比特,对应于4个Base64单元,即3个字节可由4个可打印字符来表示。在Base64中的可打印字符包括字母A-Z
、a-z
、数字0-9
,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。
Base32
此外还有Base16,Base36,Base58,Base62,Base85,Base91,Base92……
Shellcode编码#
shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制之机械码,以其经常让攻击者获得shell而得名。shellcode常常使用机器语言编写,由于现代电脑系统基本上启用NX位元保护使得机械码无法直接执行,可透过返回导向编程编写shellcode。 可在暂存器eip溢出后,塞入一段可让CPU执行的shellcode机械码,让电脑可以执行攻击者的任意指令。
1 |
|
UUencode#
uuencode这个名字是衍生自”Unix-to-Unix encoding”,原先是Unix系统下将二进制的资料借由uucp邮件系统传输的一个编码程式,是一种二进制到文字的编码。
1 |
|
XXEncode编码#
xxencode是一种二进制到文本的编码类似于uuencode,它仅使用字母数字字符以及加号和减号。它的发明是为了以一种能够在字符集转换中幸存的格式传输文件,特别是在ASCII和IBM 大型机上使用的EBCDIC编码之间。
1 |
|
Unicode编码#
Unicode,全称为Unicode标准(The Unicode Standard),其官方机构Unicode联盟所用的中文名称为统一码,又译作万国码、统一字元码、统一字符编码,是信息技术领域的业界标准,其整理、编码了世界上大部分的文字系统,使得电脑能以通用划一的字符集来处理和显示文字,不但减轻在不同编码系统间切换和转换的困扰,更提供了一种跨平台的乱码问题解决方案。
1 |
|
Escape编码#
escape采用ISO Latin字符集对指 定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。
1 |
|
Quoted-printable编码#
Quoted-printable或QP encoding,没有规范的中文译名,可译为可打印字符引用编码或使用可打印字符的编码。Quoted-printable是使用可打印的ASCII字符(如字母、数字与“=”)表示各种编码格式下的字符,以便能在7-bit数据通路上传输8-bit数据, 或者更一般地说在非8-bit clean媒体上正确处理数据。这被定义为MIME content transfer encoding,用于e-mail。
1 |
|
字符值引用#
字符值引用(numeric character reference, NCR)是在标记语言SGML以及派生的如HTML与XML中常见的一种转义序列结构,用来表示Unicode的通用字符集 (UCS)中的单个字符. NCR可以表示在一个特定文档中不能直接编码的字符,而该标记语言阅读器软件把每个NCR当作一个字符来处理。
1 |
|
RTF富文本格式#
富文本格式(Rich Text Format)即RTF格式,又称多文本格式,是由微软公司开发的跨平台文档格式。大多数的文字处理软件都能读取和保存RTF文档。
1 |
|
哈希#
算法名称 | 输出大小(bits) | 内部大小 | 区块大小 | 长度大小 | 字符尺寸 | 碰撞情形 |
---|---|---|---|---|---|---|
HAVAL | 256/224/192/160/128 | 256 | 1024 | 64 | 32 | 是 |
MD2 | 128 | 384 | 128 | No | 8 | 大多数 |
MD4 | 128 | 128 | 512 | 64 | 32 | 是 |
MD5 | 128 | 128 | 512 | 64 | 32 | 是 |
PANAMA | 256 | 8736 | 256 | 否 | 32 | 是 |
RadioGatún | 任意长度 | 58字 | 3字 | 否 | 1-64 | 否 |
RIPEMD | 128 | 128 | 512 | 64 | 32 | 是 |
RIPEMD-128/256 | 128/256 | 128/256 | 512 | 64 | 32 | 否 |
RIPEMD-160/320 | 160/320 | 160/320 | 512 | 64 | 32 | 否 |
SHA-0 | 160 | 160 | 512 | 64 | 32 | 是 |
SHA-1 | 160 | 160 | 512 | 64 | 32 | 有缺陷 |
SHA-256/224 | 256/224 | 256 | 512 | 64 | 32 | 否 |
SHA-512/384 | 512/384 | 512 | 1024 | 128 | 64 | 否 |
Tiger(2)-192/160/128 | 192/160/128 | 192 | 512 | 64 | 64 | 否 |
WHIRLPOOL | 512 | 512 | 512 | 256 | 8 | 否 |
一些在线解密网站:
https://www.sojson.com/hash.html
python相关库:hashlib
替换密码#
ROT加密#
ROT13(回转13位,英语:rotate by 13 places,有时也记为ROT-13)是一种简易的替换式密码。ROT13 也是过去在古罗马开发的凯撒加密的一种变体。ROT13是它自己本身的逆反。
1 |
|
检查字符字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可
rot5,rot18等同理
rot47在26个字母基础上扩大范围至ascii可打印字符,ascii范围为33-126(原因是由于0-32以及127与字符表示无关)
凯撒密码#
凯撒密码(英语:Caesar cipher),或称凯撒加密、凯撒变换、变换加密,是一种最简单且最广为人知的加密技术。凯撒密码是一种替换加密技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。
当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。
变异凯撒#
埃特巴什码#
埃特巴什码(Atbash Cipher)是由熊斐特博士发现的密码,其最后一个字母代表第一个字母,倒数第二个字母代表第二个字母
1 |
|
Hill密码(希尔密码)#
希尔密码是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。
每个字母当作26进制数字:A=0, B=1, C=2… 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果模26。
注意用作加密的矩阵(即密匙)在必须是可逆的,否则就不可能解码。只有矩阵的行列式和26互质,才是可逆的。
在线解密:http://www.atoolbox.net/Tool.php?Id=914
仿射密码#
仿射密码是一种替换密码。它是一个字母对一个字母的。
它的加密函数是,其中
- 和互质。
- 是字母的数目。
解码函数是,其中是在群的乘法逆元。
仿射密码 为 单表加密的一种,字母系统中所有字母都藉一简单数学方程加密,对应至数值,或转回字母。 其仍有所有替代密码之弱处。所有字母皆借由方程 加密, 为移动大小。
在线解密:http://www.hiencode.com/affine.html
奇奇怪怪的加密#
UTF-8,unicode乱码#
锟斤拷,烫烫烫
注意编码格式捏
零宽字符隐写#
零宽度字符隐写术(Zero-Width Space Steganography):
将隐藏消息编码和解码为不可打印/可读字符。
字符包括:
零宽度空格(\u200b)
零宽度非连接符(\u200c)
零宽度连接符(\u200d)
从左至右书写标记(\u200e)
从右至左书写标记(\u200f)
解密
在线工具#
https://www.mzy0.com/ctftools/zerowidth1/
http://330k.github.io/misc_tools/unicode_steganography.html
https://offdev.net/demos/zwsp-steg-js
其他工具#
zwsp-steg-py
转换
转化为二进制的加密:https://zhuanlan.zhihu.com/p/87919817
转化为Morse编码的加密:https://zhuanlan.zhihu.com/p/75992161
文本加密字母/汉字等等(有规律,写完文档去爆破一下)#
自创算法,但会在比赛里出现?
1 |
|
https://www.qqxiuzi.cn/bianma/wenbenjiami.php
社会主义核心价值观编码#
用核心价值观来说些黑话(bushi)
https://sym233.github.io/core-values-encoder/
http://www.hiencode.com/cvencode.html
http://www.hiencode.com/cvencode.html
与佛论禅#
解密的时候不要忘记加上“佛曰”两个字哦
在线加解密:
http://hi.pcmoe.net/buddha.html
https://www.keyfc.net/bbs/tools/tudoucode.aspx
https://talk-with-buddha.netlify.app/
https://ctf.bugku.com/tool/todousharp
https://wtool.com.cn/buddha.html
与熊论道#
在线解密:http://hi.pcmoe.net/
兽音#
也可以自定义兽音
在线加解密:
云影密码#
有1,2,4,8这四个数字,可以通过加法来用这四个数字表示0-9中的任何一个数字,列如0=28, 也就是0=2+8,同理7=124, 9=18。这样之后再用1-26来表示26个英文字母,就有了密文与明文之间的对应关系。引入0来作为间隔,以免出现混乱。所以云影密码又叫“01248密码”。
解密脚本:
1 |
|
Rabbit密码#
Rabbit 是一种高速流密码,于 2003 年在 FSE 研讨会上首次提出。 Rabbit 使用一个 128 位密钥和一个 64 位初始化向量。 该加密算法的核心组件是一个位流生成器,该流生成器每次迭代都会加密 128 个消息位。
1 |
|
在线解密:https://www.sojson.com/encrypt_rabbit.html
非对称密码加密#
RSA#
在线解密:https://www.bejson.com/enc/rsa/
DSA#
在线解密:https://try8.cn/tool/cipher/dsa
对称密码加密#
AES#
在线解密:https://tool.lmeee.com/jiami/aes
DES#
在线解密:https://www.sojson.com/encrypt_des.html
RC4#
在线解密:https://www.sojson.com/encrypt_rc4.html
playfair密码#
普莱费尔密码(英语:Playfair cipher)是一种对称式密码,是首种双字母取代的加密法。
1 |
|
解密网站:https://www.metools.info/code/playfair_186.html
serpent加密#
在线解密:http://tool.chacuo.net/cryptserpent
twofish加密#
在线解密:https://try8.cn/tool/cipher/twofish
博福特密码(Beaufort Cipher)#
示例
例如,明文的第一个字母为D
,则先在表格中找到第D
列。由于密钥的第一个字母为F
,于是D
列从上往下找到F
。这一F
对应的行号为C
,因而C
便是密文的第一个字母。以此类推可以得到密文。以下便是一个密钥为FORTIFICATION
时的例子:
1 |
|
在线解密:http://www.hiencode.com/beaufort.html
维吉尼亚密码#
一个凯撒密码中,字母表中的每一字母都会作一定的偏移,例如偏移量为3时,A
就转换为了D
、B
转换为了E
……而维吉尼亚密码则是由一些偏移量不同的凯撒密码组成。
为了生成密码,需要使用表格法。这一表格包括了26行字母表,每一行都由前一行向左偏移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。
例如,假设明文为:
1 |
|
选择某一关键词并重复而得到密钥,如关键词为LEMON
时,密钥为:
1 |
|
对于明文的第一个字母A
,对应密钥的第一个字母L
,于是使用表格中L
行字母表进行加密,得到密文第一个字母L
。类似地,明文第二个字母为T
,在表格中使用对应的E
行进行加密,得到密文第二个字母X
。以此类推,可以得到:
1 |
|
解密的过程则与加密相反。例如:根据密钥第一个字母L
所对应的L
行字母表,发现密文第一个字母L
位于A
列,因而明文第一个字母为A
。密钥第二个字母E
对应E
行字母表,而密文第二个字母X
位于此行T
列,因而明文第二个字母为T
。以此类推便可得到明文
在线解密:http://www.hiencode.com/vigenere.html
滚动密钥密码#
同维吉尼亚密码
在线解密:http://www.hiencode.com/runkey.html
同音替换密码#
大多为自创密码表,难以破解,很少见的啦
培根密码#
摩斯密码#
在线解密:https://www.bejson.com/enc/morse/
栅栏密码#
所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。
在线解密:https://www.metools.info/code/fence155.html
栅栏密码变种W型#
在线解密:https://www.metools.info/code/fence154.html
词频分析#
在线解密:http://www.aihanyu.org/cncorpus/CpsTongji.aspx
键盘密码·QWE替换#
键盘密码·QWE包围#
解密方式:每组密文所围住的按键上的字符
例: yujnbg, 观察键盘发现这六个字母围住了h,故明文为h。
键盘密码·九一#
此类键盘密码的特征是有两种形式,重复的数字、重复的英文。
ooo yyy ii w uuu ee uuuu yyy uuuu y w uuu
·发现密文全在键盘字母第一行,若再上一行,则会得到字母与数字的映射关系,例如:q对应1,w对映2。
·此时会发现数字全都是小于10的,对应九宫格拼音,又重复次数在四次以内,则重复次数是一宫中的行坐标。
例:ooo -> 999 -> y
键盘密码·九键#
两个一组对照:例如21对应A,52对应K,94对应Z
曲路密码#
猪圈密码#
猪圈密码变种#
棋盘密码Polybius密码#
明文:HELLO 密文:23 15 31 31 34
棋盘密码变种(ADFGX 密码)#
1 |
|
ADFGVX密码#
在线解密:http://www.atoolbox.net/Tool.php?Id=917
棋盘密码变种 (关键字密码Nihilist)#
关键字就是一种秘钥,由字母组成,由加密双方约定而成。密码表有25个位置,依次不重复的填入秘钥,在不重复的填入a~z.
双密码#
两个密钥进行加密
1 |
|
明文:THE QUICK BROWN FOX
经过密阵转换:
行:512 15543 54352 333
列:421 33525 21115 214
分组:
1 |
|
合并:
1 |
|
在经过密阵转换后密文:WETED TKZNE KYOME X
在线解密:http://www.hiencode.com/bifid.html
三分密码#
1 |
|
示例密阵:
1 |
|
明文:THE QUICK BROWN FOX.
经过密阵转换:
1 |
|
位置 分组(分组密钥以5为例):
1 |
|
合并:
1 |
|
在经过密阵转换后密文:
1 |
|
四方密码#
首先选择两个英文字作密匙,例如example和keyword。对于每一个密匙,将重复出现的字母去除,即example要转成exampl,然后将每个字母顺序放入矩阵,再将余下的字母顺序放入矩阵,便得出加密矩阵。
将这两个加密矩阵放在右上角和左下角,余下的两个角放a到z顺序的矩阵:
1 |
|
加密的步骤:
- 两个字母一组地分开讯息:(例如hello world变成he ll ow or ld)
- 找出第一个字母在左上角矩阵的位置
1 |
|
同样道理,找第二个字母在右下角矩阵的位置:
1 |
|
- 找右上角矩阵中,和第一个字母同row(横),第二个字母同column(直)的字母:
1 |
|
- 找左下角矩阵中,和第一个字母同column(直) ,第二个字母同row(横)的字母:
1 |
|
这两个字母就是加密过的讯息。
help me obiwan kenobi的加密结果:
1 |
|
在线解密:http://www.metools.info/code/four-square244.html
二方密码#
二方密码比四方密码用更少的矩阵。
得出加密矩阵的方法和四方密码一样。
例如用“example”和“keyword”作密匙,加密“lp”。首先找出第一个字母(L)在上方矩阵的位置,再找出第二个字母(P)在下方矩阵的位置:
1 |
|
在上方矩阵找第一个字母同行,第二个字母同列的字母;在下方矩阵找第一个字母同列,第二个字母同行的字母,那两个字母就是加密的结果:
1 |
|
help me的加密结果:
1 |
|
这种加密法的弱点是若两个字同列,便采用原来的字母,例如he便加密作HE。约有二成的内容都因此而暴露。
Porta密码#
Porta密码(Porta Cipher)是一个由意大利那不勒斯的医生Giovanni Battista della Porta发明的多表代换密码 Porta密码具有加密解密过程的是相同的特点
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
密钥(循环使用,密钥越长相对破解难度越大):CULTURE
加密过程:明文字母’T’列与密钥字母’C’行交点就是密文字母’F’,以此类推。 密文:FRW HKQRY YMFMF UAA OLWHD ALWI JPT ZXHC NGV
在线解密:http://www.hiencode.com/porta.html
波利比奥斯方阵#
波利比奥斯方阵密码(Polybius Square Cipher或称波利比奥斯棋盘)是棋盘密码的一种,是利用波利比奥斯方阵进行加密的密码方式,简单的来说就是把字母排列好,用坐标(行列)的形式表现出来。字母是密文,明文便是字母的坐标。
Bazeries密码#
Bazeries密码(Bazeries Cipher)是换位密码和替换密码的组合,使用两个波利比奥斯方阵,一个明文字母方阵,使用一个随机的数字(一般小于1000000)的生成一个密钥矩阵同时作为第一轮明文划分分组,比如2333这个数字翻译为英文便是TWO THOUSAND THREE HUNDRED THIRTY THREE,从第一个字母T开始选取不重复的字母,之后再从字母表中按序选取没有出现的字母组成密钥矩阵。
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
随机数字:2333
明文矩阵:
1 |
|
示例密钥矩阵:
1 |
|
明文分组:
1 |
|
使用密钥矩阵替换:
1 |
|
Digrafid密码#
Digrafid密码(Digrafid Cipher)使用两个密钥生成分别生成类似波利比奥斯方阵的3×9方格的密表。
格朗普雷密码#
简介:格朗普雷密码是替换密码的一种,一般使用8个8字母的单词横向填充8x8方阵,且第一列为一个单词,并且在方阵中26个字母都必须出现一次以上。
举例:
说明:明文中的字母在密阵位置可能不止一个,所以加密结果可能有多种,但是不影响解密。密阵还有6×6、7×7、9×9、10×10、几种。显然密阵越大每个字母被替换的情况就可能越多,那么加密效果就更好。
比尔密码#
比尔密码(英文:Beale ciphers)是在1885年出版的一本小册子中提到的三份密码;根据被破解的第二份密码,第一份密码说明了财宝的位置,第二份密码则说明了财宝的内容,第三份密码则列出了财宝所有者的姓名。
当铺密码#
原理:根据当前汉字有多少笔画出头,对应的明文就是数字几。
在线解密:https://dsb.ink/ctf/dangpu.html
JS混淆类#
颜文字符号(aaencode)#
1 |
|
在线解密:http://www.atoolbox.net/Tool.php?Id=703
JJEncode编码#
1 |
|
在线解密:https://www.toolkk.com/tools/jjencode-encode-decode
jother编码#
1 |
|
在线解密:https://vulsee.com/tools/jother/index.htm
JSFuck编码#
1 |
|
在线解密:http://www.hiencode.com/jsfuck.html
Brainfuck#
1 |
|
在线解密:https://ctf.bugku.com/tool/brainfuck
Ook加密#
1 |
|
在线解密:https://ctf.bugku.com/tool/brainfuck
.!?加密#
1 |
|
在线解密:https://www.splitbrain.org/services/ook
阴阳怪气#
1 |
|
在线解密:https://mmdjiji.gitee.io/yygq.js/
BubbleBabble#
1 |
|
在线解密:http://www.hiencode.com/bubble.html
敲击码#
在线解密:http://www.hiencode.com/tapcode.html
Type7混淆加密#
简介:Type 7 是一种 Cisco 设备密码加密算法,用于将明文密码加密为不可逆的形式。这种加密算法采用了 XOR 和 MD5 哈希的混合方式,使用一个给定的密钥和额外的固定字符串来生成加密后的密码,因此也被称为 Type 7 混淆加密。
原理:从一个有26个ASCII字符表中,产生一个种子值(Seed Value)(0-52之间)随机抽取一个用来和明文密码的第一个字符异或,产生的结果用16进制表示,放在加密后字符串的第2、3位,然后种子值+1,再去抽取一个用来和明文密码第二个字符异或,16进制结果放在随后的位置位……。
在线解密:http://www.atoolbox.net/Tool.php?Id=992&ac=csdn
博多密码#
博多密码,也叫巴拿马密码,是一种古典密码学中的替换密码。它采用了多个字母表,并通过一个基准词来确定加密和解密使用的具体字母表。
原理:将基准词中出现的所有字母按照顺序排列并去除重复字母,得到字母表A;然后将剩余的字母按照字母表顺序排列并去除重复字母,得到字母表B,字母表A和B都包含26个字母;接下来,将明文中的每个字母在字母表A中的位置作为行数,将该字母在字母表B中的位置作为列数,找到对应的密文字母。同理,将密文中的每个字母在字母表B中的位置作为行数,在字母表A中的位置作为列数,找到对应的明文字母。
博多密码的优点是具有较好的安全性,但缺点也很明显,即容易受到频率分析攻击等各种攻击手段的攻击。因此,它已经被更安全的加密算法所取代。
在线解密:https://www.boxentriq.com/code-breaking/baudot-code
人造语言#
人造语言wiki:https://yuyan.fandom.com/zh/wiki/Main_Page
八卦与伏羲六十四卦#
伏羲六十四卦
圣堂武士密码#
曲折密码/夏多密码#
狄德拉密码#
埃及文字#
外星人密码#
多斯拉克语#
模拟语#
海利亚语#
樊凡语#
跳舞的小人#
神奇宝贝密码#
音符加密#
音乐密码#
海军手旗旗语#
六十甲子#
国际船用信号旗密码#
Covenant字体#
费兹象形文字#
wingdings字体#
wingding编码是一种用于打印的字体,不具有可读性,类似的系列编码还有web dings、wingding 2、wingding3编码
根据编码的特征,doc文档设置字体为宋体、黑体即可看到原文内容
LaTeX#
LaTex常见符号对照表
查阅表:
https://detexify.kirelabs.org/symbols.html
提瓦特文#
《来自星尘》异星文字#
古精灵语#
盲文#
表中第一行只用第1、2、4、5四个点,第二行由第一行加第3点而得,第三行除“w”外其余均由第一行加第3、6点而得,“w”则由第一行加第6点而得。第一行十个字母的符形也有一定规律,前三个字母(abc)和元音字母(aei)只有一个或两个凸点,第4、6、8、10个字母(dfhj)有三个凸点,剩下的g有四个凸点。
特性是1必须有点,如果没有就是2和4必须有点,这样可以让盲人阅读时有一个原点来判断相对位置。
不同点语言的盲文对标点、带音符的拉丁字母以及字母组合有不同的规定。例如盲符⠡,在英语盲文中表示字母组合ch,德语盲文中表示字母组合au,在法语盲文中表示带长音符的字母â。
布莱叶式用前十个字母表示1到0,安托万式的1-9是在布拉耶式基础上加6点,安托万式的0是布拉耶式的数字符号。
阿拉伯数字表示法有布莱叶和安托万两种。布莱叶式比较常用,英语盲文、汉语盲文等众多盲文都使用这种形式;安托万式主要用于法语盲文。
人类语、旧人类语[游戏人生]#
世界观:人类语和日语一样,可是写的字不同,文字对应日语五十音拼音字母,数字使用7进制(骰子)。
旧人类语: