# 3gppDecoder
**Repository Path**: konglinglong/3gppDecoder
## Basic Information
- **Project Name**: 3gppDecoder
- **Description**: 使用RED语言实现的3GPP解码器,支持2G、3G、4G、5G等等等相关通信协议。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 24
- **Forks**: 15
- **Created**: 2019-10-14
- **Last Updated**: 2026-10-08
## Categories & Tags
**Categories**: mobile-communication
**Tags**: None
## README
3gppDecoder
=====
## 概述
使用RED语言实现的3GPP解码器,可执行文件仅1M。
- 支持2G、3G、4G、5G等相关通信协议。
- 理论上,通过修改配置文件,可以解码wireshark未来支持的所有协议。
- 支持各种乱七八糟的码流输入:
- - 连续的码流1a2b3c432345
- - 空格隔开的码流 1a 2b 3c 43 23 45
- - 逗号隔开的码流 1a,2b,3c,43,23,45
- - 以0x开头的码流 0x1a 0x2b 0x3c 0x43 0x23 0x45
- - 以上所有的混合 0x1a,2b ,3c 4323,0x45 (你蛋不疼么给老子整这些,但老子还是支持:-P)
## 预览
## 使用
### 方式一:下载源码,下载[RED](https://static.red-lang.org/dl/auto/win/red-latest.exe)
#### 1. 以脚本形式运行:D:\DevTools\red\red.exe 3gppDecoder.red
#### 2. 编译后再运行:D:\DevTools\red\red.exe -c -t windows 3gppDecoder.red
*注意:由于red工具存在BUG,运行的时候都需要使用绝对路径,如我的环境是D:\DevTools\red\red.exe,*
*否则可能会报错:PROGRAM ERROR: Invalid encapsulated data.*
### 方式二:下载可执行文件
#### 1. 从[发行版](https://gitee.com/konglinglong/3gppDecoder/releases)页面下载最新版本
#### 2. 解压到一个文件夹,路径不要包含中文,打开3gppDecoder.cfg配置文件:
- 修改wireshark路径
- 修改notepad++路径
- 增加配置文件里面没有但你需要用到的协议(前提是你的wireshark版本支持。建议升级wireshark到较新版本。)
- 如果对配置文件修改过多,建议使用json检查工具检查一下文件格式是否有问题
## 图形界面配置
> 首次运行(或安装目录下找不到 `3gppDecoder.cfg`)时,程序会自动弹出该配置页面,并自动探测常见的 Wireshark/Notepad++ 安装目录,引导完成配置;保存后即可正常使用。
除了直接编辑 `3gppDecoder.cfg`,还可以在程序内完成配置:
1. 打开程序菜单 **文件 → 配置**。
2. 在配置窗口中:
- 修改 **Wireshark 目录** 和 **Notepad++ 目录**(可点“浏览…”选择目录);
- 在左侧选择网络类型,在右侧编辑该网络类型下的协议列表(每行一个协议名);
- 用 **新增网络** / **重命名网络** / **删除网络** 管理网络类型。
3. 点击 **保存**。程序会先校验目录和协议是否合法,校验通过后写回 `3gppDecoder.cfg`,并立即在主界面刷新网络/协议下拉框,无需重启。
配置文件仍然是普通的 JSON,可继续用文本编辑器手工修改。
## 测试
配置逻辑带有自动化测试:
- 应用内置自检(不需要人工操作,结果写入 `_cfg_selftest_result.txt`):
```
3gppDecoder.exe --cfg-selftest
```
- 配置库单元测试(在仓库根目录执行,结果写入 `tests/config-lib-test-result.txt`):
```
D:\DevTools\Red\red.exe -o tests\config-lib-test.exe tests\config-lib-test.red
tests\config-lib-test.exe
```