import idc
import idaapi
import binwalk


class binwalk_t(idaapi.plugin_t):
    flags = 0
    comment = "Scan the current IDB for file signatures"
    help = ""
    wanted_name = "Binwalk IDA Plugin"
    wanted_hotkey = ""

    def init(self):
        self.menu_context_1 = idaapi.add_menu_item(
            "Search/", "binwalk opcodes", "", 0, self.opcode_scan, (None,))
        self.menu_context_2 = idaapi.add_menu_item(
            "Search/", "binwalk signatures", "", 0, self.signature_scan, (None,))
        return idaapi.PLUGIN_KEEP

    def term(self):
        idaapi.del_menu_item(self.menu_context_1)
        idaapi.del_menu_item(self.menu_context_2)
        return None

    def run(self, arg):
        return None

    def signature_scan(self, arg):
        binwalk.scan(idc.GetIdbPath(), signature=True)

    def opcode_scan(self, arg):
        binwalk.scan(idc.GetIdbPath(), opcode=True)


def PLUGIN_ENTRY():
    return binwalk_t()
