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,15 @@
1
+ FactoryGirl.define do
2
+ module_architectures_module_types = Metasploit::Model::Module::Instance.module_types_that_allow(:module_architectures)
3
+ targets_module_types = Metasploit::Model::Module::Instance.module_types_that_allow(:targets)
4
+
5
+ # have to remove target supporting types so that target architectures won't interfere with module architectures
6
+ metasploit_model_module_architecture_module_types = module_architectures_module_types - targets_module_types
7
+
8
+ sequence :metasploit_model_module_architecture_module_type, metasploit_model_module_architecture_module_types.cycle
9
+
10
+ trait :metasploit_model_module_architecture do
11
+ ignore do
12
+ module_type { generate :metasploit_model_module_architecture_module_type }
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,47 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_module_class_payload_type, Metasploit::Model::Module::Class::PAYLOAD_TYPES.cycle
3
+
4
+ trait :metasploit_model_module_class do
5
+ #
6
+ # Attributes
7
+ #
8
+
9
+ # Don't set full_name: before_validation will derive it from {Metasploit::Model::Module::Class#module_type} and
10
+ # {Metasploit::Model::Module::Class::reference_name}.
11
+
12
+ ignore do
13
+ # derives from associations in instance, so don't set on instance
14
+ module_type { generate :metasploit_model_module_type }
15
+
16
+ # depends on module_type
17
+ # ignored because model attribute will derived from reference_name, this factory attribute is used to generate
18
+ # the correct reference_name.
19
+ payload_type {
20
+ # module_type is factory attribute, not model attribute
21
+ if module_type == Metasploit::Model::Module::Type::PAYLOAD
22
+ generate :metasploit_model_module_class_payload_type
23
+ else
24
+ nil
25
+ end
26
+ }
27
+
28
+ #
29
+ # Callback helpers
30
+ #
31
+
32
+ before_write_template {
33
+ ->(module_class, evaluator) {}
34
+ }
35
+ write_template {
36
+ ->(module_class, evaluator) {
37
+ Metasploit::Model::Module::Class::Spec::Template.write(module_class: module_class)
38
+ }
39
+ }
40
+ end
41
+
42
+ after(:build) do |module_class, evaluator|
43
+ instance_exec(evaluator, evaluator, &evaluator.before_write_template)
44
+ instance_exec(evaluator, evaluator, &evaluator.write_template)
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,3 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_module_handler_type, Metasploit::Model::Module::Handler::TYPES.cycle
3
+ end
@@ -0,0 +1,83 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_module_instance_description do |n|
3
+ "Module Description #{n}"
4
+ end
5
+
6
+ sequence :metasploit_model_module_instance_disclosed_on do |n|
7
+ Date.today - n
8
+ end
9
+
10
+ sequence :metasploit_model_module_instance_license do |n|
11
+ "Module License #{n}"
12
+ end
13
+
14
+ sequence :metasploit_model_module_instance_name do |n|
15
+ "Module Name #{n}"
16
+ end
17
+
18
+ sequence :metasploit_model_module_instance_privileged, Metasploit::Model::Module::Instance::PRIVILEGES.cycle
19
+
20
+ total_architectures = Metasploit::Model::Architecture::ABBREVIATIONS.length
21
+ total_platforms = Metasploit::Model::Platform.fully_qualified_name_set.length
22
+ # chosen so that there is at least 1 element even if 0 is allowed so that factories always test that the associated
23
+ # records are handled.
24
+ minimum_with_elements = 1
25
+ # arbitrarily chosen maximum when there are a bounded total of the associated records. Most chosen because 3 will
26
+ # test that there is no 1 or 2 special casing make it work.
27
+ arbitrary_maximum = 3
28
+ arbitrary_supported_length = ->{
29
+ Random.rand(minimum_with_elements .. arbitrary_maximum)
30
+ }
31
+
32
+ trait :metasploit_model_module_instance do
33
+ ignore do
34
+ actions_length(&arbitrary_supported_length)
35
+
36
+ # this length is only used if supports?(:module_architectures) is true. It can be set to 0 when
37
+ # supports?(:module_architectures) is true to make the after(:build) skip building the module architectures automatically.
38
+ module_architectures_length {
39
+ Random.rand(minimum_with_elements .. total_architectures)
40
+ }
41
+
42
+ module_authors_length(&arbitrary_supported_length)
43
+
44
+ # this length is only used if supports?(:module_platforms) is true. It can be set to 0 when
45
+ # supports?(:module_platforms) is true to make the after(:build) skip building the module platforms automatically.
46
+ module_platforms_length {
47
+ Random.rand(minimum_with_elements .. total_platforms)
48
+ }
49
+
50
+ module_references_length(&arbitrary_supported_length)
51
+ targets_length(&arbitrary_supported_length)
52
+
53
+ #
54
+ # Callback helpers
55
+ #
56
+
57
+ # Can't use the after(:build) system because in Mdm, the associations need to be set before writing the template
58
+ before_write_template {
59
+ ->(module_instance, _evaluator){}
60
+ }
61
+ write_template {
62
+ ->(module_instance, _evaluator) {
63
+ Metasploit::Model::Module::Instance::Spec::Template.write(module_instance: module_instance)
64
+ }
65
+ }
66
+ end
67
+
68
+ #
69
+ # Attributes
70
+ #
71
+
72
+ description { generate :metasploit_model_module_instance_description }
73
+ disclosed_on { generate :metasploit_model_module_instance_disclosed_on }
74
+ license { generate :metasploit_model_module_instance_license }
75
+ name { generate :metasploit_model_module_instance_name }
76
+ privileged { generate :metasploit_model_module_instance_privileged }
77
+
78
+ after(:build) do |module_instance, evaluator|
79
+ instance_exec(module_instance, evaluator, &evaluator.before_write_template)
80
+ instance_exec(module_instance, evaluator, &evaluator.write_template)
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,51 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_module_path_gem do |n|
3
+ "metasploit_model_module_path_gem#{n}"
4
+ end
5
+
6
+ sequence :metasploit_model_module_path_name do |n|
7
+ "metasploit_model_module_path_name#{n}"
8
+ end
9
+
10
+ sequence :metasploit_model_module_path_real_path do |n|
11
+ pathname = Metasploit::Model::Spec.temporary_pathname.join(
12
+ 'metasploit',
13
+ 'model',
14
+ 'module',
15
+ 'path',
16
+ 'real',
17
+ 'path',
18
+ n.to_s
19
+ )
20
+ Metasploit::Model::Spec::PathnameCollision.check!(pathname)
21
+ pathname.mkpath
22
+
23
+ pathname.to_path
24
+ end
25
+
26
+ sequence :metasploit_model_module_path_directory_real_path do |n|
27
+ pathname = Metasploit::Model::Spec.temporary_pathname.join(
28
+ 'metasploit',
29
+ 'model',
30
+ 'module',
31
+ 'path',
32
+ 'directory',
33
+ 'real',
34
+ 'path',
35
+ n.to_s
36
+ )
37
+ Metasploit::Model::Spec::PathnameCollision.check!(pathname)
38
+ pathname.mkpath
39
+
40
+ pathname.to_path
41
+ end
42
+
43
+ trait :unnamed_metasploit_model_module_path do
44
+ real_path { generate :metasploit_model_module_path_real_path }
45
+ end
46
+
47
+ trait :named_metasploit_model_module_path do
48
+ gem { generate :metasploit_model_module_path_gem }
49
+ name { generate :metasploit_model_module_path_name }
50
+ end
51
+ end
@@ -0,0 +1,15 @@
1
+ FactoryGirl.define do
2
+ module_platforms_module_types = Metasploit::Model::Module::Instance.module_types_that_allow(:module_platforms)
3
+ targets_module_types = Metasploit::Model::Module::Instance.module_types_that_allow(:targets)
4
+
5
+ # have to remove target supporting types so that target platforms won't interfere with module platforms
6
+ metasploit_model_module_platform_module_types = module_platforms_module_types - targets_module_types
7
+
8
+ sequence :metasploit_model_module_platform_module_type, metasploit_model_module_platform_module_types.cycle
9
+
10
+ trait :metasploit_model_module_platform do
11
+ ignore do
12
+ module_type { generate :metasploit_model_module_platform_module_type }
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ FactoryGirl.define do
2
+ number_by_name = Metasploit::Model::Module::Rank::NUMBER_BY_NAME
3
+
4
+ names = number_by_name.keys
5
+ sequence :metasploit_model_module_rank_name, names.cycle
6
+
7
+ numbers = number_by_name.values
8
+ sequence :metasploit_model_module_rank_number, numbers.cycle
9
+ end
@@ -0,0 +1,11 @@
1
+ FactoryGirl.define do
2
+ module_references_module_types = Metasploit::Model::Module::Instance.module_types_that_allow(:module_references)
3
+
4
+ sequence :metasploit_model_module_reference_module_type, module_references_module_types.cycle
5
+
6
+ trait :metasploit_model_module_reference do
7
+ ignore do
8
+ module_type { generate :metasploit_model_module_reference_module_type }
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_module_stance, Metasploit::Model::Module::Stance::ALL.cycle
3
+ end
@@ -0,0 +1,22 @@
1
+ FactoryGirl.define do
2
+ total_architectures = Metasploit::Model::Architecture::ABBREVIATIONS.length
3
+ total_platforms = Metasploit::Model::Platform.fully_qualified_name_set.length
4
+ targets_module_types = Metasploit::Model::Module::Instance.module_types_that_allow(:targets)
5
+
6
+ sequence :metasploit_model_module_target_module_type, targets_module_types.cycle
7
+
8
+ sequence :metasploit_model_module_target_name do |n|
9
+ "Metasploit::Model::Module::Target#name #{n}"
10
+ end
11
+
12
+ trait :metasploit_model_module_target do
13
+ ignore do
14
+ module_type { generate :metasploit_model_module_target_module_type }
15
+
16
+ target_architectures_length { Random.rand(1 .. total_architectures) }
17
+ target_platforms_length { Random.rand(1 .. total_platforms) }
18
+ end
19
+
20
+ name { generate :metasploit_model_module_target_name }
21
+ end
22
+ end
@@ -0,0 +1,5 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_module_type, Metasploit::Model::Module::Type::ALL.cycle
3
+
4
+ sequence :metasploit_model_non_payload_module_type, Metasploit::Model::Module::Type::NON_PAYLOAD.cycle
5
+ end
@@ -0,0 +1,88 @@
1
+ FactoryGirl.define do
2
+ #
3
+ #
4
+ # Metasploit::Model::Reference#designation sequences
5
+ #
6
+ #
7
+
8
+ sequence :metasploit_model_reference_designation do |n|
9
+ n.to_s
10
+ end
11
+
12
+ #
13
+ # Metasploit::Model::Authority-specific Metasploit::Model::Reference#designation sequences
14
+ #
15
+
16
+ sequence :metasploit_model_reference_bid_designation do |n|
17
+ n.to_s
18
+ end
19
+
20
+ sequence :metasploit_model_reference_cve_designation do |n|
21
+ number = n % 10000
22
+ year = n / 10000
23
+
24
+ "%04d-%04d" % [year, number]
25
+ end
26
+
27
+ sequence :metasploit_model_reference_msb_designation do |n|
28
+ number = n % 1000
29
+ year = n / 1000
30
+
31
+ "MS%02d-%03d" % [year, number]
32
+ end
33
+
34
+ sequence :metasploit_model_reference_osvdb_designation do |n|
35
+ n.to_s
36
+ end
37
+
38
+ sequence :metasploit_model_reference_pmasa_designation do |n|
39
+ number = n / 100
40
+ year = n / 100
41
+
42
+ "#{year}-#{number}"
43
+ end
44
+
45
+ sequence :metasploit_model_reference_secunia_designation do |n|
46
+ n.to_s
47
+ end
48
+
49
+ sequence :metasploit_model_reference_us_cert_vu_designation do |n|
50
+ n.to_s
51
+ end
52
+
53
+ sequence :metasploit_model_reference_waraxe_designation do |n|
54
+ # numbers don't rollover on the year like other authorities
55
+ year = n
56
+ number = n
57
+
58
+ "%d-SA#%d" % [year, number]
59
+ end
60
+
61
+ sequence :metasploit_model_reference_zdi_designation do |n|
62
+ year, number = n.divmod(1000)
63
+
64
+ "%02d-%03d" % [year, number]
65
+ end
66
+
67
+ sequence :metasploit_model_reference_url do |n|
68
+ "http://example.com/metasploit/model/reference/#{n}"
69
+ end
70
+
71
+ trait :metasploit_model_reference do
72
+ #
73
+ # Attributes
74
+ #
75
+
76
+ designation { generate :metasploit_model_reference_designation }
77
+ url { generate :metasploit_model_reference_url }
78
+ end
79
+
80
+ trait :obsolete_metasploit_model_reference do
81
+ url nil
82
+ end
83
+
84
+ trait :url_metasploit_model_reference do
85
+ authority nil
86
+ designation nil
87
+ end
88
+ end
@@ -0,0 +1,5 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_search_operator_association_association do |n|
3
+ "metasploit_model_search_operator_association_association#{n}".to_sym
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_search_operator_attribute_attribute do |n|
3
+ "metasploit_model_search_operator_attribute_attribute#{n}".to_sym
4
+ end
5
+
6
+ sequence :metasploit_model_search_operator_attribute_type, Metasploit::Model::Search::Operator::Attribute::TYPES.cycle
7
+ end
@@ -0,0 +1,5 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_search_operator_base_name do |n|
3
+ "metasploit_model_search_operator_base_name#{n}".to_sym
4
+ end
5
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Architecture do
4
+ it_should_behave_like 'Metasploit::Model::Architecture',
5
+ namespace_name: 'Dummy' do
6
+ let(:seed) do
7
+ Dummy::Architecture.with_abbreviation(abbreviation)
8
+ end
9
+ end
10
+
11
+ context 'sequences' do
12
+ context 'metasploit_model_architecture_abbreviation' do
13
+ subject(:metasploit_model_architecture_abbreviation) do
14
+ FactoryGirl.generate :metasploit_model_architecture_abbreviation
15
+ end
16
+
17
+ it 'should be an element of Metasploit::Model::Architecture::ABBREVIATIONS' do
18
+ Metasploit::Model::Architecture::ABBREVIATIONS.should include(metasploit_model_architecture_abbreviation)
19
+ end
20
+ end
21
+
22
+ context 'metasploit_model_architecture_bits' do
23
+ subject(:metasploit_model_architecture_bits) do
24
+ FactoryGirl.generate :metasploit_model_architecture_bits
25
+ end
26
+
27
+ it 'should be an element of Metasploit::Model::Architecture::BITS' do
28
+ Metasploit::Model::Architecture::BITS.should include(metasploit_model_architecture_bits)
29
+ end
30
+ end
31
+
32
+ context 'metasploit_model_architecture_endianness' do
33
+ subject(:metasploit_model_architecture_endianness) do
34
+ FactoryGirl.generate :metasploit_model_architecture_endianness
35
+ end
36
+
37
+ it 'should be an element of Metasploit::Model::Architecture::ENDIANNESSES' do
38
+ Metasploit::Model::Architecture::ENDIANNESSES.should include(metasploit_model_architecture_endianness)
39
+ end
40
+ end
41
+
42
+ context 'metasploit_model_architecture_family' do
43
+ subject(:metasploit_model_architecture_family) do
44
+ FactoryGirl.generate :metasploit_model_architecture_family
45
+ end
46
+
47
+ it 'should be an element of Metasploit::Model::Architecture::FAMILIES' do
48
+ Metasploit::Model::Architecture::FAMILIES.should include(metasploit_model_architecture_family)
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Association::Error do
4
+ context '#initialize' do
5
+ let(:attributes) do
6
+ {
7
+ :model => model,
8
+ :name => :associated_things
9
+ }
10
+ end
11
+
12
+ let(:model) do
13
+ Class.new
14
+ end
15
+
16
+ context 'without :model' do
17
+ before(:each) do
18
+ attributes.delete(:model)
19
+ end
20
+
21
+ it 'should raise KeyError' do
22
+ expect {
23
+ described_class.new(attributes)
24
+ }.to raise_error(KeyError)
25
+ end
26
+ end
27
+
28
+ context 'without :name' do
29
+ before(:each) do
30
+ attributes.delete(:name)
31
+ end
32
+
33
+ it 'should raise KeyError' do
34
+ expect {
35
+ described_class.new(attributes)
36
+ }.to raise_error(KeyError)
37
+ end
38
+ end
39
+
40
+ context 'with :model and :name' do
41
+ it 'should not raise error' do
42
+ expect {
43
+ described_class.new(attributes)
44
+ }.to_not raise_error
45
+ end
46
+ end
47
+ end
48
+ end