def AddTabPanel(self): text, ok = QtWidgets.QInputDialog.getText(self, '创建分区', '名称') for i in self.TabPanels: if text == i.objectName(): errorInfo(self, '不能创建两个相同的分区!') return if ok: button = self.TabAreaPanel.addButton(text) panel = ResizablePanel() panel.setObjectName(text) self.TabStack.addWidget(panel) self.TabPanels.append(panel) button.clicked.connect(lambda: self.ChangeTab(button, panel)) button.Deleted.connect(lambda: self.DeletePanel(panel)) panel.TheAddButton.clicked.connect( lambda: self.AddTabPanelButton(panel)) panel.DropFileSignal.connect( lambda s: self.AddTabPanelButtonDrop(s, panel)) self.FileButtons.append(panel.Buttons) conn = sqlite3.connect('./Resources/DIY.sqlite') cu = conn.cursor() cu.execute('CREATE TABLE \'' + text + '\' (BTNNAME TEXT, FILEPATH TEXT );') conn.commit() conn.close()
def EscapeDecode(self): try: self.EscapeTextBox.setText( parse.unquote(self.EscapeCipherBox.toPlainText().replace( '%u', '\\u').encode().decode('unicode-escape'))) except: errorInfo(self, '解码失败.')
def TapDecode(self): retable = [['A', 'B', '(C/K)', 'D', 'E'], ['F', 'G', 'H', 'I', 'J'], ['L', 'M', 'N', 'O', 'P'], ['Q', 'R', 'S', 'T', 'U'], ['V', 'W', 'X', 'Y', 'Z']] text = self.TapCipherBox.toPlainText() output = '' temp1 = '' temp2 = '' try: for i in text: if len(temp1) == 1 and len(temp2) == 1: output += retable[int(temp1) - 1][int(temp2) - 1] temp1 = '' temp2 = '' if '1' <= i <= '5': if len(temp1) == 1: temp2 = i else: temp1 = i if len(temp1) == 1 and len(temp2) == 1: output += retable[int(temp1)][int(temp2)] self.TapTextBox.setText(output) except: errorInfo(self, '解码出现错误!')
def EscapeEncode(self): try: self.EscapeCipherBox.setText( parse.quote(self.EscapeTextBox.toPlainText().encode( 'unicode-escape')).replace('%5Cu', '%u')) except: errorInfo(self, '编码失败.')
def HTMLDecode(self): text = self.HTMLCipherBox.toPlainText() try: output = html.unescape(text) self.HTMLTextBox.setText(output) except: errorInfo(self, '解码时出现错误!')
def QuoteDec(self): text = self.QuoteCipherBox.toPlainText() try: cipher = quopri.decodestring(text) except: errorInfo(self, '解码时出现错误!') return try: self.QuoteTextBox.setText(cipher.decode()) except: self.QuoteTextBox.setText(str(cipher))
def MorseDecode(self): spilt = self.MorseSpiltBox.text() if spilt == '': spilt = ' ' elif spilt.find('.') != -1 or spilt.find('-') != -1: errorInfo(self, '分隔符含有摩斯电码字符!') return try: self.MorseTextBox.setText(MorseDecode( self.MorseCipherBox.toPlainText(), spilt, self.MorseChineseCheckBox.isChecked())) except: errorInfo(self, '解码出现错误!')
def HexDecode(self): text = self.HexCipherBox.toPlainText() try: temp = [] if self.HexSplitBox.text() != '': temp = text.split(self.HexSplitBox.text()) else: temp = text.split() output = ''.join(temp) self.HexTextBox.setText(hex2char(output).decode()) except: errorInfo(self, '解码时出现错误!')
def QuoteCipherInputFunction(self): self.QuoteCipherInputPath, filetype = \ QtWidgets.QFileDialog.getOpenFileName(self, "选取文件", '', "All Files (*);;Text Files (*.txt)") if self.QuoteCipherInputPath == "": return with open(self.QuoteCipherInputPath, 'r') as inp: try: self.QuoteCipherBox.setText(inp.read()) except: errorInfo(self, '文件读取错误.')
def HexEncode(self): text = self.HexTextBox.toPlainText() try: temp = char2hex(text).decode() j = 0 output = '' for i in temp: if j % 2 == 0: output += self.HexSplitBox.text() output += i j += 1 self.HexCipherBox.setText(output) except: errorInfo(self, '编码时出现错误!')
def QuoteEnc(self): if self.QuoteTextEvalCheckBox.isChecked(): try: text = eval(self.QuoteTextBox.toPlainText()) except: errorInfo( self, '编码表无效或者要解码的字符串不是合法的编码字符串!!\nTable or Cipher Error!!!!!!!') return else: text = self.QuoteTextBox.toPlainText().encode() try: cipher = quopri.encodestring(text).decode() except: errorInfo(self, '编码时出现错误!') return self.QuoteCipherBox.setText(cipher)
def AddTabPanelButtonDrop(self, path, panel): osinfo = platform.system() if osinfo == 'Windows': splitChr = '\\' else: splitChr = '/' name = path.split(splitChr)[-1] self.AddTabPanelButtonFile(panel, path, name) conn = sqlite3.connect('./Resources/DIY.sqlite') cu = conn.cursor() try: cu.execute('INSERT INTO \'' + panel.objectName() + '\' (BTNNAME, FILEPATH) VALUES (\'' + name + '\',\'' + path + '\')') conn.commit() except: errorInfo('添加失败!\n请检查是否有重复项!') conn.close()
def AddTabPanelButton(self, panel): file, ok = QtWidgets.QFileDialog.getOpenFileName( self, "选取文件", '', "All Files (*)") if ok: name, ok = QtWidgets.QInputDialog.getText(self, '创建启动按钮', '名称') conn = sqlite3.connect('./Resources/DIY.sqlite') cu = conn.cursor() try: cu.execute('INSERT INTO \'' + panel.objectName() + '\' (BTNNAME, FILEPATH) VALUES (\'' + name + '\',\'' + file + '\')') conn.commit() except: errorInfo('添加失败!\n请检查是否有重复项!') conn.close() button = panel.addButton(name) button.clicked.connect(lambda: self.OpenFile(file)) button.Deleted.connect(lambda: self.DeleteTabPanelButton(panel)) button.EditNameSignal.connect( lambda: self.EditButtonName(panel, button))
def TapEncode(self): table = {'A': 11, 'B': 12, 'C': 13, 'D': 14, 'E': 15, 'F': 21, 'G': 22, 'H': 23, 'I': 24, 'J': 25, 'L': 31, 'M': 32, 'N': 33, 'O': 34, 'P': 35, 'Q': 41, 'R': 42, 'S': 43, 'T': 44, 'U': 45, 'V': 51, 'W': 52, 'X': 53, 'Y': 54, 'Z': 55, 'a': 11, 'b': 12, 'c': 13, 'd': 14, 'e': 15, 'f': 21, 'g': 22, 'h': 23, 'i': 24, 'j': 25, 'l': 31, 'm': 32, 'n': 33, 'o': 34, 'p': 35, 'q': 41, 'r': 42, 's': 43, 't': 44, 'u': 45, 'v': 51, 'w': 52, 'x': 53, 'y': 54, 'z': 55, 'K': 13, 'k': 13} text = self.TapTextBox.toPlainText() output = '' try: for i in text: output += str(table[i]) + ' ' self.TapCipherBox.setText(output) except: errorInfo(self, '编码出现错误!')
def HashEncode(self): if self.HashTextInputFlag: self.MD5ValueBox.setText( str(generate_file_md5(self.HashTextInputPath))) self.SHA1ValueBox.setText( str(generate_file_sha1(self.HashTextInputPath))) self.SHA224ValueBox.setText( str(generate_file_sha224(self.HashTextInputPath))) self.SHA256ValueBox.setText( str(generate_file_sha256(self.HashTextInputPath))) self.SHA384ValueBox.setText( str(generate_file_sha384(self.HashTextInputPath))) self.SHA512ValueBox.setText( str(generate_file_sha512(self.HashTextInputPath))) self.SHA3224ValueBox.setText( str(generate_file_sha3_224(self.HashTextInputPath))) self.SHA3256ValueBox.setText( str(generate_file_sha3_256(self.HashTextInputPath))) self.SHA3384ValueBox.setText( str(generate_file_sha3_384(self.HashTextInputPath))) self.SHA3512ValueBox.setText( str(generate_file_sha3_512(self.HashTextInputPath))) self.HashTextInputPath = '' self.HashTextInputFlag = False self.HashTextBox.setText('') else: if self.HashEvalCheckBox.isChecked(): try: text = eval(self.HashTextBox.toPlainText()) except: errorInfo(self, 'Eval执行失败!\n非有效Python语句!') return else: try: text = self.HashTextBox.toPlainText() text = text.encode(self.HashEncodingBox.text()) except: errorInfo(self, '无效的编码!') return try: salt = int(self.HashSaltBox.text()) except: salt = 0 if self.HashSaltBox.text() != '': errorInfo(self, '加盐的长度不应该包含除了数字之外的符号!') self.HashValueBox.setText(hex(hash(text + addSalt(salt)))) self.MD5ValueBox.setText(str(generate_md5(text, salt))) self.SHA1ValueBox.setText(str(generate_sha1(text, salt))) self.SHA224ValueBox.setText(str(generate_sha224(text, salt))) self.SHA256ValueBox.setText(str(generate_sha256(text, salt))) self.SHA384ValueBox.setText(str(generate_sha384(text, salt))) self.SHA512ValueBox.setText(str(generate_sha512(text, salt))) self.SHA3224ValueBox.setText(str(generate_sha3_224(text, salt))) self.SHA3256ValueBox.setText(str(generate_sha3_256(text, salt))) self.SHA3384ValueBox.setText(str(generate_sha3_384(text, salt))) self.SHA3512ValueBox.setText(str(generate_sha3_512(text, salt)))
def set_value(self, path): """设置编辑器内容""" import base64 try: data = open(path, 'r', encoding='UTF-8').read() except: traceback.print_exc() errorInfo(self, '所选文件不是文本文件.') return data = base64.b64encode(data.encode()) data = data.decode() self.path = path self.page().runJavaScript( "monaco.editor.getModels()[0].setValue(Base64.decode('{}'))".format(data)) if path[-3:] == '.py': self.change_language('python') elif path[-3:] == '.md': self.change_language('markdown') elif path[-3:] == '.js': self.change_language('jsvascript') elif path[-3:] == '.json': self.change_language('json') else: self.change_language('text')