Algolagnia/echidna-dc
GitHub: Algolagnia/echidna-dc
一款通过 Telegram 界面对 Discord 用户进行被动 OSINT 调查与风险审核的工具,采集身份、活动和行为数据后生成报告并零持久化销毁。
Stars: 0 | Forks: 0
# echidna
[](https://github.com/Algolagnia/echidna-dc/actions/workflows/ci.yml)
[](LICENSE)
[](#requirements)
[](tsconfig.json)
## 功能
给定一个 Discord 用户 ID,echidna 会整合生成一份审核报告,融合以下信息:
- **身份信息** — 用户名、全局名称、头像、账号注册时长(通过 snowflake 推导)
- **别名** — 用户曾使用过的所有名称,不区分大小写,并对用户名 / 全局名称 / 各服务器昵称进行去重
- **共同服务器** — 划分为 7 个类别(动漫、聊天、游戏、教育、社区、开发、18+、其他),包含角色和加入日期
- **消息** — 通过 Discord 原生搜索端点实时拉取,每个服务器设有上限,并在截断时提供“显示 N 共 M 条”的透明度提示
- **实时语音状态** — 当前是否在语音频道?在哪里?持续了多久?
- **个人资料附加信息** — 简介、徽章、Premium 类型、关联账号(GitHub、Steam、Twitch、……)
- **风险扫描** — 对 7 个类别(Nitro 钓鱼、Steam 伪装域名、token 窃取器、加密货币骗局、大量提及、URL 缩短服务、邀请链接刷屏)执行本地正则表达式扫描
- **行为画像** — 语言检测(TR/EN/AR/RU/DE/ES/FR)、通过自我提及估算年龄、通过角色标签提示性别、语气分析(脏话 / 大写字母 / Emoji 使用率)
- **置信度评分** — 0-100 分,包含六项评估因素,提供透明的评分明细
报告会以两个独立的 HTML 文件(身份信息 + 活动记录)形式发送至 Telegram 上经过授权的管理员聊天中。随后,相关数据将从内存中彻底销毁。
## 环境要求
- Node.js **22 LTS** 或更高版本
- Linux 主机(推荐 Debian/Ubuntu)— 本地虚拟机、树莓派、迷你 PC
- 住宅 IP(云虚拟机使用的数据中心 IP 段会被 Discord 标记)
- 一个**注册满 30 天**并已开启 2FA 的一次性 Discord 账号
- 一个 Telegram bot(通过 BotFather 创建)以及你的管理员聊天 ID(可通过 `@userinfobot` 获取)
## 快速开始
```
git clone https://github.com/Algolagnia/echidna-dc.git echidna
cd echidna
npm ci --include=dev
cp .env.example .env
nano .env # fill DISCORD_TOKEN, TELEGRAM_BOT_TOKEN, ADMIN_CHAT_IDS
chmod 600 .env
npm run build
npm test # all green
npm start
```
完整的分步指南(包括 Discord token 提取、Telegram BotFather 配置、systemd 加固、虚拟机/云服务对比):在浏览器中打开 **[docs/index.html](docs/index.html) · [在线网站](https://algolagnia.github.io/echidna-dc/)**。支持 TR/EN 双语。
## Telegram 命令
| 命令 | 效果 |
|---|---|
| `/lookup ` | 完整报告。返回两个 HTML 附件 + 一段文本摘要。 |
| `/status` | 服务健康状态、缓存大小、运行时间。 |
| `/help` | 命令参考。 |
## 架构
```
src/
├── index.ts # composition root — no logic, just wires
├── config/ # zod-validated environment
├── core/ # Logger, RateLimiter, Clock, Errors, DiskWriteGuard
├── discord/ # Client, GuildScanner, ProfileFetcher,
│ # MessageSearcher, ActivityCollectors, Snowflake
├── telegram/ # Bot, AuthMiddleware, CommandRouter, MessageChunker
├── analysis/ # PatternDetector, NlpAnalyzer, ConfidenceCalculator
├── lookup/ # LookupService, UnifiedLookupStrategy,
│ # aliases, serverClassifier
├── report/ # MarkdownFormatter, IdentityReportRenderer,
│ # ActivityReportRenderer, theme
└── types/ # domain types
```
没有“上帝类”,没有全局状态,全面采用构造函数注入。完整的类关系图刚好占 `src/index.ts` 的一屏。
## 安全与隐私保障
- **零持久化。** 生产环境中不使用数据库,不记录用户数据日志,不进行磁盘写入(由 `installDiskWriteGuard()` 和 systemd 的 `ReadOnlyPaths=/opt/echidna` 强制执行)。
- **Token 脱敏。** 日志记录器的脱敏路径覆盖 `token`、`authorization`、`userId`、`username`、`body`、`content`、`connections`、`headers.cookie`。字符串自动截断至 200 个字符。
- **速率限制。** 默认每分钟限制 6 次 `/lookup`;每个服务器搜索间隔 1500ms;每页间隔 500ms。每次请求受 `SEARCH_MAX_GUILDS` 上限约束。
- **HTML 转义** 在两个渲染器中对每个由用户控制的字段均执行 HTML 转义(防范 XSS 强化)。
- **systemd 加固。** Unit 文件自带 `NoNewPrivileges`、`ProtectSystem=strict`、`PrivateTmp`、`CapabilityBoundingSet=`、`SystemCallFilter=@system-service`、`MemoryDenyWriteExecute`、`MemoryMax=768M`、`LimitCORE=0`。目标是将 `systemd-analyze security` 评分控制在 ≤ 2.0。
完整的威胁模型详见 [SECURITY.md](SECURITY.md)。
## 文档
- [docs/index.html](docs/index.html) · [在线网站](https://algolagnia.github.io/echidna-dc/) — 完整的双语用户指南(请在浏览器中打开)
- [SECURITY.md](SECURITY.md) — 威胁模型、漏洞报告
- [DISCLAIMER.md](DISCLAIMER.md) — 法律与道德义务
- [CONTRIBUTING.md](CONTRIBUTING.md) — 如何提交 PR
- [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) — 社区规则
- [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) — 依赖库许可证
## 许可证
[MIT](LICENSE) — 许可证文件末尾附加了 ToS 声明。请务必阅读。
标签:ESC4, MITM代理, OSINT, TypeScript, 安全插件, 情报分析, 数据泄露, 网络诊断, 自动化攻击, 自动化机器人