gophish钓鱼平台增加二维码记录功能
字数 1257 2025-08-22 12:22:54

Gophish钓鱼平台增加二维码记录功能教学文档

前言

Gophish是一款开源的钓鱼演练工具,但在实际使用中发现其对二维码扫码记录的支持不足。虽然官方仓库中曾经合并过二维码相关代码,但编译打包后无法正常构造二维码。本教学文档将详细介绍如何对Gophish进行改造,增加二维码扫码记录功能。

Gophish核心功能分析

Gophish主要包含以下功能模块:

  1. Dashboard - 数据面板
  2. Campaigns - 钓鱼邮件发送页面
  3. Users & Groups - 配置接收邮件用户
  4. Email Templates - 钓鱼邮件模板
  5. Landing Pages - 钓鱼页面(通过钓鱼邮件模板可访问)
  6. Sending Profiles - 配置发送钓鱼邮件的发件人邮箱信息

邮件模板功能深入分析

现有变量支持

在Email Templates模块中,可以配置以下变量:

  • {{.URL}} - 钓鱼链接地址
  • {{.Email}} - 收件人邮箱
  • {{.From}} - 发件人信息

测试发现,尝试配置其他变量(如{{.QrURL}})时会提示失败。

代码结构分析

通过分析请求URL,定位到相关代码文件template.go。关键代码片段:

json.NewDecoder(r.Body).Decode(&t)

这行代码将接口传递的JSON参数解析到models.Template类中。

HTML字段处理流程

  1. models.Template类中搜索HTML定位到相关代码逻辑
  2. 跟踪函数调用链,最终找到邮件模板配置所添加的变量(如URL、Tracker参数)
  3. 确认该位置就是模板变量接收器

二维码功能实现

代码改造步骤

  1. 添加二维码字段
    models.Template类中添加一个二维码字段QrCode

  2. 生成二维码逻辑

    • 使用go-qrcode库将phishURL生成二维码图片
    • 将二维码图片转换为base64格式字符串
    • 将base64字符串赋给QrCode字段
  3. HTML模板处理
    由于二维码是图片,需要在HTML中使用img标签引用base64格式的二维码:

    
    

关键代码实现

// 在models.Template中添加QrCode字段
type Template struct {
    // ...其他字段...
    QrCode string `json:"qr_code" gorm:"-"`
}

// 生成二维码的逻辑
func (t *Template) GenerateQRCode(phishURL string) error {
    qr, err := qrcode.Encode(phishURL, qrcode.Medium, 256)
    if err != nil {
        return err
    }
    t.QrCode = base64.StdEncoding.EncodeToString(qr)
    return nil
}

测试与验证

  1. 编译修改后的代码
  2. 在邮件模板配置中添加二维码变量{{.QrCode}}
  3. 发送测试邮件
  4. 验证:
    • 邮件中正确显示二维码图片
    • 扫描二维码后的访问记录被正确统计

注意事项

  1. 确保已正确导入go-qrcodeencoding/base64
  2. 二维码大小可根据需要调整(示例中使用256px)
  3. 二维码复杂度设置为Medium,可根据需要调整
  4. 确保在发送邮件前调用GenerateQRCode方法生成二维码

总结

通过上述改造,Gophish成功增加了二维码扫码记录功能,使钓鱼演练更加全面。关键点包括:

  • 分析Gophish现有模板变量机制
  • 添加二维码字段和生成逻辑
  • 将二维码图片转换为HTML可用的base64格式
  • 确保扫码行为能被正确记录

这种改造方式不仅限于二维码功能,也可作为参考用于扩展Gophish的其他自定义功能。

Gophish钓鱼平台增加二维码记录功能教学文档 前言 Gophish是一款开源的钓鱼演练工具,但在实际使用中发现其对二维码扫码记录的支持不足。虽然官方仓库中曾经合并过二维码相关代码,但编译打包后无法正常构造二维码。本教学文档将详细介绍如何对Gophish进行改造,增加二维码扫码记录功能。 Gophish核心功能分析 Gophish主要包含以下功能模块: Dashboard - 数据面板 Campaigns - 钓鱼邮件发送页面 Users & Groups - 配置接收邮件用户 Email Templates - 钓鱼邮件模板 Landing Pages - 钓鱼页面(通过钓鱼邮件模板可访问) Sending Profiles - 配置发送钓鱼邮件的发件人邮箱信息 邮件模板功能深入分析 现有变量支持 在Email Templates模块中,可以配置以下变量: {{.URL}} - 钓鱼链接地址 {{.Email}} - 收件人邮箱 {{.From}} - 发件人信息 测试发现,尝试配置其他变量(如 {{.QrURL}} )时会提示失败。 代码结构分析 通过分析请求URL,定位到相关代码文件 template.go 。关键代码片段: 这行代码将接口传递的JSON参数解析到 models.Template 类中。 HTML字段处理流程 在 models.Template 类中搜索 HTML 定位到相关代码逻辑 跟踪函数调用链,最终找到邮件模板配置所添加的变量(如URL、Tracker参数) 确认该位置就是模板变量接收器 二维码功能实现 代码改造步骤 添加二维码字段 : 在 models.Template 类中添加一个二维码字段 QrCode 生成二维码逻辑 : 使用 go-qrcode 库将 phishURL 生成二维码图片 将二维码图片转换为base64格式字符串 将base64字符串赋给 QrCode 字段 HTML模板处理 : 由于二维码是图片,需要在HTML中使用img标签引用base64格式的二维码: 关键代码实现 测试与验证 编译修改后的代码 在邮件模板配置中添加二维码变量 {{.QrCode}} 发送测试邮件 验证: 邮件中正确显示二维码图片 扫描二维码后的访问记录被正确统计 注意事项 确保已正确导入 go-qrcode 和 encoding/base64 包 二维码大小可根据需要调整(示例中使用256px) 二维码复杂度设置为Medium,可根据需要调整 确保在发送邮件前调用 GenerateQRCode 方法生成二维码 总结 通过上述改造,Gophish成功增加了二维码扫码记录功能,使钓鱼演练更加全面。关键点包括: 分析Gophish现有模板变量机制 添加二维码字段和生成逻辑 将二维码图片转换为HTML可用的base64格式 确保扫码行为能被正确记录 这种改造方式不仅限于二维码功能,也可作为参考用于扩展Gophish的其他自定义功能。