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.
Files changed (380) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +27 -0
  4. data/.rspec +4 -0
  5. data/.simplecov +38 -0
  6. data/.travis.yml +6 -0
  7. data/.yardopts +5 -0
  8. data/Gemfile +43 -0
  9. data/LICENSE +27 -0
  10. data/README.md +33 -0
  11. data/Rakefile +52 -0
  12. data/app/models/metasploit/model/association/reflection.rb +46 -0
  13. data/app/models/metasploit/model/module/ancestor/spec/template.rb +125 -0
  14. data/app/models/metasploit/model/module/class/spec/template.rb +92 -0
  15. data/app/models/metasploit/model/module/instance/spec/template.rb +97 -0
  16. data/app/models/metasploit/model/search/group/base.rb +21 -0
  17. data/app/models/metasploit/model/search/group/intersection.rb +4 -0
  18. data/app/models/metasploit/model/search/group/union.rb +4 -0
  19. data/app/models/metasploit/model/search/operation/base.rb +39 -0
  20. data/app/models/metasploit/model/search/operation/boolean.rb +36 -0
  21. data/app/models/metasploit/model/search/operation/date.rb +37 -0
  22. data/app/models/metasploit/model/search/operation/integer.rb +14 -0
  23. data/app/models/metasploit/model/search/operation/null.rb +26 -0
  24. data/app/models/metasploit/model/search/operation/set.rb +34 -0
  25. data/app/models/metasploit/model/search/operation/set/integer.rb +5 -0
  26. data/app/models/metasploit/model/search/operation/set/string.rb +5 -0
  27. data/app/models/metasploit/model/search/operation/string.rb +11 -0
  28. data/app/models/metasploit/model/search/operation/union.rb +59 -0
  29. data/app/models/metasploit/model/search/operator/association.rb +43 -0
  30. data/app/models/metasploit/model/search/operator/attribute.rb +60 -0
  31. data/app/models/metasploit/model/search/operator/base.rb +34 -0
  32. data/app/models/metasploit/model/search/operator/delegation.rb +40 -0
  33. data/app/models/metasploit/model/search/operator/deprecated/app.rb +27 -0
  34. data/app/models/metasploit/model/search/operator/deprecated/author.rb +33 -0
  35. data/app/models/metasploit/model/search/operator/deprecated/authority.rb +43 -0
  36. data/app/models/metasploit/model/search/operator/deprecated/platform.rb +45 -0
  37. data/app/models/metasploit/model/search/operator/deprecated/ref.rb +50 -0
  38. data/app/models/metasploit/model/search/operator/deprecated/text.rb +32 -0
  39. data/app/models/metasploit/model/search/operator/null.rb +44 -0
  40. data/app/models/metasploit/model/search/operator/single.rb +98 -0
  41. data/app/models/metasploit/model/search/operator/union.rb +33 -0
  42. data/app/models/metasploit/model/search/query.rb +171 -0
  43. data/app/models/metasploit/model/spec/template.rb +273 -0
  44. data/app/models/metasploit/model/visitation/visitor.rb +69 -0
  45. data/app/validators/derivation_validator.rb +17 -0
  46. data/app/validators/dynamic_length_validator.rb +45 -0
  47. data/app/validators/ip_format_validator.rb +31 -0
  48. data/app/validators/nil_validator.rb +16 -0
  49. data/app/validators/parameters_validator.rb +147 -0
  50. data/app/validators/password_is_strong_validator.rb +115 -0
  51. data/config/locales/en.yml +209 -0
  52. data/lib/metasploit/model.rb +38 -0
  53. data/lib/metasploit/model/architecture.rb +346 -0
  54. data/lib/metasploit/model/association.rb +49 -0
  55. data/lib/metasploit/model/association/error.rb +40 -0
  56. data/lib/metasploit/model/author.rb +58 -0
  57. data/lib/metasploit/model/authority.rb +134 -0
  58. data/lib/metasploit/model/authority/bid.rb +10 -0
  59. data/lib/metasploit/model/authority/cve.rb +10 -0
  60. data/lib/metasploit/model/authority/msb.rb +10 -0
  61. data/lib/metasploit/model/authority/osvdb.rb +10 -0
  62. data/lib/metasploit/model/authority/pmasa.rb +10 -0
  63. data/lib/metasploit/model/authority/secunia.rb +10 -0
  64. data/lib/metasploit/model/authority/us_cert_vu.rb +10 -0
  65. data/lib/metasploit/model/authority/waraxe.rb +31 -0
  66. data/lib/metasploit/model/authority/zdi.rb +10 -0
  67. data/lib/metasploit/model/base.rb +25 -0
  68. data/lib/metasploit/model/configuration.rb +72 -0
  69. data/lib/metasploit/model/configuration/autoload.rb +109 -0
  70. data/lib/metasploit/model/configuration/child.rb +12 -0
  71. data/lib/metasploit/model/configuration/error.rb +4 -0
  72. data/lib/metasploit/model/configuration/i18n.rb +54 -0
  73. data/lib/metasploit/model/configuration/parent.rb +50 -0
  74. data/lib/metasploit/model/configured.rb +46 -0
  75. data/lib/metasploit/model/derivation.rb +110 -0
  76. data/lib/metasploit/model/derivation/full_name.rb +25 -0
  77. data/lib/metasploit/model/email_address.rb +128 -0
  78. data/lib/metasploit/model/engine.rb +34 -0
  79. data/lib/metasploit/model/error.rb +7 -0
  80. data/lib/metasploit/model/file.rb +49 -0
  81. data/lib/metasploit/model/invalid.rb +17 -0
  82. data/lib/metasploit/model/module.rb +8 -0
  83. data/lib/metasploit/model/module/action.rb +58 -0
  84. data/lib/metasploit/model/module/ancestor.rb +494 -0
  85. data/lib/metasploit/model/module/architecture.rb +40 -0
  86. data/lib/metasploit/model/module/author.rb +47 -0
  87. data/lib/metasploit/model/module/class.rb +406 -0
  88. data/lib/metasploit/model/module/handler.rb +35 -0
  89. data/lib/metasploit/model/module/instance.rb +626 -0
  90. data/lib/metasploit/model/module/path.rb +165 -0
  91. data/lib/metasploit/model/module/platform.rb +38 -0
  92. data/lib/metasploit/model/module/rank.rb +91 -0
  93. data/lib/metasploit/model/module/reference.rb +38 -0
  94. data/lib/metasploit/model/module/stance.rb +22 -0
  95. data/lib/metasploit/model/module/target.rb +80 -0
  96. data/lib/metasploit/model/module/target/architecture.rb +42 -0
  97. data/lib/metasploit/model/module/target/platform.rb +42 -0
  98. data/lib/metasploit/model/module/type.rb +44 -0
  99. data/lib/metasploit/model/nilify_blanks.rb +53 -0
  100. data/lib/metasploit/model/platform.rb +250 -0
  101. data/lib/metasploit/model/real_pathname.rb +18 -0
  102. data/lib/metasploit/model/reference.rb +108 -0
  103. data/lib/metasploit/model/search.rb +63 -0
  104. data/lib/metasploit/model/search/association.rb +32 -0
  105. data/lib/metasploit/model/search/attribute.rb +51 -0
  106. data/lib/metasploit/model/search/operation.rb +31 -0
  107. data/lib/metasploit/model/search/operation/integer/value.rb +33 -0
  108. data/lib/metasploit/model/search/operation/string/value.rb +14 -0
  109. data/lib/metasploit/model/search/operator.rb +10 -0
  110. data/lib/metasploit/model/search/operator/help.rb +47 -0
  111. data/lib/metasploit/model/search/with.rb +40 -0
  112. data/lib/metasploit/model/spec.rb +140 -0
  113. data/lib/metasploit/model/spec/error.rb +9 -0
  114. data/lib/metasploit/model/spec/i18n_exception_handler.rb +19 -0
  115. data/lib/metasploit/model/spec/pathname_collision.rb +28 -0
  116. data/lib/metasploit/model/spec/template/write.rb +42 -0
  117. data/lib/metasploit/model/spec/temporary_pathname.rb +59 -0
  118. data/lib/metasploit/model/translation.rb +31 -0
  119. data/lib/metasploit/model/version.rb +31 -0
  120. data/lib/metasploit/model/visitation.rb +9 -0
  121. data/lib/metasploit/model/visitation/visit.rb +103 -0
  122. data/lib/tasks/yard.rake +30 -0
  123. data/metasploit-model.gemspec +39 -0
  124. data/script/rails +9 -0
  125. data/spec/app/models/metasploit/model/association/reflection_spec.rb +48 -0
  126. data/spec/app/models/metasploit/model/module/ancestor/spec/template_spec.rb +174 -0
  127. data/spec/app/models/metasploit/model/module/class/spec/template_spec.rb +222 -0
  128. data/spec/app/models/metasploit/model/module/instance/spec/template_spec.rb +201 -0
  129. data/spec/app/models/metasploit/model/search/group/base_spec.rb +5 -0
  130. data/spec/app/models/metasploit/model/search/group/intersection_spec.rb +5 -0
  131. data/spec/app/models/metasploit/model/search/group/union_spec.rb +5 -0
  132. data/spec/app/models/metasploit/model/search/operation/base_spec.rb +70 -0
  133. data/spec/app/models/metasploit/model/search/operation/boolean_spec.rb +56 -0
  134. data/spec/app/models/metasploit/model/search/operation/date_spec.rb +89 -0
  135. data/spec/app/models/metasploit/model/search/operation/integer_spec.rb +9 -0
  136. data/spec/app/models/metasploit/model/search/operation/null_spec.rb +64 -0
  137. data/spec/app/models/metasploit/model/search/operation/set/integer_spec.rb +7 -0
  138. data/spec/app/models/metasploit/model/search/operation/set/string_spec.rb +7 -0
  139. data/spec/app/models/metasploit/model/search/operation/set_spec.rb +126 -0
  140. data/spec/app/models/metasploit/model/search/operation/string_spec.rb +9 -0
  141. data/spec/app/models/metasploit/model/search/operation/union_spec.rb +124 -0
  142. data/spec/app/models/metasploit/model/search/operator/association_spec.rb +108 -0
  143. data/spec/app/models/metasploit/model/search/operator/attribute_spec.rb +104 -0
  144. data/spec/app/models/metasploit/model/search/operator/base_spec.rb +34 -0
  145. data/spec/app/models/metasploit/model/search/operator/delegation_spec.rb +108 -0
  146. data/spec/app/models/metasploit/model/search/operator/deprecated/app_spec.rb +62 -0
  147. data/spec/app/models/metasploit/model/search/operator/deprecated/author_spec.rb +161 -0
  148. data/spec/app/models/metasploit/model/search/operator/deprecated/authority_spec.rb +123 -0
  149. data/spec/app/models/metasploit/model/search/operator/deprecated/platform_spec.rb +112 -0
  150. data/spec/app/models/metasploit/model/search/operator/deprecated/ref_spec.rb +327 -0
  151. data/spec/app/models/metasploit/model/search/operator/deprecated/text_spec.rb +357 -0
  152. data/spec/app/models/metasploit/model/search/operator/null_spec.rb +41 -0
  153. data/spec/app/models/metasploit/model/search/operator/single_spec.rb +327 -0
  154. data/spec/app/models/metasploit/model/search/operator/union_spec.rb +92 -0
  155. data/spec/app/models/metasploit/model/search/query_spec.rb +742 -0
  156. data/spec/app/models/metasploit/model/spec/template_spec.rb +23 -0
  157. data/spec/app/models/metasploit/model/visitation/visitor_spec.rb +45 -0
  158. data/spec/app/validators/derivation_validator_spec.rb +92 -0
  159. data/spec/app/validators/dynamic_length_validator_spec.rb +293 -0
  160. data/spec/app/validators/ip_format_validator_spec.rb +124 -0
  161. data/spec/app/validators/nil_validator_spec.rb +69 -0
  162. data/spec/app/validators/parameters_validator_spec.rb +342 -0
  163. data/spec/app/validators/password_is_strong_validator_spec.rb +250 -0
  164. data/spec/dummy/Rakefile +7 -0
  165. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  166. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  167. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  168. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  169. data/spec/dummy/app/mailers/.gitkeep +0 -0
  170. data/spec/dummy/app/models/dummy/architecture.rb +92 -0
  171. data/spec/dummy/app/models/dummy/author.rb +15 -0
  172. data/spec/dummy/app/models/dummy/authority.rb +130 -0
  173. data/spec/dummy/app/models/dummy/email_address.rb +27 -0
  174. data/spec/dummy/app/models/dummy/module/action.rb +25 -0
  175. data/spec/dummy/app/models/dummy/module/ancestor.rb +67 -0
  176. data/spec/dummy/app/models/dummy/module/architecture.rb +19 -0
  177. data/spec/dummy/app/models/dummy/module/author.rb +28 -0
  178. data/spec/dummy/app/models/dummy/module/class.rb +69 -0
  179. data/spec/dummy/app/models/dummy/module/instance.rb +209 -0
  180. data/spec/dummy/app/models/dummy/module/path.rb +64 -0
  181. data/spec/dummy/app/models/dummy/module/platform.rb +19 -0
  182. data/spec/dummy/app/models/dummy/module/rank.rb +44 -0
  183. data/spec/dummy/app/models/dummy/module/reference.rb +19 -0
  184. data/spec/dummy/app/models/dummy/module/target.rb +62 -0
  185. data/spec/dummy/app/models/dummy/module/target/architecture.rb +19 -0
  186. data/spec/dummy/app/models/dummy/module/target/platform.rb +19 -0
  187. data/spec/dummy/app/models/dummy/platform.rb +58 -0
  188. data/spec/dummy/app/models/dummy/reference.rb +31 -0
  189. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  190. data/spec/dummy/config.ru +4 -0
  191. data/spec/dummy/config/application.rb +43 -0
  192. data/spec/dummy/config/boot.rb +10 -0
  193. data/spec/dummy/config/environment.rb +5 -0
  194. data/spec/dummy/config/environments/development.rb +27 -0
  195. data/spec/dummy/config/environments/production.rb +63 -0
  196. data/spec/dummy/config/environments/test.rb +29 -0
  197. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  198. data/spec/dummy/config/initializers/inflections.rb +15 -0
  199. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  200. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  201. data/spec/dummy/config/initializers/session_store.rb +3 -0
  202. data/spec/dummy/config/initializers/wrap_parameters.rb +9 -0
  203. data/spec/dummy/config/locales/en.yml +1 -0
  204. data/spec/dummy/config/routes.rb +2 -0
  205. data/spec/dummy/db/schema.rb +707 -0
  206. data/spec/dummy/lib/assets/.gitkeep +0 -0
  207. data/spec/dummy/log/.gitkeep +0 -0
  208. data/spec/dummy/public/404.html +26 -0
  209. data/spec/dummy/public/422.html +26 -0
  210. data/spec/dummy/public/500.html +25 -0
  211. data/spec/dummy/public/favicon.ico +0 -0
  212. data/spec/dummy/script/rails +6 -0
  213. data/spec/dummy/spec/factories/dummy/architectures.rb +13 -0
  214. data/spec/dummy/spec/factories/dummy/authorities.rb +32 -0
  215. data/spec/dummy/spec/factories/dummy/authors.rb +8 -0
  216. data/spec/dummy/spec/factories/dummy/email_addresses.rb +8 -0
  217. data/spec/dummy/spec/factories/dummy/module/actions.rb +13 -0
  218. data/spec/dummy/spec/factories/dummy/module/ancestors.rb +45 -0
  219. data/spec/dummy/spec/factories/dummy/module/architectures.rb +35 -0
  220. data/spec/dummy/spec/factories/dummy/module/authors.rb +10 -0
  221. data/spec/dummy/spec/factories/dummy/module/classes.rb +40 -0
  222. data/spec/dummy/spec/factories/dummy/module/instances.rb +86 -0
  223. data/spec/dummy/spec/factories/dummy/module/paths.rb +16 -0
  224. data/spec/dummy/spec/factories/dummy/module/platforms.rb +35 -0
  225. data/spec/dummy/spec/factories/dummy/module/ranks.rb +14 -0
  226. data/spec/dummy/spec/factories/dummy/module/references.rb +17 -0
  227. data/spec/dummy/spec/factories/dummy/module/target/architectures.rb +40 -0
  228. data/spec/dummy/spec/factories/dummy/module/target/platforms.rb +41 -0
  229. data/spec/dummy/spec/factories/dummy/module/targets.rb +46 -0
  230. data/spec/dummy/spec/factories/dummy/platforms.rb +3 -0
  231. data/spec/dummy/spec/factories/dummy/references.rb +26 -0
  232. data/spec/factories/metasploit/model/architectures.rb +6 -0
  233. data/spec/factories/metasploit/model/association/reflections.rb +9 -0
  234. data/spec/factories/metasploit/model/authorities.rb +28 -0
  235. data/spec/factories/metasploit/model/authors.rb +9 -0
  236. data/spec/factories/metasploit/model/bases.rb +10 -0
  237. data/spec/factories/metasploit/model/email_addresses.rb +14 -0
  238. data/spec/factories/metasploit/model/module/actions.rb +9 -0
  239. data/spec/factories/metasploit/model/module/ancestors.rb +180 -0
  240. data/spec/factories/metasploit/model/module/architectures.rb +15 -0
  241. data/spec/factories/metasploit/model/module/classes.rb +47 -0
  242. data/spec/factories/metasploit/model/module/handlers.rb +3 -0
  243. data/spec/factories/metasploit/model/module/instances.rb +83 -0
  244. data/spec/factories/metasploit/model/module/paths.rb +51 -0
  245. data/spec/factories/metasploit/model/module/platforms.rb +15 -0
  246. data/spec/factories/metasploit/model/module/ranks.rb +9 -0
  247. data/spec/factories/metasploit/model/module/references.rb +11 -0
  248. data/spec/factories/metasploit/model/module/stances.rb +3 -0
  249. data/spec/factories/metasploit/model/module/targets.rb +22 -0
  250. data/spec/factories/metasploit/model/module/types.rb +5 -0
  251. data/spec/factories/metasploit/model/references.rb +88 -0
  252. data/spec/factories/metasploit/model/search/operator/associations.rb +5 -0
  253. data/spec/factories/metasploit/model/search/operator/attributes.rb +7 -0
  254. data/spec/factories/metasploit/model/search/operator/bases.rb +5 -0
  255. data/spec/lib/metasploit/model/architecture_spec.rb +52 -0
  256. data/spec/lib/metasploit/model/association/error_spec.rb +48 -0
  257. data/spec/lib/metasploit/model/association_spec.rb +145 -0
  258. data/spec/lib/metasploit/model/author_spec.rb +6 -0
  259. data/spec/lib/metasploit/model/authority/bid_spec.rb +17 -0
  260. data/spec/lib/metasploit/model/authority/cve_spec.rb +17 -0
  261. data/spec/lib/metasploit/model/authority/msb_spec.rb +17 -0
  262. data/spec/lib/metasploit/model/authority/osvdb_spec.rb +17 -0
  263. data/spec/lib/metasploit/model/authority/pmasa_spec.rb +17 -0
  264. data/spec/lib/metasploit/model/authority/secunia_spec.rb +17 -0
  265. data/spec/lib/metasploit/model/authority/us_cert_vu_spec.rb +17 -0
  266. data/spec/lib/metasploit/model/authority/waraxe_spec.rb +51 -0
  267. data/spec/lib/metasploit/model/authority/zdi_spec.rb +21 -0
  268. data/spec/lib/metasploit/model/authority_spec.rb +10 -0
  269. data/spec/lib/metasploit/model/base_spec.rb +58 -0
  270. data/spec/lib/metasploit/model/configuration/autoload_spec.rb +165 -0
  271. data/spec/lib/metasploit/model/configuration/child_spec.rb +24 -0
  272. data/spec/lib/metasploit/model/configuration/error_spec.rb +5 -0
  273. data/spec/lib/metasploit/model/configuration/i18n_spec.rb +103 -0
  274. data/spec/lib/metasploit/model/configuration_spec.rb +106 -0
  275. data/spec/lib/metasploit/model/configured_spec.rb +41 -0
  276. data/spec/lib/metasploit/model/derivation/full_name_spec.rb +75 -0
  277. data/spec/lib/metasploit/model/derivation_spec.rb +217 -0
  278. data/spec/lib/metasploit/model/email_address_spec.rb +19 -0
  279. data/spec/lib/metasploit/model/engine_spec.rb +84 -0
  280. data/spec/lib/metasploit/model/file_spec.rb +43 -0
  281. data/spec/lib/metasploit/model/invalid_spec.rb +54 -0
  282. data/spec/lib/metasploit/model/module/action_spec.rb +6 -0
  283. data/spec/lib/metasploit/model/module/ancestor_spec.rb +6 -0
  284. data/spec/lib/metasploit/model/module/architecture_spec.rb +9 -0
  285. data/spec/lib/metasploit/model/module/author_spec.rb +6 -0
  286. data/spec/lib/metasploit/model/module/class_spec.rb +19 -0
  287. data/spec/lib/metasploit/model/module/handler_spec.rb +61 -0
  288. data/spec/lib/metasploit/model/module/instance_spec.rb +183 -0
  289. data/spec/lib/metasploit/model/module/path_spec.rb +6 -0
  290. data/spec/lib/metasploit/model/module/platform_spec.rb +9 -0
  291. data/spec/lib/metasploit/model/module/rank_spec.rb +29 -0
  292. data/spec/lib/metasploit/model/module/reference_spec.rb +9 -0
  293. data/spec/lib/metasploit/model/module/stance_spec.rb +30 -0
  294. data/spec/lib/metasploit/model/module/target/architecture_spec.rb +9 -0
  295. data/spec/lib/metasploit/model/module/target/platform_spec.rb +9 -0
  296. data/spec/lib/metasploit/model/module/target_spec.rb +9 -0
  297. data/spec/lib/metasploit/model/module/type_spec.rb +125 -0
  298. data/spec/lib/metasploit/model/nilify_blanks_spec.rb +156 -0
  299. data/spec/lib/metasploit/model/platform_spec.rb +100 -0
  300. data/spec/lib/metasploit/model/reference_spec.rb +21 -0
  301. data/spec/lib/metasploit/model/search/association_spec.rb +33 -0
  302. data/spec/lib/metasploit/model/search/attribute_spec.rb +99 -0
  303. data/spec/lib/metasploit/model/search/operation/integer/value_spec.rb +20 -0
  304. data/spec/lib/metasploit/model/search/operation/string/value_spec.rb +20 -0
  305. data/spec/lib/metasploit/model/search/operation_spec.rb +144 -0
  306. data/spec/lib/metasploit/model/search/operator/help_spec.rb +41 -0
  307. data/spec/lib/metasploit/model/search/with_spec.rb +81 -0
  308. data/spec/lib/metasploit/model/search_spec.rb +230 -0
  309. data/spec/lib/metasploit/model/spec/error_spec.rb +5 -0
  310. data/spec/lib/metasploit/model/spec/i18n_exception_handler_spec.rb +42 -0
  311. data/spec/lib/metasploit/model/spec/pathname_collision_spec.rb +55 -0
  312. data/spec/lib/metasploit/model/spec_spec.rb +114 -0
  313. data/spec/lib/metasploit/model/translation_spec.rb +82 -0
  314. data/spec/lib/metasploit/model/version_spec.rb +141 -0
  315. data/spec/lib/metasploit/model/visitation/visit_spec.rb +316 -0
  316. data/spec/lib/metasploit/model_spec.rb +68 -0
  317. data/spec/spec_helper.rb +48 -0
  318. data/spec/support/shared/contexts/metasploit/model/configuration.rb +11 -0
  319. data/spec/support/shared/contexts/metasploit/model/module/ancestor/contents/metasploit_module.rb +12 -0
  320. data/spec/support/shared/contexts/metasploit/model/module/ancestor/factory/contents.rb +10 -0
  321. data/spec/support/shared/contexts/metasploit/model/module/ancestor/factory/contents/metasploit_module.rb +15 -0
  322. data/spec/support/shared/contexts/metasploit/model/search/operator/union/children.rb +13 -0
  323. data/spec/support/shared/examples/derives.rb +115 -0
  324. data/spec/support/shared/examples/metasploit/model/architecture.rb +425 -0
  325. data/spec/support/shared/examples/metasploit/model/architecture/seed.rb +25 -0
  326. data/spec/support/shared/examples/metasploit/model/author.rb +27 -0
  327. data/spec/support/shared/examples/metasploit/model/authority.rb +124 -0
  328. data/spec/support/shared/examples/metasploit/model/authority/seed.rb +49 -0
  329. data/spec/support/shared/examples/metasploit/model/configuration/parent/child.rb +60 -0
  330. data/spec/support/shared/examples/metasploit/model/email_address.rb +220 -0
  331. data/spec/support/shared/examples/metasploit/model/module/action.rb +26 -0
  332. data/spec/support/shared/examples/metasploit/model/module/ancestor.rb +2004 -0
  333. data/spec/support/shared/examples/metasploit/model/module/ancestor/payload_factory.rb +63 -0
  334. data/spec/support/shared/examples/metasploit/model/module/architecture.rb +36 -0
  335. data/spec/support/shared/examples/metasploit/model/module/author.rb +29 -0
  336. data/spec/support/shared/examples/metasploit/model/module/class.rb +1514 -0
  337. data/spec/support/shared/examples/metasploit/model/module/handler.rb +21 -0
  338. data/spec/support/shared/examples/metasploit/model/module/instance.rb +1384 -0
  339. data/spec/support/shared/examples/metasploit/model/module/instance/class_methods.rb +537 -0
  340. data/spec/support/shared/examples/metasploit/model/module/instance/is_not_stanced_with_module_type.rb +22 -0
  341. data/spec/support/shared/examples/metasploit/model/module/instance/is_stanced_with_module_type.rb +38 -0
  342. data/spec/support/shared/examples/metasploit/model/module/instance/validates/dynamic_length_of.rb +131 -0
  343. data/spec/support/shared/examples/metasploit/model/module/path.rb +493 -0
  344. data/spec/support/shared/examples/metasploit/model/module/platform.rb +36 -0
  345. data/spec/support/shared/examples/metasploit/model/module/rank.rb +92 -0
  346. data/spec/support/shared/examples/metasploit/model/module/reference.rb +16 -0
  347. data/spec/support/shared/examples/metasploit/model/module/target.rb +29 -0
  348. data/spec/support/shared/examples/metasploit/model/module/target/architecture.rb +56 -0
  349. data/spec/support/shared/examples/metasploit/model/module/target/platform.rb +56 -0
  350. data/spec/support/shared/examples/metasploit/model/platform.rb +213 -0
  351. data/spec/support/shared/examples/metasploit/model/real_pathname.rb +29 -0
  352. data/spec/support/shared/examples/metasploit/model/reference.rb +410 -0
  353. data/spec/support/shared/examples/metasploit/model/search/operation/integer/value.rb +79 -0
  354. data/spec/support/shared/examples/metasploit/model/search/operation/string/value.rb +53 -0
  355. data/spec/support/shared/examples/metasploit/model/search/operator/help.rb +134 -0
  356. data/spec/support/shared/examples/metasploit/model/translation.rb +37 -0
  357. data/spec/support/shared/examples/search/query.rb +43 -0
  358. data/spec/support/shared/examples/search/query/metasploit/model/search/operator/deprecated/app.rb +44 -0
  359. data/spec/support/shared/examples/search/query/metasploit/model/search/operator/deprecated/authority.rb +60 -0
  360. data/spec/support/shared/examples/search_association.rb +13 -0
  361. data/spec/support/shared/examples/search_attribute.rb +27 -0
  362. data/spec/support/shared/examples/search_with.rb +36 -0
  363. data/spec/support/shared/matchers/allow_attribute.rb +17 -0
  364. data/spec/support/templates/metasploit/model/module/ancestors/_attributes.rb.erb +9 -0
  365. data/spec/support/templates/metasploit/model/module/ancestors/_methods.rb.erb +8 -0
  366. data/spec/support/templates/metasploit/model/module/ancestors/_validations.rb.erb +6 -0
  367. data/spec/support/templates/metasploit/model/module/ancestors/base.rb.erb +3 -0
  368. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_auxiliary.rb.erb +1 -0
  369. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_encoder.rb.erb +1 -0
  370. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_exploit.rb.erb +1 -0
  371. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_non_payload.rb.erb +5 -0
  372. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_nop.rb.erb +1 -0
  373. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_payload.rb.erb +4 -0
  374. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_post.rb.erb +1 -0
  375. data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_handled.rb.erb +20 -0
  376. data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_single.rb.erb +1 -0
  377. data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_stage.rb.erb +0 -0
  378. data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_stager.rb.erb +1 -0
  379. data/spec/support/templates/metasploit/model/module/classes/_methods.rb.erb +9 -0
  380. 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