Linux下C++调用python脚本实现LDAP协议通过TNLM认证连接到AD服务器
1.前言
首先要实现这个功能,必须先搞懂如何通过C++调用python脚本文件最为关键,因为两者的环境不同。本质上是在 c++ 中启动了一个 python 解释器,由解释器对 python 相关的代码进行执行,执行完毕后释放资源。
2 模块功能
2.1python
2.1.1 python功能
通过ldap3协议实现NTLM的认证,因此主体功能基本全是由python实现。
2.1.2 python的环境支持
sudo apt install python3-pip //安装python环境的支持
上面这条命令你要注意,如果你有其他的python版本,或许你可以不使用python3-pip工具,而单独的安装pip管理工具。ubuntu是上,你可以通过cd /usr/bin/下,ls python*查看你有多少个python的版本。
pip install ldap3 //安装ldap3,用于认证
2.1.3 python代码的实现NTLM认证
python我不懂,只能粗略的了解代码功能,因为这里的实现是非常简单的,代码量非常的少。
因此哪怕是第一次接触python的基本也能看懂,只要你有其他语言的基本功。这里先使用ubuntu命令行进行NTLM认证,便于查看错误信息。想放在python.py中,将第三步以下全部命令放到.py文件中,在文件开头添加 import ldap3,就可以了。
第一步:运行python3
第二步:导入ldap3模块 import ldap3
如果你在导入模块的时候,出现了类似这种报错信息,说明了你的pip工具安装ldap3并没有安装到python3中,你需要判断出ldap安装在哪个版本中,通过2.1.2的内容查看你有多少个版本,然后修改第一步导入的python版本。或者你根本没有安装ldap3
>>> import ldap3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'ldap3'第三步:传入你服务器的IP server=ldap3.Server('ldap://<AD服务器地址>:端口号')
第四步,传入你需要认证的用户信息
conn=ldap3.Connection(server,user='username',authentication=ldap3.NTLM,password='<username>')
第五步:conn.bind() 进行绑定 三四步只是保存信息,不会发生任何情况,你参数的错误全是在这一步进行判断,通过返回对应的ldap_error_code,检查你导入数据的错误,如果成功返回
true
2.2 C++
2.2.1 C++功能
C++只是负责传递认证账号的信息,username,userpasswd等。还有接收python的返回值,基本是ldap的error_code。
2.2.2 C++调用python
这里我就不详细解释如何调用,因为CSDN大佬发了很多文章,包括小破站也有视频教学。这里推荐几篇文章,再简单说一下我用的使用不懂以及出现错误的地方,希望对python不懂的有帮助
PyRun_SimpleString("sys.path.append('./script')"); //这里传入 python脚本路径的时候,不要写入脚本文件名,只需要制定python脚本所在的文件夹即可
pModule = PyImport_ImportModule("myadd"); //这里传入的模块名字,是你python脚本的文件名,不要加.py
pFunc = PyObject_GetAttrString(pModule, "say"); //这里传入的方法,就是python中你封装的方法,例如这里面的方法就是say,类似于C/C++的大括号,def say():以下的所有缩进内容都属于这个方法
C++调用Python的方法 //这篇文章非常的好,非常详细,如果我编写的时候看的这个文章,起码节约半个小时,所以我这篇文章主要是偏向如何使用python脚本实现NTLM认证。
3.结言
加油
相关文章:
Linux下C++调用python脚本实现LDAP协议通过TNLM认证连接到AD服务器
1.前言 首先要实现这个功能,必须先搞懂如何通过C调用python脚本文件最为关键,因为两者的环境不同。本质上是在 c 中启动了一个 python 解释器,由解释器对 python 相关的代码进行执行,执行完毕后释放资源。 2 模块功能 2.1python…...
计算机毕业设计选题推荐-校园交流平台微信小程序/安卓APP-项目实战
✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...
FlinK之检查点与保存点机制
检查点与保存点 检查点Checkpoint概述保存时机保存与恢复检查点算法 检查点配置启用检查点指定存储位置其它配置通用增量 保存点Savepoint概述使用保存点切换状态后端 SQL客户端中操作提交作业触发恢复 检查点Checkpoint 概述 在 Flink 中,检查点是用于实现状态一致…...
UE5 新特性 Nanite 开启
啥也不说,只能说,真的牛,在自己的项目上,从10几20的帧数,直接彪到了70 适用场景: 大场景,三角面足够多 在Project Setting里面 将这几个勾未true 勾上这个,放入场景即可...
仿写知乎日报第四周
本周主要修改了以往的一些bug,实现了一些遗漏的新功能。 无限右滑 无限右滑我听了学长的思路,首先在scrollView的画布大小设置多一个宽度的画布,然后每当滑到那个画布的时候,就调用一个通知,该通知会触发在首页的vie…...
MySQL join原理及优化
MySQL的JOIN原理是基于索引和算法的。在执行JOIN查询时,MySQL会根据连接字段上的索引来查找匹配的记录。 这种算法在链接查询的时候,驱动表会根据关联字段的索引进行查找,当在索引上找到了符合的值,再回表进行查询,也就…...
js案例:打地鼠游戏(打灰太狼)
效果预览图 游戏规则 当灰太狼出现的时候鼠标左键点击灰太狼加10分,小灰灰出现的时候鼠标左键点小灰灰击减10分,不点击不减分不加分。 整体思路 1.把获取背景图片中每个地洞的位置,把所有位置放到一个数组中。 2.封装随机数函数,随…...
删除杀软回调 bypass EDR 研究
01 — 杀软或EDR内核回调简介 Windows x64 系统中,由于 PatchGuard 的限制,杀软或EDR正常情况下,几乎不能通过 hook 的方式,完成其对恶意软件的监控和查杀。那怎么办呢?别急,微软为我们提供了其他的方法&a…...
Ansible自动化部署工具-组件及语法介绍
大家好,我是蓝胖子,我认为自动化运维要做的事情就是把运维过程中的某些步骤流程化,代码化,这样在以后执行类似的操作的时候就可以解放双手了,让程序自动完成。避免出错,Ansible就是这方面非常好用的工具。它…...
postgresql实现job的六种方法
简介 在postgresql数据库中并没有想oracle那样的job功能,要想实现job调度,就需要借助于第三方。本人更为推荐kettle,pgagent这样的图形化界面,对于开发更为友好 优势劣势Linux 定时任务(crontab) 简单易用…...
layui 表格(table)合计 取整数
第一步 开启合计行 是否开启合计行区域 table.render({elem: #myTable, url: ../baidui/, page: true, cellMinWidth: 100,totalRow:true,cols: [[ //表头//{ type: checkbox },{ type: checkbox,totalRowText: "合计" },//合计行区域{ field: id, align: center,…...
深入理解 TCP;场景复现,掌握鲜为人知的细节
握手失败 第一次握手丢失了,会发生什么? 当客户端想和服务端建立 TCP 连接的时候,首先第一个发的就是 SYN 报文,然后进入到 SYN_SENT 状态。 在这之后,如果客户端迟迟收不到服务端的 SYN-ACK 报文(第二次…...
【MySQL系列】 第二章 · SQL(中)
写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正࿰…...
IBM Qiskit量子机器学习速成(一)
声明:本篇笔记基于IBM Qiskit量子机器学习教程的第一节,中文版译文详见:https://blog.csdn.net/qq_33943772/article/details/129860346?spm1001.2014.3001.5501 概述 首先导入关键的包 from qiskit import QuantumCircuit from qiskit.u…...
音视频基础知识
图像(YUV RGB) 这个讲的比较好 RGB颜色编码 图像显示主要是由像素组成,每个像素点的颜色组成都是采用RGB格式,RGB就是红、绿、蓝,RGB分别取不同的值,展示不同的颜色。 YUV…...
ida81输入密码验证算法分析以及破解思路
本文分析了ida81对输入密码的验证流程,分别对输入密码到生成解密密钥、密码素材的生成过程以及文件数据的加密过程这三个流程进行分析,并尝试找一些可利用的破绽。很遗憾,由于水平有限,目前也只是有个思路未能完全实现,…...
C语言——贪吃蛇
一. 游戏效果 贪吃蛇 二. 游戏背景 贪吃蛇是久负盛名的游戏,它也和俄罗斯⽅块,扫雷等游戏位列经典游戏的⾏列。 贪吃蛇起源于1977年的投币式墙壁游戏《Blockade》,后移植到各种平台上。具体如下: 起源。1977年,投币式…...
Android sqlite 使用简介
进行Android应用开发时经常会用到数据库。Android系统支持sqlite数据库,在app开发过程中很容易通过SQLiteOpenHelper使用数据库,SQLiteOpenHelper依赖于Context对象,但是基于uiatomator1.0和Java程序等无法获取Context的应用如何使用数据库呢…...
UE地形系统材质混合实现和Shader生成分析(UE5 5.2)
前言 随着电脑和手机硬件性能越来越高,游戏越来越追求大世界,而大世界非常核心的一环是地形系统,地形系统两大构成因素:高度和多材质混合,此篇文章介绍下UE4/UE5 地形的材质混合方案----基于WeightMap混合。 材质层 …...
Git分支与Git标签的介绍及其场景应用
目录 一、Git分支 1.1 定义 1.2 基本概念 1.3 特点与优势 1.4 Git分支操作命令 1.4.1 查看分支 1.4.2 创建分支 1.4.3 删除分支 1.4.4 切换分支 1.4.5 创建并切换到新建分支 1.5 场景应用 1.5.1 前期准备 1.5.2 具体操作 二、Git标签 2.1 定义 2.2 类型 2.3 标…...
探索视觉框架VM PRO 2.7:强大功能与实践指南
视觉框架VM PRO 2.7版本,增加了机器人 流程框架 多任务流程 C#源码框架,机器视觉源码框架,编程语言C#,算法使用的是halcon,参考了cognex visionpro的输入输出,有C#基础和Halcon基础学习这个很好,…...
如何永久备份微信聊天记录?这个免费工具让你轻松掌握数字记忆的主动权
如何永久备份微信聊天记录?这个免费工具让你轻松掌握数字记忆的主动权 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tr…...
【Prometheus】实战指南:使用basic_auth加固监控数据访问
1. 为什么需要为Prometheus添加basic_auth认证 最近几年,随着企业数字化转型的加速,监控系统已经成为IT基础设施中不可或缺的一部分。Prometheus作为云原生时代最流行的监控解决方案之一,被广泛应用于各类生产环境。但很多团队在部署Promethe…...
AI时代新型的项目管理应该是什么样的?侣
AI训练存储选型的演进路线 第一阶段:单机直连时代 早期的深度学习数据集较小,模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低,吞吐量极高,也就是“数据离…...
E7Helper:第七史诗自动化脚本助手完全指南
E7Helper:第七史诗自动化脚本助手完全指南 【免费下载链接】e7Helper 【EPIC】第七史诗多功能覆盖脚本(刷书签🍃,挂讨伐、后记、祭坛✌️,挂JJC等📛,多服务器支持📺,qq机器人消息通知…...
Conan实战指南:从零搭建私有C++依赖仓库
1. 为什么C团队需要私有依赖仓库 在C开发领域,依赖管理一直是个令人头疼的问题。我见过太多团队在项目启动时,把大量时间花在配置第三方库上。有人直接把第三方库源码塞进项目目录,有人要求每个开发者手动安装系统级依赖,还有人写…...
2026办公软件终极指南:AI正在重写你的工作台
效率革命已至,你的工具该升级了打开任何一个办公软件,你都会发现一个显著的变化——AI不再是藏在角落里的“实验性功能”,而是像回车键一样自然地融入了每一次敲击。AI已经在重写整个Office软件栈。 从文档创作到数据处理,从会议纪…...
三步掌握Ofd2Pdf:OFD转PDF的高效实用指南
三步掌握Ofd2Pdf:OFD转PDF的高效实用指南 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf Ofd2Pdf是一款专业的开源工具,专为将OFD格式电子文档转换为PDF格式而设计。无论您需要…...
如何快速释放磁盘空间:Windows系统驱动清理完整指南
如何快速释放磁盘空间:Windows系统驱动清理完整指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾为C盘空间不足而烦恼?是否发现Windows系统变得越来越…...
普通Java程序员怎么去看开源框架源码?
前几日看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做过多的赘述了…...



