EvilBit-Labs/unifi_extract

GitHub: EvilBit-Labs/unifi_extract

一款完全离线的 UniFi 备份文件解密与数据提取工具,支持将 .unf/.unifi 备份还原为原始文件并将内嵌的 MongoDB 转储解码为 NDJSON。

Stars: 0 | Forks: 0

# unifi-extract [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)][ci] [![Security](https://static.pigsec.cn/wp-content/uploads/repos/cas/31/3182eccd67715b6b1bf46236ece7b7252dafc1e332af959acd19e63f1f3698a5.svg)][security] [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/EvilBit-Labs/unifi_extract/badge)][scorecard] [![Go Reference](https://pkg.go.dev/badge/github.com/EvilBit-Labs/unifi_extract.svg)][goref] [![Release](https://img.shields.io/github/v/release/EvilBit-Labs/unifi_extract?include_prereleases&sort=semver)][release] [![License](https://img.shields.io/github/license/EvilBit-Labs/unifi_extract)][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, 备份解密, 数据提取, 日志审计, 测试用例, 离线工具