Python-利用os,tkinter库编写一个伪恶意程序文件(Pro版)
前言:上一期我们简单学习了如何编写一个多次弹窗警告用户的exe伪恶意文件。我们知道了把Python初始文件编译为exe文件后,程序在没有Python环境的情况下也能正常运行。我们上次编写的程序仅仅只是伪造系统正在执行关机命令前的倒计时的假象,实际系统最后并不会执行关机命令。那么好,本次我们将学习如何让程序先进行倒计时警告用户系统即将关机,最后执行关机指令。
编程思路:本次编程我们是对上次程序的修改优化(即补充关机指令,优化弹窗显示)并补充上次所讲的需要扩展讲解的内容。因次编程思路与上次相比基本无异 -先从主题入手,tkinter,os库是主体;其次,多次的弹窗,我们需要多线程,因此threading库必不可少;为了伪造系统的随机性,我们需要random库;为了获取系统的真实信息及执行系统操作,我们需要os,platform两个库;为了表现程序真实性,我们需要time库......至此,所有库都准备好了-tkinter,random,time,os,platform,threading。
import tkinter
import os
import threading
import time
import random
import platform
import ctypes
1,弹窗颜色修改,优化
上次我们为了编程方便,使用十种颜色:红,橙,黄,绿,蓝,紫,白,黑,金,灰)来给我们的弹窗上色。但是运行之后我们发现了两个需要改进的地方:一,弹窗颜色中有黑色,这导致程序运行后弹出的弹窗匹配到黑色时,窗口显示的内容会完全看不清楚,严重影响程序的整体运行效果;二,颜色种类过于单一,导致弹窗主体颜色重复率很高。因次本次编程中我们将解决这两个主要问题:一,删除列表s中的黑色;二,增加列表s中的颜色数量(扩充至15个)。(当然,以上只是我的个人感受,大家可自行调整,挑选自己喜欢的颜色)。(如下所示)
s=['red','orange','yellow','green','blue','teal','purple','peru','gold','violet','salmon','navy','tan','maroon','azure']
2,主窗口优化
上次我们利用while函数对倒计时迭代器的返回内容进行一对一匹配(即不让弹窗颜色始终保持原状)。但是后面我们发现程序运行后while循环的效果与删除后无异,秉持代码追求更简洁,更高效的原则,我们删除了while循环(wihle循环影响程序运行速度)。(如下所示)
def windows():window = tkinter.Tk()window.title('{} {} {} {}警告!!!'.format(os.name,platform.machine(),platform.node(),platform.version()))window.geometry("{}x{}".format(1160,600))number=random.randint(0,14)tkinter.Label(window,text='{}系统将在{}秒后自动关机'.format(platform.system(),count_down()[0])*1,font=('楷体',30),bg='{}'.format(s[number]),width=1160,height=600).pack()window.mainloop()count_down().remove(count_down()[0])
3,添加关机执行单元
在 Python 中,可以使用 os 模块中的 os.system() 函数来执行系统命令。因此,可以使用如下命令执行关机:
os.system('shutdown -s -t 0')
但是注意:这个命令执行的并不是强制关机。因此当系统关机前还有正在运行的程序时,在最后关机时系统会提示用户是否确认关机,此时用户有撤销关机的权利。因此,如果你觉得你需要程序执行强制关机来整蛊室友,可以将以上命令修改为以下命令:
os.system('shutdown -f -s -t 0')
注意:这种方法只能在 Windows 系统中使用,在其他操作系统中可能不能正常工作。需要注意的是,强制关机会导致程序强行终止,可能会导致未保存的数据丢失,因此应谨慎使用,别让室友把你打成猪头。
程序衔接(如下所示)
time.sleep(1)
os.system('shutdown -f -s -t 0')
4,完整代码展示:
import tkinter
import os
import threading
import time
import random
import platform
import ctypess=['red','orange','yellow','green','blue','teal','purple','peru','gold','violet','salmon','navy','tan','maroon','azure']begin=12
def count_down():seconds=[]for i in range(begin,0,-1):seconds.append(i)return secondsdef windows():window = tkinter.Tk()window.title('{} {} {} {}警告!!!'.format(os.name,platform.machine(),platform.node(),platform.version()))window.geometry("{}x{}".format(1160,600))number=random.randint(0,14)tkinter.Label(window,text='{}系统将在{}秒后自动关机'.format(platform.system(),count_down()[0])*1,font=('楷体',30),bg='{}'.format(s[number]),width=1160,height=600).pack()window.mainloop()count_down().remove(count_down()[0])while begin>0:mark=threading.Thread(target=windows)mark.start()time.sleep(1)begin-=1time.sleep(1)
os.system('shutdown -f -s -t 0')
5,运行效果展示:


后面将Python初始文件编译为exe文件的步骤我就不再赘述了,新手小白可以看一下我的上一篇文章,谢谢!
拓展延伸:
一,什么是Python第三方库?
Python第三方库是除Python官方提供的标准库之外,由第三方公司、社区或个人开发并发布的库。
二,Python标准库与第三方库的联系和区别
Python标准库和第三方库是Python编程中常用的两种不同类型的库,它们在安装方式、来源、可靠性和功能等方面存在一些区别。
三,Pyinstaller的常用命令有哪些?
-h, --help 显示帮助信息并退出
-v, --version 显示程序版本信息并退出
-F, --onefile 生成单个可执行文件(默认为多文件捆绑包)
-D, --onedir 生成一个包含多个文件的目录作为可执行程序
-a, --ascii 不包含 Unicode 字符集支持
-d, --debug 产生 debug 版本的可执行文件
-w, --windowed, --noconsolc 指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c, --nowindowed, --console 指定使用命令行窗口运行程序(仅对 Windows 有效)
-o DIR, --out=DIR 指定 spec 文件的生成目录
-p DIR, --path=DIR 设置 Python 导入模块的路径
-n NAME, --name=NAME 指定项目(产生的 spec)名字
-i ICON, --icon=ICON 为 Windows 可执行文件指定图标
-add-data SOURCE:DEST 添加非 Python 文件或目录到打包文件中
-add-binary SOURCE:DEST 添加其他二进制文件到可执行文件中
-p DIR, --paths DIR 搜索导入的路径(如使用 PYTHONPATH)
-h, --help 显示帮助信息并退出
-v, --version 显示程序版本信息并退出
-F, --onefile 生成单个可执行文件(默认为多文件捆绑包)
-D, --onedir 生成一个包含多个文件的目录作为可执行程序
-a, --ascii 不包含 Unicode 字符集支持
-d, --debug 产生 debug 版本的可执行文件
-w, --windowed, --noconsolc 指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c, --nowindowed, --console 指定使用命令行窗口运行程序(仅对 Windows 有效)
-o DIR, --out=DIR 指定 spec 文件的生成目录
-p DIR, --path=DIR 设置 Python 导入模块的路径
-n NAME, --name=NAME 指定项目(产生的 spec)名字
-i ICON, --icon=ICON 为 Windows 可执行文件指定图标
-add-data SOURCE:DEST 添加非 Python 文件或目录到打包文件中
-add-binary SOURCE:DEST 添加其他二进制文件到可文件中
期待你的交流指教,我是闪云-微星,我们下期再见!
相关文章:
Python-利用os,tkinter库编写一个伪恶意程序文件(Pro版)
前言:上一期我们简单学习了如何编写一个多次弹窗警告用户的exe伪恶意文件。我们知道了把Python初始文件编译为exe文件后,程序在没有Python环境的情况下也能正常运行。我们上次编写的程序仅仅只是伪造系统正在执行关机命令前的倒计时的假象,实…...
Oracle视频基础1.4.4练习
1.4.4 [dbs] 删干净上次创建的bbk ll rm -f *dbf ll rm -f spfilebbk.ora clear ll创建bbk的pfile,准备对应的目录 ll strings spfilewilson.ora | more strings spfilewilson.ora > initbbk.ora :%s/wilson/bbk :%s/*\.//g :wq ll vi initbbk.ora####### 创…...
GOF的C++软件设计模式的分类和模式名称
“GOF” 指的是 “Gang of Four”,即“四人帮”,他们是指 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides。这四位作者在其著作《Design Patterns: Elements of Reusable Object-Oriented Software》中定义了23种设计模式,这些…...
有向图的完全可达性(有向图搜索全路径的问题) C#DFs
在考察输入输出方面我觉得是道难题了 第一次遇见邻接表的数据结构该怎么声明 卡码网105 在力扣没找见完全相同的题 感觉需要多练习多复习这种类型的题 105. 有向图的完全可达性 题目描述 给定一个有向图,包含 N 个节点,节点编号分别为 1&…...
前端开发实现自定义勾选/自定义样式,可复选,可取消勾选
基于后端返回数组实现多选、复选 以下代码基于vue2,如果有需要React/Vue3或者其他框架代码的,可以通过国内直连GPT4o进行代码转换,转换正确率99% 前端代码如下(直接拷贝到你的vue代码即可): <!-- CustomCheckboxList.vue --&g…...
鸿蒙-promptAction.showToast基于PC屏幕底部提示
PC端app缩小,右击出菜单后,点菜单项 菜单关闭,并弹promptAction.showToast提示,但提示是基于PC底部弹提示的,需要的是基于app底部弹提示 原因是UIContext是右击菜单的UIContext,需要拿到菜单下面UI的UICont…...
Vert.x,应用监控 - 全链路跟踪,基于Zipkin
关于Zipkin Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),能够收集服务间调用的时序数据,提供调用链路的追踪。Zipkin每一个调用链路通过一个trace id来串联起来,通过trace id,就能够直接定位到这次调…...
Rust常用数据结构教程 序列
文章目录 一、Vec1.Vec与堆栈2.什么时候需要Vec3.get()方法4.与枚举的结合 二、VecDeque1.什么情况适合VecDeque2.VecDeque的方法 三、LinkedList1.什么时候用LinkedList 参考 一、Vec 可变数组(vector)数组存储在heap上,在运行时(runtime)可以增加或减少数组 长度 有人把Ve…...
智慧城市路面垃圾识别系统产品介绍方案
方案介绍 智慧城市中的路面垃圾识别算法通常基于深度学习框架,这些算法因其在速度和精度上的优势而被广泛采用。这些模型能够通过训练识别多种类型的垃圾,包括塑料袋、纸屑、玻璃瓶等。系统通过训练深度学习模型,使其能够识别并定位多种类型…...
网络安全:构建坚固的数字堡垒
网络安全:构建坚固的数字堡垒 在当今数字化时代,网络安全已经成为企业和个人不可忽视的重要议题。随着互联网的普及和信息技术的快速发展,网络攻击、数据泄露和隐私侵犯等问题日益严重,给企业和个人带来了巨大的风险和损失。本文…...
LeetCode题练习与总结:打乱数组--384
一、题目描述 给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。打乱后,数组的所有排列应该是 等可能 的。 实现 Solution class: Solution(int[] nums) 使用整数数组 nums 初始化对象int[] reset() 重设数组到它的初始状态并返回int[]…...
科技改变生活:最新智能开关、调光器及插座产品亮相
根据QYResearch调研团队的最新力作《欧洲开关、调光器和插座市场报告2023-2029》显示,预计到2029年,欧洲开关、调光器和插座市场的规模将攀升至57.8亿美元,并且在接下来的几年里,将以4.2%的复合年增长率(CAGRÿ…...
传统RAG流程;密集检索器,稀疏检索器:中文的M3E
目录 传统RAG流程 相似性搜索中:神经网络的密集检索器,稀疏检索器 密集检索器 BGE系列模型 text-embedding-ada-002模型 M3E模型 稀疏检索器 示例一:基于TF-IDF的稀疏检索器 示例二:基于BM25的稀疏检索器 稀疏检索器的特点与优势 传统RAG流程 相似性搜索中:神经…...
基于统计方法的语言模型
基于统计方法的语言模型 基于统计方法的语言模型主要是指利用统计学原理和方法来构建的语言模型,这类模型通过分析和学习大量语料库中的语言数据,来预测词、短语或句子出现的概率。 N-gram模型:这是最基础的统计语言模型之一,它基…...
Flux comfyui 部署笔记,整合包下载
目录 comfyui启动: 1、下载 Flux 模型 2、Flux 库位置 工作流示例: Flux学习资料免费分享 comfyui启动: # 配置下载模型走镜像站 export HF_ENDPOINT="https://hf-mirror.com" python3 main.py --listen 0.0.0.0 --port 8188 vscode 点击 port 映射到本地,…...
高性能分布式缓存Redis-数据管理与性能提升之道
一、持久化原理 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此…...
BO-CNN-LSTM回归预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多输入单输出回归预测
BO-CNN-LSTM回归预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多输入单输出回归预测 目录 BO-CNN-LSTM回归预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多输入单输出回归预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 …...
DataWind将字符串数组拆出多行的方法
摘要: 可视化建模中先将字符串split为array再用explode(array)即可 可视化建模 进入“可视化建模”页面 1.1 新建任务 如果团队内没有可视化建模任务。请点击“新建任务”,输入名称并确定。 1.2 建立数据连接 在左边栏中选择“数据连接”,…...
try...catch 和then...catch的异同点分析
try…catch 和 then…catch 的异同点分析 在现代 JavaScript 编程中,异常处理和 Promise 的处理是非常常见的两种方式。try...catch 语句主要用于同步代码的异常处理,而 .then().catch() 是 Promise 中的异步处理方法。 1. 基础概念 1.1 try…catch …...
Mit6.S081-实验环境搭建
Mit6.S081-实验环境搭建 注:大家每次做一些操作的时候觉得不太保险就先把虚拟机克隆一份 前言 qemu(quick emulator):这是一个模拟硬件环境的软件,利用它可以运行我们编译好的操作系统。 准备一个Linux系统…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
