Algolagnia/echidna-dc

GitHub: Algolagnia/echidna-dc

一款通过 Telegram 界面对 Discord 用户进行被动 OSINT 调查与风险审核的工具,采集身份、活动和行为数据后生成报告并零持久化销毁。

Stars: 0 | Forks: 0

# echidna [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/Algolagnia/echidna-dc/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Node](https://img.shields.io/badge/node-%E2%89%A522-brightgreen)](#requirements) [![TypeScript strict](https://img.shields.io/badge/typescript-strict-blue)](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, 安全插件, 情报分析, 数据泄露, 网络诊断, 自动化攻击, 自动化机器人