CTF中常见编码总结

前言

对常见的编码进行总结并记录一些编解码的网站和工具

常见编码

1、ASCII编码

在这里插入图片描述
可以分作三部分组成
第一部分是:ASCII非打印控制字符
第二部分是:ASCII打印字符;
第三部分是:扩展ASCII打印字符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在线转换器
ASCII编码转换

2、base64、32编码

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一

 · 基于64个可打印字符来表示二进制数据的方法
 · 3个字节可表示4个可打印字符
 · 如果要编码的字节数不能被3整除:当最后剩余一个八位字节(一个byte)时,最后6位的base64字节块有四位是0值,最后附加上两个等号;如果最后剩余两个八位字节(2byte)时,最后一个6位的base字节块有两位是0值,最后附加一个等号

在这里插入图片描述

>>> import base64
>>> base64.b64encode(b'hellow world')
b'aGVsbG93IHdvcmxk'
>>> base64.b64decode(b'aGVsbG93IHdvcmxk')
b'hellow world'

base32
只有大写字母(A-Z)和数字234567
在这里插入图片描述

>>> import base64
>>> base64.b32encode(b'hellow world')
b'NBSWY3DPO4QHO33SNRSA===='
>>> base64.b32decode(base64.b32encode(b'hellow world'))
b'hellow world'
>>> 

base58加解密
base16、base32、base64加解密

3、URL编码

url编码又叫百分号编码,是统一资源定位(URL)编码方式
URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过在该字节ascii码的的16进制字符前面加%编码处理

  • js:有encodeURI、encodeURIComponent
  • PHP有 urlencode、urldecode等
    url编码和双重编码是绕过时常用手段
    url编码
    url编码/解码

4、Unicode编码

Unicode编码
Unicode是一个编码方案,Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode 编码共有三种具体实现,分别为utf-8,utf-16,utf-32,其中utf-8占用一到四个字节,utf-16占用二或四个字节,utf-32占用四个字节。Unicode 码在全球范围的信息交换领域均有广泛的应用。

UTF-8

  • 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的
  • 于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码

二者的转换方式

  • 首先找到该Unicode编号所在的编号范围,进而可以找到与之对应的二进制格式
  • 然后将该Unicode编号转化为二进制数(去掉高位的0)
  • 最后将该二进制数从右向左依次填入二进制格式的X中,如果还有X未填,则设为0
    Unicode编码转换

5、HTML实体编码

HTML实体编码标记:&#

在这里插入图片描述
HTML 符号实体参考手册
HTML 字符实体

html编码
html解码器

6、敲击码

敲击码(Tap code)

  • 一种以非常简单的方式对文本信息进行编码的方法
  • 因该编码对信息通过使用一系列的点击声音来编码而命名
  • 基于5×5方格波利比奥斯方阵来实现的,不同点是用K字母被整合到C中
    在这里插入图片描述
    敲击码查询和反查

7、摩尔斯电码(摩斯密码)

morse电码

早期的数字化通信形式
不同于现代只使用0和1两种状态的二进制代码
代码包括五种:

  • 点(.)
  • 划(-)
  • 每个字符间短的停顿(在点和划之间的停顿)
  • 每个词之间中等的停顿
  • 句子之间长的停顿
    在这里插入图片描述

摩尔斯密码在线翻译
Mose加解密

8、Quoted-printable编码

  • 多用途互联网邮件扩展(MIME) 一种实现方式
  • 帮助非ASCII编码的信件传输通过SMTP
  • 每个末编码的二进制字符被编码成三个字符,即一个等号和一个十六进制的数字,如‘=AB’

在线Quoted-printable编码、Quoted-printable解码、Quoted-printable编码原理、是什么编码

9、XXencode编码

  • 将输入文本以每三个字节为单位进行编码
  • 如果最后剩下的资料少于三个字节,不够的部份用0补齐
  • 这三个字节共有24个Bit,以6bit为单位分为4个组,每个组以十进制来表示所出现的数值只会落在0到63之间
    以所对应值的位置字符代替。它所选择的可打印字符是:+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,一共64个字符
    跟base64打印字符相比,就是UUencode多一个-字符,少一个/ 字符
    在这里插入图片描述

在线XXencode编码
XXeccode加解密

10、UUencode编码

  • 起先用在unix网络中,早期在电子邮件中使用较多
  • 将输入文本以每三个字节为单位进行编码,如果最后剩下的资料少于三个字节,不够的部份用0补齐
  • 三个字节共有24个Bit,以6-bit为单位分为4个组,每个组以十进制来表示所出现的字节的数值,这个数值只会落在0到63之间(与XXencode编码相似)
  • 然后将每个数加上32,所产生的结果刚好落在ASCII字符集中可打印字符(32-空白…95-底线)的范围之中

在线UUencode编码、UU编码、UUencode解码、UU解码、UUencode编码原理、UUencode编码算法
UUencode编码

11、Escape/Unescape编码

  • 又叫%u编码,采用UTF-16BE模式,16进制表示方式前面加%u
    如:字符“中”,UTF-16BE是:“6d93”,因此Escape是“%u6d93”
  • 因为目前%字符,常用作URL编码,所以%u这样编码已经逐渐被废弃了

在线Escape编码/加密、Unescape解码/解密、%u编码、%u解码
Escape编码

12、md5

  • 被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致
  • 值范围在0-9,a-f

由于密码散列函数是不可逆的,解密时,只能通过遍历加密与需要解密的密文对比(md5碰撞)

import hashlib

for i in range(10000, 10000001):
    s = hashlib.md5(str(i).encode()).hexdigest()[0:5]
    if s == "5fe45":
        print(i)
        break

xmd5
cmd5

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值