部分常见编码

常见编码

ASCII

ASCII非打印控制字符(0-31,127)
ASCII打印字符
扩展ASCII打印字符

image-20210519164502038

base64/32/16编码

定义

base64、base32、base16可以分别编码转化8位字节为6位、5位、4位。16,32,64分别表示用多少个字符来编码,常用的为base64。Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。

base64

编码原理

Base64编码要求把3个8位字节转化为4个6位的字节,之后在6位的前面补两个0,形成8位一个字节的形式,6位2进制能表示的最大数是2的6次方是64,这也是为什么是64个字符(A-Z,a-z,0-9,+,l这64个编码字符,=号不属于编码字符,而是填充字符)的原因,这样就需要一张映射表

image-20210507124721532

若三位一组分组时不足三位:

差一位:转二进制时后面补8个0,对应base64码为‘=’

一个’='可以隐藏2bit信息

image-20210507124815261

差两位:转二进制时后面补16个0,对应base64码为‘==’

两个’='隐藏4bit信息

image-20210507124835406

base32/16

编码原理

base32就是用32(2的5次方)个特定ASCII码来表示256个ASCII码。所以,5个ASCIl字符经过base32编码后会变为8个字符(公约数为40),长度增加3/5,不足8n用“=”补足。

base16就是用16(2的4次方)个特定ASCII码表示256个ASCII字符。1个ASCIl字符经过base16编码后会变为2个字符,长度增加一倍。不足2n用“=”补足

base16实际上也是十六进制转换

image-20210507124957377

image-20210507125005820

image-20210507125018033

与base64类似,base32使用32个可见字符进行编码,2的5次方为32,所以每5bit为1个分组。5字节为40bit,对应于8个base32分组,即5个字节用8个base32中字符来表示。但如果不足5个字节,则会先对第一个不足5bit的分组用0补足了5bit,对后面剩余分组全部使用“=”填充,直到补满5个字节。由此可知,base32最多只有6个等号出现

shellcode

源文本:The quick brown fox jumps over the lazy dog
编码后:
\×54\×68\×65\×20\×71\×75\×69\x63\x6b\×20\×62\×72\×6f\×77\x6e\x20\×66\x6f\×78\×20\×6a\×75\x6d\×70\×73\×20\×6f\×76\x65\×72\×20\×74\x68\x65\×20\×6c\x61\×7a\x79\×20\x64\x6f\x67

解码:本质还是解十六进制

Quoted-printable编码(只针对于非英文)

源文本:敏捷的棕色狐狸跳过了懒惰的狗
编码后:
=E6=95=8F=E6=8D=B7=E7=9A=84=E6=A3=95=E8=89=B2=E7=8B=90=E7=8B=B8=E8=B7=B3=E8=BF=87=E4=BA=86=E6=87=92=E6=83=BO=E7=9A=84=E7=8B=97

http: // www.mxcz.net/tools/QuotedPrintable.aspx

  • 编码原理
  • 任何一个8位的字节值可编码为3个字符:一个等号”=”后跟随两个十六进制数字(0–9或A–F)表示该字节的数值.例如,ASCII码换页符(十进制值为12)可以表示为”=0C”,等号”=”(十进制值为61)必须表示为”=3D”.除了可打印ASCII字符与换行符以外,所有字符必须表示为这种格式.
  • 所有可打印ASCII字符(十进制值的范围为33到126)可用ASCII字符编码来直接表示,但是等号”=”(十进制值为61)不可以这样直接表示.ASCII的水平制表符(tab)与空格符,十进制为9和32,如果不出现在行尾则可以用其ASCII字符编码直接表示。如果这两个字符出现在行尾,必须QP编码表示为"=09″(tab)或"=20″(space).

XXencode编码

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

字符:+- 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
源文本:Thequickbrownfoxjumpsoverthelazydog
编码后:hJ4VZ653pOKBf647mPrRi64NjS0-eRKpkQm-jRaJm65FcNG-gMLdt64FjNk++

UUencode编码

简介:
UUencode是一种二进制到文字的编码,最早在unix邮件系统中使用,全称:Unix-to-Unix encoding,UUencode将输入文本以每三个字节为单位进行编码,如果最后剩下的资料少于三个字节,不够的部份用零补齐。三个字节共有24个Bit,以6-bit为单位分为4个组,每个组以十进制来表示所出现的字节的数值。这个数值只会落在0到63之间。然后将每个数加上32,所产生的结果刚好落在ASCIl字符集中可打印字符(32-空白…95-底线)的范围之中

特点:没有特点,一串乱码但都在可打印字符范围内

源文本:Thequickbrownfoxjumpsoverthelazydog
编码后:M5&AE('%U:6-K(&)R;W=N(&9O>"!J=6UP<R!O=F5R('1H92!L87IY(&1O9PH*

URL编码(%编码)

本质ASCII编码的十六进制前加%

Unicode编码

Unicode码扩展自ASCIl字元集。在严格的ASCIl中,每个字元用7位元表示,或者电脑上普遍使用的每字元有8位元宽;而Unicode使用全16位元字元集。这使得Unicode能够表示世界上所有的书写语言中可能用於电脑通讯的字元、象形文字和其他符号。Unicode只有一个字符集,中、日、韩的三种文字占用了Unicode中0x3000到0x9FFF的部分Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符,比如汉字"经"的编码是0x7ECF

特征 &,#

http: //www.mxcz.net/tools/Unicode.aspx

Escape/UNescape编码

简介:

Escape/Unescape加密解码/编码解码,又叫%u编码,采用UTF-16BE模式,Escape编码/加密,就是字符对应UTF-1616进制表示方式前面加%u。Unescape解码/解密,就是去掉“%u“后,将16进制字符还原后,由utf-16转码到自己目标字符。如:字符“中”,UTF-16BE是:“6d93”,因此Escape是“%u6d93”。
举例:
​ 源文本:The
​ 编码后:%u0054%u0068%u0065

敲击码

简介

​ 敲击码(Tap code)是一种以非常简单的方式对文本信息进行编码的方法。
因该编码对信息通过使用一系列的点击声音来编码而命名,敲击码是基于5×5方格波利比奥斯方阵来实现的,不同点是是用K字母被整合到C中。

image-20210507125544701

image-20210507125536385

莫尔斯电码(Morse Code)

简介:

莫尔斯电码(Morse Code)是由美国人萨缪尔·摩尔斯在1836年发明的一种时通时断的且通过不同的排列顺序来表达不同英文字母、数字和标点符号的信号代码,摩尔斯电码主要由以下5种它的代码组成:

点(.)

划(一)
每个字符间短的停顿(通常用空格表示停顿)
每个词之间中等的停顿(通常用/划分)
以及句子之间长的停顿

摩斯电码一定是有分隔的

源文本:THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG
编码后:-...../--.-..-..-.-.-.-/-....-.---.---./..-.----..-/.---..---.--..../---...-..-./-...../.-...---..-.--/-..-----.

对应表
image-20210507125638546

ROT 5/13/18/47

简介

  • ROT 5/13/18/47是一种简单的码元位置顺序替换密码

  • ROT 5只对数字进行加密,用当前数字往前数用第5个数字替接当前数字

  • ROT 13只对字母进行加密,用当前字母往前数用第13个字母替换当前字母

  • ROT 18将ROT5和ROT13组合一起

  • ROT 47对数字、字母、常用符号进行编码,按照它们的ASCl值进行位置誉换,用当前字符ASC1|值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号。用于ROT47编码的字符其ASCII值范图是33一126,具体可参考ASCll编码。

举例:ROT13
明文:thequickbrownfoxjumpsoverthelazydog
密文:gurdhvpxoebjasbkwhzcfbiregurynmlqbt

变形

JSfuck

JSFuck只使用6种字符

[ ] ! ( ) +

来书写任何Javascript代码。当然,用这种方式写出来的代码会很长。JSFuck不需要依赖浏览器,也可以在Node.JS上运行。

不是一一对应

brainfuck编码

Brainfuck加密,brainfuck又被称为brainf**k或者BF,brainfuck语言用

< > + - . ,[ ]

八种符号来替换C语言的各种语法和命令,具体规则如下:

特点

​ 加号多,五位一组

变形:Ook

OoK. Ook! Ook?

image-20210507125922177

再变:short Ook

再Ook基础上删去Ook,并且可以删去并排列入一行中

如果感到本篇文章对你有帮助的话,请动动小手给与醉着鼓励吧
点赞收藏加关注,一键三连不迷路!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shadow丶S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值