当前位置: 首页 > news >正文

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

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功能比最初预期的要困难,通过大量谷歌搜索和试错最终解决了问题。

操作安全考虑

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

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时遇到挑战,需要正确设置权限:

permissions:contents: writepackages: write

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

最终成果

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

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

未来计划

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

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

这个PoC工具是我过去几个月开发工作的成果,希望能对大家有所帮助。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

http://www.hskmm.com/?act=detail&tid=27295

相关文章:

  • 3D计算机视觉与图形学研究成果获奖
  • 2025 年最新推荐!等离子清洗机源头厂家权威榜单发布,涵盖大气 / 真空 / 宽幅 / 微波 / 自动化等多类型设备厂家推荐
  • JeecgBoot低代码 v3.8.3 大版本发布,组织架构革新+全面迈向 Spring Boot 3 时代
  • 2025年9月文章一览
  • DevOps技术演进:混合云时代下的本土化突围与智能化未来
  • 2025 年模块电源厂家最新推荐排行榜:dc/dc、ac/dc 及工业级模块电源优质企业全面解析与选购参考
  • 【AI生成】小模型微调技术浅析
  • [iOS] YYModel 初步学习 - 教程
  • 吴恩达深度学习课程一:神经网络和深度学习 第二周:神经网络基础(三)
  • 分治
  • qwen3:0.6b模型的基本参数存在的价值应用场景分析
  • Gitee Insight领航研发效能工具市场:国产化与智能化双轮驱动下的技术突围
  • 【大数据】AI就业影响数据可视化分析系统 计算机毕业设计项目 Anaconda+Django+Spark+Hadoop环境调整 附源码+文档+讲解
  • 2026 航空航天、智能感知与控制国际学术会议
  • Trae 或 vscode无法在vue文件中自动跳转解决
  • 实用指南:小白也能学会的大模型构建:DeepSeek实战教程+代码解析
  • 安徽京准:NTP网络时间服务器技术应用方案
  • 2025工矿灯厂家TOP5推荐:高光效与耐用性深度评测
  • ​​无源探头与高压差分探头的技术比较与应用选择​​
  • PKDV5351高压差分探头在氢燃料电池堆电压均衡监测中的实战应用案例
  • 2025秋_8
  • react的依赖项数组 - 实践
  • 25年人教版一年级资料汇总!(一年级数学上册典型练习题)(解决问题共150道)电子版可打印(共6页)!可打印可下载
  • 第十天
  • VSCode万能Debug任何执行python文档命令的详细教程
  • 专业的用户反馈管理分析工具,能帮企业节省多少开支?
  • Kotlin-微服务实用指南-全-
  • 外设知识学习笔记
  • “你好BOE”再度携非遗与当代设计亮相米兰 以科技之力向世界展现东方美学
  • 个人微信机器人开发指南!API接口轻松上手