hexforge_modules/encoding_modules.py (39 lines of code) (raw):

import ida_kernwin import base64 from hexforge_modules import helper class Base64Decode(helper.ModuleTemplate): def __init__(self): self.ACTION_NAME = "hexforge::base64" self.ACTION_TEXT = "base64 decode" self.ACTION_TOOLTIP = "base64 decode" # function to execute def _action(self) -> None: alphabet = self._show() data = helper.get_selected_bytes() decoded_data = base64.b64decode(data) decoded_data = decoded_data.ljust(len(data), b"\x00") helper.write_bytes_to_selected(decoded_data) def _show(self): f = self.InputFormT() f, _ = f.Compile() # Show form f.Execute() alphabet = f.alphabet.value f.Free() return alphabet class InputFormT(ida_kernwin.Form): def __init__(self): self.__n = 0 F = ida_kernwin.Form F.__init__( self, r"""BUTTON YES* Ok BASE64 Settings {FormChangeCb} <Alphabet :{alphabet}> """, { "FormChangeCb": F.FormChangeCb(self.OnFormChange), "alphabet": F.MultiLineTextControl( text="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", flags=F.MultiLineTextControl.TXTF_FIXEDFONT, ), }, ) def OnFormChange(self, fid): return 1