def smalisca_signal_handler(signum, frame):
    """A basic signal handler.

    This function will catch specific signals and trigger some actions.

    Args:
        signum (int): Signal number

    """
    if signum == signal.SIGTERM:
        log.warn("Caught SIGTERM! Exiting ...")
        sys.exit(1)

    elif signum == signal.SIGINT:
        log.warn("Caught SIGINT! Exiting...")
        sys.exit(1)
Example #2
0
def smalisca_signal_handler(signum, frame):
    """A basic signal handler.

    This function will catch specific signals and trigger some actions.

    Args:
        signum (int): Signal number

    """
    if signum == signal.SIGTERM:
        log.warn("Caught SIGTERM! Exiting ...")
        sys.exit(1)

    elif signum == signal.SIGINT:
        log.warn("Caught SIGINT! Exiting...")
        sys.exit(1)
Example #3
0
    def do_s(self, params):
        """Global search function. Type 's --help' for help."""
        try:
            args = self.s_parser.parse_args(params.split())
            p = {}
            if args.search_pattern:
                p['pattern'] = args.search_pattern

                if args.table:
                    p['table'] = args.table

                # Get results
                results = self.analysis.search(p)
                self.print_global_search(results)
            else:
                log.warn("You have to specify a search pattern!")

        except SystemExit:
            pass
Example #4
0
    def do_s(self, params):
        """Global search function. Type 's --help' for help."""
        try:
            args = self.s_parser.parse_args(params.split())
            p = {}
            if args.search_pattern:
                p['pattern'] = args.search_pattern

                if args.table:
                    p['table'] = args.table

                # Get results
                results = self.analysis.search(p)
                self.print_global_search(results)
            else:
                log.warn("You have to specify a search pattern!")

        except SystemExit:
            pass
Example #5
0
    def print_global_search(self, results):
        # Print classes
        print(
            "- Classes ---------------------------------------------------------------------"
        )
        if len(results['classes']) > 0:
            classes = results['classes']
            log.info("Found %d results" % len(classes))

            for c in classes:
                print("%s\n" % c)
        else:
            log.warn("No found classes.\n")

        # Print properties
        print(
            "- Properties ------------------------------------------------------------------"
        )
        if len(results['properties']) > 0:
            properties = results['properties']
            log.info("Found %d results" % len(properties))

            for p in properties:
                print("%s\n" % p)
        else:
            log.warn("No found properties.\n")

        # Print const strings
        print(
            "- Const strings ---------------------------------------------------------------"
        )
        if len(results['consts']) > 0:
            const_strings = results['consts']
            log.info("Found %d results" % len(const_strings))

            for s in const_strings:
                print("%s\n" % s)
        else:
            log.warn("No found const strings.\n")

        # Print methods
        print(
            "- Methods ---------------------------------------------------------------------"
        )
        if len(results['methods']) > 0:
            methods = results['methods']
            log.info("Found %d results" % len(methods))

            for m in methods:
                print("%s\n" % m)
        else:
            log.warn("No found methods.\n")
Example #6
0
    def get_class_by_name(self, classname):
        """Returns class obj specified by name

        Args:
            classname (str): Name of the class

        Returns
           class object

        """
        classes = self.db.query(SmaliClass)
        class_obj = classes.filter(SmaliClass.class_name == classname)

        # Check if any results:
        try:
            if self.db.query(class_obj.exists()):
                return class_obj.one()

        except sql.orm.exc.NoResultFound:
            log.warn("No result found")
            return None
Example #7
0
    def get_class_by_name(self, classname):
        """Returns class obj specified by name

        Args:
            classname (str): Name of the class

        Returns
           class object

        """
        classes = self.db.query(SmaliClass)
        class_obj = classes.filter(SmaliClass.class_name == classname)

        # Check if any results:
        try:
            if self.db.query(class_obj.exists()):
                return class_obj.one()

        except sql.orm.exc.NoResultFound:
            log.warn("No result found")
            return None
Example #8
0
    def print_global_search(self, results):
        # Print classes
        print("- Classes ---------------------------------------------------------------------")
        if len(results['classes']) > 0:
            classes = results['classes']
            log.info("Found %d results" % len(classes))

            for c in classes:
                print("%s\n" % c)
        else:
            log.warn("No found classes.\n")

        # Print properties
        print("- Properties ------------------------------------------------------------------")
        if len(results['properties']) > 0:
            properties = results['properties']
            log.info("Found %d results" % len(properties))

            for p in properties:
                print("%s\n" % p)
        else:
            log.warn("No found properties.\n")

        # Print const strings
        print("- Const strings ---------------------------------------------------------------")
        if len(results['consts']) > 0:
            const_strings = results['consts']
            log.info("Found %d results" % len(const_strings))

            for s in const_strings:
                print("%s\n" % s)
        else:
            log.warn("No found const strings.\n")

        # Print methods
        print("- Methods ---------------------------------------------------------------------")
        if len(results['methods']) > 0:
            methods = results['methods']
            log.info("Found %d results" % len(methods))

            for m in methods:
                print("%s\n" % m)
        else:
            log.warn("No found methods.\n")