文章声明:此文基于木子实操撰写,此加解密工具仅供学习参考,请勿滥用,一切后果自负。
生产环境:Windows 10 1902,MacOS 14.15.4,Deepin Linux v15.11
论证耗时:2h
撰文耗时:1h
校文耗时:20m
问题关键字:Python文件加密工具
前述
所有的一切还得从下面这段对话说起,一看就是自己给自己挖了一个坑@-@。前几天朋友找我要一个公私密钥加解密文件工具,本想让他直接在网上找一个的,但好像并不像我想象的一样,结果他让我帮忙写一个,无奈接下了这个活。后来想了一下这不就是一个比特币勒索病毒吗?感觉还有一点意思,于是想着帮他写一个,自己也可以简单了解一下比特币勒索病毒的工作原理,于是有了这篇文章。
比特币勒索病毒基本工作原理
其实这个病毒的工作原理很简单,就是当你触发病毒的时候,它开始注入系统(以便重启还能持续加密),另外开始生成公私密钥(当然也可以不用生成,病毒自带公钥直接加密文件),再通过开启多线程,持续疯狂的加密指定类型的文件即可。
很多中毒的网络管理员可能会想着怎么破解加密以后的文件,其实方法很简单,只需要病毒制造者将私钥发给你,并且告诉你加密算法,即可解密成功。否则你永远不可能破解成功,当然如果你有天河计算机使用权,也是有可能解密成功的。
为什么这么说呢?因为病毒会对文件进行不对称加密。只要他的密钥长度足够长,那么基本上就没有破解的可能了。下面通过一个简图,我们大概了解一下比特币勒索病毒的基本工作原理。
RSA加密算法简介
在开始制作病毒程序之前,我们先来简单介绍一下RSA非对称加密算法。RSA非对称加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的,而RSA就是他们三人姓氏开头字母拼在一起组成的。
RSA是目前最有影响力的非对称加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。下图就是三位大神的合照了。
当然,我们这不是来说它的细节原理,大神的世界木子也说不清楚@-@。下面开始制作病毒…
安装需要的软件包
要想制毒成功,我们需要先利其器,以下是我们需要用到的软件包。
PyCrypto
PyCrypto是Python中密码学方面比较有名的第三方软件包。可惜的是它于2012年停止开发更新。幸运的是有一个该项目的分支PyCrytodome取代了PyCrypto,可以支持Python3.8.2。
1 | pip install pycryptodome |
PyQT5
在2012年的时候当时木子还是用的python2.7,所以使用的GUI开发工具是wxpython,但wxpython已经很久不更新,所以为了更好的支持Python3.8的GUI开发,这里选择使用Qt Creator。为什么使用Qt Creator了?其实是因为它和wxPython、VF、VB、Deplin等C/S架构开发软件差不多,容易上手。
1 | # MacOS安装pyqt5,会一并安装pyqt5-dev-tools工具 |
病毒程序设计
界面设计
程序界面的设计比较简单,直接通过拖拽控件就可以完成,有兴趣的同学可以去网上找一个对应教程,相对来说还是比较容易上手的。
界面设计完成以后保存对应文件,会生成一个.ui后缀的文件,然后我们需要将对应ui转换成py即可。
1 | #ui文件转py文件 |
公钥和私钥
对应代码块重点区域木子都已经注释了,这里就不详细说了。
1 | from PyQt5.QtWidgets import QApplication, QMainWindow |
加解密
1 | from Crypto.Cipher import AES, PKCS1_OAEP |
测试代码块功能
通过上面的代码块,基本已经实现了功能所需,下面我们来演示一下。
生成公钥和私钥,这时候我们就可以看到对应的公钥和私钥了,为了方便朋友使用,所以在对应程序根目录,木子保存了一份公钥和私钥的key(rsa_private.key,rsa_public.key)。
当然每次生成的公钥和私钥都是不一样的,公钥给任何人都没有关系,但是私钥一定要保存好,否则一旦泄露,意味着你的加密文件就不安全了。
这里我们测试加密hello.txt
文件,如下图所示,加密成功。
再打开hello.txt
就是密文了。
我们再进行解密,就可以看到对应原文了。
它仅仅只能加密txt文档吗?错了,它可以加密所有文件类型的。这里我们再来加密一个图片文件。
加密后再打开会现提示文件已经损坏。
至此,一个简单的文件加解密工具就制作完成。
写在最后
以上加解密工具仅供学习参考,请勿滥用,一切后果自负。当然我们这里看到的只是一个简单的文件加密工具,说好的比特币勒索病毒了?其它我们只需要将其GUI移除,然后加上多线程并发…..,编不下去了@-@,这篇文章就简单写到这里了。