2019-9-25:渗透测试,基础学习,medusa爆破学习

Medusa(美杜莎)暴力破解使用

一、简介

medusa(美杜莎)是一个速度快,支持大规模并行,模块化,爆破登陆,可以同时对多个主机,用户或是密码执行强力测试,medusa和hydra一样,同样属于在线破解工具,不同的是,medusa的稳定性相较于hydra要好很多但是支持的模块相对于hydra少一些。

二,语法参数

medusha [-h host主机 或 -H file主机文件] [-u username 用户名 或 -U file用户名字典] [-p password 密码 或 -P file 密码字典] [-C file 组合条件文件] -M modudle【opt】模块执行mingc

-h 目标主机名称或是IP地址

-H  包含目标主机名称或是IP地址文件

-u 测试用户名

-U 包含测试用户名文件

-p 测试用户名密码

-P 包含测试用户名密码文件

-C 组合条件文件

-O 日志信息文件

-e[n/s/ns] n代表空密码,s代表为密码于用户名相同

-M 模块执行mingc

-m 传递参数到模块

-d  显示所有模块名称

-n  使用非默认TCP端口

-s   启用ssl

-r   重试时间,默认3秒

-t 设定线程数量

三、基本操作

1、单项爆破,指定用户名、服务,不知道密码指定密码字典进行破解

medusa -M ssh -u admin -p password.txt -h 192.168.20.128

2、多项爆破,指定用户名、密码字典对SSH服务进行爆破

medusa -M ssh -U user.txt -P password -h 192.168.20.128

3,爆破账号密码都是看字典的,字典越大,数据越多,可以使用 -t参数设置下线程高并发来加快些爆破速度

medusa -M ssh -U user.txt -P password -h 192.168.20.128 -t 20

 

 

跟Hydra一样Medusa也是一个爆破密码常用工具,简单实用,对渗透测试有很大的帮助 

转载于:https://www.cnblogs.com/sym945/p/11587175.html

``` Loading pt checkpoint shards: 0% Completed | 0/2 [00:00<?, ?it/s] Loading pt checkpoint shards: 50% Completed | 1/2 [00:09<00:09, 9.09s/it] ERROR 08-06 06:15:33 [core.py:586] EngineCore failed to start. ERROR 08-06 06:15:33 [core.py:586] Traceback (most recent call last): ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/v1/engine/core.py", line 577, in run_engine_core ERROR 08-06 06:15:33 [core.py:586] engine_core = EngineCoreProc(*args, **kwargs) ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/v1/engine/core.py", line 404, in __init__ ERROR 08-06 06:15:33 [core.py:586] super().__init__(vllm_config, executor_class, log_stats, ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/v1/engine/core.py", line 75, in __init__ ERROR 08-06 06:15:33 [core.py:586] self.model_executor = executor_class(vllm_config) ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/executor/executor_base.py", line 53, in __init__ ERROR 08-06 06:15:33 [core.py:586] self._init_executor() ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/executor/uniproc_executor.py", line 48, in _init_executor ERROR 08-06 06:15:33 [core.py:586] self.collective_rpc("load_model") ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/executor/uniproc_executor.py", line 57, in collective_rpc ERROR 08-06 06:15:33 [core.py:586] answer = run_method(self.driver_worker, method, args, kwargs) ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/utils/__init__.py", line 2736, in run_method ERROR 08-06 06:15:33 [core.py:586] return func(*args, **kwargs) ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm-ascend/vllm_ascend/worker/worker_v1.py", line 240, in load_model ERROR 08-06 06:15:33 [core.py:586] self.model_runner.load_model() ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm-ascend/vllm_ascend/worker/model_runner_v1.py", line 1748, in load_model ERROR 08-06 06:15:33 [core.py:586] self.model = get_model(vllm_config=self.vllm_config) ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/model_executor/model_loader/__init__.py", line 59, in get_model ERROR 08-06 06:15:33 [core.py:586] return loader.load_model(vllm_config=vllm_config, ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/model_executor/model_loader/base_loader.py", line 41, in load_model ERROR 08-06 06:15:33 [core.py:586] self.load_weights(model, model_config) ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/model_executor/model_loader/default_loader.py", line 269, in load_weights ERROR 08-06 06:15:33 [core.py:586] loaded_weights = model.load_weights( ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/model_executor/models/llama.py", line 601, in load_weights ERROR 08-06 06:15:33 [core.py:586] return loader.load_weights( ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/model_executor/models/utils.py", line 291, in load_weights ERROR 08-06 06:15:33 [core.py:586] autoloaded_weights = set(self._load_module("", self.module, weights)) ERROR 08-06 06:15:33 [core.py:586] File "/vllm-workspace/vllm/vllm/model_executor/models/utils.py", line 277, in _load_module ERROR 08-06 06:15:33 [core.py:586] raise ValueError(msg) ERROR 08-06 06:15:33 [core.py:586] ValueError: There is no module or parameter named &#39;medusa_head&#39; in LlamaForCausalLM ``` 分析问题原因,我在npu上,通过下面指令,使用vllm拉起模型,报错如上,请分析问题原因,并给出可能的解决方案 ``` python -m vllm.entrypoints.openai.api_server \ --model /models/medusa-1.0-zephyr-7b-beta \ --max-num-seqs=256 \ --max-model-len=4096 \ --max-num-batched-tokens=4096 \ --tensor-parallel-size=1 \ --block-size=128 \ --host=0.0.0.0 \ --port=8080 \ --gpu-memory-utilization=0.9 \ --trust-remote-code \ --served-model-name=zzz ```
08-07
<think>我们遇到了一个错误,错误信息显示在加载模型权重,找不到名为&#39;medusa_head&#39;的模块或参数。错误发生在vllm的模型加载过程中,具体是在加载LlamaForCausalLM模型。 根据错误信息,模型是`medusa-1.0-zephyr-7b-beta`,这是一个基于Zephyr-7B的Medusa模型。Medusa模型通常是在原始模型的基础上添加了多个预头(medusa heads)用于加速推理。然而,在vllm的Llama模型定义中(vllm/model_executor/models/llama.py),并没有包含这些额外的头。 原因分析: 1. 模型结构不匹配:vllm当前支持的Llama模型可能不包含Medusa头。当我们尝试加载一个带有Medusa头的模型,vllm在加载权重会寻找模型中对应的模块,但vllm内置的Llama模型并没有定义名为&#39;medusa_head&#39;的模块,因此导致报错。 2. 模型加载方式:vllm在加载模型,会按照模型的结构定义来加载权重。如果模型权重中有额外的模块(如medusa_head),而代码中没有定义这些模块,就会报错。 解决方案: 1. 使用支持Medusa头的vllm分支:vllm官方可能还没有支持Medusa模型,但可能存在第三方分支支持。我们可以寻找一个支持Medusa的vllm分支,或者自己修改vllm的代码来支持Medusa头。 2. 修改vllm的Llama模型定义:在vllm的Llama模型(llama.py)中添加Medusa头的定义。这需要了解Medusa头的结构,并将其整合到vllm的模型中。同,还需要确保在推理过程中能够使用这些头。 3.使用vllm,使用其他支持Medusa的推理框架:例如,使用Hugging Face的Transformers库,并配合Medusa的推理代码。 4. 移除模型中的Medusa头:如果我们的目只是使用基础模型,而不需要Medusa加速,可以尝试将模型权重中的Medusa头移除,只保留基础模型部分。但这样我们就无法使用Medusa加速了。 考虑到我们是在NPU上运行,并且使用了vllm-ascend(从路径`/vllm-workspace/vllm-ascend`可以看出),可能还需要考虑NPU适配的问题。 步骤建议: 1. 确认模型结构:检查下载的模型是否确实包含Medusa头。可以尝试在CPU环境中用Hugging Face加载模型,查看模型结构。 2. 如果必须使用vllm,可以尝试以下步骤: a. 找到vllm中定义Llama模型的位置(通常是`vllm/model_executor/models/llama.py`),修改模型类,添加Medusa头的定义。 b. 在加载权重,允许加载medusa_head的权重,并在推理过程中使用(这需要修改推理逻辑,比较复杂)。 3. 使用Transformers库:如果vllm暂不支持Medusa,我们可以考虑使用Transformers库直接进行推理。Medusa的官方实现通常提供了与Transformers兼容的示例。 4. 检查模型配置:确保模型目录下包含正确的配置文件(如config.json),并且其中是否有关于Medusa头的配置。如果vllm能够读取这些配置并动态构建模型,那么可能不需要修改代码。但当前vllm可能没有实现这个功能。 由于错误信息明确指出缺少`medusa_head`模块,因此我们需要在代码中定义这个模块,或者避免加载这个模块的权重(如果不需要的话)。 但是,在vllm的权重加载逻辑中,它要求权重文件中的每个键都能在模型中找到对应的模块。因此,如果权重中有medusa_head,而模型中没有,就会报错。 临解决方案(如果不需要Medusa头): 我们可以尝试在加载权重忽略medusa_head的权重。这需要修改vllm的权重加载代码(在`vllm/model_executor/models/utils.py`中)。在`_load_module`函数中,我们可以跳过那些不存在的模块,但这样可能会影响模型的功能(如果我们需要Medusa头,则不能跳过)。 如果不需要Medusa头,我们可以修改权重加载代码,忽略medusa_head的权重。但这样修改可能会破坏模型的完整性(因为Medusa头是模型的一部分),而且可能无法通过简的跳过实现。 更合理的方法: 由于Medusa模型是在原始模型的基础上添加的,我们可以尝试加载原始模型(不带Medusa头)的权重,然后独加载Medusa头的权重(如果我们需要)。但这样需要修改模型定义和加载逻辑。 结论: 当前vllm不支持Medusa模型,因为它的Llama模型定义中没有包含Medusa头。我们需要扩展vllm的模型定义以支持Medusa,或者使用其他支持Medusa的推理框架。 具体操作建议: 1. 参考Medusa的官方实现,将Medusa头添加到vllm的Llama模型中。这需要一定的开发工作。 2. 或者,使用Hugging Face的Transformers库,并利用Medusa提供的推理脚本。 考虑到我们在NPU环境,可能还需要考虑NPU的适配。如果使用Transformers,需要确保NPU支持(例如使用昇腾的适配库)。 由于问题复杂,如果间紧迫,可以考虑先使用基础模型(不带Medusa头)进行服务。 如果模型必须使用Medusa头,那么我们需要修改vllm的代码。以下是一个大致的修改方向: 在`llama.py`中,找到`LlamaForCausalLM`类,在适当的位置添加medusa_head的定义。Medusa头通常由多个线性层组成(每个头一个线性层),并且这些头位于基础模型之上。 例如,在`__init__`方法中,添加: ```python self.medusa_head = nn.ModuleList([ nn.Linear(hidden_size, vocab_size, bias=False) for _ in range(medusa_num_heads) # medusa_num_heads需要从配置中读取 ]) ``` 然后,在加载权重medusa_head的权重就会被加载。 此外,还需要修改推理逻辑,使模型能够使用Medusa头进行预。这需要更深入的修改。 由于Medusa头的具体实现可能因模型而异,建议参考原模型的实现。 如果问题仍然存在,可能需要更详细的调试。 针对当前问题,我们也可以尝试在启动命令中加入`--disable-medusa`(如果模型支持的话),但模型本身可能没有这个选项。 综上所述,主要原因是模型结构不匹配,解决方案是修改vllm代码以支持Medusa头,或者使用其他推理框架。 由于我们是在NPU上,修改vllm代码可能涉及NPU适配,因此建议先尝试在CPU/GPU环境下验证模型加载,再考虑NPU适配。 如果项目要求必须使用vllm,那么我们需要对vllm进行扩展以支持Medusa模型。否则,可以考虑使用其他框架。</think>### 问题分析 根据错误日志 `ValueError: There is no module or parameter named &#39;medusa_head&#39; in LlamaForCausalLM`,核心问题是 **vLLM 框架无法识别 Medusa 模型特有的结构**。原因如下: 1. **模型结构不兼容** Medusa 模型在原始 LLama 架构上新增了 `medusa_head` 模块(用于加速推理的多头预结构),但 vLLM 的准 Llama 实现未包含此模块。 2. **权重加载失败** vLLM 在加载模型权重,发现权重文件中存在 `medusa_head` 参数,但当前代码的 `LlamaForCausalLM` 类中没有对应结构,导致加载中断。 3. **NPU 适配问题** 使用 `vllm-ascend`(昇腾 NPU 适配版本),模型加载流程可能未完全兼容 Medusa 的定制结构。 --- ### 解决方案 #### 方案 1:修改 vLLM 代码(推荐) 在 vLLM 的 Llama 模型定义中添加 `medusa_head` 支持: ```python # 文件路径:vllm/model_executor/models/llama.py class LlamaForCausalLM(nn.Module): def __init__(self, config: LlamaConfig): super().__init__() # 原始代码... # 添加 Medusa 头支持 self.medusa_head = nn.ModuleList([ nn.Linear(config.hidden_size, config.vocab_size, bias=False) for _ in range(5) # 根据实际 Medusa 头数量调整 ]) ``` #### 方案 2:使用 Hugging Face 原生加载 绕过 vLLM 直接验证模型完整性: ```python from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("/models/medusa-1.0-zephyr-7b-beta", trust_remote_code=True) print(model) # 检查 medusa_head 是否存在 ``` #### 方案 3:禁用 Medusa 头(临方案) 如果不需要加速推理,修改模型配置禁用 Medusa: ```python # 在模型目录的 config.json 中添加 { "use_medusa": false // 如果配置项存在 } ``` #### 方案 4:更新 vLLM 版本 确认使用的 vLLM 是否支持 Medusa: ```bash # 安装支持 Medusa 的 vLLM 分支(如有) pip install git+https://github.com/FasterDecoding/vllm@medusa_support ``` #### NPU 专属建议 1. 确认 `vllm-ascend` 版本与 Medusa 兼容性 2. 尝试在 CPU 环境先验证模型加载,排除 NPU 驱动问题: ```bash CUDA_VISIBLE_DEVICES="" python -c "from transformers import AutoModel; AutoModel.from_pretrained(&#39;/models/medusa-1.0-zephyr-7b-beta&#39;)" ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值