有一个项目上的需求,收到一个加密的固件,现在解密算法部分的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)
|