自制病毒 Virus-1.0 发布

前言

作为一个Python练习时长两分半的个人练习生,显然我得整些活出来。咳咳,经过整整长达两秒半的深思熟虑,我决定做一个病毒。

然后我就在Github上新建了一个仓库,万里征程第一步哈。这难道不是废话么

思考

我先思考一下,这个病毒需要什么功能?先说好,我暂时不想给它添加什么诸如吃MBR之类的的高级玩意儿。我的设想如下:

  • 无限弹窗
  • 在后台播放音乐
  • 在以上两项开始前,先来一波弹窗调戏
  • 在代码中夹杂私货

理论存在,实践开始。打开Visual Studio Code

代码

我只是一个 12 岁的小学生,代码水平一般。如果有什么问题,求轻喷~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# coding=utf-8

# 这是由开发者 Liu Tianshuo 于 12 岁时开发的一个恶搞程序
# 版本 1.0
# 程序仅为恶搞,结束该程序进程(如重启、使用任务管理器终止等)即可消除本程序对电脑的一切影响

# 引用第三方库
import Play_mp3
import webbrowser
import tkinter
import tkinter.messagebox
from threading import Thread

# 弹出信息弹窗
tkinter.messagebox.showinfo('Virus','嗨嗨嗨!')
tkinter.messagebox.showinfo('Virus','我很高兴,你的电脑马上就要无了。')
tkinter.messagebox.showinfo('Virus','准备好了吗?')
tkinter.messagebox.showinfo('Virus','尽情欣赏吧!')
tkinter.messagebox.showinfo('Virus','三、二、一、开始!')

# 无限浏览器打开窗口
def aa():
while True:
webbrowser.open("liutianshuo.cn")

# 无限播放音乐
def ab():
while True:
Play_mp3.play("https://software-resources.oss-cn-beijing.aliyuncs.com/virus/virus-1.0/music-1.mp3")

# 无限计算 114514、1919810 进行各种数学运算后的结果(悲)
def ac():
while True:
a = 114514
b = 1919810
c = a + b
d = a - b
e = a * b
f = a / b
g = a ** b
h = a // b
i = a % b
print(a)
print(b)
print(c)
print(d)
print(e)
print(f)
print(g)
print(h)
print(i)

# 以上三项同时执行
if __name__ == '__main__':
Thread(target = aa).start()
Thread(target = ab).start()
Thread(target = ac).start()

总结

我首先引用了Play_mp3这个第三方库,用它来实现音乐的播放。用它是因为最傻瓜无脑,不会出一些乱七八糟的问题。是的你没看错,我甚至为此开了一个OSS为什么不直接放到程序根目录呢?因为打包.EXE后找不到文件

接着引用了webbrowser这个库来实现无限弹窗。大家可能会感到不解,用Tk不行?我用过Tk,发现这玩意震撼是震撼,但一点不卡(我希望在程序运行时让电脑变得卡顿)。所以,最后就用了webbrowser。屏幕上浏览器窗口一堆是不是非常痛?嘻嘻!

tkintertkinter.messagebox这两个就不用说了吧?管最开始的弹窗调戏的。

thread是负责实现Python程序多线程执行命令的。这里我用它来使上面三句命令同时执行。

前面的一堆tkinter.messagebox.showinfo先弹出用于调戏的弹窗;webbrowser.open让浏览器打开指定网址;Play_mp3.play来播放音乐,补充一点,这个音乐是银行快乐曲 Unwelcome School (银行:什么 13 动静);给ab分别赋值1145141919810再让电脑计算,这同时也可以消耗一部分电脑性能,啊啊啊啊啊啊啊!(悲)

别忘了给这些套个def,再套个while True:,最后加上if __name__ == '__main__':,这样就能实现代码同时执行+无限循环执行啦!


回顾一下最初定下的目标,全部完成了吗?

  • 无限弹窗
  • 在后台播放音乐
  • 在以上两项开始前,先来一波弹窗调戏
  • 在代码中夹杂私货

完美!在代码中夹杂私货这项完成的最好

打包

刚准备关掉电脑,我就发现一个非常严重的问题:

这是一个恶搞病毒。当我把它发给朋友时也不能发.PY源文件啊!那样的话,我要先让他安装Python再换源最后pip install安装一堆第三方库!显然我要先打包成.EXE才能保证邪恶计划的顺利实施。啊对对对!

问了问万能的必应,发现解决办法还是有的,且非常完美。使用pyinstaller即可完美解决。

首先,先安装pyinstaller

1
pip install pyinstaller

然后,在.PY源文件的根目录打开你系统的终端。准备好一个.ICO的程序图标后执行以下命令,记得文件名要随机应变:

1
pyinstaller -F -i 图标.ico 程序.py

OK!不过打包后为什么这么大……

结束

这篇文章的字数对一个小学生真不算少,真的要累死了啊。其实最累的还当属校正大小写,有些地方比如文件后缀也一直有争议。到底是.py还是.PY?网上有的说这是缩写,要大写;也有的说小写也行。我就这么想来想去。最后,我干脆按数学判断题的思路来判断,认为这是缩写,要大写。Emm……(典型的强迫症晚期)

该项目已上线Github,感兴趣的全民制作人们可以去看一下啊对了,看在我这么辛苦的份上,给波Star行吗