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,27 @@
|
|
1
|
+
# Implementation of {Metasploit::Model::EmailAddress} to allow testing of {Metasploit::Model::EmailAddress} using an in-memory
|
2
|
+
# ActiveModel and use of factories.
|
3
|
+
class Dummy::EmailAddress < Metasploit::Model::Base
|
4
|
+
include Metasploit::Model::EmailAddress
|
5
|
+
|
6
|
+
#
|
7
|
+
# Attributes
|
8
|
+
#
|
9
|
+
|
10
|
+
# @!attribute [rw] domain
|
11
|
+
# The domain part of the email address after the `'@'`.
|
12
|
+
#
|
13
|
+
# @return [String]
|
14
|
+
attr_accessor :domain
|
15
|
+
|
16
|
+
# @!attribute [rw] full
|
17
|
+
# The full email address.
|
18
|
+
#
|
19
|
+
# @return [String] <{#local}>@<{#domain}
|
20
|
+
attr_accessor :full
|
21
|
+
|
22
|
+
# @!attribute [rw] local
|
23
|
+
# The local part of the email address before the `'@'`.
|
24
|
+
#
|
25
|
+
# @return [String]
|
26
|
+
attr_accessor :local
|
27
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Implementation of {Metasploit::Model::Module::Action} to allow testing of {Metasploit::Model::Module::Action}
|
2
|
+
# using an in-memory ActiveModel and use of factories.
|
3
|
+
class Dummy::Module::Action < Metasploit::Model::Base
|
4
|
+
include Metasploit::Model::Module::Action
|
5
|
+
|
6
|
+
#
|
7
|
+
# Associations
|
8
|
+
#
|
9
|
+
|
10
|
+
# @!attribute [rw] module_instance
|
11
|
+
# Module that has this action.
|
12
|
+
#
|
13
|
+
# @return [Dummy::Module::Instance]
|
14
|
+
attr_accessor :module_instance
|
15
|
+
|
16
|
+
#
|
17
|
+
# Attributes
|
18
|
+
#
|
19
|
+
|
20
|
+
# @!attribute [rw] name
|
21
|
+
# The name of this action.
|
22
|
+
#
|
23
|
+
# @return [String]
|
24
|
+
attr_accessor :name
|
25
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# Implementation of {Metasploit::Model::Module::Ancestor} to allow testing of {Metasploit::Model::Module::Ancestor}
|
2
|
+
# using an in-memory ActiveModel and use of factories.
|
3
|
+
class Dummy::Module::Ancestor < Metasploit::Model::Base
|
4
|
+
include Metasploit::Model::Module::Ancestor
|
5
|
+
|
6
|
+
#
|
7
|
+
# Attributes
|
8
|
+
#
|
9
|
+
|
10
|
+
# @!attribute [rw] full_name
|
11
|
+
# Full name to module including {#module_type} and {#reference_name}
|
12
|
+
#
|
13
|
+
# @return [String] <module_type>/<reference_name>
|
14
|
+
attr_accessor :full_name
|
15
|
+
|
16
|
+
# @!attribute [rw] handler_type
|
17
|
+
# The handler type (in the case of singles) or (in the case of stagers) the handler type alias. Handler type is
|
18
|
+
# appended to the end of the single's or stage's {#reference_name} to get the
|
19
|
+
# {Metasploit::Model::Module::Class#reference_name}.
|
20
|
+
#
|
21
|
+
# @return [String] if {#handled?} is `true`.
|
22
|
+
# @return [nil] if {#handled?} is `false`.
|
23
|
+
attr_accessor :handler_type
|
24
|
+
|
25
|
+
# @!attribute [rw] module_type
|
26
|
+
# The type of module of this ancestor.
|
27
|
+
#
|
28
|
+
# @return [String]
|
29
|
+
attr_accessor :module_type
|
30
|
+
|
31
|
+
# @!attribute [rw] parent_path
|
32
|
+
# Module path on which this ancestor exists.
|
33
|
+
#
|
34
|
+
# @return [Metasploit::Model::Module::Path]
|
35
|
+
attr_accessor :parent_path
|
36
|
+
|
37
|
+
# @!attribute [rw] payload_type
|
38
|
+
# The type of payload module this ancestor is.
|
39
|
+
#
|
40
|
+
# @return [String] if this is a payload module.
|
41
|
+
# @return [nil] if this is not a payload module.
|
42
|
+
attr_accessor :payload_type
|
43
|
+
|
44
|
+
# @!attribute [rw] real_path
|
45
|
+
# The real (absolute) path to this ancestor on-disk.
|
46
|
+
#
|
47
|
+
# @return [String]
|
48
|
+
attr_accessor :real_path
|
49
|
+
|
50
|
+
# @!attribute [rw] real_path_modified_at
|
51
|
+
# The modification time of {#real_path}.
|
52
|
+
#
|
53
|
+
# @return [DateTime]
|
54
|
+
attr_accessor :real_path_modified_at
|
55
|
+
|
56
|
+
# @!attribute [rw] real_path_sha1_hex_digest
|
57
|
+
# SHA1 hex digest of the contents of {#real_path}.
|
58
|
+
#
|
59
|
+
# @return [String]
|
60
|
+
attr_accessor :real_path_sha1_hex_digest
|
61
|
+
|
62
|
+
# @!attribute [rw] reference_name
|
63
|
+
# Reference name to this ancestor, scoped to {#module_type}.
|
64
|
+
#
|
65
|
+
# @return [String]
|
66
|
+
attr_accessor :reference_name
|
67
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class Dummy::Module::Architecture < Metasploit::Model::Base
|
2
|
+
include Metasploit::Model::Module::Architecture
|
3
|
+
|
4
|
+
#
|
5
|
+
# Attributes
|
6
|
+
#
|
7
|
+
|
8
|
+
# @!attribute [rw] architecture
|
9
|
+
# The architecture supported by the {#module_instance}.
|
10
|
+
#
|
11
|
+
# @return [Metasploit::Model::Architecture]
|
12
|
+
attr_accessor :architecture
|
13
|
+
|
14
|
+
# @!attribute [rw] module_instance
|
15
|
+
# The module instance that supports {#architecture}.
|
16
|
+
#
|
17
|
+
# @return [Metasploit::Model::Module::Instance]
|
18
|
+
attr_accessor :module_instance
|
19
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Implementation of {Metasploit::Model::Module::Author} to allow testing of {Metasploit::Model::Module::Author}
|
2
|
+
# using an in-memory ActiveModel and use of factories.
|
3
|
+
class Dummy::Module::Author < Metasploit::Model::Base
|
4
|
+
include Metasploit::Model::Module::Author
|
5
|
+
|
6
|
+
#
|
7
|
+
# Associations
|
8
|
+
#
|
9
|
+
|
10
|
+
# @!attribute [rw] author
|
11
|
+
# Author who wrote the {#module_instance module}.
|
12
|
+
#
|
13
|
+
# @return [Dummy::Author]
|
14
|
+
attr_accessor :author
|
15
|
+
|
16
|
+
# @!attribute [rw] email_address
|
17
|
+
# Email address {#author} used when writing {#module_instance module}.
|
18
|
+
#
|
19
|
+
# @return [Dummy::EmailAddress] if {#author} gave an email address.
|
20
|
+
# @return [nil] if {#author} only gave a name.
|
21
|
+
attr_accessor :email_address
|
22
|
+
|
23
|
+
# @!attribute [rw] module_instance
|
24
|
+
# Module written by {#author}.
|
25
|
+
#
|
26
|
+
# @return [Dummy::Module::Instance]
|
27
|
+
attr_accessor :module_instance
|
28
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# Implementation of {Metasploit::Model::Module::Class} to allow testing of {Metasploit::Model::Module::Class}
|
2
|
+
# using an in-memory ActiveModel and use of factories.
|
3
|
+
class Dummy::Module::Class < Metasploit::Model::Base
|
4
|
+
include Metasploit::Model::Module::Class
|
5
|
+
|
6
|
+
#
|
7
|
+
# Associations
|
8
|
+
#
|
9
|
+
|
10
|
+
# @!attribute [rw] rank
|
11
|
+
# The reliability of the module and likelyhood that the module won't knock over the service or host being
|
12
|
+
# exploited. Bigger values is better.
|
13
|
+
#
|
14
|
+
# @return [Dummy::Module::Rank]
|
15
|
+
attr_accessor :rank
|
16
|
+
|
17
|
+
# @!attribute [r] ancestors
|
18
|
+
# The Class or Modules that were loaded to make this module Class.
|
19
|
+
#
|
20
|
+
# @return [Array<Dummy::Module::Ancestor>]
|
21
|
+
attr_writer :ancestors
|
22
|
+
|
23
|
+
#
|
24
|
+
# Attributes
|
25
|
+
#
|
26
|
+
|
27
|
+
# @!attribute [rw] full_name
|
28
|
+
# The full name (type + reference) for the Class<Msf::Module>. This is merely a denormalized cache of
|
29
|
+
# `"#{{#module_type}}/#{{#reference_name}}"` as full_name is used in numerous queries and reports.
|
30
|
+
#
|
31
|
+
# @return [String]
|
32
|
+
attr_accessor :full_name
|
33
|
+
|
34
|
+
# @!attribute [rw] module_type
|
35
|
+
# A denormalized cache of the {Metasploit::Model::Module::Class#module_type ancestors' module_types}, which
|
36
|
+
# must all be the same. This cache exists so that queries for modules of a given type don't need include the
|
37
|
+
# {#ancestors}.
|
38
|
+
#
|
39
|
+
# @return [String]
|
40
|
+
attr_accessor :module_type
|
41
|
+
|
42
|
+
# @!attribute [rw] payload_type
|
43
|
+
# For payload modules, the {PAYLOAD_TYPES type} of payload, either 'single' or 'staged'.
|
44
|
+
#
|
45
|
+
# @return [String] if {#payload?} is `true`.
|
46
|
+
# @return [nil] if {#payload?} is `false`
|
47
|
+
attr_accessor :payload_type
|
48
|
+
|
49
|
+
# @!attribute [rw] reference_name
|
50
|
+
# The reference name for the Class<Msf::Module>. For non-payloads, this will just be
|
51
|
+
# {Mdm::Module::Ancestor#reference_name} for the only element in {#ancestors}. For payloads composed of a
|
52
|
+
# stage and stager, the reference name will be derived from the
|
53
|
+
# {Metasplit::Model::Module::Ancestor#reference_name} of each element {#ancestors} or an alias defined in
|
54
|
+
# those Modules.
|
55
|
+
#
|
56
|
+
# @return [String
|
57
|
+
attr_accessor :reference_name
|
58
|
+
|
59
|
+
#
|
60
|
+
# Methods
|
61
|
+
#
|
62
|
+
|
63
|
+
# List of ancestors included in this module Class.
|
64
|
+
#
|
65
|
+
# @return [Array<Dummy::Module::Ancestor>]
|
66
|
+
def ancestors
|
67
|
+
@ancestors ||= []
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,209 @@
|
|
1
|
+
# Implementation of {Metasploit::Model::Module::Instance} to allow testing of {Metasploit::Model::Module::Instance}
|
2
|
+
# using an in-memory ActiveModel and use of factories.
|
3
|
+
class Dummy::Module::Instance < Metasploit::Model::Base
|
4
|
+
include Metasploit::Model::Association
|
5
|
+
include Metasploit::Model::Module::Instance
|
6
|
+
|
7
|
+
#
|
8
|
+
#
|
9
|
+
# Associations
|
10
|
+
#
|
11
|
+
#
|
12
|
+
|
13
|
+
association :actions, :class_name => 'Dummy::Module::Action'
|
14
|
+
association :architectures, :class_name => 'Dummy::Architecture'
|
15
|
+
association :authorities, :class_name => 'Dummy::Authority'
|
16
|
+
association :authors, :class_name => 'Dummy::Author'
|
17
|
+
association :email_addresses, :class_name => 'Dummy::EmailAddress'
|
18
|
+
association :module_class, :class_name => 'Dummy::Module::Class'
|
19
|
+
association :platforms, :class_name => 'Dummy::Platform'
|
20
|
+
association :rank, :class_name => 'Dummy::Module::Rank'
|
21
|
+
association :references, :class_name => 'Dummy::Reference'
|
22
|
+
association :targets, :class_name => 'Dummy::Module::Target'
|
23
|
+
|
24
|
+
# @!attribute [rw] actions
|
25
|
+
# Auxiliary actions to perform when this running this module.
|
26
|
+
#
|
27
|
+
# @return [Array<Dummy::Module::Action>]
|
28
|
+
def actions
|
29
|
+
@actions ||= []
|
30
|
+
end
|
31
|
+
attr_writer :actions
|
32
|
+
|
33
|
+
# @!attribute [rw] default_action
|
34
|
+
# The default action in {#actions}.
|
35
|
+
#
|
36
|
+
# @return [Dummy::Module::Action]
|
37
|
+
attr_accessor :default_action
|
38
|
+
|
39
|
+
# @!attribute [rw] default_target
|
40
|
+
# The default target in {#targets}.
|
41
|
+
#
|
42
|
+
# @return [Dummy::Module::Target]
|
43
|
+
attr_accessor :default_target
|
44
|
+
|
45
|
+
# @!attribute [rw] module_architectures
|
46
|
+
# Joins this module instance to the {#architectures} it supports.
|
47
|
+
#
|
48
|
+
# @return [Array<Dummy::Module::Architecture>]
|
49
|
+
def module_architectures
|
50
|
+
@module_architectures ||= []
|
51
|
+
end
|
52
|
+
attr_writer :module_architectures
|
53
|
+
|
54
|
+
# @!attribute [rw] module_authors
|
55
|
+
# Joins this with {#authors} and {#email_addresses} to model the name and email address used for an author
|
56
|
+
# entry in the module metadata.
|
57
|
+
#
|
58
|
+
# @return [Array<Dummy::Module::Author>]
|
59
|
+
def module_authors
|
60
|
+
@module_authors ||= []
|
61
|
+
end
|
62
|
+
attr_writer :module_authors
|
63
|
+
|
64
|
+
# @!attribute [rw] module_class
|
65
|
+
# Class-derived metadata to go along with the instance-derived metadata in this model.
|
66
|
+
#
|
67
|
+
# @return [Dummy::Module::Class]
|
68
|
+
attr_accessor :module_class
|
69
|
+
|
70
|
+
# @!attribute [rw] module_platforms
|
71
|
+
# Joins this with the {#platforms} it supports.
|
72
|
+
#
|
73
|
+
# @return [Array<Dummy::Module::Platform>]
|
74
|
+
def module_platforms
|
75
|
+
@module_platforms ||= []
|
76
|
+
end
|
77
|
+
attr_writer :module_platforms
|
78
|
+
|
79
|
+
# @!attribute [rw] module_references
|
80
|
+
# Joins this with the {#references} to the exploit of this module.
|
81
|
+
#
|
82
|
+
# @return [Array<Dummy::Module::Reference>]
|
83
|
+
def module_references
|
84
|
+
@module_references ||= []
|
85
|
+
end
|
86
|
+
attr_writer :module_references
|
87
|
+
|
88
|
+
# @!attribute [rw] targets
|
89
|
+
# Names of targets with different configurations that can be exploited by this module.
|
90
|
+
#
|
91
|
+
# @return [Array<Dummy::Module::Target>]
|
92
|
+
def targets
|
93
|
+
@targets ||= []
|
94
|
+
end
|
95
|
+
attr_writer :targets
|
96
|
+
|
97
|
+
# @!attribute [r] architectures
|
98
|
+
# The {Dummy::Architecture architectures} supported by this module.
|
99
|
+
#
|
100
|
+
# @return [Array<Dummy::Architecture>]
|
101
|
+
def architectures
|
102
|
+
module_architectures.map(&:architecture)
|
103
|
+
end
|
104
|
+
|
105
|
+
# @!attribute [r] authors
|
106
|
+
# The names of the authors of this module.
|
107
|
+
#
|
108
|
+
# @return [Array<Dummy::Author>]
|
109
|
+
def authors
|
110
|
+
module_authors.map(&:author)
|
111
|
+
end
|
112
|
+
|
113
|
+
# @!attribute [r] email_addresses
|
114
|
+
# The email addresses of the authors of this module.
|
115
|
+
#
|
116
|
+
# @return [Array<Dummy::EmailAddress>]
|
117
|
+
def email_addresses
|
118
|
+
module_authors.map(&email_addresses).uniq
|
119
|
+
end
|
120
|
+
|
121
|
+
# @!attribute [r] platforms
|
122
|
+
# Platforms supported by this module.
|
123
|
+
#
|
124
|
+
# @return [Array<Dummy::Module::Platform>]
|
125
|
+
def platforms
|
126
|
+
module_platforms.map(&:platform)
|
127
|
+
end
|
128
|
+
|
129
|
+
# @!attribute [r] references
|
130
|
+
# External references to the exploit or proof-of-concept (PoC) code in this module.
|
131
|
+
#
|
132
|
+
# @return [Array<Dummy::Reference>]
|
133
|
+
def references
|
134
|
+
module_references.map(&:reference)
|
135
|
+
end
|
136
|
+
|
137
|
+
# @!attribute [r] vulns
|
138
|
+
# Vulnerabilities with same {Dummy::Reference reference} as this module.
|
139
|
+
#
|
140
|
+
# @return [Array<Dummy::Vuln>]
|
141
|
+
def vulns
|
142
|
+
references.inject(Set.new) { |vuln_set, reference|
|
143
|
+
vuln_set.merge(reference.vulns)
|
144
|
+
}
|
145
|
+
end
|
146
|
+
|
147
|
+
# @!attribute [r] vulnerable_hosts
|
148
|
+
# Hosts vulnerable to this module.
|
149
|
+
#
|
150
|
+
# @return [Array<Dummy::Host>]
|
151
|
+
def vulnerable_hosts
|
152
|
+
vulns.inject(Set.new) { |host_set, vuln|
|
153
|
+
host_set.add(vuln.host)
|
154
|
+
}
|
155
|
+
end
|
156
|
+
|
157
|
+
# @!attribute [r] vulnerable_services
|
158
|
+
# Services vulnerable to this module.
|
159
|
+
#
|
160
|
+
# @return [Array<Dummy::Service>]
|
161
|
+
def vulnerable_services
|
162
|
+
vulns.inject(Set.new) { |service_set, vuln|
|
163
|
+
service_set.merge(vuln)
|
164
|
+
}
|
165
|
+
end
|
166
|
+
|
167
|
+
#
|
168
|
+
# Attributes
|
169
|
+
#
|
170
|
+
|
171
|
+
# @!attribute [rw] description
|
172
|
+
# A long, paragraph description of what the module does.
|
173
|
+
#
|
174
|
+
# @return [String]
|
175
|
+
attr_accessor :description
|
176
|
+
|
177
|
+
# @!attribute [rw] disclosed_on
|
178
|
+
# The date the vulnerability exploited by this module was disclosed to the public.
|
179
|
+
#
|
180
|
+
# @return [Date, nil]
|
181
|
+
attr_accessor :disclosed_on
|
182
|
+
|
183
|
+
# @!attribute [rw] license
|
184
|
+
# The name of the software license for the module's code.
|
185
|
+
#
|
186
|
+
# @return [String]
|
187
|
+
attr_accessor :license
|
188
|
+
|
189
|
+
# @!attribute [rw] name
|
190
|
+
# The human readable name of the module. It is unrelated to {Dummy::Module::Class#full_name} or
|
191
|
+
# {Dummy::Module::Class#reference_name} and is better thought of as a short summary of the
|
192
|
+
# {#description}.
|
193
|
+
#
|
194
|
+
# @return [String]
|
195
|
+
attr_accessor :name
|
196
|
+
|
197
|
+
# @!attribute [rw] privileged
|
198
|
+
# Whether this module requires privileged access to run.
|
199
|
+
#
|
200
|
+
# @return [Boolean]
|
201
|
+
attr_accessor :privileged
|
202
|
+
|
203
|
+
# @!attribute [rw] stance
|
204
|
+
# Whether the module is active or passive. `nil` if the
|
205
|
+
# {Dummy::Module::Class#module_type module type} does not {#supports_stance? support stances}.
|
206
|
+
#
|
207
|
+
# @return ['active', 'passive', nil]
|
208
|
+
attr_accessor :stance
|
209
|
+
end
|