Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Goreport — 一个用于从Gophish收集活动数据并生成报告的Python脚本 | Kitploit
工具/GitHubGitHub/chrismaddalena/goreport
OSINT (开源情报)钓鱼工具信息收集钓鱼攻击
GitHubchrismaddalena/goreport

Goreport

一个用于从Gophish收集活动数据并生成报告的Python脚本

查看仓库
2025333年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Goreport v3.0,一个 Gophish 报告工具

该脚本接受您的 Gophish 活动 ID 作为参数,然后收集活动结果以呈现统计数据,并执行用户代理解析和 IP 地址的地理位置查询。Goreport 会生成 IP 地址、操作系统、浏览器类型和版本以及位置的列表,并附带每个项目在活动中出现的次数统计。

关于统计数据的说明:Goreport 会报告事件总数以及参与每个事件的邮件收件人数。换句话说,Goreport 会显示 Gophish 记录了多少次“点击链接”事件,以及有多少收件人点击了链接。这两个数字差异很大。一个发送给 10 人的活动可能有 9 次点击链接事件,而实际只有 3 个收件人点击了链接。了解收件人多次点击链接或提交数据是有价值的信息,但请确保您理清这些数字。

Goreport 要求

此脚本需要一个 Gophish 服务器、一个正在进行或已完成的活动,以及您的 Gophish 应用程序的 API 密钥。点击“设置”选项卡即可获取此密钥。API 密钥位于第一页。每个 Gophish 用户帐户都有自己的 API 密钥,该密钥作为该用户向 Gophish API 进行身份验证的方法。如果您在 Gophish 中使用多个帐户,请确保获取正确用户的 API 密钥。

还需要以下 Python 库:

  • Gophish
  • requests
  • xlsxwriter
  • configparser
  • python-docx
  • click
  • user-agents
  • python-dateutil(由 Gophish 库要求)

Goreport 设置

您需要做几件事才能开始:

  • 运行 pip install -r requirements.txt。
  • 编辑/创建一个类似下面所示的 Gophish.config 配置文件。
    • 注意:需要完整的服务器 URL,因此请提供 http://IP:PORT 或 https://IP:PORT。
      • 注意使用 HTTP 与 HTTPS。如果输入错误,您将收到连接错误。
  • 通过点击您的活动并引用 URL 来获取您的活动 ID(URL 末尾的数字)。
  • 如果您希望能够创建 Word docx 报告,请将名为“template.docx”的模板文件放入 Goreport 目录中(更多信息见下面的“选择报告输出”部分)。

基本用法

此示例假设 Gophish 位于另一台服务器上,并且使用 HTTPS。要访问 API 端点,您需要使用 SSH 端口转发,端口为 3333(或您希望使用的任何其他本地端口):

Gophish.config

root@kitploit:~
[Gophish]
gp_host: https://127.0.0.1:3333
api_key: <YOUR_API_KEY>

[ipinfo.io]
ipinfo_token: <IPINFO_API_KEY>

[Google]
geolocate_key: <GEOLOCATE_API_KEY>

基本命令

python3 Goreport.py --id 26 --format excel

这将从 https://localhost:3333/api/campaigns/26/?api_key=<Your_API_Key> 获取活动 26 的结果,并将结果输出到 xlsx 文件。

可以一次性提供多个 ID 以生成多个报告。ID 可以使用逗号分隔列表、范围或两者结合的方式提供。

示例:python3 Goreport.py --id 26,29-33,54 --format csv

更改配置文件

如果您使用多个 Gophish 用户帐户或服务器,则会有多个 API 密钥。为了更方便地在密钥之间切换,Goreport 的 --config 选项允许您使用自己命名的配置文件覆盖默认的 gophish.config 文件。如果提供了有效且可读的配置文件,Goreport 将使用它来代替 gophish.config 来设置 API 连接。

例如,如果您有三个运行 Gophish 的钓鱼服务器,您可以设置三个配置文件,每个文件使用不同的 Gophish API 密钥,然后根据需要切换使用。

示例:python3 Goreport.py --id 26,29-33,54 --format csv --config phish_server_2.config

合并报告

如果您针对不同的目标人群使用相同的设置运行了多个活动,您可能希望一次性对所有活动运行 Goreport,然后将结果合并到一份报告中。这可以通过添加 Goreport 的 --combine 标志来实现。

示例:python3 Goreport.py --id 26,29-33,54 --format excel --combine

此命令将收集活动 26、29、30、31、32、33 和 54 的结果。通常,Goreport 会输出七个 xlsx 文件,但添加 --combine 选项后,Goreport 会将结果合并,仅输出一份报告,就好像它们是一个大型活动一样。

切换报告输出

Goreport 可以输出 Excel 电子表格(xlsx)或 Word 文档(docx)。还有一个“快速”报告选项。只需使用 --format 命令行参数选择您喜欢的格式,如上文“示例用法”部分所示。关于 csv 格式,没有太多可说的。

Word 文档基于模板 template.docx 构建。将您的模板文件(命名为 template.docx)放置在主脚本所在的 Goreport 目录中。您的模板应包含您想要使用的表格样式以及标题 1 和标题 2 样式。将您喜欢的表格样式命名为“Goreport”,并设置好标题 1 和标题 2 样式。

随意创建自定义样式或使用现有样式。重要的是存在 template.docx 文件,并且其中包含名为“Goreport”的表格样式。

要重命名样式,右键单击样式,选择“修改表格样式”,然后设置新名称。

Excel 选项会输出一个格式精美的 Excel 工作簿,其中包含多个工作表,用于存放不同的结果和统计数据集合。如果您想要轻松排序或过滤结果表格,这是一个不错的选择。

最后,还有一个“快速”选项。此选项不生成报告文档。相反,它会在终端中输出有关活动的基本信息。这便于快速检查活动进度或在活动完成后参考结果。

将活动标记为完成

如果您希望在运行报告时将活动状态设置为“完成”,Goreport 可以通过 --complete 标志自动帮助您完成此操作。如果您提供此标志,Goreport 将使用 API 将每个活动 ID 标记为“完成”,以结束活动并更新 Gophish 中的状态。

附加信息

Gophish 会自行使用 IP 地址进行地理位置查找,并返回经纬度。这通常可行,但可能失败并返回 0,0 的坐标,或者返回旧信息。

Goreport 提供了两个可能用于改善位置结果的选项。第一个也是推荐的选项是 ipinfo.io API。只要您在 24 小时内查询少于 1000 次,API 访问就是免费的。对于钓鱼活动来说,这应该不难。

如果在配置文件中添加了 ipinfo.io API 密钥,Goreport 将自动使用 ipinfo.io 获取每个唯一 IP 地址的当前地理位置信息。

第二个选项是 Google Maps API。Goreport v1.0 在 Maps API 免费时使用了它。现在 Google 对 Geolocate API(现在的名称)收费 $0.005/请求。如果您更倾向于不使用 ipinfo.io,可以在 Google 帐户上激活 Maps Geolocate API,并将 API 密钥添加到 Goreport 配置文件中。然后在任何您希望 Goreport 使用该 API 查找 Gophish 坐标以获取格式化地址时,在命令中添加 --google 标志。

技术信息

如果您想查看代码,以下是基本流程概述:

Goreport.py 使用 Python 3 和命令行界面创建工具包(CLICK)库。脚本运行时,会创建一个新的 Goreport 对象。Goreport 类的 __init__ 函数使用提供的 API 密钥建立到您的 Gophish 服务器的连接。然后调用 run() 函数。

Run() 使用命令行选项启动报告。使用 For 循环遍历通过 --id 提供的所有活动 ID。系统会针对每个单独的 ID 联系您的 Gophish 服务器以获取活动详细信息。

首先,调用 collect_all_campaign_info() 将基本活动信息存储在变量中。这包括活动名称、运行时间、状态、使用的 SMTP 服务器、模板名称等数据。

其次,调用 process_timeline_events() 获取该 ID 的 Gophish 时间线模型。这包括 Gophish 记录的事件。此函数在第二步运行,因为它会填充一些由 process_results() 检查的列表。

第三,调用 process_results() 获取该 ID 的 Gophish 结果模型。这提供诸如活动中的目标数量等数据。

Goreport 使用这些步骤设置一些列表,以确定活动的基本结果,例如哪些人成功收到了邮件、哪些收件人点击了链接、以及哪些收件人提供了数据。

基于此基础,Goreport 可以以多种方式排列数据以生成报告。任何时候都可以查询列表,以检查结果模型中的某个电子邮件地址是否出现在 targets_clicked 列表中,从而确认该收件人是否点击了链接。然后可以触发对时间线模型的审查以收集详细信息。Gophish 将 IP 地址和用户代理等详细信息保存在时间线模型中,而基本信息保存在结果模型中。

下载工具