metasploit-model 0.24.1-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +27 -0
- data/.rspec +4 -0
- data/.simplecov +38 -0
- data/.travis.yml +6 -0
- data/.yardopts +5 -0
- data/Gemfile +43 -0
- data/LICENSE +27 -0
- data/README.md +33 -0
- data/Rakefile +52 -0
- data/app/models/metasploit/model/association/reflection.rb +46 -0
- data/app/models/metasploit/model/module/ancestor/spec/template.rb +125 -0
- data/app/models/metasploit/model/module/class/spec/template.rb +92 -0
- data/app/models/metasploit/model/module/instance/spec/template.rb +97 -0
- data/app/models/metasploit/model/search/group/base.rb +21 -0
- data/app/models/metasploit/model/search/group/intersection.rb +4 -0
- data/app/models/metasploit/model/search/group/union.rb +4 -0
- data/app/models/metasploit/model/search/operation/base.rb +39 -0
- data/app/models/metasploit/model/search/operation/boolean.rb +36 -0
- data/app/models/metasploit/model/search/operation/date.rb +37 -0
- data/app/models/metasploit/model/search/operation/integer.rb +14 -0
- data/app/models/metasploit/model/search/operation/null.rb +26 -0
- data/app/models/metasploit/model/search/operation/set.rb +34 -0
- data/app/models/metasploit/model/search/operation/set/integer.rb +5 -0
- data/app/models/metasploit/model/search/operation/set/string.rb +5 -0
- data/app/models/metasploit/model/search/operation/string.rb +11 -0
- data/app/models/metasploit/model/search/operation/union.rb +59 -0
- data/app/models/metasploit/model/search/operator/association.rb +43 -0
- data/app/models/metasploit/model/search/operator/attribute.rb +60 -0
- data/app/models/metasploit/model/search/operator/base.rb +34 -0
- data/app/models/metasploit/model/search/operator/delegation.rb +40 -0
- data/app/models/metasploit/model/search/operator/deprecated/app.rb +27 -0
- data/app/models/metasploit/model/search/operator/deprecated/author.rb +33 -0
- data/app/models/metasploit/model/search/operator/deprecated/authority.rb +43 -0
- data/app/models/metasploit/model/search/operator/deprecated/platform.rb +45 -0
- data/app/models/metasploit/model/search/operator/deprecated/ref.rb +50 -0
- data/app/models/metasploit/model/search/operator/deprecated/text.rb +32 -0
- data/app/models/metasploit/model/search/operator/null.rb +44 -0
- data/app/models/metasploit/model/search/operator/single.rb +98 -0
- data/app/models/metasploit/model/search/operator/union.rb +33 -0
- data/app/models/metasploit/model/search/query.rb +171 -0
- data/app/models/metasploit/model/spec/template.rb +273 -0
- data/app/models/metasploit/model/visitation/visitor.rb +69 -0
- data/app/validators/derivation_validator.rb +17 -0
- data/app/validators/dynamic_length_validator.rb +45 -0
- data/app/validators/ip_format_validator.rb +31 -0
- data/app/validators/nil_validator.rb +16 -0
- data/app/validators/parameters_validator.rb +147 -0
- data/app/validators/password_is_strong_validator.rb +115 -0
- data/config/locales/en.yml +209 -0
- data/lib/metasploit/model.rb +38 -0
- data/lib/metasploit/model/architecture.rb +346 -0
- data/lib/metasploit/model/association.rb +49 -0
- data/lib/metasploit/model/association/error.rb +40 -0
- data/lib/metasploit/model/author.rb +58 -0
- data/lib/metasploit/model/authority.rb +134 -0
- data/lib/metasploit/model/authority/bid.rb +10 -0
- data/lib/metasploit/model/authority/cve.rb +10 -0
- data/lib/metasploit/model/authority/msb.rb +10 -0
- data/lib/metasploit/model/authority/osvdb.rb +10 -0
- data/lib/metasploit/model/authority/pmasa.rb +10 -0
- data/lib/metasploit/model/authority/secunia.rb +10 -0
- data/lib/metasploit/model/authority/us_cert_vu.rb +10 -0
- data/lib/metasploit/model/authority/waraxe.rb +31 -0
- data/lib/metasploit/model/authority/zdi.rb +10 -0
- data/lib/metasploit/model/base.rb +25 -0
- data/lib/metasploit/model/configuration.rb +72 -0
- data/lib/metasploit/model/configuration/autoload.rb +109 -0
- data/lib/metasploit/model/configuration/child.rb +12 -0
- data/lib/metasploit/model/configuration/error.rb +4 -0
- data/lib/metasploit/model/configuration/i18n.rb +54 -0
- data/lib/metasploit/model/configuration/parent.rb +50 -0
- data/lib/metasploit/model/configured.rb +46 -0
- data/lib/metasploit/model/derivation.rb +110 -0
- data/lib/metasploit/model/derivation/full_name.rb +25 -0
- data/lib/metasploit/model/email_address.rb +128 -0
- data/lib/metasploit/model/engine.rb +34 -0
- data/lib/metasploit/model/error.rb +7 -0
- data/lib/metasploit/model/file.rb +49 -0
- data/lib/metasploit/model/invalid.rb +17 -0
- data/lib/metasploit/model/module.rb +8 -0
- data/lib/metasploit/model/module/action.rb +58 -0
- data/lib/metasploit/model/module/ancestor.rb +494 -0
- data/lib/metasploit/model/module/architecture.rb +40 -0
- data/lib/metasploit/model/module/author.rb +47 -0
- data/lib/metasploit/model/module/class.rb +406 -0
- data/lib/metasploit/model/module/handler.rb +35 -0
- data/lib/metasploit/model/module/instance.rb +626 -0
- data/lib/metasploit/model/module/path.rb +165 -0
- data/lib/metasploit/model/module/platform.rb +38 -0
- data/lib/metasploit/model/module/rank.rb +91 -0
- data/lib/metasploit/model/module/reference.rb +38 -0
- data/lib/metasploit/model/module/stance.rb +22 -0
- data/lib/metasploit/model/module/target.rb +80 -0
- data/lib/metasploit/model/module/target/architecture.rb +42 -0
- data/lib/metasploit/model/module/target/platform.rb +42 -0
- data/lib/metasploit/model/module/type.rb +44 -0
- data/lib/metasploit/model/nilify_blanks.rb +53 -0
- data/lib/metasploit/model/platform.rb +250 -0
- data/lib/metasploit/model/real_pathname.rb +18 -0
- data/lib/metasploit/model/reference.rb +108 -0
- data/lib/metasploit/model/search.rb +63 -0
- data/lib/metasploit/model/search/association.rb +32 -0
- data/lib/metasploit/model/search/attribute.rb +51 -0
- data/lib/metasploit/model/search/operation.rb +31 -0
- data/lib/metasploit/model/search/operation/integer/value.rb +33 -0
- data/lib/metasploit/model/search/operation/string/value.rb +14 -0
- data/lib/metasploit/model/search/operator.rb +10 -0
- data/lib/metasploit/model/search/operator/help.rb +47 -0
- data/lib/metasploit/model/search/with.rb +40 -0
- data/lib/metasploit/model/spec.rb +140 -0
- data/lib/metasploit/model/spec/error.rb +9 -0
- data/lib/metasploit/model/spec/i18n_exception_handler.rb +19 -0
- data/lib/metasploit/model/spec/pathname_collision.rb +28 -0
- data/lib/metasploit/model/spec/template/write.rb +42 -0
- data/lib/metasploit/model/spec/temporary_pathname.rb +59 -0
- data/lib/metasploit/model/translation.rb +31 -0
- data/lib/metasploit/model/version.rb +31 -0
- data/lib/metasploit/model/visitation.rb +9 -0
- data/lib/metasploit/model/visitation/visit.rb +103 -0
- data/lib/tasks/yard.rake +30 -0
- data/metasploit-model.gemspec +39 -0
- data/script/rails +9 -0
- data/spec/app/models/metasploit/model/association/reflection_spec.rb +48 -0
- data/spec/app/models/metasploit/model/module/ancestor/spec/template_spec.rb +174 -0
- data/spec/app/models/metasploit/model/module/class/spec/template_spec.rb +222 -0
- data/spec/app/models/metasploit/model/module/instance/spec/template_spec.rb +201 -0
- data/spec/app/models/metasploit/model/search/group/base_spec.rb +5 -0
- data/spec/app/models/metasploit/model/search/group/intersection_spec.rb +5 -0
- data/spec/app/models/metasploit/model/search/group/union_spec.rb +5 -0
- data/spec/app/models/metasploit/model/search/operation/base_spec.rb +70 -0
- data/spec/app/models/metasploit/model/search/operation/boolean_spec.rb +56 -0
- data/spec/app/models/metasploit/model/search/operation/date_spec.rb +89 -0
- data/spec/app/models/metasploit/model/search/operation/integer_spec.rb +9 -0
- data/spec/app/models/metasploit/model/search/operation/null_spec.rb +64 -0
- data/spec/app/models/metasploit/model/search/operation/set/integer_spec.rb +7 -0
- data/spec/app/models/metasploit/model/search/operation/set/string_spec.rb +7 -0
- data/spec/app/models/metasploit/model/search/operation/set_spec.rb +126 -0
- data/spec/app/models/metasploit/model/search/operation/string_spec.rb +9 -0
- data/spec/app/models/metasploit/model/search/operation/union_spec.rb +124 -0
- data/spec/app/models/metasploit/model/search/operator/association_spec.rb +108 -0
- data/spec/app/models/metasploit/model/search/operator/attribute_spec.rb +104 -0
- data/spec/app/models/metasploit/model/search/operator/base_spec.rb +34 -0
- data/spec/app/models/metasploit/model/search/operator/delegation_spec.rb +108 -0
- data/spec/app/models/metasploit/model/search/operator/deprecated/app_spec.rb +62 -0
- data/spec/app/models/metasploit/model/search/operator/deprecated/author_spec.rb +161 -0
- data/spec/app/models/metasploit/model/search/operator/deprecated/authority_spec.rb +123 -0
- data/spec/app/models/metasploit/model/search/operator/deprecated/platform_spec.rb +112 -0
- data/spec/app/models/metasploit/model/search/operator/deprecated/ref_spec.rb +327 -0
- data/spec/app/models/metasploit/model/search/operator/deprecated/text_spec.rb +357 -0
- data/spec/app/models/metasploit/model/search/operator/null_spec.rb +41 -0
- data/spec/app/models/metasploit/model/search/operator/single_spec.rb +327 -0
- data/spec/app/models/metasploit/model/search/operator/union_spec.rb +92 -0
- data/spec/app/models/metasploit/model/search/query_spec.rb +742 -0
- data/spec/app/models/metasploit/model/spec/template_spec.rb +23 -0
- data/spec/app/models/metasploit/model/visitation/visitor_spec.rb +45 -0
- data/spec/app/validators/derivation_validator_spec.rb +92 -0
- data/spec/app/validators/dynamic_length_validator_spec.rb +293 -0
- data/spec/app/validators/ip_format_validator_spec.rb +124 -0
- data/spec/app/validators/nil_validator_spec.rb +69 -0
- data/spec/app/validators/parameters_validator_spec.rb +342 -0
- data/spec/app/validators/password_is_strong_validator_spec.rb +250 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/mailers/.gitkeep +0 -0
- data/spec/dummy/app/models/dummy/architecture.rb +92 -0
- data/spec/dummy/app/models/dummy/author.rb +15 -0
- data/spec/dummy/app/models/dummy/authority.rb +130 -0
- data/spec/dummy/app/models/dummy/email_address.rb +27 -0
- data/spec/dummy/app/models/dummy/module/action.rb +25 -0
- data/spec/dummy/app/models/dummy/module/ancestor.rb +67 -0
- data/spec/dummy/app/models/dummy/module/architecture.rb +19 -0
- data/spec/dummy/app/models/dummy/module/author.rb +28 -0
- data/spec/dummy/app/models/dummy/module/class.rb +69 -0
- data/spec/dummy/app/models/dummy/module/instance.rb +209 -0
- data/spec/dummy/app/models/dummy/module/path.rb +64 -0
- data/spec/dummy/app/models/dummy/module/platform.rb +19 -0
- data/spec/dummy/app/models/dummy/module/rank.rb +44 -0
- data/spec/dummy/app/models/dummy/module/reference.rb +19 -0
- data/spec/dummy/app/models/dummy/module/target.rb +62 -0
- data/spec/dummy/app/models/dummy/module/target/architecture.rb +19 -0
- data/spec/dummy/app/models/dummy/module/target/platform.rb +19 -0
- data/spec/dummy/app/models/dummy/platform.rb +58 -0
- data/spec/dummy/app/models/dummy/reference.rb +31 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +43 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +27 -0
- data/spec/dummy/config/environments/production.rb +63 -0
- data/spec/dummy/config/environments/test.rb +29 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +9 -0
- data/spec/dummy/config/locales/en.yml +1 -0
- data/spec/dummy/config/routes.rb +2 -0
- data/spec/dummy/db/schema.rb +707 -0
- data/spec/dummy/lib/assets/.gitkeep +0 -0
- data/spec/dummy/log/.gitkeep +0 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/spec/factories/dummy/architectures.rb +13 -0
- data/spec/dummy/spec/factories/dummy/authorities.rb +32 -0
- data/spec/dummy/spec/factories/dummy/authors.rb +8 -0
- data/spec/dummy/spec/factories/dummy/email_addresses.rb +8 -0
- data/spec/dummy/spec/factories/dummy/module/actions.rb +13 -0
- data/spec/dummy/spec/factories/dummy/module/ancestors.rb +45 -0
- data/spec/dummy/spec/factories/dummy/module/architectures.rb +35 -0
- data/spec/dummy/spec/factories/dummy/module/authors.rb +10 -0
- data/spec/dummy/spec/factories/dummy/module/classes.rb +40 -0
- data/spec/dummy/spec/factories/dummy/module/instances.rb +86 -0
- data/spec/dummy/spec/factories/dummy/module/paths.rb +16 -0
- data/spec/dummy/spec/factories/dummy/module/platforms.rb +35 -0
- data/spec/dummy/spec/factories/dummy/module/ranks.rb +14 -0
- data/spec/dummy/spec/factories/dummy/module/references.rb +17 -0
- data/spec/dummy/spec/factories/dummy/module/target/architectures.rb +40 -0
- data/spec/dummy/spec/factories/dummy/module/target/platforms.rb +41 -0
- data/spec/dummy/spec/factories/dummy/module/targets.rb +46 -0
- data/spec/dummy/spec/factories/dummy/platforms.rb +3 -0
- data/spec/dummy/spec/factories/dummy/references.rb +26 -0
- data/spec/factories/metasploit/model/architectures.rb +6 -0
- data/spec/factories/metasploit/model/association/reflections.rb +9 -0
- data/spec/factories/metasploit/model/authorities.rb +28 -0
- data/spec/factories/metasploit/model/authors.rb +9 -0
- data/spec/factories/metasploit/model/bases.rb +10 -0
- data/spec/factories/metasploit/model/email_addresses.rb +14 -0
- data/spec/factories/metasploit/model/module/actions.rb +9 -0
- data/spec/factories/metasploit/model/module/ancestors.rb +180 -0
- data/spec/factories/metasploit/model/module/architectures.rb +15 -0
- data/spec/factories/metasploit/model/module/classes.rb +47 -0
- data/spec/factories/metasploit/model/module/handlers.rb +3 -0
- data/spec/factories/metasploit/model/module/instances.rb +83 -0
- data/spec/factories/metasploit/model/module/paths.rb +51 -0
- data/spec/factories/metasploit/model/module/platforms.rb +15 -0
- data/spec/factories/metasploit/model/module/ranks.rb +9 -0
- data/spec/factories/metasploit/model/module/references.rb +11 -0
- data/spec/factories/metasploit/model/module/stances.rb +3 -0
- data/spec/factories/metasploit/model/module/targets.rb +22 -0
- data/spec/factories/metasploit/model/module/types.rb +5 -0
- data/spec/factories/metasploit/model/references.rb +88 -0
- data/spec/factories/metasploit/model/search/operator/associations.rb +5 -0
- data/spec/factories/metasploit/model/search/operator/attributes.rb +7 -0
- data/spec/factories/metasploit/model/search/operator/bases.rb +5 -0
- data/spec/lib/metasploit/model/architecture_spec.rb +52 -0
- data/spec/lib/metasploit/model/association/error_spec.rb +48 -0
- data/spec/lib/metasploit/model/association_spec.rb +145 -0
- data/spec/lib/metasploit/model/author_spec.rb +6 -0
- data/spec/lib/metasploit/model/authority/bid_spec.rb +17 -0
- data/spec/lib/metasploit/model/authority/cve_spec.rb +17 -0
- data/spec/lib/metasploit/model/authority/msb_spec.rb +17 -0
- data/spec/lib/metasploit/model/authority/osvdb_spec.rb +17 -0
- data/spec/lib/metasploit/model/authority/pmasa_spec.rb +17 -0
- data/spec/lib/metasploit/model/authority/secunia_spec.rb +17 -0
- data/spec/lib/metasploit/model/authority/us_cert_vu_spec.rb +17 -0
- data/spec/lib/metasploit/model/authority/waraxe_spec.rb +51 -0
- data/spec/lib/metasploit/model/authority/zdi_spec.rb +21 -0
- data/spec/lib/metasploit/model/authority_spec.rb +10 -0
- data/spec/lib/metasploit/model/base_spec.rb +58 -0
- data/spec/lib/metasploit/model/configuration/autoload_spec.rb +165 -0
- data/spec/lib/metasploit/model/configuration/child_spec.rb +24 -0
- data/spec/lib/metasploit/model/configuration/error_spec.rb +5 -0
- data/spec/lib/metasploit/model/configuration/i18n_spec.rb +103 -0
- data/spec/lib/metasploit/model/configuration_spec.rb +106 -0
- data/spec/lib/metasploit/model/configured_spec.rb +41 -0
- data/spec/lib/metasploit/model/derivation/full_name_spec.rb +75 -0
- data/spec/lib/metasploit/model/derivation_spec.rb +217 -0
- data/spec/lib/metasploit/model/email_address_spec.rb +19 -0
- data/spec/lib/metasploit/model/engine_spec.rb +84 -0
- data/spec/lib/metasploit/model/file_spec.rb +43 -0
- data/spec/lib/metasploit/model/invalid_spec.rb +54 -0
- data/spec/lib/metasploit/model/module/action_spec.rb +6 -0
- data/spec/lib/metasploit/model/module/ancestor_spec.rb +6 -0
- data/spec/lib/metasploit/model/module/architecture_spec.rb +9 -0
- data/spec/lib/metasploit/model/module/author_spec.rb +6 -0
- data/spec/lib/metasploit/model/module/class_spec.rb +19 -0
- data/spec/lib/metasploit/model/module/handler_spec.rb +61 -0
- data/spec/lib/metasploit/model/module/instance_spec.rb +183 -0
- data/spec/lib/metasploit/model/module/path_spec.rb +6 -0
- data/spec/lib/metasploit/model/module/platform_spec.rb +9 -0
- data/spec/lib/metasploit/model/module/rank_spec.rb +29 -0
- data/spec/lib/metasploit/model/module/reference_spec.rb +9 -0
- data/spec/lib/metasploit/model/module/stance_spec.rb +30 -0
- data/spec/lib/metasploit/model/module/target/architecture_spec.rb +9 -0
- data/spec/lib/metasploit/model/module/target/platform_spec.rb +9 -0
- data/spec/lib/metasploit/model/module/target_spec.rb +9 -0
- data/spec/lib/metasploit/model/module/type_spec.rb +125 -0
- data/spec/lib/metasploit/model/nilify_blanks_spec.rb +156 -0
- data/spec/lib/metasploit/model/platform_spec.rb +100 -0
- data/spec/lib/metasploit/model/reference_spec.rb +21 -0
- data/spec/lib/metasploit/model/search/association_spec.rb +33 -0
- data/spec/lib/metasploit/model/search/attribute_spec.rb +99 -0
- data/spec/lib/metasploit/model/search/operation/integer/value_spec.rb +20 -0
- data/spec/lib/metasploit/model/search/operation/string/value_spec.rb +20 -0
- data/spec/lib/metasploit/model/search/operation_spec.rb +144 -0
- data/spec/lib/metasploit/model/search/operator/help_spec.rb +41 -0
- data/spec/lib/metasploit/model/search/with_spec.rb +81 -0
- data/spec/lib/metasploit/model/search_spec.rb +230 -0
- data/spec/lib/metasploit/model/spec/error_spec.rb +5 -0
- data/spec/lib/metasploit/model/spec/i18n_exception_handler_spec.rb +42 -0
- data/spec/lib/metasploit/model/spec/pathname_collision_spec.rb +55 -0
- data/spec/lib/metasploit/model/spec_spec.rb +114 -0
- data/spec/lib/metasploit/model/translation_spec.rb +82 -0
- data/spec/lib/metasploit/model/version_spec.rb +141 -0
- data/spec/lib/metasploit/model/visitation/visit_spec.rb +316 -0
- data/spec/lib/metasploit/model_spec.rb +68 -0
- data/spec/spec_helper.rb +48 -0
- data/spec/support/shared/contexts/metasploit/model/configuration.rb +11 -0
- data/spec/support/shared/contexts/metasploit/model/module/ancestor/contents/metasploit_module.rb +12 -0
- data/spec/support/shared/contexts/metasploit/model/module/ancestor/factory/contents.rb +10 -0
- data/spec/support/shared/contexts/metasploit/model/module/ancestor/factory/contents/metasploit_module.rb +15 -0
- data/spec/support/shared/contexts/metasploit/model/search/operator/union/children.rb +13 -0
- data/spec/support/shared/examples/derives.rb +115 -0
- data/spec/support/shared/examples/metasploit/model/architecture.rb +425 -0
- data/spec/support/shared/examples/metasploit/model/architecture/seed.rb +25 -0
- data/spec/support/shared/examples/metasploit/model/author.rb +27 -0
- data/spec/support/shared/examples/metasploit/model/authority.rb +124 -0
- data/spec/support/shared/examples/metasploit/model/authority/seed.rb +49 -0
- data/spec/support/shared/examples/metasploit/model/configuration/parent/child.rb +60 -0
- data/spec/support/shared/examples/metasploit/model/email_address.rb +220 -0
- data/spec/support/shared/examples/metasploit/model/module/action.rb +26 -0
- data/spec/support/shared/examples/metasploit/model/module/ancestor.rb +2004 -0
- data/spec/support/shared/examples/metasploit/model/module/ancestor/payload_factory.rb +63 -0
- data/spec/support/shared/examples/metasploit/model/module/architecture.rb +36 -0
- data/spec/support/shared/examples/metasploit/model/module/author.rb +29 -0
- data/spec/support/shared/examples/metasploit/model/module/class.rb +1514 -0
- data/spec/support/shared/examples/metasploit/model/module/handler.rb +21 -0
- data/spec/support/shared/examples/metasploit/model/module/instance.rb +1384 -0
- data/spec/support/shared/examples/metasploit/model/module/instance/class_methods.rb +537 -0
- data/spec/support/shared/examples/metasploit/model/module/instance/is_not_stanced_with_module_type.rb +22 -0
- data/spec/support/shared/examples/metasploit/model/module/instance/is_stanced_with_module_type.rb +38 -0
- data/spec/support/shared/examples/metasploit/model/module/instance/validates/dynamic_length_of.rb +131 -0
- data/spec/support/shared/examples/metasploit/model/module/path.rb +493 -0
- data/spec/support/shared/examples/metasploit/model/module/platform.rb +36 -0
- data/spec/support/shared/examples/metasploit/model/module/rank.rb +92 -0
- data/spec/support/shared/examples/metasploit/model/module/reference.rb +16 -0
- data/spec/support/shared/examples/metasploit/model/module/target.rb +29 -0
- data/spec/support/shared/examples/metasploit/model/module/target/architecture.rb +56 -0
- data/spec/support/shared/examples/metasploit/model/module/target/platform.rb +56 -0
- data/spec/support/shared/examples/metasploit/model/platform.rb +213 -0
- data/spec/support/shared/examples/metasploit/model/real_pathname.rb +29 -0
- data/spec/support/shared/examples/metasploit/model/reference.rb +410 -0
- data/spec/support/shared/examples/metasploit/model/search/operation/integer/value.rb +79 -0
- data/spec/support/shared/examples/metasploit/model/search/operation/string/value.rb +53 -0
- data/spec/support/shared/examples/metasploit/model/search/operator/help.rb +134 -0
- data/spec/support/shared/examples/metasploit/model/translation.rb +37 -0
- data/spec/support/shared/examples/search/query.rb +43 -0
- data/spec/support/shared/examples/search/query/metasploit/model/search/operator/deprecated/app.rb +44 -0
- data/spec/support/shared/examples/search/query/metasploit/model/search/operator/deprecated/authority.rb +60 -0
- data/spec/support/shared/examples/search_association.rb +13 -0
- data/spec/support/shared/examples/search_attribute.rb +27 -0
- data/spec/support/shared/examples/search_with.rb +36 -0
- data/spec/support/shared/matchers/allow_attribute.rb +17 -0
- data/spec/support/templates/metasploit/model/module/ancestors/_attributes.rb.erb +9 -0
- data/spec/support/templates/metasploit/model/module/ancestors/_methods.rb.erb +8 -0
- data/spec/support/templates/metasploit/model/module/ancestors/_validations.rb.erb +6 -0
- data/spec/support/templates/metasploit/model/module/ancestors/base.rb.erb +3 -0
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_auxiliary.rb.erb +1 -0
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_encoder.rb.erb +1 -0
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_exploit.rb.erb +1 -0
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_non_payload.rb.erb +5 -0
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_nop.rb.erb +1 -0
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_payload.rb.erb +4 -0
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_post.rb.erb +1 -0
- data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_handled.rb.erb +20 -0
- data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_single.rb.erb +1 -0
- data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_stage.rb.erb +0 -0
- data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_stager.rb.erb +1 -0
- data/spec/support/templates/metasploit/model/module/classes/_methods.rb.erb +9 -0
- metadata +747 -0
@@ -0,0 +1,165 @@
|
|
1
|
+
module Metasploit
|
2
|
+
module Model
|
3
|
+
module Module
|
4
|
+
# Concern for sharing common code between `Mdm::Module::Path` and `Metasploit::Framework::Module::Path`. Define
|
5
|
+
# {#gem}, {#name}, and {#real_path} by following the abstract instructions for each attribute.
|
6
|
+
module Path
|
7
|
+
extend ActiveModel::Naming
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
include Metasploit::Model::NilifyBlanks
|
11
|
+
include Metasploit::Model::Translation
|
12
|
+
|
13
|
+
included do
|
14
|
+
include ActiveModel::Dirty
|
15
|
+
include ActiveModel::MassAssignmentSecurity
|
16
|
+
include ActiveModel::Validations
|
17
|
+
include ActiveModel::Validations::Callbacks
|
18
|
+
include Metasploit::Model::RealPathname
|
19
|
+
|
20
|
+
#
|
21
|
+
# Callbacks
|
22
|
+
#
|
23
|
+
|
24
|
+
nilify_blank :gem,
|
25
|
+
:name
|
26
|
+
before_validation :normalize_real_path
|
27
|
+
|
28
|
+
#
|
29
|
+
# Mass Assignment Security
|
30
|
+
#
|
31
|
+
|
32
|
+
attr_accessible :gem
|
33
|
+
attr_accessible :name
|
34
|
+
attr_accessible :real_path
|
35
|
+
|
36
|
+
#
|
37
|
+
# Validations
|
38
|
+
#
|
39
|
+
|
40
|
+
validate :directory
|
41
|
+
validate :gem_and_name
|
42
|
+
end
|
43
|
+
|
44
|
+
#
|
45
|
+
# Attributes
|
46
|
+
#
|
47
|
+
|
48
|
+
# @!attribute [rw] gem
|
49
|
+
# @abstract In an ActiveModel, this should be an `attr_accessor :gem`. In an ActiveRecord, this should be a
|
50
|
+
# string gem column.
|
51
|
+
#
|
52
|
+
# The name of the gem that is adding this module path to metasploit-framework. For paths normally added by
|
53
|
+
# metasploit-framework itself, this would be `'metasploit-framework'`, while for Metasploit Pro this would be
|
54
|
+
# `'metasploit-pro'`. The name used for `gem` does not have to be a gem on rubygems, it just functions as a
|
55
|
+
# namespace for {#name} so that projects using metasploit-framework do not need to worry about collisions on
|
56
|
+
# {#name} which could disrupt the cache behavior.
|
57
|
+
#
|
58
|
+
# @return [String]
|
59
|
+
|
60
|
+
# @!attribute [rw] name
|
61
|
+
# @abstract In an ActiveModel, this should be an `attr_accessor :name`. In an ActiveRecord, this should be a
|
62
|
+
# string name column.
|
63
|
+
#
|
64
|
+
# The name of the module path scoped to {#gem}. {#gem} and {#name} uniquely identify this path so that if
|
65
|
+
# {#real_path} changes, the entire cache does not need to be invalidated because the change in {#real_path}
|
66
|
+
# will still be tied to the same ({#gem}, {#name}) tuple.
|
67
|
+
#
|
68
|
+
# @return [String]
|
69
|
+
|
70
|
+
# @!attribute [rw] real_path
|
71
|
+
# @abstract In an ActiveModel, this should be an `attr_accesor :real_path`. In an ActiveRecord, this should
|
72
|
+
# be a text real_path column.
|
73
|
+
#
|
74
|
+
# @note Non-real paths will be converted to real paths in a before validation callback, so take care to either
|
75
|
+
# pass real paths or pay attention when setting {#real_path} and then changing directories before
|
76
|
+
# validating.
|
77
|
+
#
|
78
|
+
# The real (absolute) path to module path.
|
79
|
+
#
|
80
|
+
# @return [String]
|
81
|
+
|
82
|
+
#
|
83
|
+
# Instance Methods
|
84
|
+
#
|
85
|
+
|
86
|
+
# Returns whether {#real_path} is a directory.
|
87
|
+
#
|
88
|
+
# @return [true] if {#real_path} is a directory.
|
89
|
+
# @return [false] if {#real_path} is not a directory.
|
90
|
+
def directory?
|
91
|
+
directory = false
|
92
|
+
|
93
|
+
if real_path and File.directory?(real_path)
|
94
|
+
directory = true
|
95
|
+
end
|
96
|
+
|
97
|
+
directory
|
98
|
+
end
|
99
|
+
|
100
|
+
# Returns whether is a named path.
|
101
|
+
#
|
102
|
+
# @return [false] if gem is blank or name is blank.
|
103
|
+
# @return [true] if gem is not blank and name is not blank.
|
104
|
+
def named?
|
105
|
+
named = false
|
106
|
+
|
107
|
+
if gem.present? and name.present?
|
108
|
+
named = true
|
109
|
+
end
|
110
|
+
|
111
|
+
named
|
112
|
+
end
|
113
|
+
|
114
|
+
# Returns whether was a named path. This is the equivalent of {#named?}, but checks the old, pre-change
|
115
|
+
# values for {#gem} and {#name}.
|
116
|
+
#
|
117
|
+
# @return [false] is gem_was is blank or name_was is blank.
|
118
|
+
# @return [true] if gem_was is not blank and name_was is not blank.
|
119
|
+
def was_named?
|
120
|
+
was_named = false
|
121
|
+
|
122
|
+
if gem_was.present? and name_was.present?
|
123
|
+
was_named = true
|
124
|
+
end
|
125
|
+
|
126
|
+
was_named
|
127
|
+
end
|
128
|
+
|
129
|
+
private
|
130
|
+
|
131
|
+
# Validates that either {#directory?} is `true`.
|
132
|
+
#
|
133
|
+
# @return [void]
|
134
|
+
def directory
|
135
|
+
unless directory?
|
136
|
+
errors[:real_path] << 'must be a directory'
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
# Validates that either both {#gem} and {#name} are present or both are `nil`.
|
141
|
+
#
|
142
|
+
# @return [void]
|
143
|
+
def gem_and_name
|
144
|
+
if name.present? and gem.blank?
|
145
|
+
errors[:gem] << "can't be blank if name is present"
|
146
|
+
end
|
147
|
+
|
148
|
+
if gem.present? and name.blank?
|
149
|
+
errors[:name] << "can't be blank if gem is present"
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
# If {#real_path} is set and exists on disk, then converts it to a real path to eliminate any symlinks.
|
154
|
+
#
|
155
|
+
# @return [void]
|
156
|
+
# @see Metasploit::Model::File.realpath
|
157
|
+
def normalize_real_path
|
158
|
+
if real_path and File.exist?(real_path)
|
159
|
+
self.real_path = Metasploit::Model::File.realpath(real_path)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Metasploit
|
2
|
+
module Model
|
3
|
+
module Module
|
4
|
+
# Joins {Metasploit::Model::Module::Instance} and {Metasploit::Model::Platform.}
|
5
|
+
module Platform
|
6
|
+
extend ActiveModel::Naming
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
include Metasploit::Model::Translation
|
10
|
+
|
11
|
+
included do
|
12
|
+
include ActiveModel::Validations
|
13
|
+
|
14
|
+
#
|
15
|
+
# Validations
|
16
|
+
#
|
17
|
+
|
18
|
+
validates :module_instance, :presence => true
|
19
|
+
validates :platform, :presence => true
|
20
|
+
end
|
21
|
+
|
22
|
+
#
|
23
|
+
# Associations
|
24
|
+
#
|
25
|
+
|
26
|
+
# @!attribute [rw] module_instance
|
27
|
+
# Module that supports {#platform}.
|
28
|
+
#
|
29
|
+
# @return [Metasploit::Model::Module::Instance]
|
30
|
+
|
31
|
+
# @!attribute [rw] platform
|
32
|
+
# Platform supported by {#module_instance}.
|
33
|
+
#
|
34
|
+
# @return [Metasploit::Model::Platform]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
module Metasploit
|
2
|
+
module Model
|
3
|
+
module Module
|
4
|
+
# Code shared between `Mdm::Module::Rank` and `Metasploit::Framework::Module::Rank`.
|
5
|
+
module Rank
|
6
|
+
extend ActiveModel::Naming
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
include Metasploit::Model::Translation
|
10
|
+
|
11
|
+
#
|
12
|
+
# CONSTANTS
|
13
|
+
#
|
14
|
+
|
15
|
+
# Regular expression to ensure that {#name} is a word starting with a capital letter
|
16
|
+
NAME_REGEXP = /\A[A-Z][a-z]+\Z/
|
17
|
+
|
18
|
+
# Converts {#name} to {#number}. Used for seeding. Seeds exist so that reports can use module_ranks to get the
|
19
|
+
# name of a rank without having to duplicate this constant.
|
20
|
+
NUMBER_BY_NAME = {
|
21
|
+
'Manual' => 0,
|
22
|
+
'Low' => 100,
|
23
|
+
'Average' => 200,
|
24
|
+
'Normal' => 300,
|
25
|
+
'Good' => 400,
|
26
|
+
'Great' => 500,
|
27
|
+
'Excellent' => 600
|
28
|
+
}
|
29
|
+
# Converts {#number} to {#name}. Used to convert *Ranking constants used in `Msf::Modules` back to Strings.
|
30
|
+
NAME_BY_NUMBER = NUMBER_BY_NAME.invert
|
31
|
+
|
32
|
+
included do
|
33
|
+
include ActiveModel::MassAssignmentSecurity
|
34
|
+
include ActiveModel::Validations
|
35
|
+
include Metasploit::Model::Search
|
36
|
+
|
37
|
+
#
|
38
|
+
# Mass Assignment Security
|
39
|
+
#
|
40
|
+
|
41
|
+
attr_accessible :name
|
42
|
+
attr_accessible :number
|
43
|
+
|
44
|
+
#
|
45
|
+
# Search Attributes
|
46
|
+
#
|
47
|
+
|
48
|
+
search_attribute :name, :type => :string
|
49
|
+
search_attribute :number, :type => :integer
|
50
|
+
|
51
|
+
#
|
52
|
+
# Validations
|
53
|
+
#
|
54
|
+
|
55
|
+
validates :name,
|
56
|
+
# To ensure NUMBER_BY_NAME and seeds stay in sync.
|
57
|
+
:inclusion => {
|
58
|
+
:in => NUMBER_BY_NAME.keys
|
59
|
+
},
|
60
|
+
# To ensure new seeds follow pattern.
|
61
|
+
:format => {
|
62
|
+
:with => NAME_REGEXP
|
63
|
+
}
|
64
|
+
validates :number,
|
65
|
+
# to ensure NUMBER_BY_NAME and seeds stay in sync.
|
66
|
+
:inclusion => {
|
67
|
+
:in => NUMBER_BY_NAME.values
|
68
|
+
},
|
69
|
+
# To ensure new seeds follow pattern.
|
70
|
+
:numericality => {
|
71
|
+
:only_integer => true
|
72
|
+
}
|
73
|
+
end
|
74
|
+
|
75
|
+
#
|
76
|
+
# Attributes
|
77
|
+
#
|
78
|
+
|
79
|
+
# @!attribute [rw] name
|
80
|
+
# The name of the rank.
|
81
|
+
#
|
82
|
+
# @return [String]
|
83
|
+
|
84
|
+
# @!attribute [rw] number
|
85
|
+
# The numerical value of the rank. Higher numbers are better.
|
86
|
+
#
|
87
|
+
# @return [Integer]
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Metasploit
|
2
|
+
module Model
|
3
|
+
module Module
|
4
|
+
# Joins {Metasploit::Model::Module::Instance} and {Metasploit::Model::Reference}.
|
5
|
+
module Reference
|
6
|
+
extend ActiveModel::Naming
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
include Metasploit::Model::Translation
|
10
|
+
|
11
|
+
included do
|
12
|
+
include ActiveModel::Validations
|
13
|
+
|
14
|
+
#
|
15
|
+
# Validations
|
16
|
+
#
|
17
|
+
|
18
|
+
validates :module_instance, :presence => true
|
19
|
+
validates :reference, :presence => true
|
20
|
+
end
|
21
|
+
|
22
|
+
#
|
23
|
+
# Associations
|
24
|
+
#
|
25
|
+
|
26
|
+
# @!attribute [rw] module_instance
|
27
|
+
# {Metasploit::Model::Module::Instance Module} with {#reference}.
|
28
|
+
#
|
29
|
+
# @return [Metasploit::Model::Module::Instance]
|
30
|
+
|
31
|
+
# @!attribute [rw] reference
|
32
|
+
# {Metasploit::Model::Reference reference} to exploit or proof-of-concept (PoC) code for {#module_instance}.
|
33
|
+
#
|
34
|
+
# @return [Metasploit::Model::Reference]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Metasploit
|
2
|
+
module Model
|
3
|
+
module Module
|
4
|
+
# The types of stances a module can take, such as {PASSIVE} or {AGGRESSIVE}. Stances indicate whether or not the
|
5
|
+
# module triggers the vulnerability without waiting for one or more conditions to be met ({AGGRESSIVE}) or whether
|
6
|
+
# it must wait for certain conditions to be satisfied before the exploit can be initiated ({PASSIVE}).
|
7
|
+
module Stance
|
8
|
+
# The module does actively tries to trigger a vulnerability.
|
9
|
+
AGGRESSIVE = 'aggressive'
|
10
|
+
# The module doesn't actively attack and waits for interaction from the client or other entity before attempting
|
11
|
+
# to trigger a vulnerability
|
12
|
+
PASSIVE = 'passive'
|
13
|
+
|
14
|
+
# All stances.
|
15
|
+
ALL = [
|
16
|
+
AGGRESSIVE,
|
17
|
+
PASSIVE
|
18
|
+
]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module Metasploit
|
2
|
+
module Model
|
3
|
+
module Module
|
4
|
+
# Code shared between `Mdm::Module::Target` and `Metasploit::Framework::Module::Target`.
|
5
|
+
module Target
|
6
|
+
extend ActiveModel::Naming
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
include Metasploit::Model::Translation
|
10
|
+
|
11
|
+
included do
|
12
|
+
include ActiveModel::MassAssignmentSecurity
|
13
|
+
include ActiveModel::Validations
|
14
|
+
include Metasploit::Model::Search
|
15
|
+
|
16
|
+
#
|
17
|
+
# Mass Assignment Security
|
18
|
+
#
|
19
|
+
|
20
|
+
attr_accessible :name
|
21
|
+
|
22
|
+
#
|
23
|
+
# Search Attributes
|
24
|
+
#
|
25
|
+
|
26
|
+
search_attribute :name, :type => :string
|
27
|
+
|
28
|
+
#
|
29
|
+
# Validators
|
30
|
+
#
|
31
|
+
|
32
|
+
validates :module_instance, :presence => true
|
33
|
+
validates :name, :presence => true
|
34
|
+
validates :target_architectures, presence: true
|
35
|
+
validates :target_platforms, presence: true
|
36
|
+
end
|
37
|
+
|
38
|
+
#
|
39
|
+
# Associations
|
40
|
+
#
|
41
|
+
|
42
|
+
# @!attribute [r] architectures
|
43
|
+
# Architectures that this target supports, either by being declared specifically for this target or because
|
44
|
+
# this target did not override architectures and so inheritted the architecture set from the class.
|
45
|
+
#
|
46
|
+
# @return [Array<Metasploit::Model::Architecture>]
|
47
|
+
|
48
|
+
# @!attribute [rw] module_instance
|
49
|
+
# Module where this target was declared.
|
50
|
+
#
|
51
|
+
# @return [Metasploit::Model::Module::Instance]
|
52
|
+
|
53
|
+
# @!attribute [r] platforms
|
54
|
+
# Platforms that this target supports, either by being declared specifically for this target or because this
|
55
|
+
# target did not override platforms and so inheritted the platform set from the class.
|
56
|
+
#
|
57
|
+
# @return [Array<Metasploit::Model::Platform>]
|
58
|
+
|
59
|
+
# @!attribute [rw] target_architectures
|
60
|
+
# Joins this target to its {#architectures}
|
61
|
+
#
|
62
|
+
# @return [Array<Metasploit::Model::Module::Target::Architecture]
|
63
|
+
|
64
|
+
# @!attribute [rw] target_platforms
|
65
|
+
# Joins this target to its {#platforms}
|
66
|
+
#
|
67
|
+
# @return [Array<Metasploit::Model::Module::Target::Platform>]
|
68
|
+
|
69
|
+
#
|
70
|
+
# Attributes
|
71
|
+
#
|
72
|
+
|
73
|
+
# @!attribute [rw] name
|
74
|
+
# The name of this target.
|
75
|
+
#
|
76
|
+
# @return [String]
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Metasploit
|
2
|
+
module Model
|
3
|
+
module Module
|
4
|
+
module Target
|
5
|
+
# Model that joins {Metasploit::Model::Architecture} and {Metasploit::Model::Module::Target}.
|
6
|
+
module Architecture
|
7
|
+
extend ActiveModel::Naming
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
include Metasploit::Model::Translation
|
11
|
+
|
12
|
+
included do
|
13
|
+
include ActiveModel::Validations
|
14
|
+
|
15
|
+
#
|
16
|
+
# Validations
|
17
|
+
#
|
18
|
+
|
19
|
+
validates :architecture,
|
20
|
+
presence: true
|
21
|
+
validates :module_target,
|
22
|
+
presence: true
|
23
|
+
end
|
24
|
+
|
25
|
+
#
|
26
|
+
# Associations
|
27
|
+
#
|
28
|
+
|
29
|
+
# @!attribute [rw] architecture
|
30
|
+
# The architecture supported by the {#module_target}.
|
31
|
+
#
|
32
|
+
# @return [Metasploit::Model::Architecture]
|
33
|
+
|
34
|
+
# @!attribute [rw] module_target
|
35
|
+
# The module target that supports {#architecture}.
|
36
|
+
#
|
37
|
+
# @return [Metasploit::Model::Module::Target]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|