首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >pyLDAPGui开发历程:跨平台LDAP图形化工具诞生记

pyLDAPGui开发历程:跨平台LDAP图形化工具诞生记

原创
作者头像
qife122
发布2025-10-09 14:32:27
发布2025-10-09 14:32:27
4800
代码可运行
举报
运行总次数:0
代码可运行

pyLDAPGui - 开发历程

背景起源

pyLDAPGui是我在过去几个月里一直在开发的一个应用程序,直到最近才决定以概念验证的形式发布,供大家试用。这个想法的诞生源于我在开发"无恶意软件对抗模拟"课程时,需要寻找能够在不同操作系统中有效进行"就地取材"的工具,这让我开始深入研究可移植的可用选项。

如果你曾经进行过任何形式的渗透测试、红队行动或专注于Active Directory环境的审计,很可能使用过Active Directory Explorer。这是一个在Windows主机上连接LDAP服务器(通常是域控制器)并查看AD环境的优秀工具。但它的最大限制是只能在Windows上使用,如果你希望在Linux虚拟机或Mac上操作,就无法使用它。

寻找替代方案

在寻找具有用户界面的替代LDAP浏览器时,我发现了一些有用的系统管理工具:

  • GoDAP:终端用户界面工具
  • ldap_shell:具有各种功能的优秀终端UI
  • Softerra LDAP浏览器:类似老式C#应用程序的界面

但这些工具要么缺乏图形界面,要么仍然依赖Windows平台。

技术选型

编程语言选择

在创建GUI应用程序时,我考虑过多种语言:

  • Go和Rust:最初尝试但学习曲线较陡峭
  • Python:最终选择,因其多功能性和易用性

GUI库选择

评估了多个Python GUI库后,我选择了PyQt:

  • Tkinter
  • PyQt ✓
  • Kivy

选择PyQt主要是因为其易用性、可扩展性和跨平台支持。

功能设计

工具的核心设计目标是与ADExplorer类似的功能:

  • 通过树状视图连接到LDAP
  • 支持LDAP和LDAPS
  • 能够导出为合理格式(主要是CSV和JSON,支持BloodHound兼容性)
  • 快速搜索功能,支持运行特定的LDAP查询

开发挑战

GUI设计

在Python中设计GUI比我想象的要复杂,特别是在确定导出文件的结构方面。

SOCKs支持

实现SOCKs功能比最初预期的要困难,通过大量谷歌搜索和试错最终解决了问题。

操作安全考虑

在开发过程中考虑了节流和操作安全问题:

代码语言:python
代码运行次数:0
运行
复制
self.attribute_variations = {
    'samaccountname': ['sAMAccountName', 'samAccountName', 'SAMACCOUNTNAME', 'sAmAcCoUnTnAmE'],
    'objectclass': ['objectClass', 'OBJECTCLASS', 'ObjectClass', 'oBjEcTcLaSs'],
    # ... 更多属性变体
}

工具执行以下类型的LDAP查询:

  • 树导航(get_children):在展开树节点时触发
  • 条目详情(get_entry):在选择项目时触发
  • 批量导出(get_bloodhound_data):6个大型查询用于BloodHound导出
  • 通用搜索(search):用于CSV导出和浏览

为了增强隐蔽性,在查询之间添加了随机延迟(0.5-2秒),并且每次运行时都会打乱查询顺序。

GitHub Actions集成

使用GitHub Actions进行CI/CD时遇到挑战,需要正确设置权限:

代码语言:yaml
复制
permissions:
  contents: write
  packages: write

经过26多次尝试才成功实现清理提交历史和工作流提交的功能。

最终成果

完成后的GUI工具具有以下核心功能:

  • 连接到LDAP/LDAPS服务器并以树状视图列出
  • 导出为CSV/BloodHound格式
  • 直接导入到Neo4j(支持通过网络连接)

未来计划

计划进一步改进代码并添加更多功能,包括:

  • 使用OpenGraph支持BloodHound CE的导入功能
  • 导出特定详细信息并解析更多数据
  • ADCS分析按钮功能开发

这个PoC工具是我过去几个月开发工作的成果,希望能对大家有所帮助。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • pyLDAPGui - 开发历程
    • 背景起源
    • 寻找替代方案
    • 技术选型
      • 编程语言选择
      • GUI库选择
    • 功能设计
    • 开发挑战
      • GUI设计
      • SOCKs支持
      • 操作安全考虑
    • GitHub Actions集成
    • 最终成果
    • 未来计划
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档