|
有一個(gè)項(xiàng)目上的需求,收到一個(gè)加密的固件,現(xiàn)在解密算法部分的code已經(jīng)完成了,每次解密固件需要run code去解,且要每次都要修改code 的文件路徑,非常不友好,忍無(wú)可忍決定搞一個(gè)圖形界面出來(lái),由腳本去完成索引路徑,重名名文件這些瑣碎的事情。
UI界面基于上次搞的計(jì)算器,一個(gè)按鍵,兩個(gè)文本框,按鍵按下時(shí)會(huì)彈出文件索引窗口,指定待解密的文件路徑后,自動(dòng)生成帶固定后綴名的文件。上下兩個(gè)文本框則分別顯示解密前和解密后的文件全路徑。
直接貼主要部分代碼:
file_path_s 是解密前固件全路徑
file_path_tmp 是解密后固件全路徑
def __init__(self):
super().__init__()
self.InitUI()
#self.wenben = ''#定義一個(gè)QWidget類(lèi)里的全局變量,該類(lèi)里的方法均可使用該變量
self.file_path_s=''
self.file_path_tmp = ''
創(chuàng)建兩個(gè)文本框顯示路徑
def InitUI(self):
#創(chuàng)建文本框
self.text1 = QPlainTextEdit(self)
self.text1.setGeometry(30, 10, 400, 40)
self.text2 = QPlainTextEdit(self)
self.text2.setGeometry(30, 55, 400, 40)
定義一個(gè)按鍵除非decode功能
btn3 = QPushButton('Decode', self)
btn3.move(450, 120)
新建一個(gè)對(duì)象dec,保證可以調(diào)用解密算法類(lèi)
用TK 的filedialog.askopenfilename()方法獲取文件全路徑
并對(duì)路徑進(jìn)行拼接操作 os.path.splitext 把文件全路徑拆分路徑+ .bin的形式
其中路徑防止bin[0] 里.bin防止bin[1]里
dec = EncryptDecrypt() //
self.file_path_s = filedialog.askopenfilename() # 客戶(hù)源文件
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
加上加密之后的狀態(tài)位判斷,根據(jù)狀態(tài)做消息彈窗,保證解密后的文件是正常的。
result1 = dec.Decrypt_file(self.file_path_s, self.file_path_tmp)
result2 = dec.File_Check_CRC(self.file_path_tmp)
#QMessageBox.question(self, '信息', '確認(rèn)退出嗎?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if result1==1 and result2==1 :
QMessageBox.information(self,'解密結(jié)果','固件解密成功!',QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
else:
QMessageBox.information(self,'解密結(jié)果','固件解密失敗!',QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
最后上一個(gè)效果圖:
0.png (59.44 KB, 下載次數(shù): 75)
下載附件
2019-3-16 00:57 上傳
0.jpg (19.28 KB, 下載次數(shù): 87)
下載附件
2019-3-16 00:57 上傳
完整的Word格式文檔51黑下載地址:
Python學(xué)習(xí)筆記2.doc
(94.5 KB, 下載次數(shù): 7)
2019-3-15 19:12 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|