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,466 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/network/http'
3
-
4
- describe Network::HTTP do
5
- describe "proxy" do
6
- it "should be disabled by default" do
7
- subject.proxy.should_not be_enabled
8
- end
9
- end
10
-
11
- describe "expand_url" do
12
- let(:url) { URI('http://example.com:443/path?q=1') }
13
-
14
- it "should accept URI objects" do
15
- options = subject.expand_url(url)
16
-
17
- options[:host].should == url.host
18
- end
19
-
20
- it "should accept Hashes" do
21
- hash = {
22
- :host => url.host,
23
- :port => url.port,
24
- }
25
- options = subject.expand_url(hash)
26
-
27
- options[:host].should == url.host
28
- options[:port].should == url.port
29
- end
30
-
31
- it "should accept Strings" do
32
- options = subject.expand_url(url.to_s)
33
-
34
- options[:host].should == url.host
35
- options[:port].should == url.port
36
- end
37
-
38
- it "should default :path to '/'" do
39
- options = subject.expand_url(URI('http://example.com'))
40
-
41
- options[:path].should == '/'
42
- end
43
-
44
- it "should append the query-string to the :path options" do
45
- options = subject.expand_url(url)
46
-
47
- options[:path].should == "#{url.path}?#{url.query}"
48
- end
49
-
50
- it "should set :ssl if the URI scheme is 'https'" do
51
- options = subject.expand_url(URI('https://example.com'))
52
-
53
- options[:ssl].should == {}
54
- end
55
- end
56
-
57
- describe "expand_options" do
58
- it "should expand the :ssl option into a Hash" do
59
- options = {:ssl => true}
60
- expanded_options = subject.expand_options(options)
61
-
62
- expanded_options[:ssl].should == {}
63
- end
64
-
65
- it "should added a default port and path" do
66
- options = {:host => 'example.com'}
67
- expanded_options = subject.expand_options(options)
68
-
69
- expanded_options[:port].should == 80
70
- expanded_options[:path].should == '/'
71
- end
72
-
73
- it "should add the default proxy settings" do
74
- options = {:host => 'example.com'}
75
- expanded_options = subject.expand_options(options)
76
-
77
- expanded_options[:proxy].should == subject.proxy
78
- end
79
-
80
- it "should disable the proxy settings if :proxy is nil" do
81
- options = {:host => 'example.com', :proxy => nil}
82
- expanded_options = subject.expand_options(options)
83
-
84
- expanded_options[:proxy][:host].should be_nil
85
- expanded_options[:proxy][:port].should be_nil
86
- end
87
-
88
- it "should not modify :proxy if it is a HTTP::Proxy object" do
89
- proxy = Network::HTTP::Proxy.new(:host => 'proxy.com', :port => 8181)
90
- options = {:host => 'example.com', :proxy => proxy}
91
- expanded_options = subject.expand_options(options)
92
-
93
- expanded_options[:proxy].should == proxy
94
- end
95
-
96
- it "should parse the :proxy option" do
97
- options = {:host => 'example.com', :proxy => 'http://proxy.com:8181'}
98
- expanded_options = subject.expand_options(options)
99
-
100
- expanded_options[:proxy][:host].should == 'proxy.com'
101
- expanded_options[:proxy][:port].should == 8181
102
- end
103
-
104
- it "should expand the :url option" do
105
- options = {:url => 'http://joe:secret@example.com:8080/bla?var'}
106
- expanded_options = subject.expand_options(options)
107
-
108
- expanded_options[:url].should be_nil
109
- expanded_options[:host].should == 'example.com'
110
- expanded_options[:port].should == 8080
111
- expanded_options[:user].should == 'joe'
112
- expanded_options[:password].should == 'secret'
113
- expanded_options[:path].should == '/bla?var'
114
- end
115
-
116
- end
117
-
118
- describe "headers" do
119
- it "should convert Symbol options to HTTP Headers" do
120
- options = {:user_agent => 'bla', :location => 'test'}
121
-
122
- subject.headers(options).should == {
123
- 'User-Agent' => 'bla',
124
- 'Location' => 'test'
125
- }
126
- end
127
-
128
- it "should convert String options to HTTP Headers" do
129
- options = {'user_agent' => 'bla', 'x-powered-by' => 'PHP'}
130
-
131
- subject.headers(options).should == {
132
- 'User-Agent' => 'bla',
133
- 'X-Powered-By' => 'PHP'
134
- }
135
- end
136
-
137
- it "should convert all values to Strings" do
138
- mtime = Time.now.to_i
139
- options = {:modified_by => mtime, :x_accept => :gzip}
140
-
141
- subject.headers(options).should == {
142
- 'Modified-By' => mtime.to_s,
143
- 'X-Accept' => 'gzip'
144
- }
145
- end
146
- end
147
-
148
- describe "request" do
149
- it "should handle Symbol names" do
150
- subject.request(
151
- :method => :get, :path => '/'
152
- ).class.should == Net::HTTP::Get
153
- end
154
-
155
- it "should handle String names" do
156
- subject.request(
157
- :method => 'GET', :path => '/'
158
- ).class.should == Net::HTTP::Get
159
- end
160
-
161
- it "should raise an UnknownRequest exception for invalid names" do
162
- lambda {
163
- subject.request(:method => :bla)
164
- }.should raise_error(subject::UnknownRequest)
165
- end
166
-
167
- it "should use a default path" do
168
- lambda {
169
- subject.request(:method => :get)
170
- }.should_not raise_error(ArgumentError)
171
- end
172
-
173
- it "should accept the :user option for Basic-Auth" do
174
- req = subject.request(:method => :get, :user => 'joe')
175
-
176
- req['authorization'].should == "Basic am9lOg=="
177
- end
178
-
179
- it "should accept the :user and :password options for Basic-Auth" do
180
- req = subject.request(
181
- :method => :get,
182
- :user => 'joe',
183
- :password => 'secret'
184
- )
185
-
186
- req['authorization'].should == "Basic am9lOnNlY3JldA=="
187
- end
188
-
189
- it "should create HTTP Copy requests" do
190
- req = subject.request(:method => :copy)
191
-
192
- req.class.should == Net::HTTP::Copy
193
- end
194
-
195
- it "should create HTTP Delete requests" do
196
- req = subject.request(:method => :delete)
197
-
198
- req.class.should == Net::HTTP::Delete
199
- end
200
-
201
- it "should create HTTP Get requests" do
202
- req = subject.request(:method => :get)
203
-
204
- req.class.should == Net::HTTP::Get
205
- end
206
-
207
- it "should create HTTP Head requests" do
208
- req = subject.request(:method => :head)
209
-
210
- req.class.should == Net::HTTP::Head
211
- end
212
-
213
- it "should create HTTP Lock requests" do
214
- req = subject.request(:method => :lock)
215
-
216
- req.class.should == Net::HTTP::Lock
217
- end
218
-
219
- it "should create HTTP Mkcol requests" do
220
- req = subject.request(:method => :mkcol)
221
-
222
- req.class.should == Net::HTTP::Mkcol
223
- end
224
-
225
- it "should create HTTP Move requests" do
226
- req = subject.request(:method => :move)
227
-
228
- req.class.should == Net::HTTP::Move
229
- end
230
-
231
- it "should create HTTP Options requests" do
232
- req = subject.request(:method => :options)
233
-
234
- req.class.should == Net::HTTP::Options
235
- end
236
-
237
- it "should create HTTP Post requests" do
238
- req = subject.request(:method => :post)
239
-
240
- req.class.should == Net::HTTP::Post
241
- end
242
-
243
- it "should create HTTP Propfind requests" do
244
- req = subject.request(:method => :propfind)
245
-
246
- req.class.should == Net::HTTP::Propfind
247
- end
248
-
249
- it "should create HTTP Proppatch requests" do
250
- req = subject.request(:method => :proppatch)
251
-
252
- req.class.should == Net::HTTP::Proppatch
253
- end
254
-
255
- it "should create HTTP Trace requests" do
256
- req = subject.request(:method => :trace)
257
-
258
- req.class.should == Net::HTTP::Trace
259
- end
260
-
261
- it "should create HTTP Unlock requests" do
262
- req = subject.request(:method => :unlock)
263
-
264
- req.class.should == Net::HTTP::Unlock
265
- end
266
-
267
- it "should raise an ArgumentError when :method is not specified" do
268
- lambda {
269
- subject.request()
270
- }.should raise_error(ArgumentError)
271
- end
272
- end
273
-
274
- describe "helper methods", :network do
275
- let(:host) { 'www.google.com' }
276
- let(:port) { 80 }
277
- let(:path) { '/' }
278
- let(:uri) { URI::HTTP.build(:host => host, :port => 80, :path => path) }
279
-
280
- subject do
281
- obj = Object.new
282
- obj.extend described_class
283
- obj
284
- end
285
-
286
- describe "#http_connect" do
287
- it "should create a Net::HTTP session" do
288
- http = subject.http_connect(:host => host, :port => port)
289
-
290
- http.should be_kind_of(Net::HTTP)
291
- http.should be_started
292
-
293
- http.finish
294
- end
295
-
296
- it "should yield the new Net::HTTP session" do
297
- http = nil
298
-
299
- subject.http_connect(:url => uri) do |session|
300
- http = session
301
- end
302
-
303
- http.should be_kind_of(Net::HTTP)
304
- end
305
-
306
- it "should allow yielding the expanded options" do
307
- expanded_options = nil
308
-
309
- subject.http_connect(:url => uri) do |session,options|
310
- expanded_options = options
311
- end
312
-
313
- expanded_options[:host].should == host
314
- expanded_options[:port].should == port
315
- expanded_options[:path].should == path
316
- end
317
- end
318
-
319
- describe "#http_session" do
320
- it "should start and then finish a Net::HTTP session" do
321
- http = nil
322
-
323
- subject.http_session(:host => host, :port => port) do |session|
324
- http = session
325
- end
326
-
327
- http.should be_kind_of(Net::HTTP)
328
- http.should_not be_started
329
- end
330
-
331
- it "should allow yielding the Net::HTTP session" do
332
- http = nil
333
-
334
- subject.http_session(:url => uri) do |session|
335
- http = session
336
- end
337
-
338
- http.should be_kind_of(Net::HTTP)
339
- end
340
-
341
- it "should allow yielding the expanded options" do
342
- expanded_options = nil
343
-
344
- subject.http_session(:url => uri) do |session,options|
345
- expanded_options = options
346
- end
347
-
348
- expanded_options[:host].should == host
349
- expanded_options[:port].should == port
350
- expanded_options[:path].should == path
351
- end
352
- end
353
-
354
- describe "#http_request" do
355
- it "should send an arbitrary request and return the response" do
356
- response = subject.http_request(:url => uri, :method => :options)
357
-
358
- response.should be_kind_of(Net::HTTPMethodNotAllowed)
359
- end
360
-
361
- it "should allow yielding the request" do
362
- request = nil
363
-
364
- subject.http_request(:url => uri, :method => :options) do |req|
365
- request = req
366
- end
367
-
368
- request.should be_kind_of(Net::HTTP::Options)
369
- end
370
-
371
- it "should allow yielding the expanded options" do
372
- expanded_options = nil
373
-
374
- subject.http_request(:url => uri, :method => :options) do |req,options|
375
- expanded_options = options
376
- end
377
-
378
- expanded_options[:host].should == host
379
- expanded_options[:port].should == port
380
- expanded_options[:path].should == path
381
- end
382
- end
383
-
384
- describe "#http_status" do
385
- it "should return an Integer" do
386
- subject.http_status(:url => uri).should be_kind_of(Integer)
387
- end
388
-
389
- it "should return the status-code of the Response" do
390
- subject.http_status(:url => uri).should == 200
391
- end
392
- end
393
-
394
- describe "#http_ok?" do
395
- it "should check if the Response has code 200" do
396
- subject.http_ok?(:url => uri).should == true
397
- end
398
- end
399
-
400
- describe "#http_server" do
401
- let(:url) { "http://www.php.net/" }
402
- let(:headers) { subject.http_get_headers(:url => url) }
403
-
404
- it "should return the 'Server' header" do
405
- subject.http_server(:url => url).should == headers['Server']
406
- end
407
- end
408
-
409
- describe "#http_powered_by" do
410
- let(:url) { "http://www.php.net/" }
411
- let(:headers) { subject.http_get_headers(:url => url) }
412
-
413
- it "should return the 'X-Powered-By' header" do
414
- subject.http_powered_by(:url => url).should == headers['X-Powered-By']
415
- end
416
- end
417
-
418
- describe "#http_get_headers" do
419
- let(:headers) { subject.http_get_headers(:url => uri) }
420
-
421
- it "should return HTTP Headers" do
422
- headers.should_not be_empty
423
- end
424
-
425
- it "should format the HTTP Headers accordingly" do
426
- format = /^[A-Z][a-z0-9]*(-[A-Z][a-z0-9]*)*$/
427
- bad_headers = headers.keys.reject { |name| name =~ format }
428
-
429
- bad_headers.should == []
430
- end
431
- end
432
-
433
- describe "#http_get_body" do
434
- it "should return the response body" do
435
- body = subject.http_get_body(:url => uri)
436
-
437
- body.should be_kind_of(String)
438
- body.should_not be_empty
439
- end
440
- end
441
-
442
- describe "#http_post_headers" do
443
- let(:headers) { subject.http_post_headers(:url => uri) }
444
-
445
- it "should return HTTP Headers" do
446
- headers.should_not be_empty
447
- end
448
-
449
- it "should format the HTTP Headers accordingly" do
450
- format = /^[A-Z][a-z0-9]*(-[A-Z][a-z0-9]*)*$/
451
- bad_headers = headers.keys.reject { |name| name =~ format }
452
-
453
- bad_headers.should == []
454
- end
455
- end
456
-
457
- describe "#http_post_body" do
458
- it "should return the response body" do
459
- body = subject.http_post_body(:url => uri)
460
-
461
- body.should be_kind_of(String)
462
- body.should_not be_empty
463
- end
464
- end
465
- end
466
- end
@@ -1,148 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/network/http/proxy'
3
-
4
- describe Network::HTTP::Proxy do
5
- describe "parse" do
6
- subject { described_class }
7
-
8
- it "should parse host-names" do
9
- proxy = subject.parse('127.0.0.1')
10
-
11
- proxy.host.should == '127.0.0.1'
12
- end
13
-
14
- it "should parse 'host:port' URLs" do
15
- proxy = subject.parse('127.0.0.1:80')
16
-
17
- proxy.host.should == '127.0.0.1'
18
- proxy.port.should == 80
19
- end
20
-
21
- it "should parse 'user@host:port' URLs" do
22
- proxy = subject.parse('joe@127.0.0.1:80')
23
-
24
- proxy.user.should == 'joe'
25
- proxy.host.should == '127.0.0.1'
26
- proxy.port.should == 80
27
- end
28
-
29
- it "should prase 'user:password@host:port' URLs" do
30
- proxy = subject.parse('joe:lol@127.0.0.1:80')
31
-
32
- proxy.user.should == 'joe'
33
- proxy.password.should == 'lol'
34
- proxy.host.should == '127.0.0.1'
35
- proxy.port.should == 80
36
- end
37
-
38
- it "should ignore http:// prefixes when parsing proxy URLs" do
39
- proxy = subject.parse('http://joe:lol@127.0.0.1:80')
40
-
41
- proxy.user.should == 'joe'
42
- proxy.password.should == 'lol'
43
- proxy.host.should == '127.0.0.1'
44
- proxy.port.should == 80
45
- end
46
- end
47
-
48
- describe "create" do
49
- subject { described_class }
50
-
51
- let(:host) { '127.0.0.1' }
52
- let(:port) { 8080 }
53
-
54
- it "should accept Proxy objects" do
55
- proxy = subject.new(:host => host, :port => port)
56
-
57
- subject.create(proxy).should == proxy
58
- end
59
-
60
- it "should accept URI::HTTP objects" do
61
- url = URI::HTTP.build(:host => host, :port => port)
62
- proxy = subject.create(url)
63
-
64
- proxy.host.should == host
65
- proxy.port.should == port
66
- end
67
-
68
- it "should accept Hash objects" do
69
- hash = {:host => host, :port => port}
70
- proxy = subject.create(hash)
71
-
72
- proxy.host.should == host
73
- proxy.port.should == port
74
- end
75
-
76
- it "should accept String objects" do
77
- string = "#{host}:#{port}"
78
- proxy = subject.create(string)
79
-
80
- proxy.host.should == host
81
- proxy.port.should == port
82
- end
83
-
84
- it "should accept nil" do
85
- proxy = subject.create(nil)
86
-
87
- proxy.should_not be_enabled
88
- end
89
- end
90
-
91
- it "should behave like a Hash" do
92
- subject[:host] = 'example.com'
93
- subject[:host].should == 'example.com'
94
- end
95
-
96
- it "should not have a host by default" do
97
- subject.host.should be_nil
98
- end
99
-
100
- it "should not have a port by default" do
101
- subject.port.should be_nil
102
- end
103
-
104
- it "should be disabled by default" do
105
- subject.should_not be_enabled
106
- end
107
-
108
- it "should reset the host, port, user and password when disabled" do
109
- subject[:host] = 'example.com'
110
- subject[:port] = 9001
111
- subject[:user] = 'joe'
112
- subject[:password] = 'lol'
113
-
114
- subject.disable!
115
-
116
- subject[:host].should be_nil
117
- subject[:port].should be_nil
118
- subject[:user].should be_nil
119
- subject[:password].should be_nil
120
- end
121
-
122
- it "should return a URI::HTTP representing the proxy" do
123
- subject[:host] = 'example.com'
124
- subject[:port] = 9001
125
- subject[:user] = 'joe'
126
- subject[:password] = 'lol'
127
-
128
- url = subject.url
129
-
130
- url.host.should == 'example.com'
131
- url.port.should == 9001
132
- url.user.should == 'joe'
133
- url.password.should == 'lol'
134
- end
135
-
136
- it "should return nil when converting a disabled proxy to a URL" do
137
- subject.url.should be_nil
138
- end
139
-
140
- it "should return the host-name when converted to a String" do
141
- subject[:host] = 'example.com'
142
- subject.to_s.should == 'example.com'
143
- end
144
-
145
- it "should return an empty String when there is no host-name" do
146
- subject.to_s.should be_empty
147
- end
148
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/network/network'
3
-
4
- describe Network do
5
- it "should determine our public facing IP Address", :network do
6
- subject.ip.should_not be_nil
7
- end
8
- end