Beispiel #1
0
    def registerAllSnippets():
        for action in list(
                filter(lambda x: x.startswith("Snippets\\"),
                       UIAction.getAllRegisteredActions())):
            if action == "Snippets\\Snippet Editor...":
                continue
            UIActionHandler.globalActions().unbindAction(action)
            Menu.mainMenu("Tools").removeAction(action)
            UIAction.unregisterAction(action)

        for snippet in includeWalk(snippetPath, ".py"):
            snippetKeys = None
            (snippetDescription, snippetKeys,
             snippetCode) = loadSnippetFromFile(snippet)
            if not snippetDescription:
                actionText = "Snippets\\" + os.path.basename(snippet).rstrip(
                    ".py")
            else:
                actionText = "Snippets\\" + snippetDescription
            if snippetCode:
                if snippetKeys == None:
                    UIAction.registerAction(actionText)
                else:
                    UIAction.registerAction(actionText, snippetKeys)
                UIActionHandler.globalActions().bindAction(
                    actionText, UIAction(makeSnippetFunction(snippetCode)))
                Menu.mainMenu("Tools").addAction(actionText, actionText)
Beispiel #2
0
    def _init_ui(self):
        # config dialog
        configure_binsync_id = "BinSync: Configure"
        UIAction.registerAction(configure_binsync_id)
        UIActionHandler.globalActions().bindAction(
            configure_binsync_id, UIAction(self._launch_config))
        Menu.mainMenu("Tools").addAction(configure_binsync_id, "BinSync")

        # control panel (per BV)
        dock_handler = DockHandler.getActiveDockHandler()
        dock_handler.addDockWidget(
            "BinSync: Control Panel", lambda n, p, d: create_widget(
                ControlPanelDockWidget, n, p, d, self.controllers),
            Qt.RightDockWidgetArea, Qt.Vertical, True)
Beispiel #3
0
    def __init__(self, parent):
        super(MiasmOptionsWidget, self).__init__(parent)
        self.statusBarWidget = parent

        self.setBackgroundRole(QPalette.Highlight)
        self.setForegroundRole(QPalette.WindowText)
        self.setText(" Options ▾ ")

        self.contextMenuManager = ContextMenuManager(self)

        self.menu = Menu()
        self.actionHandler = UIActionHandler()
        self.registerActions()
        self.addActions()
        self.bindActions()

        self.actionHandler.setChecked("IR graph", True)
Beispiel #4
0
	def __init__(self, parent):
		QLabel.__init__(self, parent)

		self.statusBarWidget = parent

		self.setBackgroundRole(QPalette.Highlight)
		self.setForegroundRole(QPalette.WindowText)
		self.setText(" Formats ▾ ")

		# see api/ui/menus.h
		self.contextMenuManager = ContextMenuManager(self)

		self.menu = Menu()
		self.actionHandler = UIActionHandler()
		self.registerActions()
		self.addActions()
		self.bindActions()
Beispiel #5
0
    def __init__(self, context):
        super(TriageFilePicker, self).__init__()
        self.context = context
        self.actionHandler = UIActionHandler()
        self.actionHandler.setupActionHandler(self)
        self.contextMenu = Menu()
        self.contextMenuManager = ContextMenuManager(self)

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)

        self.model = QFileSystemModel()
        self.model.setRootPath("")
        self.model.setFilter(QDir.AllEntries | QDir.Hidden | QDir.System)
        self.tree = QTreeView(self)
        self.tree.setModel(self.model)
        self.tree.setSelectionMode(QAbstractItemView.ExtendedSelection)
        self.tree.setColumnWidth(0, 500)
        layout.addWidget(self.tree, 1)

        self.setLayout(layout)

        self.tree.doubleClicked.connect(self.onDoubleClick)

        recentFile = QSettings().value("triage/recentFile",
                                       os.path.expanduser("~"))
        while len(recentFile) > 0:
            f = self.model.index(recentFile)
            if f.isValid():
                self.tree.scrollTo(f)
                self.tree.setExpanded(f, True)
                break
            parentDir = os.path.dirname(recentFile)
            if parentDir == recentFile:
                break
            recentFile = parentDir

        self.actionHandler.bindAction(
            "Open Selected Files",
            UIAction(lambda context: self.openSelectedFiles(),
                     lambda context: self.areFilesSelected()))
        self.contextMenu.addAction("Open Selected Files", "Open")
Beispiel #6
0
 def __init__(self, *__args):
     super(BinjaButtonHolderWidget, self).__init__(*__args)
     self._app = QtWidgets.QApplication.instance()
     self._main_window = [
         x for x in self._app.allWidgets()
         if x.__class__ is QtWidgets.QMainWindow
     ][0]
     self._tool_menu = Menu.mainMenu('Tools')
     self._main_window.addDockWidget(Qt.TopDockWidgetArea, self)
     self._toolbar = QtWidgets.QToolBar()
     self.setWidget(self._toolbar)
     self.hide()
Beispiel #7
0
            byte_key = data[i:i+4]
            decrypted = bytearray()
            valid = True
            for j in range(size):
                char = data[i+8+j] ^ byte_key[j % 4]
                if char not in printables:
                    valid = False
                    break
                decrypted.append(char)
            if valid:
                sym_addr = data_section.start + i
                s = bytes(decrypted).decode()
                sym_name = s[:20].strip()
                for c in " \t\r\n":
                    sym_name = sym_name.replace(c, "_")
                sym_name = "str_" + sym_name
                symbol = Symbol(SymbolType.DataSymbol, sym_addr, sym_name)
                bv.define_user_symbol(symbol)
                bv.write(sym_addr, s + "\x00")


def launch_plugin(context):
    bv = context.binaryView
    decrypt_strings(bv)
    find_dynamic_apis(bv)


UIAction.registerAction("Emotet Deobufscator")
UIActionHandler.globalActions().bindAction("Emotet Deobufscator", UIAction(launch_plugin))
Menu.mainMenu("Tools").addAction("Emotet Deobufscator", "Emotet Deobufscator")
Beispiel #8
0
try:
    from binaryninjaui import (UIAction, UIActionHandler, Menu)

    from . import keypatch

    UIAction.registerAction("KEYPATCH")
    UIActionHandler.globalActions().bindAction(
        "KEYPATCH", UIAction(keypatch.launch_keypatch))
    Menu.mainMenu("Tools").addAction("KEYPATCH", "KEYPATCH")
except ModuleNotFoundError:
    # probably being loaded by headless BinaryNinja
    pass
Beispiel #9
0
def _registerUIActions():
    UIAction.registerAction("SENinja\\Setup argv...")
    UIActionHandler.globalActions().bindAction("SENinja\\Setup argv...",
                                               UIAction(_launchArgvDialog))
    Menu.mainMenu("Tools").addAction("SENinja\\Setup argv...", "Setup argv...")
Beispiel #10
0
 def _install_open_coverage_overview(self):
     action = self.ACTION_COVERAGE_OVERVIEW
     UIAction.registerAction(action)
     UIActionHandler.globalActions().bindAction(action, UIAction(self._open_coverage_overview))
     Menu.mainMenu("Tools").addAction(action, "Windows", 0)
     logger.info("Installed the 'Open Coverage Overview' menu entry")
Beispiel #11
0
 def _install_load_batch(self):
     action = self.ACTION_LOAD_BATCH
     UIAction.registerAction(action)
     UIActionHandler.globalActions().bindAction(action, UIAction(self._interactive_load_batch))
     Menu.mainMenu("Tools").addAction(action, "Loading", 1)
     logger.info("Installed the 'Code coverage batch' menu entry")
Beispiel #12
0
        # Update UI according to the active frame
        if frame:
            self.datatype.setText(frame.getCurrentView())
            view = frame.getCurrentViewInterface()
            self.data = view.getData()
            self.offset.setText(hex(view.getCurrentOffset()))
        else:
            self.datatype.setText("None")
            self.data = None

    def contextMenuEvent(self, event):
        self.m_contextMenuManager.show(self.m_menu, self.actionHandler)

    @staticmethod
    def createPane(context):
        if context.context and context.binaryView:
            widget = HelloPaneWidget(context.binaryView)
            pane = WidgetPane(widget, "Hello")
            context.context.openPane(pane)

    @staticmethod
    def canCreatePane(context):
        return context.context and context.binaryView


UIAction.registerAction("Hello Pane")
UIActionHandler.globalActions().bindAction(
    "Hello Pane",
    UIAction(HelloPaneWidget.createPane, HelloPaneWidget.canCreatePane))
Menu.mainMenu("Tools").addAction("Hello Pane", "Hello")
Beispiel #13
0
class TriageFilePicker(QWidget):
	def __init__(self, context):
		super(TriageFilePicker, self).__init__()
		self.context = context
		self.actionHandler = UIActionHandler()
		self.actionHandler.setupActionHandler(self)
		self.contextMenu = Menu()
		self.contextMenuManager = ContextMenuManager(self)

		layout = QVBoxLayout()
		layout.setContentsMargins(0, 0, 0, 0)

		self.model = QFileSystemModel()
		self.model.setRootPath("")
		self.model.setFilter(QDir.AllEntries | QDir.Hidden | QDir.System)
		self.tree = QTreeView(self)
		self.tree.setModel(self.model)
		self.tree.setSelectionMode(QAbstractItemView.ExtendedSelection)
		self.tree.setColumnWidth(0, 500)
		layout.addWidget(self.tree, 1)

		self.setLayout(layout)

		self.tree.doubleClicked.connect(self.onDoubleClick)

		recentFile = QSettings().value("triage/recentFile", os.path.expanduser("~"))
		while len(recentFile) > 0:
			f = self.model.index(recentFile)
			if f.isValid():
				self.tree.scrollTo(f)
				self.tree.setExpanded(f, True)
				break
			parentDir = os.path.dirname(recentFile)
			if parentDir == recentFile:
				break
			recentFile = parentDir

		self.actionHandler.bindAction("Open Selected Files", UIAction(
			lambda context: self.openSelectedFiles(),
			lambda context: self.areFilesSelected()))
		self.contextMenu.addAction("Open Selected Files", "Open")

	def contextMenuEvent(self, event):
		self.contextMenuManager.show(self.contextMenu, self.actionHandler)

	def onDoubleClick(self, index):
		self.openSelectedFiles()

	def openSelectedFiles(self):
		failedToOpen = []
		files = set()

		for index in self.tree.selectionModel().selectedIndexes():
			if self.model.fileInfo(index).isFile():
				files.add(self.model.fileInfo(index).absoluteFilePath())

		for filename in files:
				QSettings().setValue("triage/recentFile", filename)

				f = FileContext.openFilename(filename)
				if not f:
					failedToOpen.append(filename)
					continue

				f.createBinaryViews()
				for data in f.getAllDataViews():
					Settings().set_string("analysis.mode", Settings().get_string("triage.analysisMode"), data)
					Settings().set_bool("triage.preferSummaryView", True, data)
					if data.view_type != "Raw":
						linearSweepMode = Settings().get_string("triage.linearSweep")
						if linearSweepMode == "none":
							Settings().set_bool("analysis.linearSweep.autorun", False, data)
						elif linearSweepMode == "partial":
							Settings().set_bool("analysis.linearSweep.autorun", True, data)
							Settings().set_bool("analysis.linearSweep.controlFlowGraph", False, data)
						elif linearSweepMode == "full":
							Settings().set_bool("analysis.linearSweep.autorun", True, data)
							Settings().set_bool("analysis.linearSweep.controlFlowGraph", True, data)

				self.context.openFileContext(f)

		if len(failedToOpen) > 0:
			QMessageBox.critical(self, "Error", "Unable to open:\n" + "\n".join(failedToOpen))

	def areFilesSelected(self):
		return self.tree.selectionModel().hasSelection()
Beispiel #14
0

def start_patch_monitor(view):
    notification = PatchDataNotification(view, controller)
    view.register_notification(notification)


def start_function_monitor(view):
    notification = EditFunctionNotification(view, controller)
    view.register_notification(notification)


UIAction.registerAction("Configure BinSync...")
UIActionHandler.globalActions().bindAction("Configure BinSync...",
                                           UIAction(launch_binsync_configure))
Menu.mainMenu("Tools").addAction("Configure BinSync...", "BinSync")

open_control_panel_id = "BinSync: Open control panel"
UIAction.registerAction(open_control_panel_id)
UIActionHandler.globalActions().bindAction(open_control_panel_id,
                                           UIAction(open_control_panel))
Menu.mainMenu("Tools").addAction(open_control_panel_id, "BinSync")

# register the control panel dock widget
dock_handler = DockHandler.getActiveDockHandler()
dock_handler.addDockWidget(
    "BinSync: Control Panel",
    lambda n, p, d: create_widget(ControlPanelDockWidget, n, p, d, controller),
    Qt.RightDockWidgetArea, Qt.Vertical, True)

PluginCommand.register_for_function("Push function upwards",
Beispiel #15
0
class MiasmOptionsWidget(QLabel):
    def __init__(self, parent):
        super(MiasmOptionsWidget, self).__init__(parent)
        self.statusBarWidget = parent

        self.setBackgroundRole(QPalette.Highlight)
        self.setForegroundRole(QPalette.WindowText)
        self.setText(" Options ▾ ")

        self.contextMenuManager = ContextMenuManager(self)

        self.menu = Menu()
        self.actionHandler = UIActionHandler()
        self.registerActions()
        self.addActions()
        self.bindActions()

        self.actionHandler.setChecked("IR graph", True)

    def registerActions(self):
        UIAction.registerAction("IR graph")
        UIAction.registerAction("IR graph (SSA)")
        UIAction.registerAction("IR graph (SSA + unSSA)")
        UIAction.registerAction("Simplify code")
        UIAction.registerAction("Subcalls don't change stack")
        UIAction.registerAction("Load static memory")

    def addActions(self):
        self.menu.addAction("IR graph", "Transformations")
        self.menu.addAction("IR graph (SSA)", "Transformations")
        self.menu.addAction("IR graph (SSA + unSSA)", "Transformations")
        self.menu.addAction("Simplify code", "Options")
        self.menu.addAction("Subcalls don't change stack", "Options")
        self.menu.addAction("Load static memory", "Options")

    def bindActions(self):
        self.actionHandler.bindAction("IR graph", UIAction(self.on_ir_graph))
        self.actionHandler.bindAction("IR graph (SSA)",
                                      UIAction(self.on_ssa_simp))
        self.actionHandler.bindAction("IR graph (SSA + unSSA)",
                                      UIAction(self.on_unssa_simp))
        self.actionHandler.bindAction("Simplify code", UIAction(self.on_simp))
        self.actionHandler.bindAction("Subcalls don't change stack",
                                      UIAction(self.on_dontmodstack))
        self.actionHandler.bindAction("Load static memory",
                                      UIAction(self.on_loadmem))

    def mousePressEvent(self, event):
        self.contextMenuManager.show(self.menu, self.actionHandler)

    def enterEvent(self, event):
        self.setAutoFillBackground(True)
        self.setForegroundRole(QPalette.HighlightedText)
        QLabel.enterEvent(self, event)

    def leaveEvent(self, event):
        self.setAutoFillBackground(False)
        self.setForegroundRole(QPalette.WindowText)
        QLabel.leaveEvent(self, event)

    def on_ir_graph(self, uiActionContext):
        action = "IR graph"
        if self.actionHandler.isChecked(action):
            return
        self.actionHandler.setChecked("IR graph (SSA)", False)
        self.actionHandler.setChecked("IR graph (SSA + unSSA)", False)
        self.actionHandler.setChecked(action, True)
        self.statusBarWidget.miasmIRGraphView.type_graph = TYPE_GRAPH_IR

        graph = self.statusBarWidget.miasmIRGraphView.get_graph()
        self.statusBarWidget.miasmIRGraphView.setGraph(graph)

    def on_ssa_simp(self, uiActionContext):
        action = "IR graph (SSA)"
        if self.actionHandler.isChecked(action):
            return
        self.actionHandler.setChecked("IR graph", False)
        self.actionHandler.setChecked("IR graph (SSA + unSSA)", False)
        self.actionHandler.setChecked(action, True)
        self.statusBarWidget.miasmIRGraphView.type_graph = TYPE_GRAPH_IRSSA

        graph = self.statusBarWidget.miasmIRGraphView.get_graph()
        self.statusBarWidget.miasmIRGraphView.setGraph(graph)

    def on_unssa_simp(self, uiActionContext):
        action = "IR graph (SSA + unSSA)"
        if self.actionHandler.isChecked(action):
            return
        self.actionHandler.setChecked("IR graph", False)
        self.actionHandler.setChecked("IR graph (SSA)", False)
        self.actionHandler.setChecked(action, True)
        self.statusBarWidget.miasmIRGraphView.type_graph = TYPE_GRAPH_IRSSAUNSSA

        graph = self.statusBarWidget.miasmIRGraphView.get_graph()
        self.statusBarWidget.miasmIRGraphView.setGraph(graph)

    def on_simp(self, uiActionContext):
        action = "Simplify code"
        action_state = not self.actionHandler.isChecked(action)
        self.statusBarWidget.miasmIRGraphView.simplify = action_state
        self.actionHandler.setChecked(action, action_state)

        graph = self.statusBarWidget.miasmIRGraphView.get_graph()
        self.statusBarWidget.miasmIRGraphView.setGraph(graph)

    def on_dontmodstack(self, uiActionContext):
        action = "Subcalls don't change stack"
        action_state = not self.actionHandler.isChecked(action)
        self.statusBarWidget.miasmIRGraphView.dontmodstack = action_state
        self.actionHandler.setChecked(action, action_state)

        graph = self.statusBarWidget.miasmIRGraphView.get_graph()
        self.statusBarWidget.miasmIRGraphView.setGraph(graph)

    def on_loadmem(self, uiActionContext):
        action = "Load static memory"
        action_state = not self.actionHandler.isChecked(action)
        self.statusBarWidget.miasmIRGraphView.loadmemint = action_state
        self.actionHandler.setChecked(action, action_state)

        graph = self.statusBarWidget.miasmIRGraphView.get_graph()
        self.statusBarWidget.miasmIRGraphView.setGraph(graph)
Beispiel #16
0
		"description" : "Controls the amount of analysis performed on functions when opening for triage.",
		"enum" : ["controlFlow", "basic", "full"],
		"enumDescriptions" : [
			"Only perform control flow analysis on the binary. Cross references are valid only for direct function calls.",
			"Perform fast initial analysis of the binary. This mode does not analyze types or data flow through stack variables.",
			"Perform full analysis of the binary." ]
	}
	""")

Settings().register_setting("triage.linearSweep", """
	{
		"title" : "Triage Linear Sweep Mode",
		"type" : "string",
		"default" : "partial",
		"description" : "Controls the level of linear sweep performed when opening for triage.",
		"enum" : ["none", "partial", "full"],
		"enumDescriptions" : [
			"Do not perform linear sweep of the binary.",
			"Perform linear sweep on the binary, but skip the control flow graph analysis phase.",
			"Perform full linear sweep on the binary." ]
	}
	""")

UIAction.registerAction("Open for Triage...", QKeySequence("Ctrl+Alt+O"))
UIAction.registerAction("Open Selected Files")

UIActionHandler.globalActions().bindAction("Open for Triage...", UIAction(openForTriage))
Menu.mainMenu("File").addAction("Open for Triage...", "Open")

UIContext.registerFileOpenMode("Triage...", "Open file(s) for quick analysis in the Triage Summary view.", "Open for Triage...")
Beispiel #17
0
class KaitaiOptionsWidget(QLabel):
	def __init__(self, parent):
		QLabel.__init__(self, parent)

		self.statusBarWidget = parent

		self.setBackgroundRole(QPalette.Highlight)
		self.setForegroundRole(QPalette.WindowText)
		self.setText(" Formats ▾ ")

		# see api/ui/menus.h
		self.contextMenuManager = ContextMenuManager(self)

		self.menu = Menu()
		self.actionHandler = UIActionHandler()
		self.registerActions()
		self.addActions()
		self.bindActions()

	def registerActions(self):
		# add all action handlers
		UIAction.registerAction("archive\\cpio_old_le")
		UIAction.registerAction("archive\\gzip")
		UIAction.registerAction("archive\\lzh")
		UIAction.registerAction("archive\\rar")
		UIAction.registerAction("archive\\zip")
		UIAction.registerAction("cad\\monomakh_sapr_chg")
		UIAction.registerAction("common\\bcd")
		UIAction.registerAction("database\\dbf")
		UIAction.registerAction("database\\gettext_mo")
		UIAction.registerAction("database\\sqlite3")
		UIAction.registerAction("database\\tsm")
		UIAction.registerAction("executable\\dex")
		UIAction.registerAction("executable\\dos_mz")
		UIAction.registerAction("executable\\elf")
		UIAction.registerAction("executable\\java_class")
		UIAction.registerAction("executable\\mach_o")
		UIAction.registerAction("executable\\microsoft_pe")
		UIAction.registerAction("executable\\python_pyc_27")
		UIAction.registerAction("executable\\swf")
		UIAction.registerAction("filesystem\\apm_partition_table")
		UIAction.registerAction("filesystem\\apple_single_double")
		UIAction.registerAction("filesystem\\cramfs")
		UIAction.registerAction("filesystem\\ext2")
		UIAction.registerAction("filesystem\\gpt_partition_table")
		UIAction.registerAction("filesystem\\iso9660")
		UIAction.registerAction("filesystem\\luks")
		UIAction.registerAction("filesystem\\lvm2")
		UIAction.registerAction("filesystem\\mbr_partition_table")
		UIAction.registerAction("filesystem\\tr_dos_image")
		UIAction.registerAction("filesystem\\vdi")
		UIAction.registerAction("filesystem\\vfat")
		UIAction.registerAction("filesystem\\vmware_vmdk")
		UIAction.registerAction("firmware\\andes_firmware")
		UIAction.registerAction("firmware\\ines")
		UIAction.registerAction("firmware\\uimage")
		UIAction.registerAction("font\\ttf")
		UIAction.registerAction("game\\allegro_dat")
		UIAction.registerAction("game\\doom_wad")
		UIAction.registerAction("game\\dune_2_pak")
		UIAction.registerAction("game\\fallout2_dat")
		UIAction.registerAction("game\\fallout_dat")
		UIAction.registerAction("game\\ftl_dat")
		UIAction.registerAction("game\\gran_turismo_vol")
		UIAction.registerAction("game\\heaps_pak")
		UIAction.registerAction("game\\heroes_of_might_and_magic_agg")
		UIAction.registerAction("game\\heroes_of_might_and_magic_bmp")
		UIAction.registerAction("game\\quake_mdl")
		UIAction.registerAction("game\\quake_pak")
		UIAction.registerAction("game\\renderware_binary_stream")
		UIAction.registerAction("game\\saints_row_2_vpp_pc")
		UIAction.registerAction("game\\warcraft_2_pud")
		UIAction.registerAction("geospatial\\shapefile_index")
		UIAction.registerAction("geospatial\\shapefile_main")
		UIAction.registerAction("hardware\\edid")
		UIAction.registerAction("hardware\\mifare\\mifare_classic")
		UIAction.registerAction("image\\bmp")
		UIAction.registerAction("image\\dicom")
		UIAction.registerAction("image\\exif")
		UIAction.registerAction("image\\exif_be")
		UIAction.registerAction("image\\exif_le")
		UIAction.registerAction("image\\gif")
		UIAction.registerAction("image\\icc_4")
		UIAction.registerAction("image\\ico")
		UIAction.registerAction("image\\jpeg")
		UIAction.registerAction("image\\pcx")
		UIAction.registerAction("image\\pcx_dcx")
		UIAction.registerAction("image\\png")
		UIAction.registerAction("image\\psx_tim")
		UIAction.registerAction("image\\tga")
		UIAction.registerAction("image\\wmf")
		UIAction.registerAction("image\\xwd")
		UIAction.registerAction("log\\aix_utmp")
		UIAction.registerAction("log\\glibc_utmp")
		UIAction.registerAction("log\\systemd_journal")
		UIAction.registerAction("log\\windows_evt_log")
		UIAction.registerAction("machine_code\\code_6502")
		UIAction.registerAction("media\\avi")
		UIAction.registerAction("media\\blender_blend")
		UIAction.registerAction("media\\creative_voice_file")
		UIAction.registerAction("media\\genmidi_op2")
		UIAction.registerAction("media\\id3v1_1")
		UIAction.registerAction("media\\id3v2_3")
		UIAction.registerAction("media\\id3v2_4")
		UIAction.registerAction("media\\magicavoxel_vox")
		UIAction.registerAction("media\\ogg")
		UIAction.registerAction("media\\quicktime_mov")
		UIAction.registerAction("media\\standard_midi_file")
		UIAction.registerAction("media\\stl")
		UIAction.registerAction("media\\tracker_modules\\fasttracker_xm_module")
		UIAction.registerAction("media\\tracker_modules\\s3m")
		UIAction.registerAction("media\\vp8_ivf")
		UIAction.registerAction("media\\wav")
		UIAction.registerAction("network\\bitcoin_transaction")
		UIAction.registerAction("network\\dns_packet")
		UIAction.registerAction("network\\hccap")
		UIAction.registerAction("network\\hccapx")
		UIAction.registerAction("network\\icmp_packet")

		# currently on py3 can handle the circular dependency hell
		if sys.version_info[0] == 3:
			UIAction.registerAction("network\\ethernet_frame")
			UIAction.registerAction("network\\ipv4_packet")
			UIAction.registerAction("network\\ipv6_packet")
			UIAction.registerAction("network\\microsoft_network_monitor_v2")
			UIAction.registerAction("network\\packet_ppi")
			UIAction.registerAction("network\\pcap")
			UIAction.registerAction("network\\protocol_body")

		UIAction.registerAction("network\\rtcp_payload")
		UIAction.registerAction("network\\rtp_packet")
		UIAction.registerAction("network\\tcp_segment")
		UIAction.registerAction("network\\tls_client_hello")
		UIAction.registerAction("network\\udp_datagram")
		UIAction.registerAction("network\\windows_systemtime")
		UIAction.registerAction("scientific\\nt_mdt\\nt_mdt")
		UIAction.registerAction("scientific\\nt_mdt\\nt_mdt_pal")
		UIAction.registerAction("scientific\\spectroscopy\\avantes_roh60")
		UIAction.registerAction("scientific\\spectroscopy\\specpr")
		UIAction.registerAction("security\\openpgp_message")
		UIAction.registerAction("security\\ssh_public_key")
		UIAction.registerAction("serialization\\asn1\\asn1_der")
		UIAction.registerAction("serialization\\bson")
		UIAction.registerAction("serialization\\google_protobuf")
		UIAction.registerAction("serialization\\microsoft_cfb")
		UIAction.registerAction("serialization\\msgpack")
		UIAction.registerAction("serialization\\ruby_marshal")
		UIAction.registerAction("windows\\regf")
		UIAction.registerAction("windows\\windows_lnk_file")
		UIAction.registerAction("windows\\windows_minidump")
		UIAction.registerAction("windows\\windows_resource_file")
		UIAction.registerAction("windows\\windows_shell_items")
		UIAction.registerAction("windows\\windows_systemtime")

	def addActions(self):
		self.menu.addAction("archive\\cpio_old_le", "formats")
		self.menu.addAction("archive\\gzip", "formats")
		self.menu.addAction("archive\\lzh", "formats")
		self.menu.addAction("archive\\rar", "formats")
		self.menu.addAction("archive\\zip", "formats")
		self.menu.addAction("cad\\monomakh_sapr_chg", "formats")
		self.menu.addAction("common\\bcd", "formats")
		self.menu.addAction("database\\dbf", "formats")
		self.menu.addAction("database\\gettext_mo", "formats")
		self.menu.addAction("database\\sqlite3", "formats")
		self.menu.addAction("database\\tsm", "formats")
		self.menu.addAction("executable\\dex", "formats")
		self.menu.addAction("executable\\dos_mz", "formats")
		self.menu.addAction("executable\\elf", "formats")
		self.menu.addAction("executable\\java_class", "formats")
		self.menu.addAction("executable\\mach_o", "formats")
		self.menu.addAction("executable\\microsoft_pe", "formats")
		self.menu.addAction("executable\\python_pyc_27", "formats")
		self.menu.addAction("executable\\swf", "formats")
		self.menu.addAction("filesystem\\apm_partition_table", "formats")
		self.menu.addAction("filesystem\\apple_single_double", "formats")
		self.menu.addAction("filesystem\\cramfs", "formats")
		self.menu.addAction("filesystem\\ext2", "formats")
		self.menu.addAction("filesystem\\gpt_partition_table", "formats")
		self.menu.addAction("filesystem\\iso9660", "formats")
		self.menu.addAction("filesystem\\luks", "formats")
		self.menu.addAction("filesystem\\lvm2", "formats")
		self.menu.addAction("filesystem\\mbr_partition_table", "formats")
		self.menu.addAction("filesystem\\tr_dos_image", "formats")
		self.menu.addAction("filesystem\\vdi", "formats")
		self.menu.addAction("filesystem\\vfat", "formats")
		self.menu.addAction("filesystem\\vmware_vmdk", "formats")
		self.menu.addAction("firmware\\andes_firmware", "formats")
		self.menu.addAction("firmware\\ines", "formats")
		self.menu.addAction("firmware\\uimage", "formats")
		self.menu.addAction("font\\ttf", "formats")
		self.menu.addAction("game\\allegro_dat", "formats")
		self.menu.addAction("game\\doom_wad", "formats")
		self.menu.addAction("game\\dune_2_pak", "formats")
		self.menu.addAction("game\\fallout2_dat", "formats")
		self.menu.addAction("game\\fallout_dat", "formats")
		self.menu.addAction("game\\ftl_dat", "formats")
		self.menu.addAction("game\\gran_turismo_vol", "formats")
		self.menu.addAction("game\\heaps_pak", "formats")
		self.menu.addAction("game\\heroes_of_might_and_magic_agg", "formats")
		self.menu.addAction("game\\heroes_of_might_and_magic_bmp", "formats")
		self.menu.addAction("game\\quake_mdl", "formats")
		self.menu.addAction("game\\quake_pak", "formats")
		self.menu.addAction("game\\renderware_binary_stream", "formats")
		self.menu.addAction("game\\saints_row_2_vpp_pc", "formats")
		self.menu.addAction("game\\warcraft_2_pud", "formats")
		self.menu.addAction("geospatial\\shapefile_index", "formats")
		self.menu.addAction("geospatial\\shapefile_main", "formats")
		self.menu.addAction("hardware\\edid", "formats")
		self.menu.addAction("hardware\\mifare\\mifare_classic", "formats")
		self.menu.addAction("image\\bmp", "formats")
		self.menu.addAction("image\\dicom", "formats")
		self.menu.addAction("image\\exif", "formats")
		self.menu.addAction("image\\exif_be", "formats")
		self.menu.addAction("image\\exif_le", "formats")
		self.menu.addAction("image\\gif", "formats")
		self.menu.addAction("image\\icc_4", "formats")
		self.menu.addAction("image\\ico", "formats")
		self.menu.addAction("image\\jpeg", "formats")
		self.menu.addAction("image\\pcx", "formats")
		self.menu.addAction("image\\pcx_dcx", "formats")
		self.menu.addAction("image\\png", "formats")
		self.menu.addAction("image\\psx_tim", "formats")
		self.menu.addAction("image\\tga", "formats")
		self.menu.addAction("image\\wmf", "formats")
		self.menu.addAction("image\\xwd", "formats")
		self.menu.addAction("log\\aix_utmp", "formats")
		self.menu.addAction("log\\glibc_utmp", "formats")
		self.menu.addAction("log\\systemd_journal", "formats")
		self.menu.addAction("log\\windows_evt_log", "formats")
		self.menu.addAction("machine_code\\code_6502", "formats")
		self.menu.addAction("media\\avi", "formats")
		self.menu.addAction("media\\blender_blend", "formats")
		self.menu.addAction("media\\creative_voice_file", "formats")
		self.menu.addAction("media\\genmidi_op2", "formats")
		self.menu.addAction("media\\id3v1_1", "formats")
		self.menu.addAction("media\\id3v2_3", "formats")
		self.menu.addAction("media\\id3v2_4", "formats")
		self.menu.addAction("media\\magicavoxel_vox", "formats")
		self.menu.addAction("media\\ogg", "formats")
		self.menu.addAction("media\\quicktime_mov", "formats")
		self.menu.addAction("media\\standard_midi_file", "formats")
		self.menu.addAction("media\\stl", "formats")
		self.menu.addAction("media\\tracker_modules\\fasttracker_xm_module", "formats")
		self.menu.addAction("media\\tracker_modules\\s3m", "formats")
		self.menu.addAction("media\\vp8_ivf", "formats")
		self.menu.addAction("media\\wav", "formats")
		self.menu.addAction("network\\bitcoin_transaction", "formats")
		self.menu.addAction("network\\dns_packet", "formats")
		self.menu.addAction("network\\hccap", "formats")
		self.menu.addAction("network\\hccapx", "formats")
		self.menu.addAction("network\\icmp_packet", "formats")

		if sys.version_info[0] == 3:
			self.menu.addAction("network\\ethernet_frame", "formats")
			self.menu.addAction("network\\ipv4_packet", "formats")
			self.menu.addAction("network\\ipv6_packet", "formats")
			self.menu.addAction("network\\microsoft_network_monitor_v2", "formats")
			self.menu.addAction("network\\packet_ppi", "formats")
			self.menu.addAction("network\\pcap", "formats")
			self.menu.addAction("network\\protocol_body", "formats")

		self.menu.addAction("network\\rtcp_payload", "formats")
		self.menu.addAction("network\\rtp_packet", "formats")
		self.menu.addAction("network\\tcp_segment", "formats")
		self.menu.addAction("network\\tls_client_hello", "formats")
		self.menu.addAction("network\\udp_datagram", "formats")
		self.menu.addAction("network\\windows_systemtime", "formats")
		self.menu.addAction("scientific\\nt_mdt\\nt_mdt", "formats")
		self.menu.addAction("scientific\\nt_mdt\\nt_mdt_pal", "formats")
		self.menu.addAction("scientific\\spectroscopy\\avantes_roh60", "formats")
		self.menu.addAction("scientific\\spectroscopy\\specpr", "formats")
		self.menu.addAction("security\\openpgp_message", "formats")
		self.menu.addAction("security\\ssh_public_key", "formats")
		self.menu.addAction("serialization\\asn1\\asn1_der", "formats")
		self.menu.addAction("serialization\\bson", "formats")
		self.menu.addAction("serialization\\google_protobuf", "formats")
		self.menu.addAction("serialization\\microsoft_cfb", "formats")
		self.menu.addAction("serialization\\msgpack", "formats")
		self.menu.addAction("serialization\\ruby_marshal", "formats")
		self.menu.addAction("windows\\regf", "formats")
		self.menu.addAction("windows\\windows_lnk_file", "formats")
		self.menu.addAction("windows\\windows_minidump", "formats")
		self.menu.addAction("windows\\windows_resource_file", "formats")
		self.menu.addAction("windows\\windows_shell_items", "formats")
		self.menu.addAction("windows\\windows_systemtime", "formats")

	def bindActions(self):
		self.actionHandler.bindAction("archive\\cpio_old_le", UIAction(self.on_cpio_old_le))
		self.actionHandler.bindAction("archive\\gzip", UIAction(self.on_gzip))
		self.actionHandler.bindAction("archive\\lzh", UIAction(self.on_lzh))
		self.actionHandler.bindAction("archive\\rar", UIAction(self.on_rar))
		self.actionHandler.bindAction("archive\\zip", UIAction(self.on_zip))
		self.actionHandler.bindAction("cad\\monomakh_sapr_chg", UIAction(self.on_monomakh_sapr_chg))
		self.actionHandler.bindAction("common\\bcd", UIAction(self.on_bcd))
		self.actionHandler.bindAction("database\\dbf", UIAction(self.on_dbf))
		self.actionHandler.bindAction("database\\gettext_mo", UIAction(self.on_gettext_mo))
		self.actionHandler.bindAction("database\\sqlite3", UIAction(self.on_sqlite3))
		self.actionHandler.bindAction("database\\tsm", UIAction(self.on_tsm))
		self.actionHandler.bindAction("executable\\dex", UIAction(self.on_dex))
		self.actionHandler.bindAction("executable\\dos_mz", UIAction(self.on_dos_mz))
		self.actionHandler.bindAction("executable\\elf", UIAction(self.on_elf))
		self.actionHandler.bindAction("executable\\java_class", UIAction(self.on_java_class))
		self.actionHandler.bindAction("executable\\mach_o", UIAction(self.on_mach_o))
		self.actionHandler.bindAction("executable\\microsoft_pe", UIAction(self.on_microsoft_pe))
		self.actionHandler.bindAction("executable\\python_pyc_27", UIAction(self.on_python_pyc_27))
		self.actionHandler.bindAction("executable\\swf", UIAction(self.on_swf))
		self.actionHandler.bindAction("filesystem\\apm_partition_table", UIAction(self.on_apm_partition_table))
		self.actionHandler.bindAction("filesystem\\apple_single_double", UIAction(self.on_apple_single_double))
		self.actionHandler.bindAction("filesystem\\cramfs", UIAction(self.on_cramfs))
		self.actionHandler.bindAction("filesystem\\ext2", UIAction(self.on_ext2))
		self.actionHandler.bindAction("filesystem\\gpt_partition_table", UIAction(self.on_gpt_partition_table))
		self.actionHandler.bindAction("filesystem\\iso9660", UIAction(self.on_iso9660))
		self.actionHandler.bindAction("filesystem\\luks", UIAction(self.on_luks))
		self.actionHandler.bindAction("filesystem\\lvm2", UIAction(self.on_lvm2))
		self.actionHandler.bindAction("filesystem\\mbr_partition_table", UIAction(self.on_mbr_partition_table))
		self.actionHandler.bindAction("filesystem\\tr_dos_image", UIAction(self.on_tr_dos_image))
		self.actionHandler.bindAction("filesystem\\vdi", UIAction(self.on_vdi))
		self.actionHandler.bindAction("filesystem\\vfat", UIAction(self.on_vfat))
		self.actionHandler.bindAction("filesystem\\vmware_vmdk", UIAction(self.on_vmware_vmdk))
		self.actionHandler.bindAction("firmware\\andes_firmware", UIAction(self.on_andes_firmware))
		self.actionHandler.bindAction("firmware\\ines", UIAction(self.on_ines))
		self.actionHandler.bindAction("firmware\\uimage", UIAction(self.on_uimage))
		self.actionHandler.bindAction("font\\ttf", UIAction(self.on_ttf))
		self.actionHandler.bindAction("game\\allegro_dat", UIAction(self.on_allegro_dat))
		self.actionHandler.bindAction("game\\doom_wad", UIAction(self.on_doom_wad))
		self.actionHandler.bindAction("game\\dune_2_pak", UIAction(self.on_dune_2_pak))
		self.actionHandler.bindAction("game\\fallout2_dat", UIAction(self.on_fallout2_dat))
		self.actionHandler.bindAction("game\\fallout_dat", UIAction(self.on_fallout_dat))
		self.actionHandler.bindAction("game\\ftl_dat", UIAction(self.on_ftl_dat))
		self.actionHandler.bindAction("game\\gran_turismo_vol", UIAction(self.on_gran_turismo_vol))
		self.actionHandler.bindAction("game\\heaps_pak", UIAction(self.on_heaps_pak))
		self.actionHandler.bindAction("game\\heroes_of_might_and_magic_agg", UIAction(self.on_heroes_of_might_and_magic_agg))
		self.actionHandler.bindAction("game\\heroes_of_might_and_magic_bmp", UIAction(self.on_heroes_of_might_and_magic_bmp))
		self.actionHandler.bindAction("game\\quake_mdl", UIAction(self.on_quake_mdl))
		self.actionHandler.bindAction("game\\quake_pak", UIAction(self.on_quake_pak))
		self.actionHandler.bindAction("game\\renderware_binary_stream", UIAction(self.on_renderware_binary_stream))
		self.actionHandler.bindAction("game\\saints_row_2_vpp_pc", UIAction(self.on_saints_row_2_vpp_pc))
		self.actionHandler.bindAction("game\\warcraft_2_pud", UIAction(self.on_warcraft_2_pud))
		self.actionHandler.bindAction("geospatial\\shapefile_index", UIAction(self.on_shapefile_index))
		self.actionHandler.bindAction("geospatial\\shapefile_main", UIAction(self.on_shapefile_main))
		self.actionHandler.bindAction("hardware\\edid", UIAction(self.on_edid))
		self.actionHandler.bindAction("hardware\\mifare\\mifare_classic", UIAction(self.on_mifare_classic))
		self.actionHandler.bindAction("image\\bmp", UIAction(self.on_bmp))
		self.actionHandler.bindAction("image\\dicom", UIAction(self.on_dicom))
		self.actionHandler.bindAction("image\\exif", UIAction(self.on_exif))
		self.actionHandler.bindAction("image\\exif_be", UIAction(self.on_exif_be))
		self.actionHandler.bindAction("image\\exif_le", UIAction(self.on_exif_le))
		self.actionHandler.bindAction("image\\gif", UIAction(self.on_gif))
		self.actionHandler.bindAction("image\\icc_4", UIAction(self.on_icc_4))
		self.actionHandler.bindAction("image\\ico", UIAction(self.on_ico))
		self.actionHandler.bindAction("image\\jpeg", UIAction(self.on_jpeg))
		self.actionHandler.bindAction("image\\pcx", UIAction(self.on_pcx))
		self.actionHandler.bindAction("image\\pcx_dcx", UIAction(self.on_pcx_dcx))
		self.actionHandler.bindAction("image\\png", UIAction(self.on_png))
		self.actionHandler.bindAction("image\\psx_tim", UIAction(self.on_psx_tim))
		self.actionHandler.bindAction("image\\tga", UIAction(self.on_tga))
		self.actionHandler.bindAction("image\\wmf", UIAction(self.on_wmf))
		self.actionHandler.bindAction("image\\xwd", UIAction(self.on_xwd))
		self.actionHandler.bindAction("log\\aix_utmp", UIAction(self.on_aix_utmp))
		self.actionHandler.bindAction("log\\glibc_utmp", UIAction(self.on_glibc_utmp))
		self.actionHandler.bindAction("log\\systemd_journal", UIAction(self.on_systemd_journal))
		self.actionHandler.bindAction("log\\windows_evt_log", UIAction(self.on_windows_evt_log))
		self.actionHandler.bindAction("machine_code\\code_6502", UIAction(self.on_code_6502))
		self.actionHandler.bindAction("media\\avi", UIAction(self.on_avi))
		self.actionHandler.bindAction("media\\blender_blend", UIAction(self.on_blender_blend))
		self.actionHandler.bindAction("media\\creative_voice_file", UIAction(self.on_creative_voice_file))
		self.actionHandler.bindAction("media\\genmidi_op2", UIAction(self.on_genmidi_op2))
		self.actionHandler.bindAction("media\\id3v1_1", UIAction(self.on_id3v1_1))
		self.actionHandler.bindAction("media\\id3v2_3", UIAction(self.on_id3v2_3))
		self.actionHandler.bindAction("media\\id3v2_4", UIAction(self.on_id3v2_4))
		self.actionHandler.bindAction("media\\magicavoxel_vox", UIAction(self.on_magicavoxel_vox))
		self.actionHandler.bindAction("media\\ogg", UIAction(self.on_ogg))
		self.actionHandler.bindAction("media\\quicktime_mov", UIAction(self.on_quicktime_mov))
		self.actionHandler.bindAction("media\\standard_midi_file", UIAction(self.on_standard_midi_file))
		self.actionHandler.bindAction("media\\stl", UIAction(self.on_stl))
		self.actionHandler.bindAction("media\\tracker_modules\\fasttracker_xm_module", UIAction(self.on_fasttracker_xm_module))
		self.actionHandler.bindAction("media\\tracker_modules\\s3m", UIAction(self.on_s3m))
		self.actionHandler.bindAction("media\\vp8_ivf", UIAction(self.on_vp8_ivf))
		self.actionHandler.bindAction("media\\wav", UIAction(self.on_wav))
		self.actionHandler.bindAction("network\\bitcoin_transaction", UIAction(self.on_bitcoin_transaction))
		self.actionHandler.bindAction("network\\dns_packet", UIAction(self.on_dns_packet))
		self.actionHandler.bindAction("network\\hccap", UIAction(self.on_hccap))
		self.actionHandler.bindAction("network\\hccapx", UIAction(self.on_hccapx))
		self.actionHandler.bindAction("network\\icmp_packet", UIAction(self.on_icmp_packet))

		if sys.version_info[0] == 3:
			self.actionHandler.bindAction("network\\ethernet_frame", UIAction(self.on_ethernet_frame))
			self.actionHandler.bindAction("network\\ipv4_packet", UIAction(self.on_ipv4_packet))
			self.actionHandler.bindAction("network\\ipv6_packet", UIAction(self.on_ipv6_packet))
			self.actionHandler.bindAction("network\\microsoft_network_monitor_v2", UIAction(self.on_microsoft_network_monitor_v2))
			self.actionHandler.bindAction("network\\packet_ppi", UIAction(self.on_packet_ppi))
			self.actionHandler.bindAction("network\\pcap", UIAction(self.on_pcap))
			self.actionHandler.bindAction("network\\protocol_body", UIAction(self.on_protocol_body))

		self.actionHandler.bindAction("network\\rtcp_payload", UIAction(self.on_rtcp_payload))
		self.actionHandler.bindAction("network\\rtp_packet", UIAction(self.on_rtp_packet))
		self.actionHandler.bindAction("network\\tcp_segment", UIAction(self.on_tcp_segment))
		self.actionHandler.bindAction("network\\tls_client_hello", UIAction(self.on_tls_client_hello))
		self.actionHandler.bindAction("network\\udp_datagram", UIAction(self.on_udp_datagram))
		self.actionHandler.bindAction("network\\windows_systemtime", UIAction(self.on_windows_systemtime))
		self.actionHandler.bindAction("scientific\\nt_mdt\\nt_mdt", UIAction(self.on_nt_mdt))
		self.actionHandler.bindAction("scientific\\nt_mdt\\nt_mdt_pal", UIAction(self.on_nt_mdt_pal))
		self.actionHandler.bindAction("scientific\\spectroscopy\\avantes_roh60", UIAction(self.on_avantes_roh60))
		self.actionHandler.bindAction("scientific\\spectroscopy\\specpr", UIAction(self.on_specpr))
		self.actionHandler.bindAction("security\\openpgp_message", UIAction(self.on_openpgp_message))
		self.actionHandler.bindAction("security\\ssh_public_key", UIAction(self.on_ssh_public_key))
		self.actionHandler.bindAction("serialization\\asn1\\asn1_der", UIAction(self.on_asn1_der))
		self.actionHandler.bindAction("serialization\\bson", UIAction(self.on_bson))
		self.actionHandler.bindAction("serialization\\google_protobuf", UIAction(self.on_google_protobuf))
		self.actionHandler.bindAction("serialization\\microsoft_cfb", UIAction(self.on_microsoft_cfb))
		self.actionHandler.bindAction("serialization\\msgpack", UIAction(self.on_msgpack))
		self.actionHandler.bindAction("serialization\\ruby_marshal", UIAction(self.on_ruby_marshal))
		self.actionHandler.bindAction("windows\\regf", UIAction(self.on_regf))
		self.actionHandler.bindAction("windows\\windows_lnk_file", UIAction(self.on_windows_lnk_file))
		self.actionHandler.bindAction("windows\\windows_minidump", UIAction(self.on_windows_minidump))
		self.actionHandler.bindAction("windows\\windows_resource_file", UIAction(self.on_windows_resource_file))
		self.actionHandler.bindAction("windows\\windows_shell_items", UIAction(self.on_windows_shell_items))
		self.actionHandler.bindAction("windows\\windows_systemtime", UIAction(self.on_windows_systemtime))

	def mousePressEvent(self, event):
		# when someone clicks our label, pop up the context menu
		self.contextMenuManager.show(self.menu, self.actionHandler)

	def enterEvent(self, event):
		self.setAutoFillBackground(True)
		self.setForegroundRole(QPalette.HighlightedText)
		QLabel.enterEvent(self, event)

	def leaveEvent(self, event):
		self.setAutoFillBackground(False)
		self.setForegroundRole(QPalette.WindowText)
		QLabel.leaveEvent(self, event)

	def on_cpio_old_le(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('cpio_old_le')

	def on_gzip(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('gzip')

	def on_lzh(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('lzh')

	def on_rar(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('rar')

	def on_zip(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('zip')

	def on_monomakh_sapr_chg(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('monomakh_sapr_chg')

	def on_bcd(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('bcd')

	def on_dbf(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('dbf')

	def on_gettext_mo(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('gettext_mo')

	def on_sqlite3(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('sqlite3')

	def on_tsm(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('tsm')

	def on_dex(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('dex')

	def on_dos_mz(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('dos_mz')

	def on_elf(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('elf')

	def on_java_class(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('java_class')

	def on_mach_o(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('mach_o')

	def on_microsoft_pe(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('microsoft_pe')

	def on_python_pyc_27(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('python_pyc_27')

	def on_swf(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('swf')

	def on_apm_partition_table(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('apm_partition_table')

	def on_apple_single_double(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('apple_single_double')

	def on_cramfs(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('cramfs')

	def on_ext2(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('ext2')

	def on_gpt_partition_table(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('gpt_partition_table')

	def on_iso9660(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('iso9660')

	def on_luks(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('luks')

	def on_lvm2(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('lvm2')

	def on_mbr_partition_table(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('mbr_partition_table')

	def on_tr_dos_image(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('tr_dos_image')

	def on_vdi(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('vdi')

	def on_vfat(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('vfat')

	def on_vmware_vmdk(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('vmware_vmdk')

	def on_andes_firmware(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('andes_firmware')

	def on_ines(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('ines')

	def on_uimage(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('uimage')

	def on_ttf(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('ttf')

	def on_allegro_dat(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('allegro_dat')

	def on_doom_wad(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('doom_wad')

	def on_dune_2_pak(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('dune_2_pak')

	def on_fallout2_dat(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('fallout2_dat')

	def on_fallout_dat(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('fallout_dat')

	def on_ftl_dat(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('ftl_dat')

	def on_gran_turismo_vol(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('gran_turismo_vol')

	def on_heaps_pak(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('heaps_pak')

	def on_heroes_of_might_and_magic_agg(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('heroes_of_might_and_magic_agg')

	def on_heroes_of_might_and_magic_bmp(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('heroes_of_might_and_magic_bmp')

	def on_quake_mdl(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('quake_mdl')

	def on_quake_pak(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('quake_pak')

	def on_renderware_binary_stream(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('renderware_binary_stream')

	def on_saints_row_2_vpp_pc(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('saints_row_2_vpp_pc')

	def on_warcraft_2_pud(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('warcraft_2_pud')

	def on_shapefile_index(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('shapefile_index')

	def on_shapefile_main(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('shapefile_main')

	def on_edid(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('edid')

	def on_mifare_classic(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('mifare_classic')

	def on_bmp(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('bmp')

	def on_dicom(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('dicom')

	def on_exif(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('exif')

	def on_exif_be(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('exif_be')

	def on_exif_le(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('exif_le')

	def on_gif(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('gif')

	def on_icc_4(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('icc_4')

	def on_ico(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('ico')

	def on_jpeg(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('jpeg')

	def on_pcx(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('pcx')

	def on_pcx_dcx(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('pcx_dcx')

	def on_png(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('png')

	def on_psx_tim(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('psx_tim')

	def on_tga(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('tga')

	def on_wmf(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('wmf')

	def on_xwd(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('xwd')

	def on_aix_utmp(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('aix_utmp')

	def on_glibc_utmp(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('glibc_utmp')

	def on_systemd_journal(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('systemd_journal')

	def on_windows_evt_log(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('windows_evt_log')

	def on_code_6502(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('code_6502')

	def on_avi(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('avi')

	def on_blender_blend(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('blender_blend')

	def on_creative_voice_file(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('creative_voice_file')

	def on_genmidi_op2(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('genmidi_op2')

	def on_id3v1_1(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('id3v1_1')

	def on_id3v2_3(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('id3v2_3')

	def on_id3v2_4(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('id3v2_4')

	def on_magicavoxel_vox(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('magicavoxel_vox')

	def on_ogg(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('ogg')

	def on_quicktime_mov(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('quicktime_mov')

	def on_standard_midi_file(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('standard_midi_file')

	def on_stl(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('stl')

	def on_fasttracker_xm_module(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('fasttracker_xm_module')

	def on_s3m(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('s3m')

	def on_vp8_ivf(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('vp8_ivf')

	def on_wav(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('wav')

	def on_bitcoin_transaction(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('bitcoin_transaction')

	def on_dns_packet(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('dns_packet')

	def on_ethernet_frame(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('ethernet_frame')

	def on_hccap(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('hccap')

	def on_hccapx(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('hccapx')

	def on_icmp_packet(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('icmp_packet')

	def on_ipv4_packet(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('ipv4_packet')

	def on_ipv6_packet(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('ipv6_packet')

	def on_microsoft_network_monitor_v2(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('microsoft_network_monitor_v2')

	def on_packet_ppi(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('packet_ppi')

	def on_pcap(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('pcap')

	def on_protocol_body(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('protocol_body')

	def on_rtcp_payload(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('rtcp_payload')

	def on_rtp_packet(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('rtp_packet')

	def on_tcp_segment(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('tcp_segment')

	def on_tls_client_hello(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('tls_client_hello')

	def on_udp_datagram(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('udp_datagram')

	def on_windows_systemtime(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('windows_systemtime')

	def on_nt_mdt(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('nt_mdt')

	def on_nt_mdt_pal(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('nt_mdt_pal')

	def on_avantes_roh60(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('avantes_roh60')

	def on_specpr(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('specpr')

	def on_openpgp_message(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('openpgp_message')

	def on_ssh_public_key(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('ssh_public_key')

	def on_asn1_der(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('asn1_der')

	def on_bson(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('bson')

	def on_google_protobuf(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('google_protobuf')

	def on_microsoft_cfb(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('microsoft_cfb')

	def on_msgpack(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('msgpack')

	def on_ruby_marshal(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('ruby_marshal')

	def on_regf(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('regf')

	def on_windows_lnk_file(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('windows_lnk_file')

	def on_windows_minidump(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('windows_minidump')

	def on_windows_resource_file(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('windows_resource_file')

	def on_windows_shell_items(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('windows_shell_items')

	def on_windows_systemtime(self, uiActionContext):
		self.statusBarWidget.kaitaiView.kaitaiParse('windows_systemtime')
Beispiel #18
0
        if len(snippetKey) != 0 and snippetKey[0] != self.keySequenceEdit.keySequence():
            return True
        return self.edit.toPlainText() != snippetCode or \
               self.snippetDescription.text() != snippetDescription

    def save(self):
        log_debug("Saving snippet %s" % self.currentFile)
        outputSnippet = open(self.currentFile, "w")
        outputSnippet.write("#" + self.snippetDescription.text() + "\n")
        outputSnippet.write("#" + self.keySequenceEdit.keySequence().toString() + "\n")
        outputSnippet.write(self.edit.toPlainText())
        outputSnippet.close()
        self.registerAllSnippets()

    def clearHotkey(self):
        self.keySequenceEdit.clear()

def launchPlugin(context):
    snippets = Snippets()
    snippets.exec_()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    snippets = Snippets()
    snippets.show()
    sys.exit(app.exec_())
else:
    UIAction.registerAction("Snippet Editor...")
    UIActionHandler.globalActions().bindAction("Snippet Editor...", UIAction(launchPlugin))
    Menu.mainMenu("Tools").addAction("Snippet Editor...", "Snippet")
Beispiel #19
0
from .types.libimport import browse_type_library
from binaryninja import PluginCommand
from binaryninjaui import UIAction, UIActionHandler, Menu, ViewType

from .types.export import export_type_library
from .types.make_struct import make_struct_here
from .functions.callgraph import CallGraphViewType

UIAction.registerAction(
    "Reverse Engineer's Toolkit\\Types\\Export Type Library")
UIActionHandler.globalActions().bindAction(
    "Reverse Engineer's Toolkit\\Types\\Export Type Library",
    UIAction(export_type_library, lambda ctx: ctx.binaryView is not None),
)
Menu.mainMenu("Tools").addAction(
    "Reverse Engineer's Toolkit\\Types\\Export Type Library",
    "Export Type Library")

UIAction.registerAction(
    "Reverse Engineer's Toolkit\\Types\\Import Type Library")
UIActionHandler.globalActions().bindAction(
    "Reverse Engineer's Toolkit\\Types\\Import Type Library",
    UIAction(browse_type_library, lambda ctx: ctx.binaryView is not None),
)
Menu.mainMenu("Tools").addAction(
    "Reverse Engineer's Toolkit\\Types\\Import Type Library",
    "Import Type Library")

PluginCommand.register_for_range(
    "Make Structure Here",
    "Make a structure from this range of data variables",