dejisec/papertrail

GitHub: dejisec/papertrail

一款面向公开情报收集的自动化文档发现与元数据提取工具,支持结合大语言模型代理进行深度分析。

Stars: 1 | Forks: 0

# PaperTrail PaperTrail 用于发现目标 域名的公开文档, 下载这些文档,提取嵌入的元数据,并将 结果转换为结构化的 JSON/CSV 报告。它还包含一个可选的 [CrewAI](https://www.crewai.com/) 编排路径,以便每个流水线阶段都可以 委托给自主代理。 ## 功能 - **确定性 Google dorks** – 根据文件类型和可选关键字构建 Serper.dev 查询,并由 SQLite 提供缓存/恢复支持。 - **丰富的元数据提取** – 合并 pypdf、OOXML、旧版 Office 和 ExifTool 信号,然后提取用户名、电子邮件域名和文件系统路径。 - **可操作的报告** – 生成 `results.json`、`downloads.json`、 `metadata.json`、`metadata.csv`、`findings.json` 以及一份 汇总所有文档趋势的 Markdown 格式 `report.md`。 - **代理模式** – 启用后,会捕获每个步骤的产物以及 CrewAI 会话 输出,以便分析师可以审计或复用每个代理生成的内容。 ## 入门指南 ### 前置条件 - Python 3.12+ - [uv](https://docs.astral.sh/uv/) - 一个 [Serper.dev](https://serper.dev) API 密钥(用于访问 Google 搜索结果) ### 安装说明 ``` git clone https://github.com/dejisec/papertrail.git cd papertrail uv sync ``` CrewAI 代理流水线是可选的。要启用它,请运行 `uv sync --extra agents` 并设置 `PAPERTRAIL_USE_CREW=1`。 ### 环境配置 创建一个 `.env` 文件(或复制 `example.env`)并提供所需的密钥: ``` SERPER_API_KEY=sk-serper-your-key-here # 可选:启用 CrewAI 模式 OPENAI_API_KEY=sk-openai-... PAPERTRAIL_USE_CREW=0 # set to 1 to run the CrewAI pipeline ``` ## 用法 通过 `uv run papertrail` 运行 CLI: ``` papertrail \ --domain example.com \ --types pdf,docx,xlsx \ --keywords finance,"internal audit" \ --max-results 10 \ --max-size-mb 75 \ --out ./output ``` 主要选项: - `--domain/-d`(必填)– 用于限定 `site:` 搜索范围的主机。 - `--types/-t`(必填)– 允许的扩展名逗号分隔列表(pdf, docx, xlsx, doc, xls, ppt, pptx)。 - `--keywords/-k` – 可选的逗号分隔关键字,如果 包含空格则会自动加上引号。 - `--max-results` – 所有查询规范化结果的总上限(1–1000)。 - `--max-size-mb` – 拒绝大于此阈值的下载。 - `--out/-o` – 存储所有下载、缓存和报告的用例目录。 - `--db-path` – 自定义 SQLite 路径(默认为 `/papertrail.db`)。 - `--resume` – 复用先前运行的缓存查询和下载。 - `--json` – 将解析后的配置输出为 JSON(用于自动化)并 将其作为 `papertrail-config.json` 存储在输出文件夹中。 - `--verbose` – 启用结构化 DEBUG 日志以进行故障排除。 ### 输出结构 每次运行会产生: - `results.json` – 规范化的 Serper 搜索命中结果以及运行上下文。 - `downloads.json` – 每个 URL 的结果(状态、MIME、SHA-256、大小、最终 URL)。 - `files/` – 按文件类型组织的下载文档。 - `metadata.json` / `metadata.csv` – 结构化元数据记录。 - `findings.json` – 汇总统计(作者、编辑、电子邮件域名等)。 - `report.md` – 可直接用于简报的 Markdown 摘要。 - `papertrail.db` – 为 `--resume` 提供支持的 SQLite 缓存。 当设置了 `PAPERTRAIL_USE_CREW=1` 时,PaperTrail 还会在 `output/agents/*.json` 下写入代理产物(搜索载荷、抓取日志、元数据列表、CrewAI 会话记录等)。`report.md` 会在“Agent Outputs”(代理输出)部分引用这些路径。 ## 代理工作流(可选) 如果同时设置了 `PAPERTRAIL_USE_CREW=1` 和 `OPENAI_API_KEY`,CLI 会路由到 `PapertrailCrewRunner`,该运行器会: 1. 运行相同的确定性搜索/下载/元数据流水线。 2. 保存每个阶段的 JSON 产物以供审计。 3. 调用 CrewAI 的顺序模板(代理/任务定义在 `papertrail/config/agents.yaml` 和 `config/tasks.yaml` 中)。 4. 记录 CrewAI 会话输出,以便调查结果包含 LLM 推理。 此模式完全是可选的;当环境变量不存在时, CLI 会回退到直接流水线。
标签:CrewAI, CSV, ESC4, ExifTool, Google Dorks, JSON, Markdown, OOXML, OSINT, pdf, pentest, pentest-recon, pypdf, Python, Serper.dev, 元数据提取, 公共文档发现, 实时处理, 工具, 搜索引擎Dorking, 数据泄露, 无后门, 目标侦察, 网络安全, 网络调试, 自动化, 进程保护, 逆向工具, 隐私保护