有一個項目上的需求,收到一個加密的固件,現在解密算法部分的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)
2019-3-15 19:12 上傳
點擊文件名下載附件
|