コード例 #1
0
    def check_request_raw(self, request_raw):
        """
        检查流量数据包中的必要字段是否完整
        :param request_raw: 
        :return: 
        """
        if not isinstance(request_raw, dict):
            raise BaseHunterException(
                "传入的request_raw不是一个dict类型,其类型为{type}".format(type=type(request_raw) if request_raw else None))

        keys = ["type", "url", "method", "headers"]
        miss_keys = []
        for key in keys:
            if key not in request_raw:
                miss_keys.append(key)
        if len(miss_keys) > 0:
            raise RequestParseError(request_raw, miss_keys)
コード例 #2
0
    def parse_plugin_file(plugin_file_path):
        """
        warnning: 插件文件路径,这里会存在安全隐患,请按照实际需求考虑是否用imp.load_source
        :param plugin_file_path: 
        :return: 
        """
        import imp
        from exception.hunter_web_exception import BaseHunterException

        # 解析插件并且分类
        base_checker = imp.load_source('BaseChecker', plugin_file_path)
        checker_instance = base_checker.Checker()
        checker_instance.check_plugin_info()
        # 检测插件是否重名
        checker_name = checker_instance.info["name"]
        if checker_name in load_default_checkers():
            raise BaseHunterException("插件%s已经存在,请重新命名" % checker_name)
        return checker_instance
コード例 #3
0
ファイル: task.py プロジェクト: zzx4998/hunter
    def get_tasks_url_num(task_id, task_status):
        """
        获取得到任务以及其对应的扫描url数据统计
        :param task_id: 
        :param task_status: 
        :return: 
        """
        from model.url import Url
        from model.user import User
        query = list()
        if task_id is not None and task_id != "":
            try:
                task_id = int(task_id)
            except ValueError:
                raise BaseHunterException("task_id 不是一个数字")
            query.append(Task.id == task_id)
        if task_status is not None and task_status != "":
            query.append(Task.task_status == int(task_status))

        if len(query) > 0:
            tasks = Task.select(
                Task.receivers_email, Task.task_name, Task.created_time,
                Task.id, Task.access_key, Task.task_status, Task.hook_rule,
                User.select(User.user_name).alias('create_user_name').where(
                    User.id == Task.create_user_id),
                Url.select(fn.COUNT(Url.id)).alias('unscaned_urls_num').where(
                    Url.task_id == Task.id, Url.status != TaskStatus.DONE),
                Url.select(fn.COUNT(Url.id)).alias('scaned_urls_num').where(
                    Url.task_id == Task.id,
                    Url.status == TaskStatus.DONE)).where(
                        *tuple(query)).execute()
        else:
            tasks = Task.select(
                Task.receivers_email, Task.task_name, Task.created_time,
                Task.id, Task.access_key, Task.task_status, Task.hook_rule,
                User.select(User.user_name).alias('create_user_name').where(
                    User.id == Task.create_user_id),
                Url.select(fn.COUNT(Url.id)).alias('unscaned_urls_num').where(
                    Url.task_id == Task.id, Url.status != TaskStatus.DONE),
                Url.select(fn.COUNT(Url.id)).alias('scaned_urls_num').where(
                    Url.task_id == Task.id,
                    Url.status == TaskStatus.DONE)).execute()
        return tasks
コード例 #4
0
 def __init__(self):
     BaseHunterException.__init__(self, "没有从user表中找到符合条件的记录")
コード例 #5
0
 def __init__(self, plugin):
     BaseHunterException.__init__(self, "模块{}未找到".format(plugin))
コード例 #6
0
 def __init__(self, info, miss_keys):
     BaseHunterException.__init__(
         self, "插件信息{}不完整,待补充的字段有{}".format(info, ','.join(miss_keys)))
コード例 #7
0
 def __init__(self):
     BaseHunterException.__init__(self, "解析http头出错")
コード例 #8
0
 def __init__(self, package, miss_keys):
     BaseHunterException.__init__(
         self, "{}不完整,请求报文有待补充项,待补充的字段有{}".format(package,
                                                  ','.join(miss_keys)))
コード例 #9
0
 def __init__(self, message):
     BaseHunterException.__init__(self, message)