Commit Graph

116 Commits (63c66f66a09f300c83330bc9f4edfbaabf97c946)

Author SHA1 Message Date
Luke Imhoff b863978028
Remove fastlib
MSP-11368
MSP-11143

Remove fastlib as it slows down the code loading process.  From the
previous commit, the mean loading for
`METASPLOIT_FRAMEWORK_PROFILE=true msfconsole -q -x exit` was
27.9530±0.3485 seconds (N=10).  The mean after removal of fastlib
was 17.9820±0.6497 seconds (N=10).  This means an average 35.67%
reduction in boot time.
2014-09-18 15:24:21 -05:00
Luke Imhoff eede80509f Reuse appropriate terminology in docs
[#47720609]

Fix some docs and variable names to make it clearer when methods are
expecting module instance and module classes.  Change some 'name'
variables to 'reference_name' since that's the proper terminology.
2013-05-21 08:19:47 -05:00
Tod Beardsley 0d8d5baf6d Resolve merge conflict from jlee-r7 2012-12-12 14:24:47 -06:00
James Lee 6b4e021607 Make ModuleManager Enumerable
Fixes tools/module_* and probably some other lurking bugs
2012-12-12 13:41:04 -06:00
James Lee a673c363fd Use a more descriptive variable name
Also removes commented-out code.
2012-12-10 13:36:09 -06:00
James Lee bc7cd4b452 Loop through module sets like super used to do
... since super doesn't exist any more.

Also changes to using ModuleSet#[] inside ModuleManager#[] instead of
ModuleSet#create to mimic original behavior when ModuleManager was a
subclass of ModuleSet.
2012-12-05 12:59:35 -06:00
James Lee f4476cb1b7 Really fix payload recalculation
Instead of deleting all non-symbolics before the re-adding phase of
PayloadSet#recalculate, store a list of old module names, populate a
list of new ones during the re-adding phase, and finally remove any
non-symbolic module that was in the old list but wasn't in the new list.

Also includes a minor refactoring to make ModuleManager its own thing
instead of being an awkard subclass of ModuleSet. Now PayloadSet doesn't
need to know about the existence of framework.modules, which makes the
separation a little more natural.

[FixRM #7037]
2012-12-03 22:23:40 -06:00
Luke Imhoff df9db42c32 Fix module reloading
[#36737359]

The merging of reload_module and the various load_module methods
resulted in the module loading from disk, but because the Hash entry in
the module manager was not deleted before on_module_load was called, the
newly reloaded module was logged as an ambiguous module name instead of
a reload.  In order to report the reload errors correctly, I determined
that module_load_error_by_reference_name should really be
module_load_error_by_path.  I eliminated faild in favor of this new name
since failed was just calling the attribute and the attribute's name is
clearer about the format of the data.

Tested by run rexploit and then exiting over and over with
ms08_067_netapi.  When I messed up the file so it couldn't load, by
adding `inclde Exploit` (note mispelling of `include`), it reported the
error to msfconsole.  When I removed the bad line and added a puts
"RELOADING <n>", where I kept incrementing n and saving the file, the
new number appeared during each rexploit.
2012-10-04 16:32:12 -05:00
Luke Imhoff fb266d5eb9 Refactor demand_load_module
[#36737359]

Refactor the behavior of loading symbolic modules from cache by renaming
methods so it's clearer what they do and ensure that cached modules from
Fastlibs and directories can both be loaded, which was not previously
possible since the demand_load_module only called load_module_from_file.
2012-10-04 11:14:08 -05:00
Luke Imhoff 9c5350606b Fully-qualify Msf constants.
[#36737359]

On Linux, some of the unqualified constants that resolve on Mac OS X,
don't resolve, so to prevent errors (and because I can't justify why the
unqualified constants should resolve on OS X), I'm qualifying all the
Msf constants that are referenced in the code I've refactored.
2012-10-03 17:17:18 -05:00
Luke Imhoff 41a0e58b16 Improved docs for ModuleManager and ModuleSet. 2012-10-02 16:26:57 -05:00
Luke Imhoff 555a9f2559 Refactor Msf::ModuleManager
[Fixes #36737359]

Refactor Msf::ModuleManager into concerns so its easier to understand and
duplicate code can be made DRY.  The refactoring also ensures that when
loading from directories, Fastlibs, or reloading, the wrapper module will
always be named so that activesupport/dependencies will function.
2012-10-01 13:09:30 -05:00
Luke Imhoff 8a2dc0a09f Give ruby Modules that wrap Metasploit modules a name
[#36737359]

active_support/dependencies cannot resolve missing constants in Metasploit
modules because the wrapper module is anonymous.  In order to make the
wrapper module non-anonymous, the module must be assigned to a constant.
Since we don't want modules colliding, the wrapper module needs a unique
name, so use the module lookup name to derive the proper nested module names
to namespace the wrapper module.  All derived modules are nested under
Msf::Modules.  The name derivation handles invalid characters for constant
names such as digits as the first character or non-alphanumeric character.
The invalid constant name characters are converted to their hex value and
prefixed with X, so '-' in a name become 'X2d'.
2012-09-27 12:52:09 -05:00
HD Moore 64364e3f16 Handle failed reloads in a nicer way 2012-07-03 19:49:44 -05:00
HD Moore d656e3185f Mark all libraries as defaulting to 8-bit strings 2012-06-29 00:18:28 -05:00
sinn3r 0e55141fd9 Rename counts to count 2012-06-28 11:43:33 -05:00
sinn3r 5092152949 Fix the broken reload_modules method
When using the reload_all command, the framework will trigger an
'undefined method module_history' error, because we're missing
an accessor.

Also, even though reload_modules returns "counts". That actually
returns a hash instead of a real count of modules... the return
value is also never actually used anywhere.  But to make this
part not broken, we return the actual count.
2012-06-28 11:39:14 -05:00
HD Moore 584e0dbd98 Load console config AFTER module path initialization 2012-06-25 01:16:35 -05:00
HD Moore 6dd8fd2e05 Move the cache rebuild into a background job 2012-06-16 15:41:37 -05:00
HD Moore 8425c8438d Switch to a MDM/SQL-based module cache 2012-06-16 14:51:09 -05:00
HD Moore 03b29fff68 Merge up the latest, does not automaticlly load
the module tree into the database right now.
2012-06-14 04:35:43 -05:00
James Lee 5bf973871c Space at EOF cleanup 2012-05-24 16:28:20 -06:00
HD Moore cfa128a2c8 Show the actual module name in the stack trace (instead of eval) 2011-12-13 09:47:37 -06:00
HD Moore 591ef73f7d Merge in updated module_manager that loads all .fastlibs 2011-11-28 22:24:27 -06:00
HD Moore 7059e20315 Add support for .fastlib module archives to the module manager 2011-11-21 15:58:19 -06:00
James Lee e7a545c483 spaces at EOL in core stuff 2011-11-20 12:10:08 +11:00
HD Moore f4e42420ad Small change to abstract the actual source read 2011-11-12 14:48:11 -06:00
Joshua Drake 415777c25b fix missing initialization
git-svn-id: file:///home/svn/framework3/trunk@13023 4d416f70-5f16-0410-b530-b9f4589650da
2011-06-25 04:57:01 +00:00
HD Moore 73137c8dc1 Implement some future proofing
git-svn-id: file:///home/svn/framework3/trunk@13020 4d416f70-5f16-0410-b530-b9f4589650da
2011-06-25 01:40:16 +00:00
James Lee 06779bc8c0 remove unnecessary requires for stuff in rex. autoload and a high-level require 'rex' in lib/msf/core.rb should take care of everything. see #4371, #4373, r12587, and r12554.
git-svn-id: file:///home/svn/framework3/trunk@12588 4d416f70-5f16-0410-b530-b9f4589650da
2011-05-12 00:53:33 +00:00
Matt Weeks 490471e129 Include necessary require.
git-svn-id: file:///home/svn/framework3/trunk@12558 4d416f70-5f16-0410-b530-b9f4589650da
2011-05-07 02:16:09 +00:00
HD Moore 6bdf2a4e2b Proactively wrap each() in other Hash based classes to avoid situations that trigger modification during enumeration
git-svn-id: file:///home/svn/framework3/trunk@12479 4d416f70-5f16-0410-b530-b9f4589650da
2011-04-30 04:59:27 +00:00
HD Moore 3d59be3586 This patch adds a 'reload_all' command to msfconsole. This will flush and reload all modules from all module paths
git-svn-id: file:///home/svn/framework3/trunk@12040 4d416f70-5f16-0410-b530-b9f4589650da
2011-03-20 22:22:07 +00:00
James Lee b05fd2c9a3 fix a stack trace when trying to loadpath a non-existant directory
git-svn-id: file:///home/svn/framework3/trunk@11714 4d416f70-5f16-0410-b530-b9f4589650da
2011-02-04 20:53:08 +00:00
Joshua Drake 4f3cdf0b26 See #3470, forgot a debug line, oops
git-svn-id: file:///home/svn/framework3/trunk@11669 4d416f70-5f16-0410-b530-b9f4589650da
2011-01-29 03:35:42 +00:00
Joshua Drake 647b41cc96 Fixes #3470 by canonicalizing module paths as they are added
git-svn-id: file:///home/svn/framework3/trunk@11668 4d416f70-5f16-0410-b530-b9f4589650da
2011-01-29 03:34:48 +00:00
Joshua Drake a1b74eee0d Fixes #3607, Removes the module count cache since it seems to have no performance impact (and was broken)
git-svn-id: file:///home/svn/framework3/trunk@11653 4d416f70-5f16-0410-b530-b9f4589650da
2011-01-27 00:13:13 +00:00
Joshua Drake 4b777686d8 whitespace fixes
git-svn-id: file:///home/svn/framework3/trunk@11645 4d416f70-5f16-0410-b530-b9f4589650da
2011-01-26 03:13:40 +00:00
Joshua Drake 53bba0bd54 Move cache logic from statistics->module_manager, More modularization in ModuleManager
git-svn-id: file:///home/svn/framework3/trunk@11643 4d416f70-5f16-0410-b530-b9f4589650da
2011-01-26 00:07:34 +00:00
James Lee f0cc6ff596 big commit for converting meterpreter scripts to modules, see #3377. also fixes payload tab-completion and 'show payloads' after TARGET has changed
git-svn-id: file:///home/svn/framework3/trunk@11421 4d416f70-5f16-0410-b530-b9f4589650da
2010-12-27 17:46:42 +00:00
James Lee 1c9059eeb1 standardize job context as an Array and always copy datastore for jobs. fixes #2096 and fixes #2098
git-svn-id: file:///home/svn/framework3/trunk@9652 4d416f70-5f16-0410-b530-b9f4589650da
2010-07-01 22:02:46 +00:00
Mike Smith d90656be0e Improve error logging when modules fail to load.
* Don't print module file path twice on the same line
* Use print_error instead of print
* Remove unnecessary newlines

git-svn-id: file:///home/svn/framework3/trunk@9358 4d416f70-5f16-0410-b530-b9f4589650da
2010-05-24 23:07:52 +00:00
HD Moore f76a9a43e6 Switch compat payloads to normal vs ranked
git-svn-id: file:///home/svn/framework3/trunk@7877 4d416f70-5f16-0410-b530-b9f4589650da
2009-12-15 13:14:01 +00:00
HD Moore bce6355df1 Make sure we use a real module class instance when ranking
git-svn-id: file:///home/svn/framework3/trunk@7844 4d416f70-5f16-0410-b530-b9f4589650da
2009-12-13 23:41:25 +00:00
HD Moore e3f68f2639 Another large number of warnings fixed by Yoann Guillot
git-svn-id: file:///home/svn/framework3/trunk@7248 4d416f70-5f16-0410-b530-b9f4589650da
2009-10-25 17:18:23 +00:00
HD Moore 1ba927f80e Updated and verbose errors to assist with error handling. See #278
git-svn-id: file:///home/svn/framework3/trunk@7047 4d416f70-5f16-0410-b530-b9f4589650da
2009-09-20 20:25:08 +00:00
HD Moore b5da2c72f2 Fixes #333. Adds core and api version checks to all module loads. To specify a minimum version, add the following constant to the top of the module (outside of the class definition):
RequiredVersions = [3.3, 1.0] # MSF 3.3+ API 1.0+


git-svn-id: file:///home/svn/framework3/trunk@7037 4d416f70-5f16-0410-b530-b9f4589650da
2009-09-15 13:50:32 +00:00
James Lee 1b84ca5282 make the error easier to track down when module loading fails
git-svn-id: file:///home/svn/framework3/trunk@6906 4d416f70-5f16-0410-b530-b9f4589650da
2009-07-27 03:40:45 +00:00
HD Moore e27691c543 Performance and debugging improvements from Yoann Guillot
git-svn-id: file:///home/svn/framework3/trunk@6712 4d416f70-5f16-0410-b530-b9f4589650da
2009-06-25 17:59:51 +00:00
HD Moore 9fabd18c24 Ruby 1.9 compatibility changes
git-svn-id: file:///home/svn/framework3/trunk@6591 4d416f70-5f16-0410-b530-b9f4589650da
2009-05-29 13:46:12 +00:00