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,14 @@
1
+ FactoryGirl.define do
2
+ # Dummy::Module::Rank does not have a factory because all valid records are seeded, so it only has a sequence to grab
3
+ # a seeded record
4
+
5
+ names = Metasploit::Model::Module::Rank::NUMBER_BY_NAME.keys
6
+
7
+ sequence :dummy_module_rank do |n|
8
+ name = names[n % names.length]
9
+
10
+ rank = Dummy::Module::Rank.with_name(name)
11
+
12
+ rank
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ FactoryGirl.define do
2
+ factory :dummy_module_reference,
3
+ class: Dummy::Module::Reference,
4
+ traits: [
5
+ :metasploit_model_base,
6
+ :metasploit_model_module_reference
7
+ ] do
8
+ ignore do
9
+ # have to use module_type from metasploit_model_module_reference trait to ensure module_instance will support
10
+ # module references.
11
+ module_class { FactoryGirl.create(:dummy_module_class, module_type: module_type) }
12
+ end
13
+
14
+ module_instance { FactoryGirl.create(:dummy_module_instance, module_class: module_class) }
15
+ association :reference, factory: :dummy_reference
16
+ end
17
+ end
@@ -0,0 +1,40 @@
1
+ FactoryGirl.define do
2
+ factory :dummy_module_target_architecture,
3
+ class: Dummy::Module::Target::Architecture,
4
+ traits: [
5
+ :metasploit_model_base
6
+ ] do
7
+ architecture { generate :dummy_architecture }
8
+ association :module_target,
9
+ factory: :dummy_module_target,
10
+ strategy: :build,
11
+ # disable module_target factory from building target_architectures since this factory is already
12
+ # building one
13
+ target_architectures_length: 0
14
+
15
+ after(:build) do |module_target_architecture|
16
+ module_target = module_target_architecture.module_target
17
+
18
+ if module_target
19
+ unless module_target.target_architectures.include? module_target_architecture
20
+ module_target.target_architectures << module_target_architecture
21
+ end
22
+
23
+ architecture = module_target_architecture.architecture
24
+ module_instance = module_target.module_instance
25
+
26
+ if architecture && module_instance
27
+ actual_architecture_set = module_instance.module_architectures.map(&:architecture)
28
+
29
+ unless actual_architecture_set.include? architecture
30
+ module_instance.module_architectures << FactoryGirl.build(
31
+ :dummy_module_architecture,
32
+ architecture: architecture,
33
+ module_instance: module_instance
34
+ )
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,41 @@
1
+ FactoryGirl.define do
2
+ factory :dummy_module_target_platform,
3
+ class: Dummy::Module::Target::Platform,
4
+ traits: [
5
+ :metasploit_model_base
6
+ ] do
7
+ association :module_target,
8
+ factory: :dummy_module_target,
9
+ strategy: :build,
10
+ # disable module_target factory from building target_platforms since this factory is already
11
+ # building one
12
+ target_platforms_length: 0
13
+
14
+ platform { generate :dummy_platform }
15
+
16
+ after(:build) do |module_target_platform|
17
+ module_target = module_target_platform.module_target
18
+
19
+ if module_target
20
+ unless module_target.target_platforms.include? module_target_platform
21
+ module_target.target_platforms << module_target_platform
22
+ end
23
+
24
+ module_instance = module_target.module_instance
25
+ platform = module_target_platform.platform
26
+
27
+ if module_instance && platform
28
+ actual_platform_set = module_instance.module_platforms.map(&:platform)
29
+
30
+ unless actual_platform_set.include? platform
31
+ module_instance.module_platforms << FactoryGirl.build(
32
+ :dummy_module_platform,
33
+ module_instance: module_instance,
34
+ platform: platform
35
+ )
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,46 @@
1
+ FactoryGirl.define do
2
+ factory :dummy_module_target,
3
+ :class => Dummy::Module::Target,
4
+ :traits => [
5
+ :metasploit_model_base,
6
+ :metasploit_model_module_target
7
+ ] do
8
+ ignore do
9
+ # have to use module_type from metasploit_model_module_target trait to ensure module_instance will support
10
+ # module targets.
11
+ module_class { FactoryGirl.create(:dummy_module_class, module_type: module_type) }
12
+ end
13
+
14
+ module_instance {
15
+ # module_instance MUST be built because it will fail validation without targets
16
+ FactoryGirl.build(
17
+ :dummy_module_instance,
18
+ module_class: module_class,
19
+ # disable module_instance factory's after(:build) from building module_targets since this factory is already
20
+ # building it and if they both build module_targets, then the validations will detect a mismatch.
21
+ targets_length: 0
22
+ )
23
+ }
24
+
25
+ after(:build) { |dummy_module_target, evaluator|
26
+ [:architecture, :platform].each do |infix|
27
+ attribute = "target_#{infix.to_s.pluralize}"
28
+ factory = "dummy_module_target_#{infix}"
29
+ length = evaluator.send("#{attribute}_length")
30
+
31
+ # factories add selves to associations on dummy_module_target
32
+ FactoryGirl.build_list(
33
+ factory,
34
+ length,
35
+ module_target: dummy_module_target
36
+ )
37
+ end
38
+
39
+ module_instance = dummy_module_target.module_instance
40
+
41
+ unless module_instance.targets.include? dummy_module_target
42
+ module_instance.targets << dummy_module_target
43
+ end
44
+ }
45
+ end
46
+ end
@@ -0,0 +1,3 @@
1
+ FactoryGirl.define do
2
+ sequence :dummy_platform, Dummy::Platform.all.cycle
3
+ end
@@ -0,0 +1,26 @@
1
+ FactoryGirl.define do
2
+ factory :dummy_reference,
3
+ :class => Dummy::Reference,
4
+ :traits => [
5
+ :metasploit_model_base,
6
+ :metasploit_model_reference
7
+ ] do
8
+ #
9
+ # Associations
10
+ #
11
+
12
+ association :authority, :factory => :dummy_authority
13
+
14
+ factory :obsolete_dummy_reference,
15
+ :traits => [
16
+ :obsolete_metasploit_model_reference
17
+ ] do
18
+ association :authority, :factory => :obsolete_dummy_authority
19
+ end
20
+
21
+ factory :url_dummy_reference,
22
+ :traits => [
23
+ :url_metasploit_model_reference
24
+ ]
25
+ end
26
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_architecture_abbreviation, Metasploit::Model::Architecture::ABBREVIATIONS.cycle
3
+ sequence :metasploit_model_architecture_bits, Metasploit::Model::Architecture::BITS.cycle
4
+ sequence :metasploit_model_architecture_endianness, Metasploit::Model::Architecture::ENDIANNESSES.cycle
5
+ sequence :metasploit_model_architecture_family, Metasploit::Model::Architecture::FAMILIES.cycle
6
+ end
@@ -0,0 +1,9 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_association_reflection_class_name do |n|
3
+ "Metasploit::Model::Association::Reflection::Class#{n}"
4
+ end
5
+
6
+ sequence :metasploit_model_association_reflection_name do |n|
7
+ "metasploit_model_association_reflection_name#{n}".to_sym
8
+ end
9
+ end
@@ -0,0 +1,28 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_authority_abbreviation do |n|
3
+ # can't use '-' as {Metasploit::Model::Search::Operator::Deprecated::Ref} treats '-' as separating authority
4
+ # abbreviation from reference designation.
5
+ "METASPLOIT_MODEL_AUTHORITY#{n}"
6
+ end
7
+
8
+ sequence :metasploit_model_authority_summary do |n|
9
+ "Metasploit::Model::Authority #{n}"
10
+ end
11
+
12
+ sequence :metasploit_model_authority_url do |n|
13
+ "http://example.com/metasploit/model/authority/#{n}"
14
+ end
15
+
16
+ trait :metasploit_model_authority do
17
+ abbreviation { generate :metasploit_model_authority_abbreviation }
18
+ end
19
+
20
+ trait :full_metasploit_model_authority do
21
+ summary { generate :metasploit_model_authority_summary }
22
+ url { generate :metasploit_model_authority_url }
23
+ end
24
+
25
+ trait :obsolete_metasploit_model_authority do
26
+ obsolete { true }
27
+ end
28
+ end
@@ -0,0 +1,9 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_author_name do |n|
3
+ "Metasploit::Model::Author #{n}"
4
+ end
5
+
6
+ trait :metasploit_model_author do
7
+ name { generate :metasploit_model_author_name }
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ FactoryGirl.define do
2
+ trait :metasploit_model_base do
3
+ to_create do |instance|
4
+ # validate so before validation derivation occurs to mimic create for ActiveRecord.
5
+ unless instance.valid?
6
+ raise Metasploit::Model::Invalid.new(instance)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,14 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_email_address_domain do |n|
3
+ "metasploit-model-email-address-domain#{n}.com"
4
+ end
5
+
6
+ sequence :metasploit_model_email_address_local do |n|
7
+ "metasploit.model.email.address.local+#{n}"
8
+ end
9
+
10
+ trait :metasploit_model_email_address do
11
+ domain { generate :metasploit_model_email_address_domain }
12
+ local { generate :metasploit_model_email_address_local }
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_module_action_name do |n|
3
+ "Metasploit::Model::Module::Action#name #{n}"
4
+ end
5
+
6
+ trait :metasploit_model_module_action do
7
+ name { generate :metasploit_model_module_action_name }
8
+ end
9
+ end
@@ -0,0 +1,180 @@
1
+ FactoryGirl.define do
2
+ sequence :metasploit_model_module_ancestor_handler_type do |n|
3
+ "metasploit_model_module_ancestor_handler_type#{n}"
4
+ end
5
+
6
+ minimum_version = 1
7
+ maximum_version = 4
8
+ range = maximum_version - minimum_version + 1
9
+
10
+ sequence :metasploit_model_module_ancestor_metasploit_module_relative_name do |n|
11
+ version = (n % range) + minimum_version
12
+
13
+ "Metasploit#{version}"
14
+ end
15
+
16
+ sequence :metasploit_model_module_ancestor_payload_type, Metasploit::Model::Module::Ancestor::PAYLOAD_TYPES.cycle
17
+
18
+ sequence :metasploit_model_module_ancestor_reference_name do |n|
19
+ [
20
+ 'metasploit',
21
+ 'model',
22
+ 'module',
23
+ 'ancestor',
24
+ 'reference',
25
+ "name#{n}"
26
+ ].join('/')
27
+ end
28
+
29
+ sequence :metasploit_model_module_ancestor_non_payload_reference_name do |n|
30
+ [
31
+ 'mdm',
32
+ 'module',
33
+ 'ancestor',
34
+ 'non',
35
+ 'payload',
36
+ 'reference',
37
+ "name#{n}"
38
+ ].join('/')
39
+ end
40
+
41
+ payload_type_directories = Metasploit::Model::Module::Ancestor::PAYLOAD_TYPES.map(&:pluralize)
42
+
43
+ sequence :metasploit_model_module_ancestor_payload_reference_name do |n|
44
+ payload_type_directory = payload_type_directories[n % payload_type_directories.length]
45
+
46
+ [
47
+ payload_type_directory,
48
+ 'metasploit',
49
+ 'model',
50
+ 'module',
51
+ 'ancestor',
52
+ 'payload',
53
+ 'reference',
54
+ "name#{n}"
55
+ ].join('/')
56
+ end
57
+
58
+ sequence :metasploit_model_module_ancestor_relative_payload_name do |n|
59
+ [
60
+ 'metasploit',
61
+ 'model',
62
+ 'module',
63
+ 'ancestor',
64
+ 'relative',
65
+ 'payload',
66
+ "name#{n}"
67
+ ].join('/')
68
+ end
69
+
70
+ trait :metasploit_model_module_ancestor do
71
+ #
72
+ # Attributes
73
+ #
74
+
75
+ module_type { generate :metasploit_model_module_type }
76
+
77
+ ignore do
78
+ # depends on module_type
79
+ payload_type {
80
+ if payload?
81
+ generate :metasploit_model_module_ancestor_payload_type
82
+ else
83
+ nil
84
+ end
85
+ }
86
+
87
+ #
88
+ # Callback helpers
89
+ #
90
+
91
+ before_write_template {
92
+ ->(module_ancestor, evaluator){}
93
+ }
94
+ write_template {
95
+ ->(module_ancestor, evaluator){
96
+ Metasploit::Model::Module::Ancestor::Spec::Template.write(module_ancestor: module_ancestor)
97
+ }
98
+ }
99
+ end
100
+
101
+ # depends on module_type
102
+ reference_name {
103
+ if payload?
104
+ payload_type_directory = payload_type.pluralize
105
+ relative_payload_name = generate :metasploit_model_module_ancestor_relative_payload_name
106
+
107
+ [
108
+ payload_type_directory,
109
+ relative_payload_name
110
+ ].join('/')
111
+ else
112
+ generate :metasploit_model_module_ancestor_non_payload_reference_name
113
+ end
114
+ }
115
+
116
+ # depends on derived_payload_type which depends on reference_name
117
+ handler_type {
118
+ # can't use #handled? because it will check payload_type on model, not ignored field in factory, so use
119
+ # .handled?
120
+ if @instance.class.handled?(:module_type => module_type, :payload_type => derived_payload_type)
121
+ generate :metasploit_model_module_ancestor_handler_type
122
+ else
123
+ nil
124
+ end
125
+ }
126
+
127
+ #
128
+ # Callbacks
129
+ #
130
+
131
+ after(:build) do |module_ancestor, evaluator|
132
+ instance_exec(module_ancestor, evaluator, &evaluator.before_write_template)
133
+ instance_exec(module_ancestor, evaluator, &evaluator.write_template)
134
+ end
135
+ end
136
+
137
+ trait :non_payload_metasploit_model_module_ancestor do
138
+ module_type { generate :metasploit_model_non_payload_module_type }
139
+
140
+ ignore do
141
+ payload_type nil
142
+ end
143
+ end
144
+
145
+ trait :payload_metasploit_model_module_ancestor do
146
+ module_type 'payload'
147
+
148
+ ignore do
149
+ payload_type { generate :metasploit_model_module_ancestor_payload_type }
150
+ end
151
+
152
+ reference_name {
153
+ payload_type_directory = payload_type.pluralize
154
+ relative_payload_name = generate :metasploit_model_module_ancestor_relative_payload_name
155
+
156
+ [
157
+ payload_type_directory,
158
+ relative_payload_name
159
+ ].join('/')
160
+ }
161
+ end
162
+
163
+ trait :single_payload_metasploit_model_module_ancestor do
164
+ ignore do
165
+ payload_type 'single'
166
+ end
167
+ end
168
+
169
+ trait :stage_payload_metasploit_model_module_ancestor do
170
+ ignore do
171
+ payload_type 'stage'
172
+ end
173
+ end
174
+
175
+ trait :stager_payload_metasploit_model_module_ancestor do
176
+ ignore do
177
+ payload_type 'stager'
178
+ end
179
+ end
180
+ end