找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2160|回复: 0
打印 上一主题 下一主题
收起左侧

Python 学习笔记2 制作一个解密器UI

[复制链接]
跳转到指定楼层
楼主
有一个项目上的需求,收到一个加密的固件,现在解密算法部分的code已经完成了,每次解密固件需要run code去解,且要每次都要修改code 的文件路径,非常不友好,忍无可忍决定搞一个图形界面出来,由脚本去完成索引路径,重名名文件这些琐碎的事情。
UI界面基于上次搞的计算器,一个按键,两个文本框,按键按下时会弹出文件索引窗口,指定待解密的文件路径后,自动生成带固定后缀名的文件。上下两个文本框则分别显示解密前和解密后的文件全路径。
直接贴主要部分代码:
file_path_s 是解密前固件全路径
file_path_tmp 是解密后固件全路径

def __init__(self):
    super().__init__()
    self.InitUI()
    #self.wenben = ''#定义一个QWidget类里的全局变量,该类里的方法均可使用该变量
    self.file_path_s=''
    self.file_path_tmp = ''

创建两个文本框显示路径

def InitUI(self):
    #创建文本框
    self.text1 = QPlainTextEdit(self)
    self.text1.setGeometry(30, 10, 400, 40)
    self.text2 = QPlainTextEdit(self)
    self.text2.setGeometry(30, 55, 400, 40)

定义一个按键除非decode功能

btn3 = QPushButton('Decode', self)
btn3.move(450, 120)

新建一个对象dec,保证可以调用解密算法类
用TK 的filedialog.askopenfilename()方法获取文件全路径
并对路径进行拼接操作 os.path.splitext 把文件全路径拆分路径+ .bin的形式
其中路径防止bin[0] 里.bin防止bin[1]里
dec = EncryptDecrypt() //

self.file_path_s = filedialog.askopenfilename() # 客户源文件
self.text1.setPlainText(self.file_path_s)
bin=os.path.splitext(self.file_path_s)
print('bin==', bin)
tmp_bin = bin[0] +'__FT_GC1025B'+ bin[1]
print('tmp_bin==', tmp_bin)
self.file_path_tmp = tmp_bin

加上加密之后的状态位判断,根据状态做消息弹窗,保证解密后的文件是正常的。

result1 = dec.Decrypt_file(self.file_path_s, self.file_path_tmp)
result2 = dec.File_Check_CRC(self.file_path_tmp)
#QMessageBox.question(self, '信息', '确认退出吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if result1==1 and result2==1 :
    QMessageBox.information(self,'解密结果','固件解密成功!',QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
else:
    QMessageBox.information(self,'解密结果','固件解密失败!',QMessageBox.Yes | QMessageBox.No, QMessageBox.No)


最后上一个效果图:


完整的Word格式文档51黑下载地址:
Python学习笔记2.doc (94.5 KB, 下载次数: 7)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表