通常,如果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/rex/constants.rb
有4个不同的log等级定义
Log Level | 描述 |
---|---|
LEV_0 (Default) | 如果没有指定时的默认日志级别,当启用日志记录时应始终显示日志消息时使用它.除了必要的信息记录和错误/警告记录之外,在这个级别上应该发生很少的日志消息。不建议在零级日志记录进行调试。 |
LEV_1 (Extra) | 当需要额外的信息来理解错误或者警告信息的原因,或者得到调试信息,这些信息可能会提供关于发生某些事情的线索时,应该使用这个日志级别。这个日志级别只有在信息可以用来理解基本级别的行为时才能使用。这个日志级别不应该以详尽的冗长的方式使用。 |
LEV_2 (Verbose) | 当需要详细信息来分析框架的行为时,应使用此日志级别。这应该是不属于LEV_0或LEV_1的所有详细信息的默认日志级别。如果您不确定,建议您默认使用此日志级别。 |
LEV_3 (Insanity) | 这个日志级别应该包含关于框架行为的非常详细的信息,比如关于某些阶段的变量状态的详细信息,包括但不限于循环迭代,函数调用等等。这个日志级别很少会显示,但是当它提供的信息应该可以很容易地分析任何问题。 |
出于调试的目的,最好打开最高级别的日志记录 |
主要有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")