EvilBit-Labs/unifi_extract
GitHub: EvilBit-Labs/unifi_extract
一款完全离线的 UniFi 备份文件解密与数据提取工具,支持将 .unf/.unifi 备份还原为原始文件并将内嵌的 MongoDB 转储解码为 NDJSON。
Stars: 0 | Forks: 0
# unifi-extract
[][ci] [][security] [][scorecard] [][goref] [][release] [][license]
完全在您的本地机器上解密并探索 UniFi 备份文件(`.unf` 和 `.unifi`)。无需网络访问,无需浏览器,数据也不会离开您的设备。
UniFi 备份使用静态的、硬编码的密钥进行加密——不存在针对单个用户的密钥。此工具在本地还原解密过程,以便您可以精确检查备份包含的内容。有关完整的格式详细信息,请参阅
[DECRYPTION.md](DECRYPTION.md)。
## 功能
- **`.unf`** 站点导出和传统控制器自动备份(AES-128-CBC → ZIP)。
- **`.unifi`** UniFi OS / UCore 控制台完整备份(AES-256-CBC → gzip → tar)。
- 将内嵌的 MongoDB dump 解码为换行符分隔的 JSON。
- 提取所有文件,包括用于 `pg_restore` 的 UCore PostgreSQL `pg_dump`。
- 离线运行;该二进制程序永远不会发起网络连接。
## 安装
```
go install github.com/EvilBit-Labs/unifi_extract@latest
```
或者从源码构建(开发工具通过 [mise](https://mise.jdx.dev) 固定版本):
```
mise install # provisions go, golangci-lint, etc.
just build # -> bin/unifi-extract
```
## 用法
```
unifi-extract [flags]
Commands:
info Summarize a backup (type, version, timestamp, entries, doc count)
decrypt Write the raw decrypted container (.zip for .unf, .tar for .unifi)
extract Unpack every file from the backup into a directory
mongo Decode the MongoDB dump to newline-delimited JSON (NDJSON)
sites List the sites contained in a full backup
site-export Export one site from a full backup as an importable .unf
Flags:
-o, --out string Output path (file or directory, per command)
--type string Force format: "unf" or "unifi" (default: by extension)
```
### 示例
```
# 备份内容概览
unifi-extract info backup.unf
# 解密为普通的 ZIP / TAR 以便手动检查
unifi-extract decrypt backup.unf -o backup.zip
unifi-extract decrypt console.unifi -o console.tar
# 将所有内容解压到一个目录
unifi-extract extract console.unifi -o ./console
# 将 MongoDB 集合导出为 NDJSON,每行一个文档
unifi-extract mongo backup.unf > docs.ndjson
unifi-extract mongo console.unifi --pretty
# 列出完整备份中的站点,然后导出一个为可导入的 .unf
unifi-extract sites console.unifi
unifi-extract site-export console.unifi --site Default -o default.unf
```
## 开发
```
just check # lint + test + build
just test # go test -race -cover ./...
just lint # golangci-lint run ./...
```
## 安全性
备份文件使用所有安装共用的密钥进行解密——这种加密只是一种混淆手段,无法保证机密性。任何拿到文件的人都可以读取它。提取
输出的内容包含敏感信息(密码哈希、WLAN PSK、RADIUS 密钥、TLS 私钥、
API token);请妥善处理。
本项目仅用于检查**您自己的**备份。它不隶属于 Ubiquiti,也未获得其
认可。
标签:EVTX分析, Go, HTTP工具, MongoDB, PostgreSQL, Ruby工具, UniFi, 备份解密, 数据提取, 日志审计, 测试用例, 离线工具