Python :从生成到勒索软件 (纯属虚构,切勿模仿!)

admin 2024年5月31日00:39:34评论9 views字数 3963阅读13分12秒阅读模式
Python :从生成到勒索软件 (纯属虚构,切勿模仿!)

嘿,各位好奇宝宝们!今天,咱们来聊聊神秘的密码世界,用 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" 就恢复了原样,是不是很神奇?

第四章:“勒索软件” - 纯属虚构,切勿模仿!

现在,让我们来玩个“危险”的游戏 - 模拟“勒索软件”!当然,这只是为了学习,千万不要用来做坏事!

Python :从生成到勒索软件 (纯属虚构,切勿模仿!)
加密之前的文件
Python :从生成到勒索软件 (纯属虚构,切勿模仿!)
图形化选择文件
Python :从生成到勒索软件 (纯属虚构,切勿模仿!)
加密提示
Python :从生成到勒索软件 (纯属虚构,切勿模仿!)
加密后的文件
其他图片省略

# -*- 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 :从生成到勒索软件 (纯属虚构,切勿模仿!)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月31日00:39:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Python :从生成到勒索软件 (纯属虚构,切勿模仿!)https://cn-sec.com/archives/2791364.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息