前言

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

常见编码

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 hashlibfor i in range(10000, 10000001):s = hashlib.md5(str(i).encode()).hexdigest()[0:5]if s == "5fe45":print(i)break

xmd5
cmd5

CTF中常见编码总结相关推荐

  1. php字符长度函数漏洞 ctf,CTF中常见php-MD5()函数漏洞

    CTF中常见php-MD5()函数漏洞 1.数字与字符串之间的比较 var_dump( 0 == "a" ); var_dump( "0" == "a ...

  2. CTF中的编码与加密题

    0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到类似这样的问题:表哥,你知道这是什么加密吗?其实CTF中脑洞密码题(非现代加密方式)一般都是各种古典密码的变形,一般出题者会对密文进 ...

  3. java 问号乱码_Java web中常见编码乱码问题(一)

    最近在看Java web中中文编码问题,特此记录下. 本文将会介绍常见编码方式和Java web中遇到中文乱码问题的常见解决方法: 一.常见编码方式: 1.ASCII 码 众所周知,这是最简单的编码. ...

  4. ctf中常见的编码和密码收集

    常见的编码和密码收集 常见密码特征 常见的解码网站 常见密码特征 十六进制,八进制,二进制,ascii码 福尔摩斯小人密码:每一个跳舞的小人实际上对应的是英文二十六个字母中的一个,而小人手中的旗子则表 ...

  5. ctf的php,CTF中常见的PHP漏洞

    1.MD5()漏洞 php在处理字符串时会利用!=,||,==进行hash值的比较 他把每一个"0E'开头的哈希值都解释为0,因此如果两个不同的密码经过hash处理之后都是以'0e'开头,那 ...

  6. CTF中常见Web源码泄露总结

    目录00x1 .ng源码泄露 00x2  git源码泄露 00x3 .DS_Store文件泄漏 00x4 网站备份压缩文件 00x5 SVN导致文件泄露 00x6 WEB-INF/web.xml泄露  ...

  7. CTF中常见密码学(一)

    前言 参考,我们任课老师的WORD和PPT,结合自己的理解,在结合网上文章的理解. 一.BASE64编码 BASE64编码中,特征和所拥有的字符字母:A-Z a-z;数字:0-9;符号:+ / ,然后 ...

  8. CTF中常见密码题解密网站总结

    文章目录 0x00.综合 0x01.文字倒序排列 0x02.cmd5解密 0x03. ①base64解密 ②base32解密 0x04.ROT5.ROT13.ROT18.ROT47位移编码 0x05. ...

  9. CTF中常见的php函数绕过(保持更新)

    转载自:https://blog.csdn.net/csu_vc/article/details/78440021 is_numeric()用于判断是否是数字,通常配合数值判断is_numeric(@ ...

最新文章

  1. java实现两个整数相除保留一位小数
  2. [原创] nunit2report V1.2.2 release 汉化修正版 V1.0
  3. 计算机与人力资源管理论文,人力资源管理专业计算机能力培养模式论文
  4. linux虚拟地址被大量占用,《Linux中为什么要使用虚拟地址》
  5. php yii2 sns,GitHub - yggphpcoder/iisns: 基于 yii2 的 sns 社区系统,一站式解决社区建站...
  6. 软考网络管理员存储容量计算相关问题
  7. centos7 使用sendmail 发送邮件
  8. signature=d5d679bcec778027f40bcf8a2796c61b,Processing damaged items using image data lift
  9. octave安装 缺java_在Octave中导入Java类
  10. 为什么不早一点告诉我?——情场篇
  11. 拔染印花的主要特点和工艺技术
  12. 专题:CentOS社区企业操作系统
  13. 设计模式网站 http://www.cnblogs.com/justinw/archive/2007/02/06/641414.html
  14. Mac OS 使用终端连接到Linux
  15. scheme 微博_可用App URL Schemes
  16. Java中字符串数组转 long[]基本类型数组的方法
  17. 服务器无线网卡禁止怎么办,台式机无线网卡被禁用了如何解决
  18. 【程序员节】1024程序员节专属程序员的浪漫
  19. linux主机motd和命令审计
  20. 人生苦短_人生苦短,懂事太晚!

热门文章

  1. 网站出现安全证书过期的原因
  2. [声纹识别]基于MFCC的声纹识别算法
  3. 感谢中本聪!也感谢扎克伯格!
  4. 1.19.5.3.时态表、关联一张版本表、关联一张普通表、时态表、声明版本表、声明版本视图、声明普通表、时态表函数等
  5. Tapestry经典入门教程
  6. MIX2 适配看这一篇就够了,18:9 只需一行代码
  7. vm虚拟机安装以及镜像和网路配置
  8. python如何画神经网络特征图
  9. Windows Azure HDInsight 支持预览版 Hadoop 2.2 群集
  10. 三线一单”大气环境质量底线体系与划分技术方法