ronin-support 0.5.1 → 1.0.0.beta1

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 (517) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +11 -0
  3. data/.github/workflows/ruby.yml +27 -0
  4. data/.gitignore +7 -6
  5. data/.mailmap +1 -0
  6. data/.ruby-version +1 -0
  7. data/.yardopts +1 -2
  8. data/ChangeLog.md +533 -137
  9. data/Gemfile +20 -20
  10. data/README.md +137 -61
  11. data/Rakefile +29 -10
  12. data/data/text/homoglyphs/ascii.txt +8 -0
  13. data/data/text/homoglyphs/cyrillic.txt +33 -0
  14. data/data/text/homoglyphs/full_width.txt +81 -0
  15. data/data/text/homoglyphs/greek.txt +21 -0
  16. data/data/text/homoglyphs/latin_numbers.txt +14 -0
  17. data/data/text/homoglyphs/punctuation.txt +7 -0
  18. data/data/text/patterns/network/public_suffix.rb.erb +44 -0
  19. data/examples/ssl_proxy.rb +38 -0
  20. data/examples/tcp_proxy.rb +41 -0
  21. data/gemspec.yml +25 -15
  22. data/lib/ronin/support/archive/core_ext/file.rb +118 -0
  23. data/lib/ronin/{formatting/sql.rb → support/archive/core_ext.rb} +6 -7
  24. data/lib/ronin/support/archive/mixin.rb +213 -0
  25. data/lib/ronin/support/archive/tar/reader.rb +135 -0
  26. data/lib/ronin/support/archive/tar/writer.rb +197 -0
  27. data/lib/ronin/support/archive/tar.rb +155 -0
  28. data/lib/ronin/support/archive/zip/reader/entry.rb +134 -0
  29. data/lib/ronin/support/archive/zip/reader/statistics.rb +76 -0
  30. data/lib/ronin/support/archive/zip/reader.rb +273 -0
  31. data/lib/ronin/support/archive/zip/writer.rb +175 -0
  32. data/lib/ronin/support/archive/zip.rb +105 -0
  33. data/lib/ronin/support/archive.rb +211 -0
  34. data/lib/ronin/support/binary/array.rb +255 -0
  35. data/lib/ronin/support/binary/bit_flip.rb +147 -0
  36. data/lib/ronin/support/binary/buffer.rb +2027 -0
  37. data/lib/ronin/support/binary/byte_slice.rb +324 -0
  38. data/lib/ronin/support/binary/core_ext/array.rb +75 -0
  39. data/lib/ronin/support/binary/core_ext/float.rb +80 -0
  40. data/lib/ronin/support/binary/core_ext/integer.rb +305 -0
  41. data/lib/ronin/support/binary/core_ext/io.rb +38 -0
  42. data/lib/ronin/support/binary/core_ext/string.rb +115 -0
  43. data/lib/ronin/{formatting/extensions/text.rb → support/binary/core_ext.rb} +9 -9
  44. data/lib/ronin/support/binary/cstring.rb +259 -0
  45. data/lib/ronin/support/binary/ctypes/aggregate_type.rb +98 -0
  46. data/lib/ronin/support/binary/ctypes/arch/arm/big_endian.rb +77 -0
  47. data/lib/ronin/support/binary/ctypes/arch/arm.rb +75 -0
  48. data/lib/ronin/support/binary/ctypes/arch/arm64/big_endian.rb +77 -0
  49. data/lib/ronin/support/binary/ctypes/arch/arm64.rb +75 -0
  50. data/lib/ronin/support/binary/ctypes/arch/mips/little_endian.rb +77 -0
  51. data/lib/ronin/support/binary/ctypes/arch/mips.rb +75 -0
  52. data/lib/ronin/support/binary/ctypes/arch/mips64/little_endian.rb +77 -0
  53. data/lib/ronin/support/binary/ctypes/arch/mips64.rb +75 -0
  54. data/lib/ronin/support/binary/ctypes/arch/ppc.rb +75 -0
  55. data/lib/ronin/support/binary/ctypes/arch/ppc64.rb +75 -0
  56. data/lib/ronin/support/binary/ctypes/arch/x86.rb +75 -0
  57. data/lib/ronin/support/binary/ctypes/arch/x86_64.rb +75 -0
  58. data/lib/ronin/support/binary/ctypes/arch.rb +30 -0
  59. data/lib/ronin/support/binary/ctypes/array_object_type.rb +164 -0
  60. data/lib/ronin/support/binary/ctypes/array_type.rb +232 -0
  61. data/lib/ronin/support/binary/ctypes/big_endian.rb +195 -0
  62. data/lib/ronin/support/binary/ctypes/char_type.rb +59 -0
  63. data/lib/ronin/support/binary/ctypes/char_types.rb +39 -0
  64. data/lib/ronin/support/binary/ctypes/enum_type.rb +181 -0
  65. data/lib/ronin/support/binary/ctypes/float32_type.rb +50 -0
  66. data/lib/ronin/support/binary/ctypes/float64_type.rb +50 -0
  67. data/lib/ronin/support/binary/ctypes/float_type.rb +62 -0
  68. data/lib/ronin/support/binary/ctypes/int16_type.rb +50 -0
  69. data/lib/ronin/support/binary/ctypes/int32_type.rb +50 -0
  70. data/lib/ronin/support/binary/ctypes/int64_type.rb +50 -0
  71. data/lib/ronin/support/binary/ctypes/int8_type.rb +41 -0
  72. data/lib/ronin/support/binary/ctypes/int_type.rb +62 -0
  73. data/lib/ronin/support/binary/ctypes/little_endian.rb +195 -0
  74. data/lib/ronin/support/binary/ctypes/mixin.rb +135 -0
  75. data/lib/ronin/support/binary/ctypes/native.rb +205 -0
  76. data/lib/ronin/support/binary/ctypes/network.rb +29 -0
  77. data/lib/ronin/support/binary/ctypes/object_type.rb +55 -0
  78. data/lib/ronin/support/binary/ctypes/os/bsd.rb +65 -0
  79. data/lib/ronin/support/binary/ctypes/os/freebsd.rb +215 -0
  80. data/lib/ronin/support/binary/ctypes/os/linux.rb +193 -0
  81. data/lib/ronin/support/binary/ctypes/os/macos.rb +151 -0
  82. data/lib/ronin/support/binary/ctypes/os/netbsd.rb +147 -0
  83. data/lib/ronin/support/binary/ctypes/os/openbsd.rb +168 -0
  84. data/lib/ronin/support/binary/ctypes/os/unix.rb +78 -0
  85. data/lib/ronin/support/binary/ctypes/os/windows.rb +125 -0
  86. data/lib/ronin/support/binary/ctypes/os.rb +125 -0
  87. data/lib/ronin/support/binary/ctypes/scalar_type.rb +200 -0
  88. data/lib/ronin/support/binary/ctypes/string_type.rb +143 -0
  89. data/lib/ronin/support/binary/ctypes/struct_object_type.rb +173 -0
  90. data/lib/ronin/support/binary/ctypes/struct_type.rb +359 -0
  91. data/lib/ronin/support/binary/ctypes/type.rb +193 -0
  92. data/lib/ronin/support/binary/ctypes/type_resolver.rb +206 -0
  93. data/lib/ronin/support/binary/ctypes/uint16_type.rb +50 -0
  94. data/lib/ronin/support/binary/ctypes/uint32_type.rb +50 -0
  95. data/lib/ronin/support/binary/ctypes/uint64_type.rb +50 -0
  96. data/lib/ronin/support/binary/ctypes/uint8_type.rb +41 -0
  97. data/lib/ronin/support/binary/ctypes/uint_type.rb +59 -0
  98. data/lib/ronin/support/binary/ctypes/unbounded_array_type.rb +258 -0
  99. data/lib/ronin/support/binary/ctypes/union_object_type.rb +173 -0
  100. data/lib/ronin/support/binary/ctypes/union_type.rb +261 -0
  101. data/lib/ronin/support/binary/ctypes.rb +462 -0
  102. data/lib/ronin/support/binary/hexdump/core_ext/file.rb +118 -0
  103. data/lib/ronin/support/binary/hexdump/core_ext/string.rb +115 -0
  104. data/lib/ronin/support/binary/hexdump/core_ext.rb +20 -0
  105. data/lib/ronin/support/binary/hexdump/parser.rb +492 -0
  106. data/lib/ronin/support/binary/hexdump.rb +20 -0
  107. data/lib/ronin/support/binary/memory.rb +268 -0
  108. data/lib/ronin/support/binary/packet.rb +33 -0
  109. data/lib/ronin/support/binary/stack.rb +256 -0
  110. data/lib/ronin/support/binary/stream/methods.rb +1755 -0
  111. data/lib/ronin/support/binary/stream.rb +151 -0
  112. data/lib/ronin/support/binary/struct/member.rb +86 -0
  113. data/lib/ronin/support/binary/struct.rb +830 -0
  114. data/lib/ronin/support/binary/template.rb +284 -0
  115. data/lib/ronin/support/binary/union.rb +162 -0
  116. data/lib/ronin/support/binary.rb +26 -0
  117. data/lib/ronin/support/cli/ansi.rb +330 -0
  118. data/lib/ronin/support/cli/io_shell/core_ext/io.rb +67 -0
  119. data/lib/ronin/{fuzzing/extensions.rb → support/cli/io_shell/core_ext.rb} +6 -7
  120. data/lib/ronin/support/cli/io_shell.rb +161 -0
  121. data/lib/ronin/support/cli/printing.rb +216 -0
  122. data/lib/ronin/support/cli.rb +20 -0
  123. data/lib/ronin/support/compression/core_ext/file.rb +70 -0
  124. data/lib/ronin/support/compression/core_ext/string.rb +101 -0
  125. data/lib/ronin/{formatting/html.rb → support/compression/core_ext.rb} +6 -7
  126. data/lib/ronin/support/compression/gzip/reader.rb +70 -0
  127. data/lib/ronin/support/compression/gzip/writer.rb +74 -0
  128. data/lib/ronin/support/compression/gzip.rb +105 -0
  129. data/lib/ronin/support/compression/mixin.rb +180 -0
  130. data/lib/ronin/{network/extensions/esmtp/net.rb → support/compression/zlib.rb} +9 -10
  131. data/lib/ronin/support/compression.rb +174 -0
  132. data/lib/ronin/{extensions → support/core_ext}/enumerable.rb +5 -6
  133. data/lib/ronin/{extensions → support/core_ext}/file.rb +11 -34
  134. data/lib/ronin/support/core_ext/integer.rb +37 -0
  135. data/lib/ronin/support/core_ext/ipaddr.rb +65 -0
  136. data/lib/ronin/{extensions → support/core_ext}/kernel.rb +10 -9
  137. data/lib/ronin/{extensions → support/core_ext}/resolv.rb +5 -28
  138. data/lib/ronin/{extensions → support/core_ext}/string.rb +117 -57
  139. data/lib/ronin/support/core_ext.rb +33 -0
  140. data/lib/ronin/support/crypto/cert.rb +522 -0
  141. data/lib/ronin/support/crypto/cert_chain.rb +204 -0
  142. data/lib/ronin/support/crypto/cipher/aes.rb +71 -0
  143. data/lib/ronin/support/crypto/cipher/aes128.rb +54 -0
  144. data/lib/ronin/support/crypto/cipher/aes256.rb +54 -0
  145. data/lib/ronin/support/crypto/cipher.rb +194 -0
  146. data/lib/ronin/support/crypto/core_ext/file.rb +660 -0
  147. data/lib/ronin/support/crypto/core_ext/string.rb +548 -0
  148. data/lib/ronin/{binary.rb → support/crypto/core_ext.rb} +7 -8
  149. data/lib/ronin/support/crypto/hmac.rb +48 -0
  150. data/lib/ronin/support/crypto/key/dh.rb +122 -0
  151. data/lib/ronin/support/crypto/key/dsa.rb +103 -0
  152. data/lib/ronin/support/crypto/key/ec.rb +99 -0
  153. data/lib/ronin/support/crypto/key/methods.rb +163 -0
  154. data/lib/ronin/support/crypto/key/rsa.rb +169 -0
  155. data/lib/ronin/support/crypto/key.rb +105 -0
  156. data/lib/ronin/support/crypto/mixin.rb +620 -0
  157. data/lib/ronin/{network/extensions/http/net.rb → support/crypto/openssl.rb} +9 -10
  158. data/lib/ronin/support/crypto.rb +779 -0
  159. data/lib/ronin/support/encoding/base16/core_ext/string.rb +63 -0
  160. data/lib/ronin/support/encoding/base16/core_ext.rb +19 -0
  161. data/lib/ronin/support/encoding/base16.rb +82 -0
  162. data/lib/ronin/support/encoding/base32/core_ext/string.rb +63 -0
  163. data/lib/ronin/support/encoding/base32/core_ext.rb +19 -0
  164. data/lib/ronin/support/encoding/base32.rb +164 -0
  165. data/lib/ronin/support/encoding/base64/core_ext/string.rb +76 -0
  166. data/lib/ronin/support/encoding/base64/core_ext.rb +19 -0
  167. data/lib/ronin/support/encoding/base64.rb +78 -0
  168. data/lib/ronin/support/encoding/c/core_ext/integer.rb +82 -0
  169. data/lib/ronin/support/encoding/c/core_ext/string.rb +125 -0
  170. data/lib/ronin/support/encoding/c/core_ext.rb +20 -0
  171. data/lib/ronin/support/encoding/c.rb +277 -0
  172. data/lib/ronin/support/encoding/core_ext/string.rb +107 -0
  173. data/lib/ronin/support/encoding/core_ext.rb +33 -0
  174. data/lib/ronin/support/encoding/hex/core_ext/integer.rb +82 -0
  175. data/lib/ronin/support/encoding/hex/core_ext/string.rb +133 -0
  176. data/lib/ronin/support/encoding/hex/core_ext.rb +22 -0
  177. data/lib/ronin/support/encoding/hex.rb +248 -0
  178. data/lib/ronin/support/encoding/html/core_ext/integer.rb +106 -0
  179. data/lib/ronin/support/encoding/html/core_ext/string.rb +130 -0
  180. data/lib/ronin/support/encoding/html/core_ext.rb +20 -0
  181. data/lib/ronin/support/encoding/html.rb +233 -0
  182. data/lib/ronin/support/encoding/http/core_ext/integer.rb +95 -0
  183. data/lib/ronin/support/encoding/http/core_ext/string.rb +129 -0
  184. data/lib/ronin/support/encoding/http/core_ext.rb +20 -0
  185. data/lib/ronin/support/encoding/http.rb +241 -0
  186. data/lib/ronin/support/encoding/js/core_ext/integer.rb +67 -0
  187. data/lib/ronin/support/encoding/js/core_ext/string.rb +125 -0
  188. data/lib/ronin/support/encoding/js/core_ext.rb +20 -0
  189. data/lib/ronin/support/encoding/js.rb +279 -0
  190. data/lib/ronin/support/encoding/powershell/core_ext/integer.rb +87 -0
  191. data/lib/ronin/support/encoding/powershell/core_ext/string.rb +145 -0
  192. data/lib/ronin/support/encoding/powershell/core_ext.rb +20 -0
  193. data/lib/ronin/support/encoding/powershell.rb +297 -0
  194. data/lib/ronin/support/encoding/punycode/core_ext/string.rb +63 -0
  195. data/lib/ronin/support/encoding/punycode/core_ext.rb +19 -0
  196. data/lib/ronin/support/encoding/punycode.rb +76 -0
  197. data/lib/ronin/support/encoding/quoted_printable/core_ext/string.rb +75 -0
  198. data/lib/ronin/support/encoding/quoted_printable/core_ext.rb +19 -0
  199. data/lib/ronin/support/encoding/quoted_printable.rb +102 -0
  200. data/lib/ronin/support/encoding/ruby/core_ext/string.rb +129 -0
  201. data/lib/ronin/{formatting/binary.rb → support/encoding/ruby/core_ext.rb} +6 -7
  202. data/lib/ronin/support/encoding/ruby.rb +235 -0
  203. data/lib/ronin/support/encoding/shell/core_ext/integer.rb +89 -0
  204. data/lib/ronin/support/encoding/shell/core_ext/string.rb +134 -0
  205. data/lib/ronin/support/encoding/shell/core_ext.rb +20 -0
  206. data/lib/ronin/support/encoding/shell.rb +293 -0
  207. data/lib/ronin/{network/extensions → support/encoding}/smtp.rb +7 -7
  208. data/lib/ronin/support/encoding/sql/core_ext/string.rb +114 -0
  209. data/lib/ronin/{formatting/http.rb → support/encoding/sql/core_ext.rb} +6 -7
  210. data/lib/ronin/support/encoding/sql.rb +124 -0
  211. data/lib/ronin/support/encoding/uri/core_ext/integer.rb +149 -0
  212. data/lib/ronin/support/encoding/uri/core_ext/string.rb +195 -0
  213. data/lib/ronin/support/encoding/uri/core_ext.rb +20 -0
  214. data/lib/ronin/support/encoding/uri.rb +424 -0
  215. data/lib/ronin/support/encoding/uuencoding/core_ext/string.rb +73 -0
  216. data/lib/ronin/support/encoding/uuencoding/core_ext.rb +19 -0
  217. data/lib/ronin/support/encoding/uuencoding.rb +70 -0
  218. data/lib/ronin/support/encoding/xml/core_ext/integer.rb +100 -0
  219. data/lib/ronin/support/encoding/xml/core_ext/string.rb +124 -0
  220. data/lib/ronin/support/encoding/xml/core_ext.rb +20 -0
  221. data/lib/ronin/support/encoding/xml.rb +328 -0
  222. data/lib/ronin/support/encoding.rb +46 -0
  223. data/lib/ronin/support/home.rb +88 -0
  224. data/lib/ronin/support/mixin.rb +42 -0
  225. data/lib/ronin/support/network/asn/dns_record.rb +112 -0
  226. data/lib/ronin/support/network/asn/list.rb +269 -0
  227. data/lib/ronin/support/network/asn/record.rb +164 -0
  228. data/lib/ronin/support/network/asn/record_set.rb +226 -0
  229. data/lib/ronin/support/network/asn.rb +88 -0
  230. data/lib/ronin/{binary/hexdump.rb → support/network/core_ext.rb} +6 -7
  231. data/lib/ronin/support/network/dns/idn.rb +38 -0
  232. data/lib/ronin/support/network/dns/mixin.rb +941 -0
  233. data/lib/ronin/support/network/dns/resolver.rb +707 -0
  234. data/lib/ronin/support/network/dns.rb +1109 -0
  235. data/lib/ronin/support/network/domain.rb +70 -0
  236. data/lib/ronin/support/network/email_address.rb +574 -0
  237. data/lib/ronin/support/network/esmtp/mixin.rb +115 -0
  238. data/lib/ronin/support/network/exceptions.rb +43 -0
  239. data/lib/ronin/support/network/ftp/mixin.rb +106 -0
  240. data/lib/ronin/support/network/host.rb +1473 -0
  241. data/lib/ronin/support/network/http/cookie.rb +245 -0
  242. data/lib/ronin/support/network/http/core_ext/uri/http.rb +63 -0
  243. data/lib/ronin/support/network/http/core_ext.rb +19 -0
  244. data/lib/ronin/support/network/http/mixin.rb +890 -0
  245. data/lib/ronin/support/network/http/request.rb +215 -0
  246. data/lib/ronin/support/network/http/set_cookie.rb +210 -0
  247. data/lib/ronin/support/network/http/user_agents.rb +115 -0
  248. data/lib/ronin/support/network/http.rb +2582 -0
  249. data/lib/ronin/support/network/imap/mixin.rb +133 -0
  250. data/lib/ronin/support/network/ip/mixin.rb +114 -0
  251. data/lib/ronin/support/network/ip.rb +540 -0
  252. data/lib/ronin/support/network/ip_range/cidr.rb +252 -0
  253. data/lib/ronin/support/network/ip_range/glob.rb +309 -0
  254. data/lib/ronin/support/network/ip_range/range.rb +249 -0
  255. data/lib/ronin/support/network/ip_range.rb +284 -0
  256. data/lib/ronin/support/network/mixin.rb +58 -0
  257. data/lib/ronin/support/network/packet.rb +27 -0
  258. data/lib/ronin/support/network/pop3/mixin.rb +113 -0
  259. data/lib/ronin/support/network/proxy.rb +602 -0
  260. data/lib/ronin/support/network/public_suffix/list.rb +339 -0
  261. data/lib/ronin/support/network/public_suffix/suffix.rb +118 -0
  262. data/lib/ronin/support/network/public_suffix/suffix_set.rb +150 -0
  263. data/lib/ronin/support/network/public_suffix.rb +41 -0
  264. data/lib/ronin/support/network/smtp/email.rb +190 -0
  265. data/lib/ronin/support/network/smtp/mixin.rb +290 -0
  266. data/lib/ronin/{extensions/meta.rb → support/network/smtp.rb} +6 -7
  267. data/lib/ronin/support/network/ssl/local_cert.rb +114 -0
  268. data/lib/ronin/support/network/ssl/local_key.rb +84 -0
  269. data/lib/ronin/support/network/ssl/mixin.rb +740 -0
  270. data/lib/ronin/{network/extensions/imap/net.rb → support/network/ssl/openssl.rb} +9 -10
  271. data/lib/ronin/support/network/ssl/proxy.rb +296 -0
  272. data/lib/ronin/support/network/ssl.rb +173 -0
  273. data/lib/ronin/support/network/tcp/mixin.rb +400 -0
  274. data/lib/ronin/support/network/tcp/proxy.rb +435 -0
  275. data/lib/ronin/support/network/tcp.rb +443 -0
  276. data/lib/ronin/support/network/telnet/mixin.rb +150 -0
  277. data/lib/ronin/support/network/telnet.rb +90 -0
  278. data/lib/ronin/support/network/tld/list.rb +266 -0
  279. data/lib/ronin/support/network/tld.rb +41 -0
  280. data/lib/ronin/support/network/tls/mixin.rb +670 -0
  281. data/lib/ronin/support/network/tls/proxy.rb +135 -0
  282. data/lib/ronin/support/network/tls.rb +53 -0
  283. data/lib/ronin/support/network/udp/mixin.rb +389 -0
  284. data/lib/ronin/support/network/udp/proxy.rb +192 -0
  285. data/lib/ronin/support/network/udp.rb +435 -0
  286. data/lib/ronin/support/network/unix/mixin.rb +273 -0
  287. data/lib/ronin/support/network.rb +37 -0
  288. data/lib/ronin/support/path.rb +136 -0
  289. data/lib/ronin/{network/extensions/dns/net.rb → support/text/core_ext/regexp.rb} +8 -9
  290. data/lib/ronin/support/text/core_ext/string.rb +46 -0
  291. data/lib/ronin/support/text/core_ext.rb +23 -0
  292. data/lib/ronin/support/text/entropy/core_ext/string.rb +45 -0
  293. data/lib/ronin/support/text/entropy/core_ext.rb +19 -0
  294. data/lib/ronin/support/text/entropy.rb +66 -0
  295. data/lib/ronin/support/text/erb/mixin.rb +44 -0
  296. data/lib/ronin/support/text/erb.rb +19 -0
  297. data/lib/ronin/support/text/homoglyph/core_ext/string.rb +108 -0
  298. data/lib/ronin/{formatting/digest.rb → support/text/homoglyph/core_ext.rb} +6 -7
  299. data/lib/ronin/{network/http/exceptions/unknown_request.rb → support/text/homoglyph/exceptions.rb} +10 -9
  300. data/lib/ronin/support/text/homoglyph/table.rb +228 -0
  301. data/lib/ronin/support/text/homoglyph.rb +142 -0
  302. data/lib/ronin/support/text/mixin.rb +31 -0
  303. data/lib/ronin/support/text/patterns/credentials.rb +75 -0
  304. data/lib/ronin/support/text/patterns/crypto.rb +67 -0
  305. data/lib/ronin/support/text/patterns/file_system.rb +93 -0
  306. data/lib/ronin/support/text/patterns/language.rb +37 -0
  307. data/lib/ronin/support/text/patterns/network/public_suffix.rb +44 -0
  308. data/lib/ronin/support/text/patterns/network.rb +140 -0
  309. data/lib/ronin/support/text/patterns/numeric.rb +52 -0
  310. data/lib/ronin/support/text/patterns/pii.rb +105 -0
  311. data/lib/ronin/support/text/patterns/source_code.rb +148 -0
  312. data/lib/ronin/support/text/patterns.rb +25 -0
  313. data/lib/ronin/support/text/random/mixin.rb +437 -0
  314. data/lib/ronin/support/text/random.rb +419 -0
  315. data/lib/ronin/support/text/typo/core_ext/string.rb +123 -0
  316. data/lib/ronin/support/text/typo/core_ext.rb +19 -0
  317. data/lib/ronin/support/text/typo/exceptions.rb +28 -0
  318. data/lib/ronin/support/text/typo/generator.rb +161 -0
  319. data/lib/ronin/support/text/typo.rb +260 -0
  320. data/lib/ronin/support/text.rb +26 -0
  321. data/lib/ronin/support/version.rb +6 -7
  322. data/lib/ronin/support.rb +20 -15
  323. data/ronin-support.gemspec +3 -1
  324. metadata +462 -369
  325. data/.gemtest +0 -0
  326. data/lib/ronin/binary/hexdump/parser.rb +0 -403
  327. data/lib/ronin/binary/struct.rb +0 -567
  328. data/lib/ronin/binary/template.rb +0 -454
  329. data/lib/ronin/extensions/ip_addr.rb +0 -217
  330. data/lib/ronin/extensions/meta/object.rb +0 -24
  331. data/lib/ronin/extensions/regexp.rb +0 -157
  332. data/lib/ronin/extensions.rb +0 -29
  333. data/lib/ronin/formatting/extensions/binary/array.rb +0 -61
  334. data/lib/ronin/formatting/extensions/binary/base64.rb +0 -106
  335. data/lib/ronin/formatting/extensions/binary/file.rb +0 -77
  336. data/lib/ronin/formatting/extensions/binary/float.rb +0 -65
  337. data/lib/ronin/formatting/extensions/binary/integer.rb +0 -180
  338. data/lib/ronin/formatting/extensions/binary/string.rb +0 -345
  339. data/lib/ronin/formatting/extensions/binary.rb +0 -26
  340. data/lib/ronin/formatting/extensions/digest/file.rb +0 -129
  341. data/lib/ronin/formatting/extensions/digest/string.rb +0 -86
  342. data/lib/ronin/formatting/extensions/digest.rb +0 -21
  343. data/lib/ronin/formatting/extensions/html/integer.rb +0 -142
  344. data/lib/ronin/formatting/extensions/html/string.rb +0 -194
  345. data/lib/ronin/formatting/extensions/html.rb +0 -21
  346. data/lib/ronin/formatting/extensions/http/integer.rb +0 -69
  347. data/lib/ronin/formatting/extensions/http/string.rb +0 -110
  348. data/lib/ronin/formatting/extensions/http.rb +0 -21
  349. data/lib/ronin/formatting/extensions/sql/string.rb +0 -128
  350. data/lib/ronin/formatting/extensions/sql.rb +0 -20
  351. data/lib/ronin/formatting/extensions/text/array.rb +0 -137
  352. data/lib/ronin/formatting/extensions/text/string.rb +0 -297
  353. data/lib/ronin/formatting/extensions.rb +0 -24
  354. data/lib/ronin/formatting/text.rb +0 -20
  355. data/lib/ronin/formatting.rb +0 -25
  356. data/lib/ronin/fuzzing/extensions/string.rb +0 -209
  357. data/lib/ronin/fuzzing/fuzzer.rb +0 -110
  358. data/lib/ronin/fuzzing/fuzzing.rb +0 -360
  359. data/lib/ronin/fuzzing/mutator.rb +0 -161
  360. data/lib/ronin/fuzzing/repeater.rb +0 -81
  361. data/lib/ronin/fuzzing/template.rb +0 -133
  362. data/lib/ronin/fuzzing.rb +0 -21
  363. data/lib/ronin/mixin.rb +0 -89
  364. data/lib/ronin/network/dns.rb +0 -201
  365. data/lib/ronin/network/esmtp.rb +0 -113
  366. data/lib/ronin/network/extensions/dns.rb +0 -20
  367. data/lib/ronin/network/extensions/esmtp.rb +0 -20
  368. data/lib/ronin/network/extensions/http/uri/http.rb +0 -228
  369. data/lib/ronin/network/extensions/http.rb +0 -21
  370. data/lib/ronin/network/extensions/imap.rb +0 -20
  371. data/lib/ronin/network/extensions/pop3/net.rb +0 -24
  372. data/lib/ronin/network/extensions/pop3.rb +0 -20
  373. data/lib/ronin/network/extensions/smtp/net.rb +0 -24
  374. data/lib/ronin/network/extensions/ssl/net.rb +0 -24
  375. data/lib/ronin/network/extensions/ssl.rb +0 -20
  376. data/lib/ronin/network/extensions/tcp/net.rb +0 -24
  377. data/lib/ronin/network/extensions/tcp.rb +0 -20
  378. data/lib/ronin/network/extensions/telnet/net.rb +0 -24
  379. data/lib/ronin/network/extensions/telnet.rb +0 -20
  380. data/lib/ronin/network/extensions/udp/net.rb +0 -24
  381. data/lib/ronin/network/extensions/udp.rb +0 -20
  382. data/lib/ronin/network/extensions.rb +0 -29
  383. data/lib/ronin/network/ftp.rb +0 -149
  384. data/lib/ronin/network/http/exceptions.rb +0 -20
  385. data/lib/ronin/network/http/http.rb +0 -1127
  386. data/lib/ronin/network/http/proxy.rb +0 -330
  387. data/lib/ronin/network/http.rb +0 -22
  388. data/lib/ronin/network/imap.rb +0 -158
  389. data/lib/ronin/network/mixins/dns.rb +0 -55
  390. data/lib/ronin/network/mixins/esmtp.rb +0 -164
  391. data/lib/ronin/network/mixins/ftp.rb +0 -155
  392. data/lib/ronin/network/mixins/http.rb +0 -227
  393. data/lib/ronin/network/mixins/imap.rb +0 -156
  394. data/lib/ronin/network/mixins/mixin.rb +0 -58
  395. data/lib/ronin/network/mixins/pop3.rb +0 -149
  396. data/lib/ronin/network/mixins/smtp.rb +0 -159
  397. data/lib/ronin/network/mixins/ssl.rb +0 -148
  398. data/lib/ronin/network/mixins/tcp.rb +0 -368
  399. data/lib/ronin/network/mixins/telnet.rb +0 -208
  400. data/lib/ronin/network/mixins/udp.rb +0 -381
  401. data/lib/ronin/network/mixins/unix.rb +0 -279
  402. data/lib/ronin/network/mixins.rb +0 -29
  403. data/lib/ronin/network/network.rb +0 -45
  404. data/lib/ronin/network/pop3.rb +0 -124
  405. data/lib/ronin/network/proxy.rb +0 -578
  406. data/lib/ronin/network/smtp/email.rb +0 -174
  407. data/lib/ronin/network/smtp/smtp.rb +0 -230
  408. data/lib/ronin/network/smtp.rb +0 -22
  409. data/lib/ronin/network/ssl.rb +0 -186
  410. data/lib/ronin/network/tcp/proxy.rb +0 -417
  411. data/lib/ronin/network/tcp/tcp.rb +0 -443
  412. data/lib/ronin/network/tcp.rb +0 -21
  413. data/lib/ronin/network/telnet.rb +0 -264
  414. data/lib/ronin/network/udp/proxy.rb +0 -191
  415. data/lib/ronin/network/udp/udp.rb +0 -450
  416. data/lib/ronin/network/udp.rb +0 -21
  417. data/lib/ronin/network/unix.rb +0 -286
  418. data/lib/ronin/network.rb +0 -31
  419. data/lib/ronin/path.rb +0 -137
  420. data/lib/ronin/spec/ui/output.rb +0 -22
  421. data/lib/ronin/support/inflector.rb +0 -92
  422. data/lib/ronin/support/support.rb +0 -42
  423. data/lib/ronin/templates/erb.rb +0 -78
  424. data/lib/ronin/templates/template.rb +0 -169
  425. data/lib/ronin/templates.rb +0 -21
  426. data/lib/ronin/ui/output/helpers.rb +0 -296
  427. data/lib/ronin/ui/output/output.rb +0 -146
  428. data/lib/ronin/ui/output/terminal/color.rb +0 -124
  429. data/lib/ronin/ui/output/terminal/raw.rb +0 -103
  430. data/lib/ronin/ui/output/terminal.rb +0 -21
  431. data/lib/ronin/ui/output.rb +0 -21
  432. data/lib/ronin/ui/shell.rb +0 -286
  433. data/lib/ronin/wordlist.rb +0 -287
  434. data/spec/binary/hexdump/helpers/hexdumps/ascii.bin +0 -0
  435. data/spec/binary/hexdump/helpers/hexdumps/hexdump_decimal_shorts.txt +0 -17
  436. data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_bytes.txt +0 -17
  437. data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_shorts.txt +0 -17
  438. data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_bytes.txt +0 -17
  439. data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_shorts.txt +0 -17
  440. data/spec/binary/hexdump/helpers/hexdumps/hexdump_repeated.txt +0 -6
  441. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_bytes.txt +0 -17
  442. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_ints.txt +0 -17
  443. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_quads.txt +0 -17
  444. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_shorts.txt +0 -17
  445. data/spec/binary/hexdump/helpers/hexdumps/od_doubles.txt +0 -17
  446. data/spec/binary/hexdump/helpers/hexdumps/od_floats.txt +0 -17
  447. data/spec/binary/hexdump/helpers/hexdumps/od_hex_bytes.txt +0 -17
  448. data/spec/binary/hexdump/helpers/hexdumps/od_hex_ints.txt +0 -17
  449. data/spec/binary/hexdump/helpers/hexdumps/od_hex_quads.txt +0 -17
  450. data/spec/binary/hexdump/helpers/hexdumps/od_hex_shorts.txt +0 -17
  451. data/spec/binary/hexdump/helpers/hexdumps/od_named_chars.txt +0 -17
  452. data/spec/binary/hexdump/helpers/hexdumps/od_octal_bytes.txt +0 -17
  453. data/spec/binary/hexdump/helpers/hexdumps/od_octal_ints.txt +0 -17
  454. data/spec/binary/hexdump/helpers/hexdumps/od_octal_quads.txt +0 -17
  455. data/spec/binary/hexdump/helpers/hexdumps/od_octal_shorts.txt +0 -17
  456. data/spec/binary/hexdump/helpers/hexdumps/od_repeated.txt +0 -6
  457. data/spec/binary/hexdump/helpers/hexdumps/repeated.bin +0 -1
  458. data/spec/binary/hexdump/helpers/hexdumps.rb +0 -13
  459. data/spec/binary/hexdump/parser_spec.rb +0 -302
  460. data/spec/binary/struct_spec.rb +0 -496
  461. data/spec/binary/template_spec.rb +0 -414
  462. data/spec/extensions/enumerable_spec.rb +0 -24
  463. data/spec/extensions/file_spec.rb +0 -63
  464. data/spec/extensions/ip_addr_spec.rb +0 -203
  465. data/spec/extensions/kernel_spec.rb +0 -30
  466. data/spec/extensions/regexp_spec.rb +0 -482
  467. data/spec/extensions/resolv_spec.rb +0 -18
  468. data/spec/extensions/string_spec.rb +0 -179
  469. data/spec/formatting/binary/array_spec.rb +0 -26
  470. data/spec/formatting/binary/base64_spec.rb +0 -50
  471. data/spec/formatting/binary/float_spec.rb +0 -34
  472. data/spec/formatting/binary/integer_spec.rb +0 -166
  473. data/spec/formatting/binary/string_spec.rb +0 -197
  474. data/spec/formatting/digest/string_spec.rb +0 -82
  475. data/spec/formatting/html/integer_spec.rb +0 -66
  476. data/spec/formatting/html/string_spec.rb +0 -103
  477. data/spec/formatting/http/integer_spec.rb +0 -42
  478. data/spec/formatting/http/string_spec.rb +0 -76
  479. data/spec/formatting/sql/string_spec.rb +0 -75
  480. data/spec/formatting/text/array_spec.rb +0 -105
  481. data/spec/formatting/text/string_spec.rb +0 -162
  482. data/spec/fuzzing/extensions/string_spec.rb +0 -87
  483. data/spec/fuzzing/fuzzer_spec.rb +0 -109
  484. data/spec/fuzzing/fuzzing_spec.rb +0 -24
  485. data/spec/fuzzing/mutator_spec.rb +0 -112
  486. data/spec/fuzzing/repeater_spec.rb +0 -57
  487. data/spec/fuzzing/template_spec.rb +0 -54
  488. data/spec/mixin_spec.rb +0 -53
  489. data/spec/network/dns_spec.rb +0 -201
  490. data/spec/network/ftp_spec.rb +0 -81
  491. data/spec/network/http/http_spec.rb +0 -466
  492. data/spec/network/http/proxy_spec.rb +0 -148
  493. data/spec/network/network_spec.rb +0 -8
  494. data/spec/network/proxy_spec.rb +0 -121
  495. data/spec/network/shared/unix_server.rb +0 -31
  496. data/spec/network/smtp/email_spec.rb +0 -100
  497. data/spec/network/ssl_spec.rb +0 -70
  498. data/spec/network/tcp/proxy_spec.rb +0 -116
  499. data/spec/network/tcp/tcp_spec.rb +0 -273
  500. data/spec/network/telnet_spec.rb +0 -67
  501. data/spec/network/udp/udp_spec.rb +0 -271
  502. data/spec/network/unix_spec.rb +0 -183
  503. data/spec/path_spec.rb +0 -86
  504. data/spec/spec_helper.rb +0 -9
  505. data/spec/support/inflector_spec.rb +0 -22
  506. data/spec/support_spec.rb +0 -8
  507. data/spec/templates/classes/example_erb.rb +0 -11
  508. data/spec/templates/classes/example_template.rb +0 -35
  509. data/spec/templates/erb_spec.rb +0 -21
  510. data/spec/templates/helpers/data/includes/_relative.erb +0 -1
  511. data/spec/templates/helpers/data/templates/example.erb +0 -1
  512. data/spec/templates/helpers/data.rb +0 -9
  513. data/spec/templates/template_spec.rb +0 -54
  514. data/spec/ui/classes/test_shell.rb +0 -22
  515. data/spec/ui/output_spec.rb +0 -32
  516. data/spec/ui/shell_spec.rb +0 -83
  517. data/spec/wordlist_spec.rb +0 -151
@@ -1,164 +0,0 @@
1
- #
2
- # Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
3
- #
4
- # This file is part of Ronin Support.
5
- #
6
- # Ronin Support is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU Lesser General Public License as published
8
- # by the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Ronin Support is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU Lesser General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public License
17
- # along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
18
- #
19
-
20
- require 'ronin/network/mixins/mixin'
21
- require 'ronin/network/esmtp'
22
-
23
- module Ronin
24
- module Network
25
- module Mixins
26
- #
27
- # Adds ESMTP convenience methods and connection parameters to a class.
28
- #
29
- # Defines the following parameters:
30
- #
31
- # * `host` (`String`) - ESMTP host.
32
- # * `port` (`Integer`) - ESMTP port.
33
- # * `esmtp_login` (`String`) - ESMTP authentication method to use.
34
- # * `esmtp_user` (`String`) - ESMTP user to login as.
35
- # * `esmtp_password` (`String`) - ESMTP password to login with.
36
- #
37
- module ESMTP
38
- include Mixin, Network::ESMTP
39
-
40
- # ESMTP host
41
- parameter :host, :type => String,
42
- :description => 'ESMTP host'
43
-
44
- # ESMTP port
45
- parameter :port, :type => Integer,
46
- :description => 'ESMTP port'
47
-
48
- # ESMTP authentication method to use
49
- parameter :esmtp_login, :type => String,
50
- :description => 'ESMTP authentication method to use'
51
-
52
- # ESMTP user to login as
53
- parameter :esmtp_user, :type => String,
54
- :description => 'ESMTP user to login as'
55
-
56
- # ESMTP password to login with
57
- parameter :esmtp_password, :type => String,
58
- :description => 'ESMTP password to login with'
59
-
60
- protected
61
-
62
- #
63
- # Creates a connection to the ESMTP server. The `host`, `port`,
64
- # `esmtp_login`, `esmtp_user` and `esmtp_password` parameters
65
- # will also be used to connect to the ESMTP server.
66
- #
67
- # @param [Hash] options
68
- # Additional options.
69
- #
70
- # @option options [Integer] :port (Ronin::Network::SMTP.default_port)
71
- # The port to connect to.
72
- #
73
- # @option options [String] :helo
74
- # The HELO domain.
75
- #
76
- # @option options [Symbol] :auth
77
- # The type of authentication to use.
78
- # Can be either `:login`, `:plain`, or `:cram_md5`.
79
- #
80
- # @option options [String] :user
81
- # The user-name to authenticate with.
82
- #
83
- # @option options [String] :password
84
- # The password to authenticate with.
85
- #
86
- # @yield [session]
87
- # If a block is given, it will be passed an ESMTP enabled
88
- # session object.
89
- #
90
- # @yieldparam [Net::SMTP] session
91
- # The ESMTP session.
92
- #
93
- # @return [Net::SMTP]
94
- # The ESMTP enabled session.
95
- #
96
- # @see Network::ESMTP#esmtp_connect
97
- #
98
- # @api public
99
- #
100
- def esmtp_connect(options={},&block)
101
- print_info "Connecting to #{host_port} ..."
102
-
103
- return super(self.host,esmtp_merge_options(options),&block)
104
- end
105
-
106
- #
107
- # Starts a session with the ESMTP server. The `host`, `port`,
108
- # `esmtp_login`, `esmtp_user` and `esmtp_password` parameters
109
- # will also be used to connect to the ESMTP server.
110
- #
111
- # @param [Hash] options
112
- # Additional options.
113
- #
114
- # @yield [session]
115
- # If a block is given, it will be passed an ESMTP enabled
116
- # session object. After the block has returned, the session
117
- # will be closed.
118
- #
119
- # @yieldparam [Net::SMTP] session
120
- # The ESMTP session.
121
- #
122
- # @see Network::ESMTP#esmtp_session
123
- #
124
- # @api public
125
- #
126
- def esmtp_session(options={})
127
- super(esmtp_merge_options(options)) do |sess|
128
- yield sess if block_given?
129
-
130
- print_info "Logging out ..."
131
- end
132
-
133
- print_info "Disconnected from #{host_port}"
134
- return nil
135
- end
136
-
137
- private
138
-
139
- #
140
- # Merges the ESMTP parameters into the options for {Network::ESMTP}
141
- # methods.
142
- #
143
- # @param [Hash] options
144
- # The original options.
145
- #
146
- # @return [Hash]
147
- # The merged options.
148
- #
149
- # @since 0.4.0
150
- #
151
- # @api private
152
- #
153
- def esmtp_merge_options(options={})
154
- options[:port] ||= self.port
155
- options[:login] ||= self.esmtp_login
156
- options[:user] ||= self.esmtp_user
157
- options[:password] ||= self.esmtp_password
158
-
159
- return options
160
- end
161
- end
162
- end
163
- end
164
- end
@@ -1,155 +0,0 @@
1
- #
2
- # Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
3
- #
4
- # This file is part of Ronin Support.
5
- #
6
- # Ronin Support is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU Lesser General Public License as published
8
- # by the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Ronin Support is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU Lesser General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public License
17
- # along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
18
- #
19
-
20
- require 'ronin/network/mixins/mixin'
21
- require 'ronin/network/ftp'
22
-
23
- module Ronin
24
- module Network
25
- module Mixins
26
- #
27
- # Adds FTP convenience methods and connection parameters to a class.
28
- #
29
- # Defines the following parameters:
30
- #
31
- # * `host` (`String`) - FTP host.
32
- # * `port` (`Integer`) - FTP port.
33
- # * `ftp_user` (`String`) - FTP user to login as.
34
- # * `ftp_password` (`String`) - FTP password to login with.
35
- # * `ftp_account` (`String`) - FTP account information to send.
36
- #
37
- # @since 0.5.0
38
- #
39
- module FTP
40
- include Mixin, Network::FTP
41
-
42
- # FTP host
43
- parameter :host, :type => String,
44
- :description => 'FTP host'
45
-
46
- # FTP port
47
- parameter :port, :type => Integer,
48
- :description => 'FTP port'
49
-
50
- # FTP user to login as
51
- parameter :ftp_user, :type => String,
52
- :description => 'FTP user to login as'
53
-
54
- # FTP password to login with
55
- parameter :ftp_password, :type => String,
56
- :description => 'FTP password to login with'
57
-
58
- # FTP account information to send
59
- parameter :ftp_password, :type => String,
60
- :description => 'FTP account information'
61
-
62
- protected
63
-
64
- #
65
- # Creates a connection to the FTP server. The `host`, `port`,
66
- # `ftp_user`, `ftp_password` and `ftp_account` parameters
67
- # will also be used to connect to the server.
68
- #
69
- # @param [Hash] options
70
- # Additional options.
71
- #
72
- # @option options [Integer] :port (Network::FTP.default_port)
73
- # The port to connect to.
74
- #
75
- # @option options [String] :user
76
- # The username to authenticate with.
77
- #
78
- # @option options [String] :password
79
- # The password to authenticate with.
80
- #
81
- # @option options [String] :account
82
- # The account information to send via the FTP `ACCT` command.
83
- #
84
- # @yield [session]
85
- # If a block is given, it will be passed an FTP session object.
86
- #
87
- # @yieldparam [Net::FTP] session
88
- # The FTP session.
89
- #
90
- # @return [Net::FTP]
91
- # The FTP session.
92
- #
93
- # @see Network::FTP#ftp_connect
94
- #
95
- # @api public
96
- #
97
- def ftp_connect(options={},&block)
98
- print_info "Connecting to #{host_port} ..."
99
-
100
- return super(self.host,ftp_merge_options(options),&block)
101
- end
102
-
103
- #
104
- # Starts a session with the FTP server. The `host`, `port`,
105
- # `ftp_login`, `ftp_user` and `ftp_password` parameters
106
- # will also be used to connect to the server.
107
- #
108
- # @yield [session]
109
- # If a block is given, it will be passed an FTP session object.
110
- # After the block has returned, the session will be closed.
111
- #
112
- # @yieldparam [Net::FTP] session
113
- # The FTP session.
114
- #
115
- # @see Network::FTP#ftp_session
116
- #
117
- # @api public
118
- #
119
- def ftp_session(options={},&block)
120
- super(ftp_merge_options(options)) do |sess|
121
- yield sess if block_given?
122
-
123
- print_info "Logging out ..."
124
- end
125
-
126
- print_info "Disconnected to #{host_port}"
127
- return nil
128
- end
129
-
130
- private
131
-
132
- #
133
- # Merges the FTP parameters into the options for {Network::FTP}
134
- # methods.
135
- #
136
- # @param [Hash] options
137
- # The original options.
138
- #
139
- # @return [Hash]
140
- # The merged options.
141
- #
142
- # @api private
143
- #
144
- def ftp_merge_options(options={})
145
- options[:port] ||= self.port
146
- options[:user] ||= self.ftp_user
147
- options[:password] ||= self.ftp_password
148
- options[:account] ||= self.ftp_account
149
-
150
- return options
151
- end
152
- end
153
- end
154
- end
155
- end
@@ -1,227 +0,0 @@
1
- #
2
- # Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
3
- #
4
- # This file is part of Ronin Support.
5
- #
6
- # Ronin Support is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU Lesser General Public License as published
8
- # by the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Ronin Support is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU Lesser General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public License
17
- # along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
18
- #
19
-
20
- require 'ronin/network/mixins/mixin'
21
- require 'ronin/network/http'
22
-
23
- module Ronin
24
- module Network
25
- module Mixins
26
- #
27
- # Adds HTTP convenience methods and connection parameters to a class.
28
- #
29
- # Defines the following parameters:
30
- #
31
- # * `host` (`String`) - HTTP host.
32
- # * `port` (`Integer`) - HTTP port. Defaults to `Net::HTTP.default_port`.
33
- # * `http_vhost` (`String`) - HTTP Host header to send.
34
- # * `http_user` (`String`) - HTTP user to authenticate as.
35
- # * `http_password` (`String`) - HTTP password to authenticate with.
36
- # * `http_proxy` - HTTP proxy information.
37
- # * `http_user_agent` (`String`) - HTTP User-Agent header to send.
38
- #
39
- module HTTP
40
- include Mixin, Network::HTTP
41
-
42
- # HTTP host
43
- parameter :host, :type => String,
44
- :description => 'HTTP host'
45
-
46
- # HTTP port
47
- parameter :port, :default => Net::HTTP.default_port,
48
- :description => 'HTTP port'
49
-
50
- # HTTP `Host` header to send
51
- parameter :http_vhost, :type => String,
52
- :description => 'HTTP Host header to send'
53
-
54
- # HTTP user to authenticate as
55
- parameter :http_user, :type => String,
56
- :description => 'HTTP user to authenticate as'
57
-
58
- # HTTP password to authenticate with
59
- parameter :http_password, :type => String,
60
- :description => 'HTTP password to authenticate with'
61
-
62
- # HTTP proxy information
63
- parameter :http_proxy, :description => 'HTTP proxy information'
64
-
65
- # HTTP `User-Agent` header to send
66
- parameter :http_user_agent, :type => String,
67
- :description => 'HTTP User-Agent header to send'
68
-
69
- protected
70
-
71
- #
72
- # Resets the HTTP proxy settings.
73
- #
74
- # @api public
75
- #
76
- def disable_http_proxy
77
- @http_proxy = nil
78
- end
79
-
80
- #
81
- # Starts a HTTP connection with the server.
82
- #
83
- # @param [Hash] options
84
- # Additional options
85
- #
86
- # @option options [String, URI::HTTP] :url
87
- # The full URL to request.
88
- #
89
- # @option options [String] :host
90
- # The host the HTTP server is running on.
91
- #
92
- # @option options [Integer] :port (Net::HTTP.default_port)
93
- # The port the HTTP server is listening on.
94
- #
95
- # @option options [String, Hash] :proxy (HTTP.proxy)
96
- # A Hash of proxy settings to use when connecting to the HTTP server.
97
- #
98
- # @option options [String] :user
99
- # The user to authenticate with when connecting to the HTTP server.
100
- #
101
- # @option options [String] :password
102
- # The password to authenticate with when connecting to the HTTP
103
- # server.
104
- #
105
- # @option options [Boolean, Hash] :ssl
106
- # Enables SSL for the HTTP connection.
107
- #
108
- # @option :ssl [Symbol] :verify
109
- # Specifies the SSL certificate verification mode.
110
- #
111
- # @yield [http]
112
- # If a block is given, it will be passed the newly created HTTP
113
- # session object.
114
- #
115
- # @yieldparam [Net::HTTP] http
116
- # The newly created HTTP session.
117
- #
118
- # @return [Net::HTTP]
119
- # The HTTP session object.
120
- #
121
- # @see Network::HTTP#http_connect
122
- #
123
- # @api public
124
- #
125
- # @since 0.5.0
126
- #
127
- def http_connect(options={},&block)
128
- super(http_merge_options(options),&block)
129
- end
130
-
131
- #
132
- # Connects to the HTTP server and sends an HTTP Request.
133
- #
134
- # @param [Hash] options
135
- # Additional options.
136
- #
137
- # @option options [Hash{String,Symbol => Object}] :headers
138
- # The Hash of the HTTP headers to send with the request.
139
- # May contain either Strings or Symbols, lower-case or
140
- # camel-case keys.
141
- #
142
- # @yield [request, (options)]
143
- # If a block is given, it will be passed the HTTP request object.
144
- # If the block has an arity of 2, it will also be passed the
145
- # expanded version of the given options.
146
- #
147
- # @yieldparam [Net::HTTP::Request] request
148
- # The HTTP request object to use in the request.
149
- #
150
- # @yieldparam [Hash] options
151
- # The expanded version of the given options.
152
- #
153
- # @return [Net::HTTP::Response]
154
- # The response of the HTTP request.
155
- #
156
- # @see Network::HTTP#http_request
157
- #
158
- # @api public
159
- #
160
- def http_request(options={},&block)
161
- response = super(options) do |request,expanded_options|
162
- if block
163
- if block.arity == 2
164
- block.call(request,expanded_options)
165
- else
166
- block.call(request)
167
- end
168
- end
169
-
170
- host = options.fetch(:host,self.host)
171
- port = options.fetch(:port,self.port)
172
-
173
- print_info "HTTP #{request.method} #{host}:#{port} #{request.path}"
174
-
175
- request.each_capitalized do |name,value|
176
- print_debug " #{name}: #{value}"
177
- end
178
- end
179
-
180
- print_info "HTTP #{response.code} #{response.message}"
181
-
182
- response.each_capitalized do |name,value|
183
- print_debug " #{name}: #{value}"
184
- end
185
-
186
- return response
187
- end
188
-
189
- private
190
-
191
- #
192
- # Merges the HTTP parameters into the HTTP options.
193
- #
194
- # @param [Hash] options
195
- # The HTTP options to merge into.
196
- #
197
- # @return [Hash]
198
- # The merged HTTP options.
199
- #
200
- # @since 1.0.0
201
- #
202
- # @api private
203
- #
204
- def http_merge_options(options={})
205
- options = options.dup
206
-
207
- options[:proxy] ||= self.http_proxy if self.http_proxy
208
- options[:host] ||= self.host if self.host
209
- options[:port] ||= self.port if self.port
210
-
211
- if (self.http_vhost || self.http_user_agent)
212
- headers = (options[:headers] ||= {})
213
-
214
- headers[:host] ||= self.http_vhost if self.http_vhost
215
- headers[:user_agent] ||= self.http_user_agent if self.http_user_agent
216
- end
217
-
218
- options[:user] ||= self.http_user if self.http_user
219
- options[:password] ||= self.http_password if self.http_password
220
-
221
- return options
222
- end
223
-
224
- end
225
- end
226
- end
227
- end
@@ -1,156 +0,0 @@
1
- #
2
- # Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
3
- #
4
- # This file is part of Ronin Support.
5
- #
6
- # Ronin Support is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU Lesser General Public License as published
8
- # by the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Ronin Support is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU Lesser General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public License
17
- # along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
18
- #
19
-
20
- require 'ronin/network/mixins/mixin'
21
- require 'ronin/network/imap'
22
-
23
- module Ronin
24
- module Network
25
- module Mixins
26
- #
27
- # Adds IMAP convenience methods and connection parameters to a class.
28
- #
29
- # Defines the following parameters:
30
- #
31
- # * `host` (`String`) - IMAP host.
32
- # * `port` (`Integer`) - IMAP port.
33
- # * `imap_auth` (`String`) - IMAP authentication method.
34
- # * `imap_user` (`String`) - IMAP user to login as.
35
- # * `imap_password` (`String`) - IMAP password to login with.
36
- #
37
- module IMAP
38
- include Mixin, Network::IMAP
39
-
40
- # IMAP host
41
- parameter :host, :type => String,
42
- :description => 'IMAP host'
43
-
44
- # IMAP port
45
- parameter :port, :type => Integer,
46
- :description => 'IMAP port'
47
-
48
- # IMAP auth
49
- parameter :imap_auth, :type => String,
50
- :description => 'IMAP authentication method'
51
-
52
- # IMAP user to login as
53
- parameter :imap_user, :type => String,
54
- :description => 'IMAP user to login as'
55
-
56
- # IMAP password to login with
57
- parameter :imap_password, :type => String,
58
- :description => 'IMAP password to login with'
59
-
60
- protected
61
-
62
- #
63
- # Creates a connection to the IMAP server. The `host`, `port`,
64
- # `imap_auth`, `imap_user` and `imap_password` parameters
65
- # will also be used to make the connection.
66
- #
67
- # @param [Hash] options
68
- # Additional options.
69
- #
70
- # @option options [Integer] :port (IMAP.default_port)
71
- # The port the IMAP server is running on.
72
- #
73
- # @option options [String] :certs
74
- # The path to the file containing CA certs of the server.
75
- #
76
- # @option options [Symbol] :auth
77
- # The type of authentication to perform when connecting to the
78
- # server. May be either `:login` or `:cram_md5`.
79
- #
80
- # @option options [String] :user
81
- # The user to authenticate as when connecting to the server.
82
- #
83
- # @option options [String] :password
84
- # The password to authenticate with when connecting to the
85
- # server.
86
- #
87
- # @option options [Boolean]
88
- # Indicates wether or not to use SSL when connecting to the
89
- # server.
90
- #
91
- # @see Network::IMAP#imap_connect
92
- #
93
- # @api public
94
- #
95
- def imap_connect(options={},&block)
96
- print_info "Connecting to #{host_port} ..."
97
-
98
- return super(self.host,imap_merge_options(options),&block)
99
- end
100
-
101
- #
102
- # Starts a session with the IMAP server. The `host`, `port`,
103
- # `imap_auth`, `imap_user` and `imap_password` parameters
104
- # will also be used to make the connection.
105
- #
106
- # @yield [session]
107
- # If a block is given, it will be passed the newly created
108
- # IMAP session. After the block has returned, the session will
109
- # be closed.
110
- #
111
- # @yieldparam [Net::IMAP] session
112
- # The newly created IMAP session object.
113
- #
114
- # @see Network::IMAP#imap_session
115
- #
116
- # @api public
117
- #
118
- def imap_session(options={})
119
- super(imap_merge_options(options)) do |sess|
120
- yield sess if block_given?
121
-
122
- print_info "Logging out ..."
123
- end
124
-
125
- print_info "Disconnected from #{host_port}"
126
- return il
127
- end
128
-
129
- private
130
-
131
- #
132
- # Merges the IMAP parameters into the options for {Network::IMAP}
133
- # methods.
134
- #
135
- # @param [Hash] options
136
- # The original options.
137
- #
138
- # @return [Hash]
139
- # The merged options.
140
- #
141
- # @since 0.4.0
142
- #
143
- # @api private
144
- #
145
- def imap_merge_options(options={})
146
- options[:port] ||= self.port
147
- options[:auth] ||= self.imap_auth
148
- options[:user] ||= self.imap_user
149
- options[:password] ||= self.imap_password
150
-
151
- return options
152
- end
153
- end
154
- end
155
- end
156
- end