forynsics/pink-lemonade
GitHub: forynsics/pink-lemonade
一款基于 Electron 构建的 DFIR 桌面应用,为网络安全调查提供文本处理、大数据集探索、情报匹配与富化的一站式数据整理环境。
Stars: 1 | Forks: 0
pink-lemonade
一款用于网络安全调查和数据处理的桌面工具包。
pink-lemonade 专门处理调查过程中繁琐的中间环节——即你在使用更大型工具之间需要进行的解析、清理和转换工作:从文本中提取指标、清理导出数据、处理大型 CSV/TSV 时间线(Splunk 导出文件、plaso 时间线、EVTX 转储、防火墙日志),并从中搜索已知指标——所有这些都可以在一个地方完成,而无需在 Notepad++ 和一堆单一用途的工具之间来回切换。
基于 **Electron + React + TypeScript** 构建。数据库在 worker thread 中运行,因此即使是数 GB 的文件和全列扫描也不会导致 UI 卡顿。
## 功能说明
### 📝 Notepad — 文本转换
粘贴文本并通过一系列小工具对其进行处理:Base64/hex 解码、IPv4 及 IOC 提取、defang/refang、去除重复行、空格/大小写清理,以及**查询构建器** (CQL / KQL / SPL)。每个工具的输出都会作为下一个工具的输入,让你可以构建一个 pipeline 并实时查看输出更新;各个步骤可以随时启用/禁用。支持带高亮和步进功能的窗格内查找 (Ctrl+F)。
### 🗂️ Workspaces — 数据调查
将一个或多个 CSV/TSV 文件导入到 workspace 中,并在一个快速、虚拟化的网格中对其进行探索,该网格可支持扩展至数百万行 / 数 GB 大小的文件:
- **排序、调整大小、重新排序以及显示/隐藏列**;支持带高亮和步进功能的搜索。
- **过滤器**:包含 / 不包含 / 等于 / ≠,多值 (`∈`),包含及排除 facets,以及时间范围。
- **非重复值**面板,带有实时进度显示和取消功能;可将值导出到 notepad。
- **时间枢纽** —— 右键点击时间戳 → ±N 窗口,同时保持你的锚定行在可视范围内。
- **标记** —— 将行标记为 Malicious / Suspicious / Unknown / Benign(支持单行、多行或按过滤器批量操作),查看彩色标记,并按标签进行过滤(包含或排除)。标签会持久化保存在 workspace 文件中。
- **导出**当前视图(应用了过滤器/搜索/排序状态及可见列)并重新导出为 CSV。
### 🎯 Intel Sweep — 搜索已知指标
针对一组已知的情报集合对数据源进行扫描(可以粘贴列表、加载 **watchlist**,或打开 `.txt`/`.csv` 文件),并将每一行匹配的数据标记为一次 **sighting**。匹配规则为不区分大小写的包含关系——对于 IP / hash / 文件名采用全 token 匹配,对于域名采用子字符串匹配——因此 `8.8.8.8` 可以在 `explorer.exe connected to 8.8.8.8` 这段文本中被检索出来。匹配到的数据会标上十字准星标记和高亮单元格;**Sightings 面板**会按 indicator 对它们进行汇总,方便你精准定位、排除或清除误报。
### 🌐 Intel / Enrichment — 上下文查询
提供了一个独立于 provider 的 enrichment 操作界面,底层带有全局应用缓存(相同的查询绝不会重复执行)。内置 **MaxMind GeoIP**(一个本地的 `.mmdb` 文件);结果会输出到一个可排序的 Intel 网格中。支持管理 **watchlists**(IP / CIDR / ASN / domain / hash)以提供上下文,并支持双向 pivot —— **将单元格或列发送至 Intel**,或者右键点击 Intel 网格中的 indicators,针对任何已打开的 workspace 数据源**运行 sweep**。*(像 VirusTotal 这样的在线 provider 以及 AI 助手已在开发路线图中。)*
→ **用户指南:** [forynsics.github.io/pink-lemonade](https://forynsics.github.io/pink-lemonade/)(或 [`docs/`](docs/README.md) 源码)
## 下载
从 [Releases](../../releases) 页面获取最新的**便携版 `.exe`** 文件 —— 双击即可运行,无需安装。(目前该程序**未签名**,因此首次运行时 Windows SmartScreen 会弹出 *"更多信息 → 仍要运行"* 的提示。)你的 workspace 和设置会存储在 `%APPDATA%\pink-lemonade` 目录下,并且在多次运行期间保持持久化。
## 开发
环境要求:**Node.js 18+** 和 npm。
```
git clone https://github.com/forynsics/pink-lemonade.git
cd pink-lemonade
npm install
npm run dev # launch the app with hot reload
```
### 脚本
```
npm run dev # dev server + Electron window (HMR)
npm test # unit tests (Vitest)
npm run typecheck # type-check main/preload + renderer
npm run build # production bundle to out/
npm run dist # build + package the portable Windows .exe into dist/
```
## 项目结构
```
src/
main/ Electron main process — window + IPC; the DB runs in a worker thread
csv/ SQLite-backed CSV/workspace engine + Intel Sweep (db.ts, worker.ts, sql.ts, sweep.ts)
enrich/ enrichment engine + cache, MaxMind provider, watchlists
preload/ contextBridge surface exposed to the renderer (window.api)
renderer/ React UI (tools palette, notepad, CSV grid, Intel grid, sidebars)
src/tools/ the text-transform tool registry (pure functions)
docs/ user guide + screenshots
```
渲染进程 (Renderer) 处于沙盒环境中(无法访问 Node);所有文件/数据库以及网络相关的操作均在主进程中通过轻量级的 IPC 接口完成。
## 许可证
[MIT](LICENSE) © forynsics
标签:MITM代理, 代码示例, 域渗透, 安全运营, 库, 应急响应, 扫描框架, 数据分析, 桌面应用, 电子数据取证, 自动化扫描, 自动化攻击