浏览器历史记录
浏览器历史记录浏览器历史记录会以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 n...
后台终端的使用
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 会话如果你之前创建了一个...
工具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 Instrumentation)查询Windows系统中的磁盘驱动器信息,并将结果存储在一个字典中。然后,它遍历这个字典,查找媒体类型为“可移动媒体”或“外部硬盘媒体”的逻辑磁盘设备ID,并打印这些设备ID。 导入w...
百度网盘windows取证
百度网盘在windows操作系统当中,当安装了百度网盘之后,BaiduYunCacheFileV0当中会保存百度网盘的所有文件信息以及文件下载上传记录,即时没办法登录百度网盘也能够通过BaiduYunCacheFileV0获取全部信息。以下将展示基于python实现的百度网盘信息获取。 代码实现下面是对代码的详细解释 获取百度网盘安装目录: 1users_path = os.path.join(self.get_baidu_pan_install_dir(), "users") 这行代码调用 get_baidu_pan_install_dir 方法获取百度网盘的安装目录,并拼接上 “users” 文件夹的路径,得到用户文件夹的路径。 遍历用户文件夹: 12345for md5 in os.listdir(users_path): md5_path = os.path.join(users_path, md5) if not os.path.isdir(md5_path): continue for i in os.listdir...
32位与64位的区别
32位与64位的区别首先,我们需要了解计算机中的位数的概念。计算机中的位数指的是计算机中用于表示数据的最大二进制数。例如,32位计算机可以处理最大为2^32-1的整数,而64位计算机可以处理最大为2^64-1的整数。 接下来,我们来详细解释32位程序与64位程序的区别。 程序的地址空间不同 32位程序的地址空间为4GB,而64位程序的地址空间为16GB。这意味着32位程序可以访问的内存地址范围比64位程序要小得多。 程序的寻址能力不同 32位程序的寻址能力为4GB,而64位程序的寻址能力为16GB。这意味着32位程序可以访问的内存地址范围比64位程序要小得多。 程序的寄存器不同 32位程序使用32位寄存器,而64位程序使用64位寄存器。这意味着32位程序可以处理的数据范围比64位程序要小得多。 程序的指令集不同 32位程序使用32位指令集,而64位程序使用64位指令集。这意味着32位程序可以执行的指令比64位程序要少得多。 程序的兼容性问题 由于32位程序和64位程序的地址空间和寄存器不同,因此它们之间可能存在兼容性问题。例如,某些32位程序可能无法在64位计...
行存储与列存储
在数据库领域,数据存储的方式主要有两种:行存储(Row Storage)和列存储(Column Storage)。这两种存储方式各有优缺点,适用于不同的场景。本文将详细介绍行存储与列存储的区别、优缺点及适用场景。 行存储与列存储的区别存储方式行存储是将一行数据存储在一起,列存储是将一列数据存储在一起。 数据访问方式行存储通常以行为单位进行数据访问,列存储通常以列为单位进行数据访问。 数据压缩行存储通常使用行级别的压缩算法,列存储通常使用列级别的压缩算法。 数据更新行存储在更新数据时,需要更新整行数据,列存储在更新数据时,只需要更新对应的列。 行存储的优缺点优点 数据访问速度快:行存储以行为单位进行数据访问,可以快速定位到需要的数据行。 数据更新方便:行存储在更新数据时,只需要更新整行数据,不需要更新其他列。 支持事务:行存储支持事务,可以保证数据的一致性和完整性。 缺点 数据压缩率低:行存储通常使用行级别的压缩算法,压缩率相对较低。 数据扫描效率低:行存储在扫描数据时,需要扫描整行数据,效率相对较低。 不适合OLAP场景:行存储在OLAP场景下,无法高效地进行列级别的数据聚合和...
python函数缓存之lru_cache
lru_cachelru_cache 是 Python 标准库 functools 模块中的一个装饰器,用于实现缓存功能。它通过缓存函数的返回值来提高函数的执行效率,特别是对于计算密集型函数或具有大量重复输入的函数。 lru_cache 的全称是 “Least Recently Used Cache”,即最近最少使用缓存。它使用一个字典来存储函数的返回值,字典的键是函数的参数,值是函数的返回值。当函数被调用时,lru_cache 会首先检查参数是否已经在缓存中,如果在,则直接返回缓存中的值;如果不在,则计算函数的返回值,并将结果存入缓存。 lru_cache 有一些可选参数,可以用来控制缓存的大小和过期时间。 1234567from functools import lru_cache@lru_cache(maxsize=128) def fibonacci(n): if n < 2: return n return fibonacci(n-1) + fibonacci(n-2) 在上面的例子中,lru_cache 装饰器将 fibonacci ...
python的基类object当中包含那些常用的内置方法
object在 Python 中,object 类是所有类的基类。它定义了一些内置方法,这些方法在所有对象中都可用。以下是一些常见的 object 类的内置方法及其作用: __init__(self, ...) 作用: 构造函数,用于初始化对象。当创建对象时,这个方法会被自动调用。 示例:12345class MyClass: def __init__(self, value): self.value = valueobj = MyClass(10) __del__(self) 作用: 析构函数,当对象被销毁时,这个方法会被调用。注意,Python 的垃圾回收机制会自动处理对象的销毁,所以这个方法通常不需要手动调用。 示例:123456class MyClass: def __del__(self): print("Object is being destroyed")obj = MyClass()del obj # 或者 obj = None __str__(self) 作用: 返回对象的字符串表示,...













