企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 在metasploit如何使用日志 通常,如果Metasploit中的一些东西触发错误,那么会有一个回溯或者至少一个简短的信息来解释问题所在。大多数时候,这没有什么不妥。但有时候,如果你想报告这个问题,你可能会失去这些信息,这会使得你的bug报告信息量减少,而且这个问题可能需要更长时间才能解决。这就是为什么在很多情况下log文件是非常有用的。在本文档中,我们将解释如何正确利用这一点。 ### 基本例子 作为用户,您应该知道所有记录的错误都保存在名为framework.log的文件中。 保存路径在Msf::Config.log_directory中定义,这意味着在msfconsole中,可以切换到irb并找出它的位置 ~~~ msf > irb [*] Starting IRB shell... >> Msf::Config.log_directory => "/Users/test/.msf4/logs" ~~~ 在默认情况下 log的等级为0.最少的信息级别.但是当然,你可以设置数据存储选项来更改此设置,就像 ~~~ msf > setg LogLevel 3 LogLevel => 3 msf > ~~~ ### log等级 在`log/rex/constants.rb`有4个不同的log等级定义 | Log Level | 描述 | | --- | --- | | LEV_0 (Default) | 如果没有指定时的默认日志级别,当启用日志记录时应始终显示日志消息时使用它.除了必要的信息记录和错误/警告记录之外,在这个级别上应该发生很少的日志消息。不建议在零级日志记录进行调试。| | LEV_1 (Extra) | 当需要额外的信息来理解错误或者警告信息的原因,或者得到调试信息,这些信息可能会提供关于发生某些事情的线索时,应该使用这个日志级别。这个日志级别只有在信息可以用来理解基本级别的行为时才能使用。这个日志级别不应该以详尽的冗长的方式使用。 | | LEV_2 (Verbose) | 当需要详细信息来分析框架的行为时,应使用此日志级别。这应该是不属于LEV_0或LEV_1的所有详细信息的默认日志级别。如果您不确定,建议您默认使用此日志级别。 | | LEV_3 (Insanity) | 这个日志级别应该包含关于框架行为的非常详细的信息,比如关于某些阶段的变量状态的详细信息,包括但不限于循环迭代,函数调用等等。这个日志级别很少会显示,但是当它提供的信息应该可以很容易地分析任何问题。 | 出于调试的目的,最好打开最高级别的日志记录 ### logging api 主要有5种你将会很可能经常使用的log方法.他们都有完全相同的参数.让我们使用其中一个日志记录方法来解释这些参数是干什么的 ~~~ def elog(msg, src = 'core', level = 0, from = caller) ~~~ * msg: 你想要记录的信息 * src: 这个错误的来源(默认core,来自metasploit core) * level: 这个日志的记录 * from:当前执行堆栈 caller是Kernel的一个方法 | Method | Purpose | | --- | --- | | dlog() | LOG_DEBUG | | elog() | LOG_ERROR | | wlog() | LOG_WARN | | ilog() | LOG_INFO | |rlog()|LOG_RAW | ### 代码例子 ~~~ elog("The sky has fallen") ~~~