zynovexllc/vrp-ir
GitHub: zynovexllc/vrp-ir
vrp-ir 将华为 VRP/USG 配置文件解析为逐字段可溯源的结构化模型,并生成带行号证据的安全验收报告,填补了网络自动化生态中对华为设备配置解析的空白。
Stars: 0 | Forks: 1
# vrp-ir
[](https://github.com/zynovexllc/vrp-ir/actions/workflows/tests.yml)
[](https://pypi.org/project/vrp-ir/)
[](https://pypi.org/project/vrp-ir/)
[](LICENSE)
**针对华为 VRP 配置的可溯源结构化 IR。**
`vrp-ir` 可将离线的华为 VRP 配置文件(`display
current-configuration` 输出 / 保存的 `.cfg`)解析为结构化的类型化模型,
其中**每个解析出的值都包含一个 `SourceRef`,可追溯回其来源的确切文件 + 行号**。
```
Huawei VRP .cfg ──► structured IR ──► every field knows its source line
```
## 为什么需要这个项目(现状空白)
网络自动化生态系统非常丰富,但缺失了以下特定的组合:
- **Batfish** 非常出色,但它的源码明确将华为 **VRP 标记为
`UNSUPPORTED`**。
- **ntc-templates** 拥有约 35 个华为 `display` *show-command* 模板,但**没有**
`display current-configuration`(配置文件)解析器。
- **ciscoconfparse2** 以 Cisco 为中心,且仅提供每行的整数 `.linenum`
—— 而非字段级别的溯源。
- 没有任何开源工具能为解析出的配置事实提供**字段 → `file:line` 溯源**。
`vrp-ir` 正好填补了这一空白:**华为 VRP 配置文件 → 具备逐字段可溯源性的语义模型。** 这正是验收/审计工作所需要的——当某个值看起来有误时,可以直接跳转到对应行,而无需去 grep 原始配置。
## 安装说明
```
pip install vrp-ir
# 或者,从 source 构建:
pip install -e .
```
## 快速入门(CLI)
```
vrp-ir parse examples/sample-vrp.cfg # routing / switching
vrp-ir parse examples/sample-usg.cfg # USG firewall (zones / policy / nat-policy / objects / hrp)
```
```
{
"hostname": { "value": "CORE-FW-01", "source": { "file": "...", "line": 2, "col": 8 } },
"interfaces": [
{
"name": { "value": "GigabitEthernet0/0/1", "source": { "line": 9 } },
"ipv4": [
{ "address": { "value": "10.10.10.1", "source": { "line": 11 } },
"prefix_length": { "value": 24, "source": { "line": 11 } } }
]
}
]
}
```
## 快速入门(Python)
```
from vrp_ir import parse_file
cfg = parse_file("examples/sample-vrp.cfg")
print(cfg.hostname.value) # CORE-FW-01
ip = cfg.interfaces[0].ipv4[0]
print(ip.address.value, ip.prefix_length.value) # 10.10.10.1 24
print(ip.address.source) # examples/sample-vrp.cfg:11 ← provenance
```
## 安全验收审计(v0.6)
将可溯源的 IR 转化为**安全验收报告**:每项检查都是一个小型测试用例(意图),并且每项发现都会引用其所基于的确切配置行——因此审查人员可以直接跳转到出错的行。
```
vrp-ir audit examples/sample-usg-risky.cfg # Markdown acceptance report
vrp-ir audit examples/sample-usg.cfg --format json # machine-readable JSON
vrp-ir audit examples/sample-usg-risky.cfg --strict # exit 1 if any check fails (CI gate)
```
```
### ❌ `FW-DEFAULT-DENY` [CRITICAL] — Security-policy 默认动作拒绝未匹配的 traffic
Default action is 'permit': all traffic matching no rule is allowed (permit-any).
**Evidence**:
- `examples/sample-usg-risky.cfg:14` — `default action permit`
```
检查项(13 项):策略默认拒绝(permit-any);允许范围(规则未通过 zone/address 进行收窄,**会解引用 `address-set` 引用**,因此解析为 `0.0.0.0/0` 的对象依然会被标记);无会话日志记录的允许规则;每个 zone 仅有一个 interface;`address-set` 等于 any;已启用 HRP;已启用 HRP 但 heartbeat interface/peer 不完整;**管理平面**——启用了 Telnet/HTTP(明文)、VTY 接受 Telnet、VTY 没有入站源 ACL、弱 SSH 加密算法(CBC/3DES/DES),以及被授予 Telnet 服务的本地 AAA 用户。请在
[`docs/acceptance-report-example.md`](docs/acceptance-report-example.md) 查看完整的渲染报告。
## 设计原则
- 核心**零运行时依赖**——易于嵌入。
- **重用,而不是重复造轮子。** `vrp-ir` 是一个轻量级的 VRP 配置 + 溯源层。
它是对 `ntc-templates`(show-command 解析)、
`hier_config`(VRP diff/修复)、`napalm`(实时设备收集)和
`Batfish`(多供应商分析)的补充(而非替代)。拓扑/分析层将集成
这些工具,而不是重新构建它们。
- **溯源优先。** 如果我们无法说明某个值的来源,我们就不会将其呈现出来。
## 路线图
- **v0.1:** 包含 SourceRef 的 hostname + interface 基础信息。 ✅
- **v0.2:** VLAN(批量范围),VRF(RD/RT),接口增强
(link-type、trunk allow-pass 范围、Eth-Trunk、dot1q 子接口、secondary
IPv4、VRF 绑定),ACL,静态路由。 ✅
- **v0.3:** 华为 **USG 防火墙** 对象 —— `firewall zone`、
`security-policy`(包含 zones / addresses / services / profiles /
action / logging 的 `rule name`)、`nat server`、`hrp`(全局 OSS 的盲区;Batfish 完全放弃了对 VRP 的支持)。 ✅
- **v0.4:** 安全**验收审计** —— 测试用例 schema
(`testCase ↔ intent ↔ evidenceRef`)+ Markdown/JSON 报告生成器;
包含初始防火墙检查并各自引用其源码行的 `vrp-ir audit`。 ✅
- **v0.5:** `nat-policy` 块、`ip address-set` / `ip service-set` 对象、
telnet/http 管理开关;包含 9 项审计检查 —— permit-scope 中的 `address-set` 解引用、`address-set`-equals-any、HRP 一致性、明文
管理(Telnet / HTTP)。 ✅
- **v0.6(当前):** **管理平面访问基线**(由真实世界的配置语料库驱动)—— `user-interface` con/vty(protocol inbound / inbound ACL /
auth mode)、`ssh server cipher`、`aaa` 本地用户;审计增加至 **13 项**
检查(VTY-accepts-Telnet、VTY-no-ACL、weak-SSH-cipher、AAA-user-Telnet)。 ✅
- **v0.6.x(下一个版本):** SNMP community、NTP / Syslog 状态、NAT 正确性、
`vsys`;扩大测试语料库。
- 未来:华为安全设备覆盖范围(USG / WAF / AntiDDoS / 4A)。
## 商业版 / 支持
`vrp-ir` 是免费且开源的(Apache-2.0),并将一直保持如此。
它是 **AegisTwin 的开放核心** —— 一个面向运营商和
数据中心安全集成的验收工作台(HLD/LLD → 可溯源拓扑 → 验收
顾问 → 证据链 → 签收报告)。如果您喜欢 `vrp-ir`,对于需要大规模进行验收的团队,AegisTwin 在其基础上**进行了构建**:华为
安全设备覆盖范围(USG / WAF / AntiDDoS / 4A),HLD/LLD → 可溯源的
验收测试用例,以及客户级别、可审计的报告(包括 MLPS /
运营商格式)。
请参阅**[开源版与商业版对比](docs/commercial.md)**。
**联系我们** 进行付费的工作流审查或设计合作伙伴试点 →
**support@zynovexllc.com**。
## 贡献
请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。我们解析错误的真实(已脱敏)VRP 配置片段
是**最好**的 issue。
## 许可证
[Apache-2.0](LICENSE)。
标签:Python, 中间表示, 华为VRP, 文档结构分析, 无后门, 网络自动化, 逆向工具, 配置解析