优雅地废弃代码
Python 中的 @deprecated 装饰器:优雅地废弃代码在软件开发过程中,我们经常会遇到需要废弃旧代码的情况。这可能是因为代码存在安全问题、性能问题,或者是因为有了更好的替代方案。Python 提供了一种优雅的方式来处理这种情况,那就是使用 @deprecated 装饰器。本文将详细介绍 @deprecated 装饰器的使用方法、实现原理以及最佳实践。 什么是 @deprecated 装饰器?@deprecated 装饰器是一个用于标记函数、方法或类为已废弃的工具。当被标记的代码被调用时,它会触发一个 DeprecationWarning 警告,提醒开发者该功能将在未来版本中被移除或更改。 如何使用 @deprecated 装饰器?Python 标准库中的 warnings 模块提供了 warn 函数,可以用来发出警告。结合 functools 模块中的 wraps 装饰器,我们可以创建一个自定义的 @deprecated 装饰器。 12345678910111213import warningsfrom functools import wrapsdef...
流式返回
什么是web流式返回流式返回,顾名思义,就是将返回的数据流式返回给客户端,而不是等待所有数据都准备好再返回给客户端。这样做的优点是,客户端可以在数据传输的过程中就开始处理数据,而不需要等待所有数据都传输完成。 如何实现web流式返回实现web流式返回的方式有很多种,下面介绍几种常见的方式: 使用HTTP/2协议HTTP/2协议支持多路复用,可以同时传输多个请求和响应,从而实现流式返回。使用HTTP/2协议可以实现更高效的流式返回。 使用WebSocket协议WebSocket协议可以实现全双工通信,可以实时地将数据从服务器推送到客户端。使用WebSocket协议可以实现实时的流式返回。以python websocket为例: 1234567891011import asyncioimport websocketsasync def echo(websocket, path): async for message in websocket: await websocket.send(message)start_server =...
剪切板取证
代码如下打开剪贴板: 1win32clipboard.OpenClipboard() 这行代码打开剪贴板,以便读取其中的数据。 获取剪贴板中的文本数据: 1text = win32clipboard.GetClipboardData(win32clipboard.CF_UNICODETEXT) 这行代码从剪贴板中获取 Unicode 文本数据。 构建源数据字典: 1234source_data = { "type": "txt", "content": text} 这行代码将获取到的文本数据封装成一个字典,其中 type 表示数据类型为文本,content 是文本的具体内容。 处理数据并写入文件: 123clean_data = get_line(self, source_data, self.display)data = json.dumps(clean_data, ensure_ascii=False)write_file(self.file, data) 这行代码调用...
获取windows的USB记录
USBDeview某个刑侦专家说过,走过必定留下痕迹,所以在一台电脑上,存在过的USB记录也是可以获取的。当然想法去解析记录可以,也可以直接使用USBDeview,解析软件最终结果。USBDeview 是一款可以列出当前连接到你的计算机上或者曾经连接到你的计算机上的所有 USB 设备的小型实用工具。 实现检查并终止指定进程: 12345678910111213pe_name = "USBDeview.exe"for process in psutil.process_iter(): try: name = process.name() except: name = "" try: if name == pe_name: setting.log.error("检测到%s已在运行, 正在终止重启" % name) process.terminate() except Exception as e: ...
获取windows的环境变量
遍历系统环境变量: 1for path in wmi.WMI().Win32_Environment(): 这部分代码使用 wmi 模块遍历系统中的所有环境变量。 提取每个环境变量的信息: 12345678item = { "Name": getattr(path, "Name"), "SystemVariable": getattr(path, "SystemVariable"), "UserName": getattr(path, "UserName"), "Description": getattr(path, "Description"), "Caption": getattr(path, "Caption"), "VariableValue": getattr(path,...
浏览器历史记录
浏览器历史记录浏览器历史记录会以db后缀文件的形式,以明文存放在本地目录,用户可以通过解析这个文件查看浏览器最近访问,包括访问时间,网站图标等等。chrome内核的浏览器跟Firefox浏览器虽然都是保存在db文件中,但是数据结构完全不一样,需要做区分处理。 chrome浏览器获取所有用户信息: 12for user in wmi.WMI().Win32_UserAccount(): user_name = user.Name 这行代码使用 wmi 模块获取所有用户账户信息,并遍历这些信息,提取每个用户的用户名。 初始化 MD5 列表: 1md5_list = [] 这行代码创建了一个空列表,用于存储已经处理过的历史记录文件的 MD5 值,以避免重复处理。 获取每个用户的历史记录文件路径: 123for path in self.get_path(user_name): if os.path.isdir(path): continue 这行代码调用 self.get_path(user_name)...
开机自启动
开机自启动自启动程序是指在系统启动时自动运行的程序。这些程序可能会影响系统的启动速度和性能,因此了解如何获取和管理这些程序是非常重要的。本文将介绍一种使用 Python 实现的方法,通过调用系统命令和处理 CSV 文件来获取自启动程序的信息。 windows代码实现确定 autorunsc 程序的名称: 1autorunsc_name = "autorunsc64.exe" if platform.architecture()[0] == "64bit" else "autorunsc32.exe" 这行代码根据当前系统的架构(64 位或 32 位)来确定 autorunsc 程序的文件名。终止正在运行的 autorunsc 进程: 1234567891011for process in psutil.process_iter(): try: name = process.name() except: name = "" try: if...
后台终端的使用
Screen命令使用指南screen 是一个非常强大的命令行工具,它允许用户在远程服务器上开启多个终端会话,并在它们之间自由切换。它特别适合于需要长时间运行的命令和断线后恢复的场景。 安装 Screen在大多数 Linux 发行版中,screen 可以通过包管理器安装。以下是在不同系统中安装 screen 的命令: Ubuntu/Debian:1sudo apt-get install screen CentOS/RHEL:1sudo yum install screen Fedora:1sudo dnf install screen 基本使用创建新的 Screen 会话要创建一个新的 screen 会话,可以使用以下命令: 1screen -S session_name 这里 session_name 是你为会话指定的名称,你可以用它来标识和管理不同的会话。 列出当前的 Screen 会话要查看当前所有的 screen 会话,可以使用: 1screen -ls 这将列出所有活动的会话以及它们的状态。 重新连接到 Screen 会话如果你之前创建了一个 screen...
工具LastActivityView获取历史运行记录
LastActivityView查看电脑操作记录(LastActivityView)是一款简单而有用的软件,可以在列表中清清楚楚的看到你的电脑使用历史记录。该软件直接调用系统日志,能显示安装软件、系统启动、关机、网络连接、执行的程序等几乎所有的电脑使用日志,让你更熟悉电脑的行为。 代码演示终止指定进程: 123456789101112pe_name = "LastActivityView.exe"for process in psutil.process_iter(): try: name = process.name() except: name = "" try: if name == pe_name: process.terminate() except Exception as e: setting.log.error("终止垃圾进程失败,原因: {}".format(str(e))) ...
查询windows电脑当中的可移动设备
Win32_DiskDrive在WMI(Windows Management Instrumentation)中,Win32_DiskDrive 类的 MediaType 属性用于描述磁盘驱动器的媒体类型。根据微软的文档,MediaType 属性可以取以下值: Unknown:未知的媒体类型 Fixed hard disk media:固定硬盘媒体 Removable media:可移动媒体,如USB闪存驱动器、软盘等 CD-ROM media:CD-ROM媒体 RAM disk:RAM磁盘 Flash memory:闪存 Network disk:网络磁盘 Virtual disk:虚拟磁盘 Optical disk:光盘 Magnetic disk:磁盘 Other:其他类型的媒体 代码逻辑当前代码的主要功能是通过WMI(Windows Management...














