嘿,各位好奇宝宝们!今天,咱们来聊聊神秘的密码世界,用 Python 来玩转加密、解密,甚至... ... 虚拟的“勒索软件”!
Python 带你玩密码:从生成到勒索软件 (纯属虚构,切勿模仿!)
敲黑板! 这篇文章只是为了满足大家的好奇心,学习密码学知识,千万不要用于非法活动!记住,我们是遵纪守法的好公民!
第一章:密码生成器 - 像摇号一样简单!
首先,我们需要一把独一无二的“钥匙” - 密码!与其绞尽脑汁地想,不如让 Python 帮我们生成一个!
from cryptography.fernet import Fernet
def generate_key():
"""生成密钥,就像摇号一样随机!"""
key = Fernet.generate_key()
return key.decode()
my_key = generate_key()
print(f"新鲜出炉的密钥是:{my_key}")
这段代码会生成一个随机的密钥,就像摇号一样,每次运行结果都不一样!
第二章:加密 - 把你的秘密藏起来!
有了密钥,我们就可以加密文件了,就像把秘密藏进保险箱!
from cryptography.fernet import Fernet
def encrypt_file(key, filename):
"""加密文件,比藏猫猫还安全!"""
f = Fernet(key.encode())
with open(filename, "rb") as file:
original_data = file.read()
encrypted_data = f.encrypt(original_data)
with open(filename, "wb") as file:
file.write(encrypted_data)
# 假设我们要加密的文件是 "secret.txt"
encrypt_file(my_key, "secret.txt")
print("嘘!文件已经被加密了,只有拥有密钥的人才能打开!")
现在,"secret.txt" 里的内容已经被加密成乱码了,只有用正确的密钥才能解密!
第三章:解密 - 打开秘密宝藏!
解密就像用钥匙打开宝藏箱,只有正确的密钥才能解开秘密!
from cryptography.fernet import Fernet
def decrypt_file(key, filename):
"""解密文件,就像打开宝藏箱一样激动!"""
f = Fernet(key.encode())
with open(filename, "rb") as file:
encrypted_data = file.read()
decrypted_data = f.decrypt(encrypted_data)
with open(filename, "wb") as file:
file.write(decrypted_data)
decrypt_file(my_key, "secret.txt")
print("看!秘密宝藏打开了!")
输入正确的密钥,"secret.txt" 就恢复了原样,是不是很神奇?
第四章:“勒索软件” - 纯属虚构,切勿模仿!
现在,让我们来玩个“危险”的游戏 - 模拟“勒索软件”!当然,这只是为了学习,千万不要用来做坏事!
# -*- coding: utf-8 -*-
# @Author: 黑客驰
# @Website: hackerchi.top
import os
import tkinter as tk
from tkinter import filedialog, messagebox
from cryptography.fernet import Fernet
def generate_key():
"""生成密钥"""
key = Fernet.generate_key()
key_entry.delete(0, tk.END)
key_entry.insert(0, key.decode())
def browse_file():
"""选择文件"""
filename = filedialog.askopenfilename()
file_entry.delete(0, tk.END)
file_entry.insert(0, filename)
def process_file():
"""处理文件加密/解密"""
mode = mode_var.get()
key = key_entry.get()
filename = file_entry.get()
if not filename:
messagebox.showerror("错误", "请选择文件!")
return
if mode == "encrypt":
if not key:
messagebox.showerror("错误", "请输入密钥!")
return
try:
encrypt_file(key.encode(), filename)
messagebox.showinfo("成功", f"文件已加密:{filename}")
except Exception as e:
messagebox.showerror("错误", f"加密失败:{e}")
else: # mode == "decrypt"
if not key:
messagebox.showerror("错误", "请输入密钥!")
return
try:
decrypt_file(key.encode(), filename)
messagebox.showinfo("成功", f"文件已解密:{filename}")
except Exception as e:
messagebox.showerror("错误", f"解密失败:{e}")
def encrypt_file(key, filename):
"""加密文件"""
f = Fernet(key)
with open(filename, "rb") as file:
original_data = file.read()
encrypted_data = f.encrypt(original_data)
with open(filename, "wb") as file:
file.write(encrypted_data)
def decrypt_file(key, filename):
"""解密文件"""
f = Fernet(key)
with open(filename, "rb") as file:
encrypted_data = file.read()
decrypted_data = f.decrypt(encrypted_data)
with open(filename, "wb") as file:
file.write(decrypted_data)
# 创建主窗口
window = tk.Tk()
window.title("【黑客驰】文件加密解密工具")
# 文件路径
file_label = tk.Label(window, text="文件路径:")
file_label.grid(row=0, column=0, padx=5, pady=5)
file_entry = tk.Entry(window, width=50)
file_entry.grid(row=0, column=1, padx=5, pady=5)
browse_button = tk.Button(window, text="浏览", command=browse_file)
browse_button.grid(row=0, column=2, padx=5, pady=5)
# 密钥
key_label = tk.Label(window, text="密钥:")
key_label.grid(row=1, column=0, padx=5, pady=5)
key_entry = tk.Entry(window, width=50)
key_entry.grid(row=1, column=1, padx=5, pady=5)
generate_button = tk.Button(window, text="生成密钥", command=generate_key)
generate_button.grid(row=1, column=2, padx=5, pady=5)
# 模式选择
mode_var = tk.StringVar(value="encrypt")
encrypt_radio = tk.Radiobutton(window, text="加密", variable=mode_var, value="encrypt")
encrypt_radio.grid(row=2, column=0, padx=5, pady=5)
decrypt_radio = tk.Radiobutton(window, text="解密", variable=mode_var, value="decrypt")
decrypt_radio.grid(row=2, column=1, padx=5, pady=5)
# 处理按钮
process_button = tk.Button(window, text="执行", command=process_file)
process_button.grid(row=3, column=1, padx=5, pady=10)
window.mainloop()
这段代码结合了之前的功能,并用图形界面让操作更直观。但记住,这只是一个模拟,真正的勒索软件可比这复杂得多,而且危害极大!
源代码见官网,点击原文链接即可查看和复制
结尾:
通过今天的学习,我们了解了密码生成、加密、解密的基本原理,甚至模拟了“勒索软件”。希望大家在玩转代码的同时,也要牢记网络安全的重要性,做一个负责任的网络公民!
再次强调: 以上内容仅供学习参考,请勿用于非法用途!
原文始发于微信公众号(黑客驰):Python :从生成到勒索软件 (纯属虚构,切勿模仿!)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论