欢迎光临
我们一直在努力

ASCII、Unicode、UTF-8、Base64 全详解(抓包 / 解密实战向)

目录

一、ASCII 码(基础字符集)

1. 定义

2. 编码规则

3. 特点 & 抓包场景

示例

二、Unicode(统一字符集 / 字符编号)

1. 定义

2. 核心概念:码点(Code Point)

3. 范围

4. 关键误区(抓包必懂)

三、UTF-8(互联网主流编码,抓包 90% 都是它)

1. 定义

2. 核心特点

3. 编码规则(重点,解密 / 字节分析必备)

4. 实操示例(中文转 UTF-8 字节)

5. 抓包 & 开发场景

四、Base64(抓包 / 解密 / 逆向高频编码)

1. 定义

2. 核心原理

规则

字节对应关系

3. 补位规则(抓包看末尾 = 必懂)

4. 标准码表(64 个字符)

5. 关键区分:编码 ≠ 加密

6. 实战场景(抓包 / 解密)

7. 极简代码示例(常用语言)

Python

JavaScript(前端抓包调试)

五、四大编码横向对比(抓包快速区分)

六、抓包排错 & 解密经验总结


结合原理、编码规则、区别、抓包场景用法、加解密实操讲解,适合网络抓包、接口分析、字符串逆向解密使用。

一、ASCII 码(基础字符集)

1. 定义

American Standard Code for Information Interchange,美国信息交换标准代码,最早的单字节字符编码。

  • 仅表示英文字母、数字、英文符号、控制字符,不支持中文、日文等非英文字符。

2. 编码规则

  • 占用:1 字节(8 bit),实际只用低 7 位,最高位固定为 0
  • 取值范围:0 ~ 127(十进制),共 128 个字符
    • 0~31、127:控制字符(回车、换行、退格、响铃等,抓包里常看到 \\r \\n)
    • 32:空格
    • 48~57:数字 0-9
    • 65~90:大写字母 A-Z
    • 97~122:小写字母 a-z
    • 其余:英文标点、符号

3. 特点 & 抓包场景

  • 纯英文接口、老式协议、串口通信、HTTP 基础头域默认使用 ASCII。
  • 缺陷:字节上限 127,完全无法表示中文,中文会直接乱码。
  • 抓包现象:纯英文请求 / 响应原始字节和 ASCII 一一对应。
  • 示例

    字符 A → 十进制 65 → 二进制 01000001 字符 0 → 十进制 48


    二、Unicode(统一字符集 / 字符编号)

    1. 定义

    ASCII 只能表示英文,全球语言无法统一,因此诞生 Unicode(万国码)。 核心定位:给全世界所有字符分配唯一「数字编号(码点)」,不是具体存储编码。 简单理解:

    Unicode = 字符字典(每个字符对应一个唯一 ID) UTF-8/UTF-16/UTF-32 = 把 ID 转成二进制字节的存储方案

    2. 核心概念:码点(Code Point)

    每个字符对应一个十六进制码点,格式:U+xxxx

    • 例:
      • 英文字母 A:U+0041
      • 中文 中:U+4E2D
      • 中文 国:U+56FD

    3. 范围

    目前 Unicode 覆盖十几万字符:汉字、日文、韩文、表情、特殊符号、古文字等。

    4. 关键误区(抓包必懂)

    Unicode ≠ UTF-8

    • Unicode:只是字符的编号,不规定怎么存成字节。
    • UTF-8/UTF-16:是 Unicode 的实现 / 存储编码。

    三、UTF-8(互联网主流编码,抓包 90% 都是它)

    1. 定义

    UTF-8 = Unicode Transformation Format – 8bit 目前互联网、HTTP 接口、网页、APP 抓包、JSON、日志的默认编码,兼容性最强。

    2. 核心特点

    • 变长编码:1~4 个字节动态存储,按需分配长度
    • 完全兼容 ASCII:ASCII 字符在 UTF-8 中仍占 1 字节,老式系统无缝兼容
    • 无字节序问题(不需要 BOM 头),网络传输首选

    3. 编码规则(重点,解密 / 字节分析必备)

    UTF-8 通过高位标识区分当前字符占用几个字节,规则固定:

  • 1 字节字符(ASCII 区) 二进制开头:0xxxxxxx 范围:U+0000 ~ U+007F(所有英文、数字、符号) 👉 和 ASCII 完全一致

  • 2 字节字符(常用拉丁文、少量符号) 首字节:110xxxxx 后续字节:10xxxxxx

  • 3 字节字符(绝大多数中文、日文、韩文、全角符号) 首字节:1110xxxx 后续字节:10xxxxxx 中文全部落在 3 字节区间,抓包看到中文一定是 3 字节一组。

  • 4 字节字符(emoji、生僻古汉字、特殊符号) 首字节:11110xxx 后续字节:10xxxxxx

  • 4. 实操示例(中文转 UTF-8 字节)

    字符:中

  • Unicode 码点:U+4E2D
  • 转为二进制:0100 1110 0010 1101
  • 套 3 字节 UTF-8 模板 1110xxxx 10xxxxxx 10xxxxxx
  • 填充后得到 3 个字节,抓包里看到的原始字节就是它。
  • 5. 抓包 & 开发场景

  • HTTP 响应头常见:Content-Type: text/html; charset=utf-8
  • JSON、POST 表单、接口参数、URL 编码底层都是 UTF-8
  • 中文乱码 99% 原因:编码不匹配(服务端 GBK,客户端 UTF-8)
  • URL 编码(% XX 形式):基于 UTF-8 字节再做百分号编码

  • 四、Base64(抓包 / 解密 / 逆向高频编码)

    1. 定义

    Base64 是二进制 → 可打印文本的编码方式,不是加密算法(可逆、无密钥)。 作用:把二进制数据、特殊字节、不可见字符转成纯字母、数字、+、/,方便在 HTTP、参数、JSON、Cookie 中传输。

    抓包常见场景:密码、图片二进制、Token、加密后的密文、文件流、接口暗文大量使用 Base64。

    2. 核心原理

    规则
  • 把原始数据每 3 个字节(24 bit) 划为一组
  • 24 bit 重新拆分为 4 个 6 bit 小段
  • 每个 6 bit 对应 Base64 标准码表中的 1 个可打印字符
  • 不足 3 字节时,末尾用 = 补位(填充符)
  • 字节对应关系
    • 原始:3 字节 = 24 bit
    • 编码后:4 字符
    • 体积变化:Base64 编码后体积比原数据大 1/3(网络传输会增重)

    3. 补位规则(抓包看末尾 = 必懂)

    Base64 末尾的 = 是填充符,只出现在数据长度不能被 3 整除时:

  • 剩余 1 字节:补 2 个 =
  • 剩余 2 字节:补 1 个 =
  • 刚好 3 的倍数:无 =
  • 例:

    • YWJj → 无等号,原始 3 字节
    • YWE= → 1 个等号,原始 2 字节
    • YQ== → 2 个等号,原始 1 字节

    4. 标准码表(64 个字符)

    A-Z、a-z、0-9、+、/,共 64 个字符。

    变种:URL Safe Base64(接口 / URL 常用) 把 + → – ,/ → _,去掉末尾 =,避免 URL 转义冲突。

    5. 关键区分:编码 ≠ 加密

    • Base64 公开码表、完全可逆,任何人都能解码
    • 逆向 / 抓包中:看到 Base64 不等于加密,只是格式转换
    • 常见套路:先 AES/DES 加密 → 再 Base64 输出(这才是真正加密)

    6. 实战场景(抓包 / 解密)

  • Cookie、Token、Authorization 头大量 Base64
  • 接口参数、隐藏密文、上传图片二进制转文本
  • 逆向分析:拿到密文先判断是否 Base64(字符集只有字母数字 +/_=)
  • 工具:Burp、Fiddler、在线解码、Python/JS 原生函数均可一键解编
  • 7. 极简代码示例(常用语言)

    Python

    import base64

    # 编码 字符串 → Base64
    s = "测试123"
    b64_enc = base64.b64encode(s.encode("utf-8")).decode()
    # 解码 Base64 → 字符串
    b64_dec = base64.b64decode(b64_enc).decode("utf-8")

    JavaScript(前端抓包调试)

    // 编码
    let enc = btoa(unescape(encodeURIComponent("测试123")));
    // 解码
    let dec = decodeURIComponent(escape(atob(enc)));


    五、四大编码横向对比(抓包快速区分)

    编码本质字节长度支持中文网络用途
    ASCII 英文字符集 1 字节 ❌ 不支持 老式协议、HTTP 基础头
    Unicode 全局字符编号(码点) 无固定 ✅ 支持 底层字符定义,不直接传输
    UTF-8 Unicode 变长存储编码 1~4 字节 ✅ 支持 全网主流、接口、网页、JSON
    Base64 二进制转文本编码 膨胀 1/3 间接支持 二进制传输、参数、Token、密文

    六、抓包排错 & 解密经验总结

  • 看到中文乱码 优先检查:是否 UTF-8、GBK、GB2312 编码不匹配。
  • 接口参数是一堆字母数字 + +/ 99% 是 Base64,直接解码看原始内容。
  • URL 里 % xx% xx% xx 是 URL 编码,底层基于 UTF-8 字节生成。
  • 区分 Unicode / UTF-8 抓包原始字节不会直接出现 Unicode 码点,网络传输一律用 UTF-8。
  • Base64 带 – _ 无等号 属于 URL 安全版 Base64,解码前先还原 _- 再解码。
  • 赞(0)
    未经允许不得转载:171主机测评 » ASCII、Unicode、UTF-8、Base64 全详解(抓包 / 解密实战向)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址