
《Python 编程技术实践》
文章平均质量分 67
Python是一种高级、通用、解释型编程语言,由Guido van Rossum于1989年首次发布,目前由Python软件基金会维护。Python的设计哲学强调代码的可读性和简洁性,使得它成为编程初学者和专业开发者之间广泛使用的语言。
微软技术分享
王瑞,LYSHARK(信息安全电子刊物出版品牌)创始人,微软全球最有价值专家,华为云开发者专家,金山办公最有价值专家,科创中国人才库专家,中国知网CNKI论文评审专家库专家,中国知网星云专家库专家,美国计算机协会会员,美国心理学会研究员,IEEE 电气电子工程师学会会员,中国高等教育学会会员,深耕信息安全领域,专注 Microsoft 技术在信息安全的实践与创新,撰写并发表《灰帽黑客:攻守道》、《Windows 内核安全编程技术实践》等专业著作,系统剖析攻防技术与内核安全编程,并持有 8 项信息安全领域原创软件著作权,推动技术成果转化,为信息安全防护提供有力支撑。
展开
-
Python 解析JSON实现主机管理
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的文本形式表示数据。JSON 是一种独立于编程语言的数据格式,因此在不同的编程语言中都有对应的解析器和生成器。JSON 格式的设计目标是易于理解、支持复杂数据结构和具有良好的可扩展性。原创 2023-12-04 18:49:47 · 5177 阅读 · 1 评论 -
Flask 运用Xterm实现交互终端
Xterm是一个基于X Window System的终端仿真器(Terminal Emulator)。Xterm最初由MIT开发,它允许用户在X Window环境下运行文本终端程序。Xterm提供了一个图形界面终端,使用户能够在图形桌面环境中运行命令行程序。而xterm.js是一个用于在浏览器中实现终端仿真的JavaScript库。它允许在Web页面中创建交互式的终端界面,用户可以在浏览器中运行命令行程序,执行命令,并与终端进行交互。原创 2023-11-28 05:00:00 · 7979 阅读 · 14 评论 -
Flask SocketIO 实现动态绘图
Flask-SocketIO 是基于 Flask 的一个扩展,用于简化在 Flask 应用中集成 WebSocket 功能。WebSocket 是一种在客户端和服务器之间实现实时双向通信的协议,常用于实现实时性要求较高的应用,如聊天应用、实时通知等,使得开发者可以更轻松地构建实时性要求较高的应用。通过定义事件处理函数,可以实现双向实时通信,为应用提供更加丰富和实时的用户体验。原创 2023-11-27 19:04:02 · 5265 阅读 · 1 评论 -
Flask Echarts 实现历史图形查询
Flask前后端数据动态交互涉及用户界面与服务器之间的灵活数据传递。用户界面使用ECharts图形库实时渲染数据。它提供了丰富多彩、交互性强的图表和地图,能够在网页上直观、生动地展示数据。ECharts支持各种常见的图表类型,包括折线图、柱状图、饼图、散点图等,同时还支持动画效果、数据筛选、区域缩放等交互功能。Flask后端通过render_template方法将查询得到的JSON数据传递至前端,使得用户能够查询特定时间段内的数据。这种交互方式实现了动态图形展示,为用户提供了更直观、实时的数据体验。通过原创 2023-11-27 15:50:23 · 8106 阅读 · 6 评论 -
Flask 实现Token认证机制
在Flask框架中,实现Token认证机制并不是一件复杂的事情。除了使用官方提供的`flask_httpauth`模块或者第三方模块`flask-jwt`,我们还可以考虑自己实现一个简易版的Token认证工具。自定义Token认证机制的本质是生成一个令牌(Token),并在用户每次请求时验证这个令牌的有效性。原创 2023-11-27 13:36:56 · 6311 阅读 · 11 评论 -
Flask Session 登录认证模块
Flask 框架提供了强大的 Session 模块组件,为 Web 应用实现用户注册与登录系统提供了方便的机制。结合 Flask-WTF 表单组件,我们能够轻松地设计出用户友好且具备美观界面的注册和登录页面,使这一功能能够直接应用到我们的项目中。本文将深入探讨如何通过 Flask 和 Flask-WTF 构建一个完整的用户注册与登录系统,以及如何对页面进行优化美化,提高用户体验。通过这一系统,用户能够方便注册账户、安全登录,并且我们能够有效管理用户的会话信息,为 Web 应用的用户管理提供一种高效的解决方案原创 2023-11-27 11:28:38 · 8680 阅读 · 4 评论 -
Flask WTForms 表单插件的使用
在Web应用中,表单处理是一个基本而常见的任务。Python的WTForms库通过提供表单的结构、验证和渲染等功能,简化了表单的处理流程。与此同时,Flask的扩展Flask-WTF更进一步地整合了WTForms,为开发者提供了更便捷、灵活的表单处理方式。Flask-WTF是建立在WTForms之上的Flask扩展,旨在简化Web应用中表单处理的流程。它提供了与Flask框架的无缝集成,使得表单的创建、验证和渲染变得非常容易。通过Flask-WTF,开发者能够轻松地构建具有强大功能和良好用户体验的表单页面。原创 2023-11-26 20:44:58 · 5610 阅读 · 6 评论 -
Flask 使用Jinja2模板引擎
Jinja2,由Flask框架的创作者开发,是一款功能丰富的模板引擎,以其完整的Unicode支持、灵活性、高效性和安全性而备受推崇。最初受Django模板引擎启发,Jinja2为Flask提供了强大的模板支持,后来也成为其他项目的首选。在本文中,我们将深入探讨Jinja2的特性、语法以及如何在Flask应用中使用它来构建动态而又美观的Web页面。原创 2023-11-26 18:38:56 · 18206 阅读 · 2 评论 -
Flask Paginate实现表格分页
flask_paginate 是 Flask 框架的一个分页扩展,用于处理分页相关的功能。它可以帮助你在 Flask Web 应用程序中实现分页功能,让用户可以浏览大量数据的不同部分。本篇博文重点讲述在Web开发中,用paginate把所有数据进行分页展示,首先通过运用第三方库实现后端分页,然后再自己编写一个分页类实现。原创 2023-11-26 16:01:17 · 5447 阅读 · 1 评论 -
Python 使用XlsxWriter操作Excel
在数据处理和报告生成的领域中,Excel 文件一直是广泛使用的标准格式。为了让 Python 开发者能够轻松创建和修改 Excel 文件,XlsxWriter 库应运而生。XlsxWriter 是一个功能强大的 Python 模块,专门用于生成 Microsoft Excel 2007及以上版本(.xlsx 格式)的电子表格文件。本文将对XlsxWriter进行概述,探讨其主要特点、用法和一些实际应用,并实现绘制各类图例(条形图,柱状图,饼状图)等。原创 2023-11-23 14:51:07 · 5871 阅读 · 7 评论 -
Python使用Paramiko实现SSH管理
paramiko 是一个用于在Python中实现SSHv2协议的库,它支持对远程服务器进行加密的通信。目前该模块支持所有平台架构且自身遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,你可以在Python中实现SSH客户端和服务器,并进行安全的文件传输和远程命令执行。原创 2023-11-23 13:41:34 · 18040 阅读 · 1 评论 -
Python 使用SQLAlchemy数据库模块
SQLAlchemy 是用Python编程语言开发的一个开源项目,它提供了SQL工具包和ORM对象关系映射工具,使用MIT许可证发行,SQLAlchemy 提供高效和高性能的数据库访问,实现了完整的企业级持久模型。ORM(对象关系映射)是一种编程模式,用于将对象与关系型数据库中的表和记录进行映射,从而实现通过面向对象的方式进行数据库操作。ORM 的目标是在编程语言中使用类似于面向对象编程的语法,而不是使用传统的 SQL 查询语言,来操作数据库。原创 2023-11-23 13:17:52 · 5605 阅读 · 2 评论 -
x64dbg 自动化控制插件
一款 x64dbg 自动化控制插件,通过Python控制x64dbg的行为,实现远程动态调试,解决了逆向工作者分析程序,反病毒人员脱壳,漏洞分析者寻找指令片段,原生脚本不够强大的问题,通过与Python相结合利用Python语法的灵活性以及其丰富的第三方库,加速漏洞利用程序的开发,辅助漏洞挖掘以及恶意软件分析。插件下载好以后,请将该插件复制到x64dbg的plugins目录下,程序运行后会自动加载插件。当插件加载成功后,会在日志位置看到具体的绑定信息以及输出调试,该插件并不会在插件栏显示。原创 2022-10-31 14:58:01 · 9264 阅读 · 3 评论 -
x64dbgpy 自动化控制插件AIP手册
一款 x64dbg 自动化控制插件,通过Python控制x64dbg的行为,实现远程动态调试,解决了逆向工作者分析程序,反病毒人员脱壳,漏洞分析者寻找指令片段,原生脚本不够强大的问题,通过与Python相结合利用Python语法的灵活性以及其丰富的第三方库,加速漏洞利用程序的开发,辅助漏洞挖掘以及恶意软件分析。原创 2022-03-25 12:48:00 · 9267 阅读 · 0 评论 -
LyScript 实现指令查询功能
通过对LyScript自动化插件进行二次封装,可以实现从内存中读入目标进程解码后的机器码,并使用Python代码在这些机器码中执行各种功能,如寻找特定的十六进制字符数组或检索是否存在连续的反汇编指令片段。原创 2022-09-01 09:01:00 · 30687 阅读 · 0 评论 -
Python 实现文本关键函数扫描
使用Python实现一个简单的PHP脚本扫描器,用于在给定目录下的PHP文件中查找特定的敏感函数。这段代码是注释掉的,如果需要启用查询日志,可以取消注释并配置正确的 MySQL 连接信息。函数:接受文件列表和要查找的敏感函数名,遍历每个文件的每一行,查找是否包含指定的敏感函数。如下这段Python脚本的主要功能是监控 MySQL 的日志文件,并输出所有执行的 SQL 语句和相关状态信息。注释掉的代码是用于启用全局查询日志的,如果需要启用,需要提供正确的 MySQL 连接信息。原创 2020-02-08 12:13:00 · 7897 阅读 · 0 评论 -
Selenium 库的使用技巧
Selenium是一个用于自动化浏览器操作的开源工具。它最初是为Web应用程序测试而创建的,但随着时间的推移,它的应用领域扩展到了Web数据抓取、自动化任务执行、网页交互测试等各种领域。原创 2020-02-09 14:10:00 · 16158 阅读 · 0 评论 -
Flask 运用Axios库实现前后端交互
Axios 是一个基于promise的HTTP库,该库是一个更好的替代ajax向后端发送数据或请求数据的前端组件库,其本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范,如下案例运用axios向后端提交JSON字符串,后端通过Flask响应请求并处理。Python后端使用Flask接收并处理前端发送过来的JSON字符串。前端运用Axios发送数据的两种方式。原创 2022-10-10 10:15:03 · 8310 阅读 · 0 评论 -
Flask 运用SocketIO实现WebSSH
Flask 框架中如果想要实现WebSocket功能有许多种方式,运用SocketIO库来实现无疑是最简单的一种方式,Flask中封装了一个flask_socketio库该库可以直接通过pip仓库安装,如下内容将重点简述SocketIO库在Flask框架中是如何被应用的,最终实现WebSSH命令行终端功能,其可用于在Web浏览器内实现SSH命令行执行。原创 2022-10-06 17:18:33 · 7089 阅读 · 0 评论 -
Flask 运用Echarts绘制图形
ECharts(Enterprise Charts)是一个基于 JavaScript 的开源可视化库,由百度开发和维护。它支持各种图表类型,包括折线图、柱状图、饼图、散点图等,以及支持地理坐标系、时间轴、数据筛选等丰富的交互特性。ECharts的设计注重性能和扩展性,适用于在 Web 页面中创建各种交互式和动态的数据可视化。该开发库目前发展非常不错,且支持各类图形的绘制可定制程度高,Echarts绘图库同样可以与`Flask`结合,前台使用`echart`绘图库进行图形的生成与展示,后台则是Flask通原创 2022-10-05 18:28:39 · 11013 阅读 · 2 评论 -
Flask 运用WTForms实现用户注册
WTForms 是用于web开发的灵活的表单验证和呈现库,它可以与您选择的任何web框架和模板引擎一起工作,并支持数据验证、CSRF保护、国际化等,运用WTForms框架并配合Flask可实现一个带有基本表单验证功能的用户注册与登录页面,经过美化的页面可以直接应用到项目中。原创 2022-10-10 12:51:29 · 16103 阅读 · 0 评论 -
Flask 通过Axios库前后端交互
Axios 是一个基于promise的HTTP库,该库是一个更好的替代ajax向后端发送数据或请求数据的前端组件库,其本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范,如下案例运用axios向后端提交JSON字符串,后端通过Flask响应请求并处理。Python后端使用Flask接收并处理前端发送过来的JSON字符串。前端发送数据的第一种方式。前端发送数据的第二种方式。原创 2022-03-15 16:52:00 · 16371 阅读 · 0 评论 -
Flask 运用Ajax轮询动态绘图
Ajax是异步JavaScript和XML可用于前后端交互,在之前简单实现了前后端交互,本章将通过轮询获取后端的数据,前台使用绘图库进行图形的生成与展示,后台通过方法返回一串JSON数据集,前台收到后将其应用到绘图库上,实现动态监控内存利用率的这个功能。首先先来演示一下前端如何运用AJAX实现交互,通过定义ajax开始标志,并指定等信息,通过设置一个1000毫秒的定时器,每隔一段时间则去后端取数据。后端只需要根据前端需要的格式返回系统中的CPU利用率(此处模拟),并使用推送到前端即可。运行这段代码,然后原创 2022-11-08 10:44:50 · 7940 阅读 · 0 评论 -
LyScript 批量打开关闭进程
在旧版本的LyScript插件中,并没有集成直接打开和关闭进程的功能。然而,在新版本的LyScript中,增加了open_debug()和close_debug()这两个方法来处理打开和关闭被调试进程的操作。原创 2022-07-22 11:18:00 · 7903 阅读 · 0 评论 -
LyScript 内存扫描与查壳实现
LyScript 中提供了多种内存特征扫描函数,每一种扫描函数用法各不相同,在使用扫描函数时应首先搞清楚他们之间的差异,如下将分别详细介绍每一种内存扫描函数是如何灵活运用的,最后将实现一个简易版内存查壳脚本,可快速定位目标程序加了什么壳。函数,该函数无需切换到模块入口处即可实现扫描特定模块内的特征,不过该函数只能返回找到的第一条记录,且需要传入扫描起始位置以及扫描长度,不过得到这些参数并不难。如果载入一个程序,默认停留在系统领空,则调用该函数你所能得到的特征记录只能是系统领空特定dll内的特征集。原创 2022-09-09 11:11:00 · 16373 阅读 · 0 评论 -
LyScript 插件命令返回封装
在LyScript插件中获取内置命令执行后的返回参数,可以通过使用一个寄存器进行中转操作。首先将寄存器进行压栈操作,然后执行内置命令并将结果存入寄存器,最后通过get_register函数获取寄存器内的参数。这样就可以在LyScript中获取到内置命令的返回值。原创 2022-07-21 21:29:00 · 15780 阅读 · 0 评论 -
LyScript 实现应用层钩子扫描器
LyScript 插件可以与调试器和反汇编器等工具集成,实现各种功能。要实现应用层钩子扫描器,需要使用 LyScript 结合调试器和Capstone反汇编器的功能来完成。Capstone 是一个轻量级的多平台、多架构的反汇编框架,该模块支持目前所有通用操作系统,反汇编架构几乎全部支持,本篇文章将运用LyScript插件结合Capstone反汇编引擎实现一个钩子扫描器。原创 2022-08-03 20:50:00 · 16364 阅读 · 0 评论 -
LyScript 通过PEB结构解析堆基址
LyScript中默认并没有提供获取进程堆基址的函数,不过却提供了获取PEB/TEB的函数,以PEB获取为例,可以调用。如上kernel模块基地址的获取已经实现了,那么堆基址的获取也就非常简单了,我们只需要找到。函数得到,当得到了PEB进程环境块的基地址,那么获取堆基址就变得很简单了。模块基地址为例,如果使用汇编获取则代码是这样的,根据这段代码我们举一反三。得到地址的代码就变得很简单了,只需要多次读取指针变量即可得到。读取内存指针即可得到堆地址,将堆地址获取封装成。的位置,将其读取出来即可。原创 2022-09-11 14:08:00 · 8030 阅读 · 0 评论 -
LyScriptTools 扩展Script模块
LyScriptTools模块是一个x64dbg的扩展包,该模块主要针对内置Script脚本命令的类版封装,使得用户可以方便的调用x64dbg中的内置脚本命令,该封装原理是利用了LyScript模块中的run_command_exec()命令实现的,如下所有的命令封装都是围绕这个API函数进行的。原创 2022-07-22 16:00:00 · 16110 阅读 · 0 评论 -
LyScript 获取上或下一条指令
LyScript插件默认没有提供获取上一条和下一条汇编指令的功能,但我们可以在LyScript插件API的基础上进行封装,以实现这个功能。我们可以定义两个函数,和,分别用于获取上一条和下一条汇编指令。在这些函数中,我们利用LyScript插件提供的API,通过读取当前指令的EIP值,对其进行加减操作,以获取前一条或后一条指令的地址,然后使用函数获取指令的反汇编文本。通过封装这些功能函数,我们可以在分析和调试过程中方便地获取当前指令的前一条和后一条指令,以便进一步分析和理解程序的执行流程。原创 2022-07-28 11:10:00 · 8084 阅读 · 0 评论 -
LyScript 计算片段Hash并写出Excel
本案例将学习运用LyScript计算特定程序中特定某些片段的Hash特征值,并通过xlsxwriter这个第三方模块将计算到的hash值存储成一个excel表格,本例中的知识点可以说已经具备了简单的表格输出能力,如果时间充裕完全可以实现自动化报告生成。第一步实现计算特定片段的特征值,此类代码实现原理用户传入一个rva相对地址以及读入指令长度,并通过内置的hashlib库实现计算内存段内指令的特征,如下代码先来实现计算两段指令特征。原创 2022-09-12 17:29:00 · 7930 阅读 · 0 评论 -
LyScript 寻找ROP漏洞指令片段
LyScript 插件增强了指令片段的查找功能,通过封装一些方法,可以更方便地在目标程序的内存空间中搜索和构造ROP攻击所需的代码片段。这样,攻击者可以利用LyScript插件来定位和利用目标程序中已存在的可用指令序列,从而构造自己的ROP链,实现对目标的攻击目的。原创 2022-07-26 19:59:00 · 16061 阅读 · 0 评论 -
LyScript 验证PE程序开启的保护
LyScript插件提供了对程序保护模式的验证功能。通过读取PE文件的头部结构,特别是OPTIONAL_HEADER.DllCharacteristics字段,可以判断程序是否开启了特定的保护模式,如DEP、ASLR、SafeSEH和CFG等。利用LyScript插件,我们可以轻松地获取程序的路径,并调用封装好的函数来读取PE文件并进行保护模式的验证。通过与特定的标志进行逻辑运算,我们可以判断是否开启了各种保护模式,并将结果保存在一个字典中。原创 2022-08-03 15:11:00 · 7968 阅读 · 0 评论 -
LyScript 实现绕过反调试保护
LyScript插件中内置的方法可实现各类反调试以及屏蔽特定API函数的功能,这类功能在应对病毒等恶意程序时非常有效,例如当程序调用特定API函数时我们可以将其拦截,从而实现保护系统在调试时不被破坏的目的。原创 2022-08-12 10:32:00 · 16399 阅读 · 0 评论 -
LyScriptTools 模块类API接口封装
LyScriptTools工具包是在LyScript模块基础上封装的工具包,其主要是二次封装LyScript插件实现的一些新功能,或者将特定功能组件拆分开形成的独立模块,此类模块可实现更加精细化的功能控制,在实际开发中推荐使用此种方式调用。原创 2022-08-04 18:17:00 · 7850 阅读 · 0 评论 -
LyScript 实现Hook改写MessageBox
LyScript 可实现自定义汇编指令的替换功能,用户可以自行编写一段汇编指令,将程序中特定的通用函数进行功能改写与转向操作,此功能原理是简单的Hook操作。接着我们就来实现功能改写,将弹窗中的消息替换成我们自己的版权信息,此处先给出代码。汇编写出的位置,此处是一个跳转,直接跳转到我们自己申请的内存空间内。当EIP走到此处后,跳转到我们自己构建的弹窗位置,此处的代码如下。处的指令将被替换,跳转到我们自己分配的内存中去。替换掉了,当运行弹窗后,就是执行我们自己的函数。是文本,这两处位置都被python中的。原创 2022-09-11 18:48:00 · 16249 阅读 · 0 评论 -
LyScriptTools 反汇编API接口封装
该系列是反汇编模块中的判断语句,主要用于验证当前或指定一个内存地址指令类型,如果是返回true否则返回false,该函数默认不传参数使用的是当前EIP所指向的位置,传入参数(十进制)则对指定位置进行判断。LyScriptTools模块实在LyScript模块反汇编基础上封装而成,其提供了更多的反汇编方法,可以更好的控制x64dbg完成自动化反汇编任务,API参考手册如下。我们来举一个使用案例,其实和模块调用原理是一样的,调用时先初始化,然后就可以使用内部的函数了。原创 2022-08-04 21:28:00 · 15957 阅读 · 0 评论 -
LyScript 插件实现UPX脱壳
LyScript插件提供了对压缩壳的快速脱壳操作的功能。目前,LyScript插件支持两种脱壳方式,以帮助用户有效地解压被壳保护的程序。这两种脱壳方式使得用户能够根据实际情况选择最合适的方法来解压被壳保护的程序。无论是通过自己编写脱壳过程还是加载现有的脱壳脚本,LyScript插件都为用户提供了强大的工具和功能,以简化和加速脱壳操作的过程。原创 2022-08-12 17:05:00 · 8264 阅读 · 0 评论 -
LyScript 实现对内存堆栈扫描
LyScript插件提供了三种基本的堆栈操作方法:push_stack用于入栈,pop_stack用于出栈,peek_stack用于检查指定堆栈位置处的内存参数。其中,peek_stack函数可以输出堆栈中指定位置的十进制有符号长整数。为了进行堆栈扫描或堆栈地址的检测,我们需要进行有符号与无符号数之间的转换操作。原创 2022-08-03 10:19:00 · 16054 阅读 · 0 评论 -
LyScript 插件官方API调用案例
LyScript插件API函数是一组可编程接口,提供了一系列方法供用户使用。为了帮助用户更好地了解这些API函数的使用方法与技巧,插件作者实现了一些通用案例,演示了这些API函数如何灵活地组合运用。这些案例能够帮助用户通过自行研究学习API函数的参数传递,快速掌握官方API函数的使用方法与技巧,并在实际应用中发挥更大的作用。原创 2022-08-14 20:08:00 · 16384 阅读 · 0 评论