Source code for rawdisk.ui.cli.cli_mode

import logging
import os
from rawdisk.session import Session
from tabulate import tabulate
from cmd import Cmd


[docs]class CliMode:
[docs] @staticmethod def start(): cli = CliShell() cli.initialize() cli.cmdloop()
[docs]class CliShell(Cmd): def __init__(self, session=None): super().__init__() self.prompt = self.get_prompt() self.ruler = '-' self.intro = 'Welcome to rawdisk shell. ' \ 'Type help or ? to list command.\n' if session is None: self.__session = Session() else: self.__session = session self.logger = logging.getLogger(__name__)
[docs] def initialize(self): self.__session.load_plugins()
def __list_plugins(self): plugins = self.__session.filesystem_plugins data = [ [plugin.name, plugin.author, plugin.version, plugin.description, plugin.plugin_object.identifier_string] for plugin in plugins] table = tabulate( tabular_data=data, headers=['NAME', 'AUTHOR', 'VERSION', 'DESCRIPTION', 'IDENTIFIERS'] ) print(table) def __list_volumes(self): if self.__session.filename is None: self.logger.warning('Please load disk image first') else: for volume in self.__session.volumes: print(volume)
[docs] def do_list(self, resource): """ Enumerate resources Possible values: plugins, volumes """ if resource == 'plugins': self.__list_plugins() elif resource == 'volumes': self.__list_volumes() else: self.logger.error("Unknown resource: '{}', type 'help list' " "to get more information".format(resource))
[docs] def do_load(self, filename): """Load disk image for analysis""" try: self.__session.load(filename) except IOError as e: self.logger.error(e.strerror)
[docs] def do_session(self, args): """Print current session information""" filename = 'Not specified' if self.__session.filename is None \ else self.__session.filename print('{0: <30}: {1}'.format('Filename', filename))
[docs] def do_shell(self, command): """ Execute shell command Use shell [command] or ![command] syntax """ os.system(command)
[docs] def do_quit(self, arg): """Exit CLI""" self.close() return True
[docs] def do_exit(self, arg): """Exit CLI""" self.close() return True
[docs] def get_prompt(self): return 'rawdisk > '
[docs] def close(self): return