编码表
PFPX 导航数据文件使用自定义的基于 XOR 的编码系统。导航数据使用字符映射表编码,将可读的 ASCII 文本转换为二进制数据。
字符映射
通过逆向工程,我们确定了以下编码关系:
| 十六进制码 | 字符 | 十六进制码 | 字符 |
|---|---|---|---|
| A5 | 空格 () | B5 | 0 |
| A4 | ! | B4 | 1 |
| A7 | " | B7 | 2 |
| A6 | # | B6 | 3 |
| A1 | $ | B1 | 4 |
| A0 | % | B0 | 5 |
| A3 | & | B3 | 6 |
| A2 | ' | B2 | 7 |
| AD | ( | BD | 8 |
| AC | ) | BC | 9 |
| AF | * | BF | : |
| AE | + | BE | ; |
| A9 | , | B9 | < |
| A8 | – | B8 | = |
| AB | . | BB | > |
| AA | / | BA | ? |
| 十六进制码 | 字符 | 十六进制码 | 字符 |
|---|---|---|---|
| C5 | @ | D5 | P |
| C4 | A | D4 | Q |
| C7 | B | D7 | R |
| C6 | C | D6 | S |
| C1 | D | D1 | T |
| C0 | E | D0 | U |
| C3 | F | D3 | V |
| C2 | G | D2 | W |
| CD | H | DD | X |
| CC | I | DC | Y |
| CF | J | DF | Z |
| CE | K | DE | [ |
| C9 | L | D9 | \ |
| C8 | M | D8 | ] |
| CB | N | DB | ^ |
| CA | O | DA | _ |
| 十六进制码 | 字符 | 十六进制码 | 字符 |
|---|---|---|---|
| E5 | ` | F5 | p |
| E4 | a | F4 | q |
| E7 | b | F7 | r |
| E6 | c | F6 | s |
| E1 | d | F1 | t |
| E0 | e | F0 | u |
| E3 | f | F3 | v |
| E2 | g | F2 | w |
| ED | h | FD | x |
| EC | i | FC | y |
| EF | j | FF | z |
| EE | k | FE | { |
| E9 | l | F9 | | |
| E8 | m | F8 | } |
| EB | n | FB | ~ |
| EA | o | FA | DEL |
编码方法
编码过程的工作原理如下:
- XOR 操作:每个字节都与密钥
0x85进行 XOR 运算 - 字符映射:结果映射到上述字符表
- 头部保留:文件头部保持明文格式
- 行结构:每行代表一个导航数据条目
密钥属性
- XOR 密钥:
0x85(十进制 133) - 可逆性:相同操作可解码数据
- ASCII 兼容:映射到标准 ASCII 字符集
- 二进制安全:保持数据完整性
使用注意事项
重要提示
- 只有导航数据内容被编码
- 文件头部和元数据保持明文格式
- 换行符(CR/LF)在编码过程中保留
- 编码是大小写敏感且位置相关的
转换示例
以下是字符编码的简单示例:
原始字符:'A'(ASCII 65,十六进制 0x41)
与 0x85 进行 XOR:0x41 ^ 0x85 = 0xC4
在表中查找:0xC4 = 'A'对于反向(解码):
编码字节:0xC4
与 0x85 进行 XOR:0xC4 ^ 0x85 = 0x41
ASCII 结果:0x41 = 'A'下一步
- 学习解码过程 - 实际应用这些知识
- 使用我们的 Python 工具 - 自动化编码/解码
- 了解文件结构 - 查看编码数据的组织方式