Skip to content

Commit

Permalink
0.6.0 更新request_plus依赖
Browse files Browse the repository at this point in the history
0.6.0 更新request_plus依赖,
1、实现主动重试等
2、响应体、相应头数据返回(可选)
  • Loading branch information
winezer0 committed Jul 25, 2023
1 parent 2d5e959 commit 91ad4ad
Show file tree
Hide file tree
Showing 10 changed files with 554 additions and 386 deletions.
10 changes: 5 additions & 5 deletions DynaScan.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
from libs.lib_dyna_rule.set_basic_var import set_base_var_dict_with_freq
from libs.lib_dyna_rule.set_depend_var import set_dependent_var_dict
from libs.lib_file_operate.rw_json_file import load_json_to_dict, dump_dict_to_json
from libs.lib_requests.requests_const import HTTP_FILTER_VALUE_DICT, HTTP_FILTER_IGNORE_KEYS, HTTP_CONST_SIGN
from libs.lib_requests.requests_const import FILTER_HTTP_VALUE_DICT, FILTER_DYNA_IGNORE_KEYS, HTTP_CONST_SIGN
from libs.lib_requests.requests_thread import multi_thread_requests_url, multi_thread_requests_url_sign
from libs.lib_requests.requests_tools import get_random_str, analysis_dict_same_keys, access_result_handle
from libs.lib_requests.requests_utils import get_random_str, analysis_dict_same_keys, access_result_handle
from libs.lib_url_analysis.parse_path import get_curr_dir_url
from libs.lib_url_analysis.url_utils import combine_urls_and_paths, get_segment_urls
from libs.lib_url_analysis.parse_host import get_proto, get_host_port
Expand Down Expand Up @@ -111,7 +111,7 @@ def init_load_dict(config_dict):

# 循环读取每个文件夹下的规则字典
for rule_dir in cur_rule_dir_list:
# 1、获取基本变量替换字典 # 只获取目标文件的下的依赖
# 1、获取基本变量替换字典 # 只获取目标文件下的依赖
base_replace_dict = set_base_var_dict_with_freq(
base_var_dir=config_dict[GB_BASE_VAR_DIR].joinpath(rule_dir),
ext_list=config_dict[GB_DICT_SUFFIX],
Expand Down Expand Up @@ -192,8 +192,8 @@ def gen_dynamic_exclude_dict(target_url, config_dict):

# 分析测试结果
dynamic_exclude_dict = analysis_dict_same_keys(test_result_dict_list,
HTTP_FILTER_VALUE_DICT,
HTTP_FILTER_IGNORE_KEYS)
FILTER_HTTP_VALUE_DICT,
FILTER_DYNA_IGNORE_KEYS)
return dynamic_exclude_dict


Expand Down
2 changes: 1 addition & 1 deletion libs/lib_args/input_parse.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from libs.lib_log_print.logger_printer import output, LOG_ERROR
from libs.lib_args.input_const import *
from libs.lib_requests.requests_const import HTTP_USER_AGENTS
from libs.lib_requests.requests_tools import random_useragent, random_x_forwarded_for
from libs.lib_requests.requests_utils import random_useragent, random_x_forwarded_for


def args_parser(config_dict):
Expand Down
2 changes: 1 addition & 1 deletion libs/lib_requests/check_protocol.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def check_url_list_access(target_list,
)
# 分析多线程检测结果
for access_result_dict in access_result_dict_list:
req_url = access_result_dict[HTTP_REQ_URL]
req_url = access_result_dict[HTTP_REQ_TARGET]
resp_status = access_result_dict[HTTP_RESP_STATUS]
if resp_status > 0:
output(f"[*] 当前目标 {req_url} 将被添加 响应结果:{access_result_dict}", level=LOG_INFO)
Expand Down
162 changes: 111 additions & 51 deletions libs/lib_requests/requests_const.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,70 +2,130 @@
# encoding: utf-8

############################################################
# 响应需要的内容
HTTP_CONST_SIGN = "HTTP_CONST_SIGN"
HTTP_REQ_URL = "HTTP_REQ_URL"

HTTP_RESP_STATUS = "HTTP_RESP_STATUS"
HTTP_RESP_REDIRECT_URL = "HTTP_RESP_REDIRECT_URL"
HTTP_RESP_TEXT_HASH = "HTTP_RESP_TEXT_HASH"
HTTP_RESP_TEXT_TITLE = "HTTP_RESP_TEXT_TITLE"
HTTP_RESP_TEXT_SIZE = "HTTP_RESP_TEXT_SIZE"
HTTP_RESP_CONTENT_LENGTH = "HTTP_RESP_CONTENT_LENGTH"
HTTP_RESP_BYTES_HEAD = "HTTP_RESP_BYTES_HEAD"
# 需要返回的响应内容
HTTP_REQ_TARGET = "HTTP_REQ_TARGET" # 用户输入的请求地址
HTTP_CONST_SIGN = "HTTP_CONST_SIGN" # 用户输入的自定义标记

HTTP_RESP_STATUS = "HTTP_RESP_STATUS" # 响应状态码

HTTP_RESP_LENGTH = "HTTP_RESP_LENGTH" # 响应头中的CL头部
HTTP_RESP_HEADERS_CRC = "HTTP_RESP_HEADERS_CRC" # 响应实际头部 HASH标记
HTTP_RESP_HEADERS_OPT = "HTTP_RESP_HEADERS_OPT" # 响应实际头部 (OP=可选)

HTTP_RESP_REDIRECT = "HTTP_RESP_REDIRECT" # 响应中的请求URL,302时不一定相同

HTTP_RESP_CONTENT_CRC = "HTTP_RESP_CONTENT_CRC" # 响应实际内容 HASH标记
HTTP_RESP_CONTENT_OPT = "HTTP_RESP_CONTENT_OPT" # 响应实际内容 (OP=可选)
HTTP_RESP_SIZE = "HTTP_RESP_SIZE" # 响应内容标记 大小标记
HTTP_RESP_TITLE = "HTTP_RESP_TITLE" # 响应文本的标题
############################################################
# 一些响应值的常量
HTTP_NONE = None
HTTP_MAXIMUM_READ = 1024000 # 设置最大读取的响应内容(字数) 一般网页有150字X3000行
NONE = None
NULL = ""

# 状态码常量
HTTP_STATUS_MINUS = -1
HTTP_STATUS_ZERO = 0
HTTP_STATUS_ONE = 1
RESP_STATUS_DEFAULT = "RESP_STATUS_DEFAULT" # 0 # 没有任何操作时候的 默认值
RESP_STATUS_IGNORE = "RESP_STATUS_IGNORE" # 1 # 已知 错误 情况的 标记赋值 # 不需要手动处理
RESP_STATUS_ERROR = "RESP_STATUS_ERROR" # -1 # 未知 错误 情况的 标记赋值 # 需要手动处理

# 响应头长度常量
RESP_LENGTH_DEFAULT = "RESP_LENGTH_DEFAULT" # 没有任何操作时候的 默认值
RESP_LENGTH_BLANK = "RESP_LENGTH_BLANK" # 获取结果为空白
RESP_LENGTH_ERROR = "RESP_LENGTH_ERROR" # 未知 错误 情况的 标记赋值

# 响应实际头部HASH
RESP_HEADERS_CRC_DEFAULT = "RESP_HEADERS_CRC_DEFAULT" # 没有任何操作时候的 默认值
RESP_HEADERS_CRC_ERROR = "RESP_HEADERS_CRC_ERROR" # 未知 错误 情况的 标记赋值
RESP_HEADERS_CRC_BLANK = "RESP_HEADERS_CRC_BLANK" # 获取结果为空白

# 响应实际头部
RESP_HEADERS_DEFAULT = "RESP_HEADERS_DEFAULT" # 没有任何操作时候的 默认值
RESP_HEADERS_ERROR = "RESP_HEADERS_ERROR" # 未知 错误 情况的 标记赋值
RESP_HEADERS_BLANK = "RESP_HEADERS_BLANK" # 获取结果为空白
RESP_HEADERS_IGNORE = "RESP_HEADERS_IGNORE" # 已知 错误 情况的 标记赋值

# 重定向常量
HTTP_NULL_REDIRECT_URL = "HTTP_NULL_REDIRECT_URL"
HTTP_RAW_REDIRECT_URL = "HTTP_RAW_REDIRECT_URL"
# 响应内容常量
HTTP_BLANK_BYTES = "HTTP_BLANK_BYTES"
HTTP_NULL_BYTES = "HTTP_NULL_BYTES"
# 文本HASH常量
HTTP_IGNORE_TEXT_HASH = "HTTP_IGNORE_TEXT_HASH"
HTTP_NULL_TEXT_HASH = "HTTP_NULL_TEXT_HASH"
RESP_REDIRECT_DEFAULT = "RESP_REDIRECT_DEFAULT" # 没有任何操作时候的 默认值
RESP_REDIRECT_ORIGIN = "RESP_REDIRECT_ORIGIN" # 获取结果为原始情况
RESP_REDIRECT_ERROR = "RESP_REDIRECT_ERROR" # 未知 错误 情况的 标记赋值

# 响应实际内容HASH
RESP_CONTENT_CRC_DEFAULT = "RESP_CONTENT_CRC_DEFAULT" # 没有任何操作时候的 默认值
RESP_CONTENT_CRC_ERROR = "RESP_CONTENT_CRC_ERROR" # 未知 错误 情况的 标记赋值
RESP_CONTENT_CRC_BLANK = "RESP_CONTENT_CRC_BLANK" # 获取结果为空白
RESP_CONTENT_CRC_LARGE = "RESP_CONTENT_CRC_LARGE" # 获取结果为空白 超限

# 响应实际内容
RESP_CONTENT_DEFAULT = "RESP_CONTENT_DEFAULT" # 没有任何操作时候的 默认值
RESP_CONTENT_LARGE = "RESP_CONTENT_LARGE" # 获取结果为空白
RESP_CONTENT_ERROR = "RESP_CONTENT_ERROR" # 未知 错误 情况的 标记赋值
RESP_CONTENT_IGNORE = "RESP_CONTENT_IGNORE" # 已知 情况的 标记赋值
RESP_CONTENT_BLANK = "RESP_CONTENT_BLANK" # 已知 情况的 标记赋值

# 文本大小常量
RESP_SIZE_DEFAULT = "RESP_SIZE_DEFAULT" # 没有任何操作时候的 默认值
RESP_SIZE_ERROR = "RESP_SIZE_ERROR" # 未知 错误 情况的 标记赋值
RESP_SIZE_LARGE = "RESP_SIZE_LARGE" # 已知 情况的 内容太大
RESP_SIZE_BLANK = "RESP_SIZE_BLANK" # 获取结果为空白

# 文本标题常量
HTTP_BLANK_TITLE = "HTTP_BLANK_TITLE"
HTTP_NULL_TITLE = "HTTP_NULL_TITLE"
HTTP_IGNORE_TITLE = "HTTP_IGNORE_TITLE"
RESP_TITLE_DEFAULT = "RESP_TITLE_DEFAULT" # 没有任何操作时候的 默认值
RESP_TITLE_ERROR = "RESP_TITLE_ERROR" # 未知 错误 情况的 标记赋值
RESP_TITLE_LARGE = "RESP_TITLE_LARGE" # 已知 情况的 内容太大
RESP_TITLE_BLANK = "RESP_TITLE_BLANK" # 获取结果为空白
############################################################
# 默认的响应字典,使用前被copy一份
HTTP_DEFAULT_RESP_DICT = {
HTTP_REQ_URL: HTTP_NONE, # 请求的URL 必须在请求时填充
HTTP_CONST_SIGN: HTTP_NONE, # 请求自定义的标记, 必须在请求时填充 原样返回
HTTP_RESP_STATUS: HTTP_STATUS_MINUS, # 响应状态码 赋值默认值
HTTP_RESP_BYTES_HEAD: HTTP_NULL_BYTES, # 响应头字节 赋值默认值
HTTP_RESP_CONTENT_LENGTH: HTTP_STATUS_MINUS, # 响应内容长度 赋值默认值
HTTP_RESP_TEXT_SIZE: HTTP_STATUS_MINUS, # 响应内容大小 赋值默认值
HTTP_RESP_TEXT_TITLE: HTTP_NULL_TITLE, # 响应文本标题 赋值默认值
HTTP_RESP_TEXT_HASH: HTTP_NULL_TEXT_HASH, # 响应文本HASH 赋值默认值
HTTP_RESP_REDIRECT_URL: HTTP_NULL_REDIRECT_URL, # 响应重定向URL 赋值默认值
DEFAULT_HTTP_RESP_DICT = {
HTTP_REQ_TARGET: NONE, # 请求的URL, 必须在请求时填充
HTTP_CONST_SIGN: NONE, # 请求自定义的标记, 必须在请求时填充 原样返回

HTTP_RESP_STATUS: RESP_STATUS_DEFAULT, # 响应状态码 赋值默认值
HTTP_RESP_LENGTH: RESP_LENGTH_DEFAULT, # 响应CL长度 赋值默认值

HTTP_RESP_SIZE: RESP_SIZE_DEFAULT, # 响应文本大小 赋值默认值
HTTP_RESP_TITLE: RESP_TITLE_DEFAULT, # 响应文本标题 赋值默认值

HTTP_RESP_REDIRECT: RESP_REDIRECT_DEFAULT, # 响应重定向URL 赋值默认值

HTTP_RESP_HEADERS_CRC: RESP_HEADERS_CRC_DEFAULT, # 响应头部HASH 赋值默认值
HTTP_RESP_CONTENT_CRC: RESP_CONTENT_CRC_DEFAULT, # 响应文本HASH 赋值默认值

HTTP_RESP_HEADERS_OPT: RESP_HEADERS_DEFAULT, # 响应头部信息 赋值默认值
HTTP_RESP_CONTENT_OPT: RESP_CONTENT_DEFAULT, # 响应内容信息 赋值默认值
}
############################################################
# 每个响应键的默认值或空值,在动态筛选时被忽略
HTTP_FILTER_VALUE_DICT = {
HTTP_REQ_URL: [HTTP_NONE, ""],
HTTP_CONST_SIGN: [HTTP_NONE, ""],
HTTP_RESP_STATUS: [HTTP_STATUS_MINUS, HTTP_STATUS_ZERO, HTTP_STATUS_ONE],
HTTP_RESP_BYTES_HEAD: [HTTP_NULL_BYTES, HTTP_BLANK_BYTES],
HTTP_RESP_CONTENT_LENGTH: [HTTP_STATUS_MINUS, HTTP_STATUS_ZERO],
HTTP_RESP_TEXT_TITLE: [HTTP_NULL_TITLE, HTTP_IGNORE_TITLE, HTTP_BLANK_TITLE],
HTTP_RESP_TEXT_HASH: [HTTP_NULL_TEXT_HASH, HTTP_IGNORE_TEXT_HASH],
HTTP_RESP_TEXT_SIZE: [HTTP_STATUS_MINUS, HTTP_STATUS_ZERO],
HTTP_RESP_REDIRECT_URL: [HTTP_NULL_REDIRECT_URL, HTTP_RAW_REDIRECT_URL],
FILTER_HTTP_VALUE_DICT = {
HTTP_REQ_TARGET: [NONE, NULL],
HTTP_CONST_SIGN: [NONE, NULL],

HTTP_RESP_STATUS: [RESP_STATUS_DEFAULT, RESP_STATUS_ERROR, RESP_STATUS_IGNORE, NONE, NULL],
HTTP_RESP_LENGTH: [RESP_LENGTH_DEFAULT, RESP_LENGTH_ERROR, RESP_LENGTH_BLANK, NONE, NULL],
HTTP_RESP_SIZE: [RESP_SIZE_DEFAULT, RESP_SIZE_ERROR, RESP_SIZE_LARGE, RESP_SIZE_BLANK, NONE, NULL],
HTTP_RESP_TITLE: [RESP_TITLE_DEFAULT, RESP_TITLE_ERROR, RESP_TITLE_LARGE, RESP_TITLE_BLANK , NONE, NULL],

HTTP_RESP_REDIRECT: [RESP_REDIRECT_DEFAULT, RESP_REDIRECT_ERROR, RESP_REDIRECT_ORIGIN, NONE, NULL],

HTTP_RESP_HEADERS_CRC: [RESP_HEADERS_CRC_DEFAULT, RESP_HEADERS_CRC_ERROR, RESP_HEADERS_CRC_BLANK, NONE, NULL],
HTTP_RESP_HEADERS_OPT: [RESP_HEADERS_DEFAULT, RESP_HEADERS_ERROR, RESP_HEADERS_BLANK, RESP_HEADERS_IGNORE, NONE, NULL],

HTTP_RESP_CONTENT_CRC: [RESP_CONTENT_CRC_DEFAULT, RESP_CONTENT_CRC_ERROR, RESP_CONTENT_CRC_BLANK, RESP_CONTENT_CRC_LARGE, NONE, NULL],
HTTP_RESP_CONTENT_OPT: [RESP_CONTENT_DEFAULT, RESP_CONTENT_ERROR, RESP_CONTENT_BLANK, RESP_CONTENT_LARGE, RESP_CONTENT_IGNORE, NONE, NULL],
}

# 分析动态排除字典时,需要被忽略的键列表
HTTP_FILTER_IGNORE_KEYS = [HTTP_CONST_SIGN, HTTP_REQ_URL]
# 分析动态排除字典时,需要被忽略的键列表, 应该动态性强的(用户输入的、响应头的时间戳、)
FILTER_DYNA_IGNORE_KEYS = [HTTP_CONST_SIGN,
HTTP_REQ_TARGET,
HTTP_RESP_CONTENT_OPT,
HTTP_RESP_HEADERS_OPT,
]
############################################################
# 记录由于代理服务器导致的协议判断不正确响应关键字
HTTP_ERROR_PAGE_KEY = ["burp suite"]
# burpsuite中可通过 [勾选抑制错误消息] 修复该问题
# 默认请求头
HTTP_HEADERS = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
'Accept-Encoding': ''
}
############################################################
# 随机HTTP头
HTTP_USER_AGENTS = [
Expand Down
Loading

0 comments on commit 91ad4ad

Please sign in to comment.