ronin-support 0.5.2 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (505) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +5 -6
  3. data/.gitignore +7 -6
  4. data/.mailmap +1 -0
  5. data/.ruby-version +1 -1
  6. data/.yardopts +0 -1
  7. data/ChangeLog.md +516 -148
  8. data/Gemfile +17 -16
  9. data/README.md +105 -50
  10. data/Rakefile +28 -8
  11. data/data/text/homoglyphs/ascii.txt +8 -0
  12. data/data/text/homoglyphs/cyrillic.txt +33 -0
  13. data/data/text/homoglyphs/full_width.txt +81 -0
  14. data/data/text/homoglyphs/greek.txt +21 -0
  15. data/data/text/homoglyphs/latin_numbers.txt +14 -0
  16. data/data/text/homoglyphs/punctuation.txt +7 -0
  17. data/data/text/patterns/network/public_suffix.rb.erb +44 -0
  18. data/examples/ssl_proxy.rb +38 -0
  19. data/examples/tcp_proxy.rb +41 -0
  20. data/gemspec.yml +14 -13
  21. data/lib/ronin/support/archive/core_ext/file.rb +118 -0
  22. data/lib/ronin/{formatting/sql.rb → support/archive/core_ext.rb} +3 -4
  23. data/lib/ronin/support/archive/mixin.rb +213 -0
  24. data/lib/ronin/support/archive/tar/reader.rb +135 -0
  25. data/lib/ronin/support/archive/tar/writer.rb +197 -0
  26. data/lib/ronin/support/archive/tar.rb +155 -0
  27. data/lib/ronin/support/archive/zip/reader/entry.rb +134 -0
  28. data/lib/ronin/support/archive/zip/reader/statistics.rb +76 -0
  29. data/lib/ronin/support/archive/zip/reader.rb +273 -0
  30. data/lib/ronin/support/archive/zip/writer.rb +175 -0
  31. data/lib/ronin/support/archive/zip.rb +105 -0
  32. data/lib/ronin/support/archive.rb +211 -0
  33. data/lib/ronin/support/binary/array.rb +255 -0
  34. data/lib/ronin/support/binary/bit_flip.rb +147 -0
  35. data/lib/ronin/support/binary/buffer.rb +2027 -0
  36. data/lib/ronin/support/binary/byte_slice.rb +324 -0
  37. data/lib/ronin/{formatting/extensions/binary → support/binary/core_ext}/array.rb +25 -11
  38. data/lib/ronin/support/binary/core_ext/float.rb +80 -0
  39. data/lib/ronin/support/binary/core_ext/integer.rb +305 -0
  40. data/lib/ronin/support/binary/core_ext/io.rb +38 -0
  41. data/lib/ronin/support/binary/core_ext/string.rb +115 -0
  42. data/lib/ronin/{formatting/extensions/text.rb → support/binary/core_ext.rb} +6 -6
  43. data/lib/ronin/support/binary/cstring.rb +259 -0
  44. data/lib/ronin/support/binary/ctypes/aggregate_type.rb +98 -0
  45. data/lib/ronin/support/binary/ctypes/arch/arm/big_endian.rb +77 -0
  46. data/lib/ronin/support/binary/ctypes/arch/arm.rb +75 -0
  47. data/lib/ronin/support/binary/ctypes/arch/arm64/big_endian.rb +77 -0
  48. data/lib/ronin/support/binary/ctypes/arch/arm64.rb +75 -0
  49. data/lib/ronin/support/binary/ctypes/arch/mips/little_endian.rb +77 -0
  50. data/lib/ronin/support/binary/ctypes/arch/mips.rb +75 -0
  51. data/lib/ronin/support/binary/ctypes/arch/mips64/little_endian.rb +77 -0
  52. data/lib/ronin/support/binary/ctypes/arch/mips64.rb +75 -0
  53. data/lib/ronin/support/binary/ctypes/arch/ppc.rb +75 -0
  54. data/lib/ronin/support/binary/ctypes/arch/ppc64.rb +75 -0
  55. data/lib/ronin/support/binary/ctypes/arch/x86.rb +75 -0
  56. data/lib/ronin/support/binary/ctypes/arch/x86_64.rb +75 -0
  57. data/lib/ronin/support/binary/ctypes/arch.rb +30 -0
  58. data/lib/ronin/support/binary/ctypes/array_object_type.rb +164 -0
  59. data/lib/ronin/support/binary/ctypes/array_type.rb +232 -0
  60. data/lib/ronin/support/binary/ctypes/big_endian.rb +195 -0
  61. data/lib/ronin/support/binary/ctypes/char_type.rb +59 -0
  62. data/lib/ronin/support/binary/ctypes/char_types.rb +39 -0
  63. data/lib/ronin/support/binary/ctypes/enum_type.rb +181 -0
  64. data/lib/ronin/support/binary/ctypes/float32_type.rb +50 -0
  65. data/lib/ronin/support/binary/ctypes/float64_type.rb +50 -0
  66. data/lib/ronin/support/binary/ctypes/float_type.rb +62 -0
  67. data/lib/ronin/support/binary/ctypes/int16_type.rb +50 -0
  68. data/lib/ronin/support/binary/ctypes/int32_type.rb +50 -0
  69. data/lib/ronin/support/binary/ctypes/int64_type.rb +50 -0
  70. data/lib/ronin/support/{support.rb → binary/ctypes/int8_type.rb} +20 -21
  71. data/lib/ronin/support/binary/ctypes/int_type.rb +62 -0
  72. data/lib/ronin/support/binary/ctypes/little_endian.rb +195 -0
  73. data/lib/ronin/support/binary/ctypes/mixin.rb +135 -0
  74. data/lib/ronin/support/binary/ctypes/native.rb +205 -0
  75. data/lib/ronin/support/binary/ctypes/network.rb +29 -0
  76. data/lib/ronin/support/binary/ctypes/object_type.rb +55 -0
  77. data/lib/ronin/support/binary/ctypes/os/bsd.rb +65 -0
  78. data/lib/ronin/support/binary/ctypes/os/freebsd.rb +215 -0
  79. data/lib/ronin/support/binary/ctypes/os/linux.rb +193 -0
  80. data/lib/ronin/support/binary/ctypes/os/macos.rb +151 -0
  81. data/lib/ronin/support/binary/ctypes/os/netbsd.rb +147 -0
  82. data/lib/ronin/support/binary/ctypes/os/openbsd.rb +168 -0
  83. data/lib/ronin/support/binary/ctypes/os/unix.rb +78 -0
  84. data/lib/ronin/support/binary/ctypes/os/windows.rb +125 -0
  85. data/lib/ronin/support/binary/ctypes/os.rb +125 -0
  86. data/lib/ronin/support/binary/ctypes/scalar_type.rb +200 -0
  87. data/lib/ronin/support/binary/ctypes/string_type.rb +143 -0
  88. data/lib/ronin/support/binary/ctypes/struct_object_type.rb +173 -0
  89. data/lib/ronin/support/binary/ctypes/struct_type.rb +359 -0
  90. data/lib/ronin/support/binary/ctypes/type.rb +193 -0
  91. data/lib/ronin/support/binary/ctypes/type_resolver.rb +206 -0
  92. data/lib/ronin/support/binary/ctypes/uint16_type.rb +50 -0
  93. data/lib/ronin/support/binary/ctypes/uint32_type.rb +50 -0
  94. data/lib/ronin/support/binary/ctypes/uint64_type.rb +50 -0
  95. data/lib/ronin/support/binary/ctypes/uint8_type.rb +41 -0
  96. data/lib/ronin/support/binary/ctypes/uint_type.rb +59 -0
  97. data/lib/ronin/support/binary/ctypes/unbounded_array_type.rb +258 -0
  98. data/lib/ronin/support/binary/ctypes/union_object_type.rb +173 -0
  99. data/lib/ronin/support/binary/ctypes/union_type.rb +261 -0
  100. data/lib/ronin/support/binary/ctypes.rb +462 -0
  101. data/lib/ronin/support/binary/hexdump/core_ext/file.rb +118 -0
  102. data/lib/ronin/support/binary/hexdump/core_ext/string.rb +115 -0
  103. data/lib/ronin/support/binary/hexdump/core_ext.rb +20 -0
  104. data/lib/ronin/support/binary/hexdump/parser.rb +492 -0
  105. data/lib/ronin/support/binary/hexdump.rb +20 -0
  106. data/lib/ronin/support/binary/memory.rb +268 -0
  107. data/lib/ronin/support/binary/packet.rb +33 -0
  108. data/lib/ronin/support/binary/stack.rb +256 -0
  109. data/lib/ronin/support/binary/stream/methods.rb +1755 -0
  110. data/lib/ronin/support/binary/stream.rb +151 -0
  111. data/lib/ronin/support/binary/struct/member.rb +86 -0
  112. data/lib/ronin/support/binary/struct.rb +830 -0
  113. data/lib/ronin/support/binary/template.rb +284 -0
  114. data/lib/ronin/support/binary/union.rb +162 -0
  115. data/lib/ronin/{formatting/extensions → support}/binary.rb +10 -10
  116. data/lib/ronin/support/cli/ansi.rb +330 -0
  117. data/lib/ronin/support/cli/io_shell/core_ext/io.rb +67 -0
  118. data/lib/ronin/{extensions/meta.rb → support/cli/io_shell/core_ext.rb} +3 -4
  119. data/lib/ronin/support/cli/io_shell.rb +161 -0
  120. data/lib/ronin/support/cli/printing.rb +216 -0
  121. data/lib/ronin/support/cli.rb +20 -0
  122. data/lib/ronin/support/compression/core_ext/file.rb +70 -0
  123. data/lib/ronin/support/compression/core_ext/string.rb +101 -0
  124. data/lib/ronin/{fuzzing/extensions.rb → support/compression/core_ext.rb} +3 -4
  125. data/lib/ronin/support/compression/gzip/reader.rb +70 -0
  126. data/lib/ronin/support/compression/gzip/writer.rb +74 -0
  127. data/lib/ronin/support/compression/gzip.rb +105 -0
  128. data/lib/ronin/support/compression/mixin.rb +180 -0
  129. data/lib/ronin/{network/extensions/esmtp/net.rb → support/compression/zlib.rb} +6 -7
  130. data/lib/ronin/support/compression.rb +174 -0
  131. data/lib/ronin/{extensions → support/core_ext}/enumerable.rb +2 -3
  132. data/lib/ronin/{extensions → support/core_ext}/file.rb +2 -31
  133. data/lib/ronin/support/core_ext/integer.rb +37 -0
  134. data/lib/ronin/support/core_ext/ipaddr.rb +65 -0
  135. data/lib/ronin/{extensions → support/core_ext}/kernel.rb +7 -6
  136. data/lib/ronin/{extensions → support/core_ext}/resolv.rb +2 -25
  137. data/lib/ronin/{extensions → support/core_ext}/string.rb +114 -54
  138. data/lib/ronin/support/core_ext.rb +33 -0
  139. data/lib/ronin/support/crypto/cert.rb +522 -0
  140. data/lib/ronin/support/crypto/cert_chain.rb +204 -0
  141. data/lib/ronin/support/crypto/cipher/aes.rb +71 -0
  142. data/lib/ronin/support/crypto/cipher/aes128.rb +54 -0
  143. data/lib/ronin/support/crypto/cipher/aes256.rb +54 -0
  144. data/lib/ronin/support/crypto/cipher.rb +194 -0
  145. data/lib/ronin/support/crypto/core_ext/file.rb +660 -0
  146. data/lib/ronin/support/crypto/core_ext/string.rb +548 -0
  147. data/lib/ronin/{binary.rb → support/crypto/core_ext.rb} +4 -5
  148. data/lib/ronin/{network/mixins/mixin.rb → support/crypto/hmac.rb} +18 -28
  149. data/lib/ronin/support/crypto/key/dh.rb +122 -0
  150. data/lib/ronin/support/crypto/key/dsa.rb +103 -0
  151. data/lib/ronin/support/crypto/key/ec.rb +99 -0
  152. data/lib/ronin/support/crypto/key/methods.rb +163 -0
  153. data/lib/ronin/support/crypto/key/rsa.rb +169 -0
  154. data/lib/ronin/support/crypto/key.rb +105 -0
  155. data/lib/ronin/support/crypto/mixin.rb +620 -0
  156. data/lib/ronin/{network/extensions/http/net.rb → support/crypto/openssl.rb} +6 -7
  157. data/lib/ronin/support/crypto.rb +779 -0
  158. data/lib/ronin/support/encoding/base16/core_ext/string.rb +63 -0
  159. data/lib/ronin/{formatting/binary.rb → support/encoding/base16/core_ext.rb} +3 -4
  160. data/lib/ronin/support/encoding/base16.rb +82 -0
  161. data/lib/ronin/support/encoding/base32/core_ext/string.rb +63 -0
  162. data/lib/ronin/support/encoding/base32/core_ext.rb +19 -0
  163. data/lib/ronin/support/encoding/base32.rb +164 -0
  164. data/lib/ronin/support/encoding/base64/core_ext/string.rb +76 -0
  165. data/lib/ronin/support/encoding/base64/core_ext.rb +19 -0
  166. data/lib/ronin/support/encoding/base64.rb +78 -0
  167. data/lib/ronin/support/encoding/c/core_ext/integer.rb +82 -0
  168. data/lib/ronin/support/encoding/c/core_ext/string.rb +125 -0
  169. data/lib/ronin/support/encoding/c/core_ext.rb +20 -0
  170. data/lib/ronin/support/encoding/c.rb +277 -0
  171. data/lib/ronin/support/encoding/core_ext/string.rb +107 -0
  172. data/lib/ronin/support/encoding/core_ext.rb +33 -0
  173. data/lib/ronin/support/encoding/hex/core_ext/integer.rb +82 -0
  174. data/lib/ronin/support/encoding/hex/core_ext/string.rb +133 -0
  175. data/lib/ronin/support/encoding/hex/core_ext.rb +22 -0
  176. data/lib/ronin/support/encoding/hex.rb +248 -0
  177. data/lib/ronin/support/encoding/html/core_ext/integer.rb +106 -0
  178. data/lib/ronin/support/encoding/html/core_ext/string.rb +130 -0
  179. data/lib/ronin/support/encoding/html/core_ext.rb +20 -0
  180. data/lib/ronin/support/encoding/html.rb +233 -0
  181. data/lib/ronin/support/encoding/http/core_ext/integer.rb +95 -0
  182. data/lib/ronin/support/encoding/http/core_ext/string.rb +129 -0
  183. data/lib/ronin/support/encoding/http/core_ext.rb +20 -0
  184. data/lib/ronin/support/encoding/http.rb +241 -0
  185. data/lib/ronin/support/encoding/js/core_ext/integer.rb +67 -0
  186. data/lib/ronin/support/encoding/js/core_ext/string.rb +125 -0
  187. data/lib/ronin/support/encoding/js/core_ext.rb +20 -0
  188. data/lib/ronin/support/encoding/js.rb +279 -0
  189. data/lib/ronin/support/encoding/powershell/core_ext/integer.rb +87 -0
  190. data/lib/ronin/support/encoding/powershell/core_ext/string.rb +145 -0
  191. data/lib/ronin/support/encoding/powershell/core_ext.rb +20 -0
  192. data/lib/ronin/support/encoding/powershell.rb +297 -0
  193. data/lib/ronin/{formatting/extensions/http/integer.rb → support/encoding/punycode/core_ext/string.rb} +23 -29
  194. data/lib/ronin/support/encoding/punycode/core_ext.rb +19 -0
  195. data/lib/ronin/support/encoding/punycode.rb +76 -0
  196. data/lib/ronin/support/encoding/quoted_printable/core_ext/string.rb +75 -0
  197. data/lib/ronin/support/encoding/quoted_printable/core_ext.rb +19 -0
  198. data/lib/ronin/support/encoding/quoted_printable.rb +102 -0
  199. data/lib/ronin/support/encoding/ruby/core_ext/string.rb +129 -0
  200. data/lib/ronin/support/encoding/ruby/core_ext.rb +19 -0
  201. data/lib/ronin/support/encoding/ruby.rb +235 -0
  202. data/lib/ronin/support/encoding/shell/core_ext/integer.rb +89 -0
  203. data/lib/ronin/support/encoding/shell/core_ext/string.rb +134 -0
  204. data/lib/ronin/support/encoding/shell/core_ext.rb +20 -0
  205. data/lib/ronin/support/encoding/shell.rb +293 -0
  206. data/lib/ronin/{network/extensions → support/encoding}/smtp.rb +4 -4
  207. data/lib/ronin/support/encoding/sql/core_ext/string.rb +114 -0
  208. data/lib/ronin/{formatting/html.rb → support/encoding/sql/core_ext.rb} +3 -4
  209. data/lib/ronin/support/encoding/sql.rb +124 -0
  210. data/lib/ronin/support/encoding/uri/core_ext/integer.rb +149 -0
  211. data/lib/ronin/support/encoding/uri/core_ext/string.rb +195 -0
  212. data/lib/ronin/support/encoding/uri/core_ext.rb +20 -0
  213. data/lib/ronin/support/encoding/uri.rb +424 -0
  214. data/lib/ronin/support/encoding/uuencoding/core_ext/string.rb +73 -0
  215. data/lib/ronin/support/encoding/uuencoding/core_ext.rb +19 -0
  216. data/lib/ronin/support/encoding/uuencoding.rb +70 -0
  217. data/lib/ronin/support/encoding/xml/core_ext/integer.rb +100 -0
  218. data/lib/ronin/support/encoding/xml/core_ext/string.rb +124 -0
  219. data/lib/ronin/support/encoding/xml/core_ext.rb +20 -0
  220. data/lib/ronin/support/encoding/xml.rb +328 -0
  221. data/lib/ronin/support/encoding.rb +46 -0
  222. data/lib/ronin/support/home.rb +88 -0
  223. data/lib/ronin/{network/network.rb → support/mixin.rb} +17 -20
  224. data/lib/ronin/support/network/asn/dns_record.rb +112 -0
  225. data/lib/ronin/support/network/asn/list.rb +269 -0
  226. data/lib/ronin/support/network/asn/record.rb +164 -0
  227. data/lib/ronin/support/network/asn/record_set.rb +226 -0
  228. data/lib/ronin/support/network/asn.rb +88 -0
  229. data/lib/ronin/{binary/hexdump.rb → support/network/core_ext.rb} +3 -4
  230. data/lib/ronin/support/network/dns/idn.rb +38 -0
  231. data/lib/ronin/support/network/dns/mixin.rb +941 -0
  232. data/lib/ronin/support/network/dns/resolver.rb +707 -0
  233. data/lib/ronin/support/network/dns.rb +1109 -0
  234. data/lib/ronin/support/network/domain.rb +70 -0
  235. data/lib/ronin/support/network/email_address.rb +574 -0
  236. data/lib/ronin/support/network/esmtp/mixin.rb +115 -0
  237. data/lib/ronin/support/network/exceptions.rb +43 -0
  238. data/lib/ronin/support/network/ftp/mixin.rb +106 -0
  239. data/lib/ronin/support/network/host.rb +1473 -0
  240. data/lib/ronin/support/network/http/cookie.rb +245 -0
  241. data/lib/ronin/support/network/http/core_ext/uri/http.rb +63 -0
  242. data/lib/ronin/support/network/http/core_ext.rb +19 -0
  243. data/lib/ronin/support/network/http/mixin.rb +890 -0
  244. data/lib/ronin/support/network/http/request.rb +215 -0
  245. data/lib/ronin/support/network/http/set_cookie.rb +210 -0
  246. data/lib/ronin/support/network/http/user_agents.rb +115 -0
  247. data/lib/ronin/support/network/http.rb +2582 -0
  248. data/lib/ronin/support/network/imap/mixin.rb +133 -0
  249. data/lib/ronin/support/network/ip/mixin.rb +114 -0
  250. data/lib/ronin/support/network/ip.rb +540 -0
  251. data/lib/ronin/support/network/ip_range/cidr.rb +252 -0
  252. data/lib/ronin/support/network/ip_range/glob.rb +309 -0
  253. data/lib/ronin/support/network/ip_range/range.rb +249 -0
  254. data/lib/ronin/support/network/ip_range.rb +284 -0
  255. data/lib/ronin/support/network/mixin.rb +58 -0
  256. data/lib/ronin/support/network/packet.rb +27 -0
  257. data/lib/ronin/support/network/pop3/mixin.rb +113 -0
  258. data/lib/ronin/support/network/proxy.rb +602 -0
  259. data/lib/ronin/support/network/public_suffix/list.rb +339 -0
  260. data/lib/ronin/support/network/public_suffix/suffix.rb +118 -0
  261. data/lib/ronin/support/network/public_suffix/suffix_set.rb +150 -0
  262. data/lib/ronin/support/network/public_suffix.rb +41 -0
  263. data/lib/ronin/support/network/smtp/email.rb +190 -0
  264. data/lib/ronin/support/network/smtp/mixin.rb +290 -0
  265. data/lib/ronin/support/network/smtp.rb +19 -0
  266. data/lib/ronin/support/network/ssl/local_cert.rb +114 -0
  267. data/lib/ronin/support/network/ssl/local_key.rb +84 -0
  268. data/lib/ronin/support/network/ssl/mixin.rb +740 -0
  269. data/lib/ronin/{network/extensions/imap/net.rb → support/network/ssl/openssl.rb} +6 -7
  270. data/lib/ronin/support/network/ssl/proxy.rb +296 -0
  271. data/lib/ronin/support/network/ssl.rb +173 -0
  272. data/lib/ronin/support/network/tcp/mixin.rb +400 -0
  273. data/lib/ronin/support/network/tcp/proxy.rb +435 -0
  274. data/lib/ronin/support/network/tcp.rb +443 -0
  275. data/lib/ronin/support/network/telnet/mixin.rb +150 -0
  276. data/lib/ronin/support/network/telnet.rb +90 -0
  277. data/lib/ronin/support/network/tld/list.rb +266 -0
  278. data/lib/ronin/support/network/tld.rb +41 -0
  279. data/lib/ronin/support/network/tls/mixin.rb +670 -0
  280. data/lib/ronin/support/network/tls/proxy.rb +135 -0
  281. data/lib/ronin/{network/mixins/dns.rb → support/network/tls.rb} +23 -25
  282. data/lib/ronin/support/network/udp/mixin.rb +389 -0
  283. data/lib/ronin/support/network/udp/proxy.rb +192 -0
  284. data/lib/ronin/support/network/udp.rb +435 -0
  285. data/lib/ronin/support/network/unix/mixin.rb +273 -0
  286. data/lib/ronin/support/network.rb +37 -0
  287. data/lib/ronin/support/path.rb +136 -0
  288. data/lib/ronin/{network/extensions/dns/net.rb → support/text/core_ext/regexp.rb} +5 -6
  289. data/lib/ronin/support/text/core_ext/string.rb +46 -0
  290. data/lib/ronin/{formatting.rb → support/text/core_ext.rb} +7 -9
  291. data/lib/ronin/support/text/entropy/core_ext/string.rb +45 -0
  292. data/lib/ronin/{formatting/http.rb → support/text/entropy/core_ext.rb} +3 -4
  293. data/lib/ronin/support/text/entropy.rb +66 -0
  294. data/lib/ronin/support/text/erb/mixin.rb +44 -0
  295. data/lib/ronin/support/text/erb.rb +19 -0
  296. data/lib/ronin/support/text/homoglyph/core_ext/string.rb +108 -0
  297. data/lib/ronin/{formatting/digest.rb → support/text/homoglyph/core_ext.rb} +3 -4
  298. data/lib/ronin/{network/http/exceptions/unknown_request.rb → support/text/homoglyph/exceptions.rb} +7 -6
  299. data/lib/ronin/support/text/homoglyph/table.rb +228 -0
  300. data/lib/ronin/support/text/homoglyph.rb +142 -0
  301. data/lib/ronin/support/text/mixin.rb +31 -0
  302. data/lib/ronin/support/text/patterns/credentials.rb +75 -0
  303. data/lib/ronin/support/text/patterns/crypto.rb +67 -0
  304. data/lib/ronin/support/text/patterns/file_system.rb +93 -0
  305. data/lib/ronin/support/text/patterns/language.rb +37 -0
  306. data/lib/ronin/support/text/patterns/network/public_suffix.rb +44 -0
  307. data/lib/ronin/support/text/patterns/network.rb +140 -0
  308. data/lib/ronin/support/text/patterns/numeric.rb +52 -0
  309. data/lib/ronin/support/text/patterns/pii.rb +105 -0
  310. data/lib/ronin/support/text/patterns/source_code.rb +148 -0
  311. data/lib/ronin/{extensions.rb → support/text/patterns.rb} +9 -13
  312. data/lib/ronin/support/text/random/mixin.rb +437 -0
  313. data/lib/ronin/support/text/random.rb +419 -0
  314. data/lib/ronin/support/text/typo/core_ext/string.rb +123 -0
  315. data/lib/ronin/support/text/typo/core_ext.rb +19 -0
  316. data/lib/ronin/support/text/typo/exceptions.rb +28 -0
  317. data/lib/ronin/support/text/typo/generator.rb +161 -0
  318. data/lib/ronin/support/text/typo.rb +260 -0
  319. data/lib/ronin/{formatting → support}/text.rb +10 -4
  320. data/lib/ronin/support/version.rb +3 -4
  321. data/lib/ronin/support.rb +17 -12
  322. data/ronin-support.gemspec +2 -1
  323. metadata +340 -289
  324. data/lib/ronin/binary/hexdump/parser.rb +0 -403
  325. data/lib/ronin/binary/struct.rb +0 -567
  326. data/lib/ronin/binary/template.rb +0 -454
  327. data/lib/ronin/extensions/ip_addr.rb +0 -216
  328. data/lib/ronin/extensions/meta/object.rb +0 -24
  329. data/lib/ronin/extensions/regexp.rb +0 -157
  330. data/lib/ronin/formatting/extensions/binary/base64.rb +0 -106
  331. data/lib/ronin/formatting/extensions/binary/file.rb +0 -77
  332. data/lib/ronin/formatting/extensions/binary/float.rb +0 -65
  333. data/lib/ronin/formatting/extensions/binary/integer.rb +0 -180
  334. data/lib/ronin/formatting/extensions/binary/string.rb +0 -345
  335. data/lib/ronin/formatting/extensions/digest/file.rb +0 -129
  336. data/lib/ronin/formatting/extensions/digest/string.rb +0 -86
  337. data/lib/ronin/formatting/extensions/digest.rb +0 -21
  338. data/lib/ronin/formatting/extensions/html/integer.rb +0 -142
  339. data/lib/ronin/formatting/extensions/html/string.rb +0 -194
  340. data/lib/ronin/formatting/extensions/html.rb +0 -21
  341. data/lib/ronin/formatting/extensions/http/string.rb +0 -110
  342. data/lib/ronin/formatting/extensions/http.rb +0 -21
  343. data/lib/ronin/formatting/extensions/sql/string.rb +0 -130
  344. data/lib/ronin/formatting/extensions/sql.rb +0 -20
  345. data/lib/ronin/formatting/extensions/text/array.rb +0 -137
  346. data/lib/ronin/formatting/extensions/text/string.rb +0 -297
  347. data/lib/ronin/formatting/extensions.rb +0 -24
  348. data/lib/ronin/fuzzing/extensions/string.rb +0 -209
  349. data/lib/ronin/fuzzing/fuzzer.rb +0 -110
  350. data/lib/ronin/fuzzing/fuzzing.rb +0 -360
  351. data/lib/ronin/fuzzing/mutator.rb +0 -161
  352. data/lib/ronin/fuzzing/repeater.rb +0 -81
  353. data/lib/ronin/fuzzing/template.rb +0 -133
  354. data/lib/ronin/fuzzing.rb +0 -21
  355. data/lib/ronin/mixin.rb +0 -89
  356. data/lib/ronin/network/dns.rb +0 -201
  357. data/lib/ronin/network/esmtp.rb +0 -113
  358. data/lib/ronin/network/extensions/dns.rb +0 -20
  359. data/lib/ronin/network/extensions/esmtp.rb +0 -20
  360. data/lib/ronin/network/extensions/http/uri/http.rb +0 -228
  361. data/lib/ronin/network/extensions/http.rb +0 -21
  362. data/lib/ronin/network/extensions/imap.rb +0 -20
  363. data/lib/ronin/network/extensions/pop3/net.rb +0 -24
  364. data/lib/ronin/network/extensions/pop3.rb +0 -20
  365. data/lib/ronin/network/extensions/smtp/net.rb +0 -24
  366. data/lib/ronin/network/extensions/ssl/net.rb +0 -24
  367. data/lib/ronin/network/extensions/ssl.rb +0 -20
  368. data/lib/ronin/network/extensions/tcp/net.rb +0 -24
  369. data/lib/ronin/network/extensions/tcp.rb +0 -20
  370. data/lib/ronin/network/extensions/telnet/net.rb +0 -24
  371. data/lib/ronin/network/extensions/telnet.rb +0 -20
  372. data/lib/ronin/network/extensions/udp/net.rb +0 -24
  373. data/lib/ronin/network/extensions/udp.rb +0 -20
  374. data/lib/ronin/network/extensions.rb +0 -29
  375. data/lib/ronin/network/ftp.rb +0 -149
  376. data/lib/ronin/network/http/exceptions.rb +0 -20
  377. data/lib/ronin/network/http/http.rb +0 -1122
  378. data/lib/ronin/network/http/proxy.rb +0 -330
  379. data/lib/ronin/network/http.rb +0 -22
  380. data/lib/ronin/network/imap.rb +0 -158
  381. data/lib/ronin/network/mixins/esmtp.rb +0 -164
  382. data/lib/ronin/network/mixins/ftp.rb +0 -155
  383. data/lib/ronin/network/mixins/http.rb +0 -227
  384. data/lib/ronin/network/mixins/imap.rb +0 -156
  385. data/lib/ronin/network/mixins/pop3.rb +0 -149
  386. data/lib/ronin/network/mixins/smtp.rb +0 -159
  387. data/lib/ronin/network/mixins/ssl.rb +0 -148
  388. data/lib/ronin/network/mixins/tcp.rb +0 -368
  389. data/lib/ronin/network/mixins/telnet.rb +0 -208
  390. data/lib/ronin/network/mixins/udp.rb +0 -381
  391. data/lib/ronin/network/mixins/unix.rb +0 -279
  392. data/lib/ronin/network/mixins.rb +0 -29
  393. data/lib/ronin/network/pop3.rb +0 -124
  394. data/lib/ronin/network/proxy.rb +0 -578
  395. data/lib/ronin/network/smtp/email.rb +0 -174
  396. data/lib/ronin/network/smtp/smtp.rb +0 -230
  397. data/lib/ronin/network/smtp.rb +0 -22
  398. data/lib/ronin/network/ssl.rb +0 -186
  399. data/lib/ronin/network/tcp/proxy.rb +0 -417
  400. data/lib/ronin/network/tcp/tcp.rb +0 -452
  401. data/lib/ronin/network/tcp.rb +0 -21
  402. data/lib/ronin/network/telnet.rb +0 -266
  403. data/lib/ronin/network/udp/proxy.rb +0 -191
  404. data/lib/ronin/network/udp/udp.rb +0 -452
  405. data/lib/ronin/network/udp.rb +0 -21
  406. data/lib/ronin/network/unix.rb +0 -286
  407. data/lib/ronin/network.rb +0 -31
  408. data/lib/ronin/path.rb +0 -133
  409. data/lib/ronin/spec/ui/output.rb +0 -22
  410. data/lib/ronin/support/inflector.rb +0 -92
  411. data/lib/ronin/templates/erb.rb +0 -78
  412. data/lib/ronin/templates/template.rb +0 -169
  413. data/lib/ronin/templates.rb +0 -21
  414. data/lib/ronin/ui/output/helpers.rb +0 -296
  415. data/lib/ronin/ui/output/output.rb +0 -142
  416. data/lib/ronin/ui/output/terminal/color.rb +0 -124
  417. data/lib/ronin/ui/output/terminal/raw.rb +0 -103
  418. data/lib/ronin/ui/output/terminal.rb +0 -21
  419. data/lib/ronin/ui/output.rb +0 -21
  420. data/lib/ronin/ui/shell.rb +0 -286
  421. data/lib/ronin/wordlist.rb +0 -287
  422. data/spec/binary/hexdump/helpers/hexdumps/ascii.bin +0 -0
  423. data/spec/binary/hexdump/helpers/hexdumps/hexdump_decimal_shorts.txt +0 -17
  424. data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_bytes.txt +0 -17
  425. data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_shorts.txt +0 -17
  426. data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_bytes.txt +0 -17
  427. data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_shorts.txt +0 -17
  428. data/spec/binary/hexdump/helpers/hexdumps/hexdump_repeated.txt +0 -6
  429. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_bytes.txt +0 -17
  430. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_ints.txt +0 -17
  431. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_quads.txt +0 -17
  432. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_shorts.txt +0 -17
  433. data/spec/binary/hexdump/helpers/hexdumps/od_doubles.txt +0 -17
  434. data/spec/binary/hexdump/helpers/hexdumps/od_floats.txt +0 -17
  435. data/spec/binary/hexdump/helpers/hexdumps/od_hex_bytes.txt +0 -17
  436. data/spec/binary/hexdump/helpers/hexdumps/od_hex_ints.txt +0 -17
  437. data/spec/binary/hexdump/helpers/hexdumps/od_hex_quads.txt +0 -17
  438. data/spec/binary/hexdump/helpers/hexdumps/od_hex_shorts.txt +0 -17
  439. data/spec/binary/hexdump/helpers/hexdumps/od_named_chars.txt +0 -17
  440. data/spec/binary/hexdump/helpers/hexdumps/od_octal_bytes.txt +0 -17
  441. data/spec/binary/hexdump/helpers/hexdumps/od_octal_ints.txt +0 -17
  442. data/spec/binary/hexdump/helpers/hexdumps/od_octal_quads.txt +0 -17
  443. data/spec/binary/hexdump/helpers/hexdumps/od_octal_shorts.txt +0 -17
  444. data/spec/binary/hexdump/helpers/hexdumps/od_repeated.txt +0 -6
  445. data/spec/binary/hexdump/helpers/hexdumps/repeated.bin +0 -1
  446. data/spec/binary/hexdump/helpers/hexdumps.rb +0 -13
  447. data/spec/binary/hexdump/parser_spec.rb +0 -302
  448. data/spec/binary/struct_spec.rb +0 -496
  449. data/spec/binary/template_spec.rb +0 -416
  450. data/spec/extensions/enumerable_spec.rb +0 -24
  451. data/spec/extensions/file_spec.rb +0 -61
  452. data/spec/extensions/ip_addr_spec.rb +0 -203
  453. data/spec/extensions/kernel_spec.rb +0 -30
  454. data/spec/extensions/regexp_spec.rb +0 -482
  455. data/spec/extensions/resolv_spec.rb +0 -18
  456. data/spec/extensions/string_spec.rb +0 -180
  457. data/spec/formatting/binary/array_spec.rb +0 -26
  458. data/spec/formatting/binary/base64_spec.rb +0 -50
  459. data/spec/formatting/binary/float_spec.rb +0 -36
  460. data/spec/formatting/binary/integer_spec.rb +0 -166
  461. data/spec/formatting/binary/string_spec.rb +0 -199
  462. data/spec/formatting/digest/string_spec.rb +0 -82
  463. data/spec/formatting/html/integer_spec.rb +0 -66
  464. data/spec/formatting/html/string_spec.rb +0 -103
  465. data/spec/formatting/http/integer_spec.rb +0 -42
  466. data/spec/formatting/http/string_spec.rb +0 -76
  467. data/spec/formatting/sql/string_spec.rb +0 -77
  468. data/spec/formatting/text/array_spec.rb +0 -105
  469. data/spec/formatting/text/string_spec.rb +0 -162
  470. data/spec/fuzzing/extensions/string_spec.rb +0 -87
  471. data/spec/fuzzing/fuzzer_spec.rb +0 -109
  472. data/spec/fuzzing/fuzzing_spec.rb +0 -24
  473. data/spec/fuzzing/mutator_spec.rb +0 -112
  474. data/spec/fuzzing/repeater_spec.rb +0 -57
  475. data/spec/fuzzing/template_spec.rb +0 -54
  476. data/spec/mixin_spec.rb +0 -51
  477. data/spec/network/dns_spec.rb +0 -203
  478. data/spec/network/ftp_spec.rb +0 -81
  479. data/spec/network/http/http_spec.rb +0 -559
  480. data/spec/network/http/proxy_spec.rb +0 -148
  481. data/spec/network/network_spec.rb +0 -8
  482. data/spec/network/proxy_spec.rb +0 -121
  483. data/spec/network/shared/unix_server.rb +0 -31
  484. data/spec/network/smtp/email_spec.rb +0 -100
  485. data/spec/network/ssl_spec.rb +0 -70
  486. data/spec/network/tcp/proxy_spec.rb +0 -118
  487. data/spec/network/tcp/tcp_spec.rb +0 -316
  488. data/spec/network/telnet_spec.rb +0 -67
  489. data/spec/network/udp/udp_spec.rb +0 -298
  490. data/spec/network/unix_spec.rb +0 -182
  491. data/spec/path_spec.rb +0 -111
  492. data/spec/spec_helper.rb +0 -8
  493. data/spec/support/inflector_spec.rb +0 -22
  494. data/spec/support_spec.rb +0 -8
  495. data/spec/templates/classes/example_erb.rb +0 -11
  496. data/spec/templates/classes/example_template.rb +0 -35
  497. data/spec/templates/erb_spec.rb +0 -21
  498. data/spec/templates/helpers/data/includes/_relative.erb +0 -1
  499. data/spec/templates/helpers/data/templates/example.erb +0 -1
  500. data/spec/templates/helpers/data.rb +0 -9
  501. data/spec/templates/template_spec.rb +0 -54
  502. data/spec/ui/classes/test_shell.rb +0 -22
  503. data/spec/ui/output_spec.rb +0 -32
  504. data/spec/ui/shell_spec.rb +0 -83
  505. data/spec/wordlist_spec.rb +0 -151
@@ -1,30 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/extensions/kernel'
3
-
4
- describe Kernel do
5
- it "should provide Kernel#try" do
6
- expect(Kernel).to respond_to('try')
7
- end
8
-
9
- describe "#try" do
10
- it "should return the result of the block if nothing is raised" do
11
- expect(try { 2 + 2 }).to eq(4)
12
- end
13
-
14
- it "should return nil if an exception is raised" do
15
- expect(try { 2 + 'a' }).to be_nil
16
- end
17
-
18
- it "should rescue RuntimeError exceptions" do
19
- expect {
20
- try { raise(RuntimeError,"something happened",caller) }
21
- }.not_to raise_error
22
- end
23
-
24
- it "should rescue StandardError exceptions" do
25
- expect {
26
- try { raise(StandardError,"not allowed to do that",caller) }
27
- }.not_to raise_error
28
- end
29
- end
30
- end
@@ -1,482 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/extensions/regexp'
3
-
4
- describe Regexp do
5
- describe "WORD" do
6
- let(:word) { 'dog' }
7
-
8
- subject { Regexp::WORD }
9
-
10
- it "should not match single letters" do
11
- expect(subject.match('A')).to be_nil
12
- end
13
-
14
- it "should not match numeric letters" do
15
- expect(subject.match("123#{word}123")[0]).to eq(word)
16
- end
17
-
18
- it "should not include ending periods" do
19
- expect(subject.match("#{word}.")[0]).to eq(word)
20
- end
21
-
22
- it "should not include leading punctuation" do
23
- expect(subject.match("'#{word}")[0]).to eq(word)
24
- end
25
-
26
- it "should not include tailing punctuation" do
27
- expect(subject.match("#{word}'")[0]).to eq(word)
28
- end
29
-
30
- it "should include punctuation in the middle of the word" do
31
- name = "O'Brian"
32
-
33
- expect(subject.match(name)[0]).to eq(name)
34
- end
35
- end
36
-
37
- describe "OCTET" do
38
- subject { Regexp::OCTET }
39
-
40
- it "should match 0 - 255" do
41
- expect((0..255).all? { |n|
42
- subject.match(n.to_s)[0] == n.to_s
43
- }).to be(true)
44
- end
45
-
46
- it "should not match numbers greater than 255" do
47
- expect(subject.match('256')[0]).to eq('25')
48
- end
49
- end
50
-
51
- describe "MAC" do
52
- subject { Regexp::MAC }
53
-
54
- it "should match six hexadecimal bytes" do
55
- mac = '12:34:56:78:9a:bc'
56
-
57
- expect(subject.match(mac)[0]).to eq(mac)
58
- end
59
- end
60
-
61
- describe "IPv4" do
62
- subject { Regexp::IPv4 }
63
-
64
- it "should match valid addresses" do
65
- ip = '127.0.0.1'
66
-
67
- expect(subject.match(ip)[0]).to eq(ip)
68
- end
69
-
70
- it "should match the Any address" do
71
- ip = '0.0.0.0'
72
-
73
- expect(subject.match(ip)[0]).to eq(ip)
74
- end
75
-
76
- it "should match the broadcast address" do
77
- ip = '255.255.255.255'
78
-
79
- expect(subject.match(ip)[0]).to eq(ip)
80
- end
81
-
82
- it "should match addresses with netmasks" do
83
- ip = '10.1.1.1/24'
84
-
85
- expect(subject.match(ip)[0]).to eq(ip)
86
- end
87
-
88
- it "should not match addresses with octets > 255" do
89
- ip = '10.1.256.1'
90
-
91
- expect(subject.match(ip)).to be_nil
92
- end
93
-
94
- it "should not match addresses with more than three digits per octet" do
95
- ip = '10.1111.1.1'
96
-
97
- expect(subject.match(ip)).to be_nil
98
- end
99
- end
100
-
101
- describe "IPv6" do
102
- subject { Regexp::IPv6 }
103
-
104
- it "should match valid IPv6 addresses" do
105
- ip = '2001:db8:85a3:0:0:8a2e:370:7334'
106
-
107
- expect(subject.match(ip)[0]).to eq(ip)
108
- end
109
-
110
- it "should match IPv6 addresses with netmasks" do
111
- ip = '2001:db8:1234::/48'
112
-
113
- expect(subject.match(ip)[0]).to eq(ip)
114
- end
115
-
116
- it "should match truncated IPv6 addresses" do
117
- ip = '2001:db8:85a3::8a2e:370:7334'
118
-
119
- expect(subject.match(ip)[0]).to eq(ip)
120
- end
121
-
122
- it "should match IPv4-mapped IPv6 addresses" do
123
- ip = '::ffff:192.0.2.128'
124
-
125
- expect(subject.match(ip)[0]).to eq(ip)
126
- end
127
- end
128
-
129
- describe "IP" do
130
- subject { Regexp::IP }
131
-
132
- it "should match IPv4 addresses" do
133
- ip = '10.1.1.1'
134
-
135
- expect(subject.match(ip)[0]).to eq(ip)
136
- end
137
-
138
- it "should match IPv6 addresses" do
139
- ip = '2001:db8:85a3:0:0:8a2e:370:7334'
140
-
141
- expect(subject.match(ip)[0]).to eq(ip)
142
- end
143
- end
144
-
145
- describe "HOST_NAME" do
146
- subject { Regexp::HOST_NAME }
147
-
148
- it "should match valid hostnames" do
149
- hostname = 'www.google.com'
150
-
151
- expect(subject.match(hostname)[0]).to eq(hostname)
152
- end
153
-
154
- it "should not match hostnames without a TLD" do
155
- expect(subject.match('foo')).to be_nil
156
- end
157
-
158
- it "should not match hostnames with unknown TLDs" do
159
- expect(subject.match('foo.zzz')).to be_nil
160
- end
161
- end
162
-
163
- describe "USER_NAME" do
164
- subject { Regexp::USER_NAME }
165
-
166
- it "should match valid user-names" do
167
- username = 'alice1234'
168
-
169
- expect(subject.match(username)[0]).to eq(username)
170
- end
171
-
172
- it "should match user-names containing '_' characters" do
173
- username = 'alice_1234'
174
-
175
- expect(subject.match(username)[0]).to eq(username)
176
- end
177
-
178
- it "should match user-names containing '.' characters" do
179
- username = 'alice.1234'
180
-
181
- expect(subject.match(username)[0]).to eq(username)
182
- end
183
-
184
- it "should not match user-names beginning with numbers" do
185
- expect(subject.match('1234bob')[0]).to eq('bob')
186
- end
187
-
188
- it "should not match user-names containing spaces" do
189
- expect(subject.match('alice eve')[0]).to eq('alice')
190
- end
191
-
192
- it "should not match user-names containing other symbols" do
193
- expect(subject.match('alice^eve')[0]).to eq('alice')
194
- end
195
- end
196
-
197
- describe "EMAIL_ADDR" do
198
- subject { Regexp::EMAIL_ADDR }
199
-
200
- it "should match valid email addresses" do
201
- email = 'alice@example.com'
202
-
203
- expect(subject.match(email)[0]).to eq(email)
204
- end
205
- end
206
-
207
- describe "PHONE_NUMBER" do
208
- subject { Regexp::PHONE_NUMBER }
209
-
210
- it "should match 111-2222" do
211
- number = '111-2222'
212
-
213
- expect(subject.match(number)[0]).to eq(number)
214
- end
215
-
216
- it "should match 111-2222x9" do
217
- number = '111-2222x9'
218
-
219
- expect(subject.match(number)[0]).to eq(number)
220
- end
221
-
222
- it "should match 800-111-2222" do
223
- number = '800-111-2222'
224
-
225
- expect(subject.match(number)[0]).to eq(number)
226
- end
227
-
228
- it "should match 1-800-111-2222" do
229
- number = '1-800-111-2222'
230
-
231
- expect(subject.match(number)[0]).to eq(number)
232
- end
233
- end
234
-
235
- describe "IDENTIFIER" do
236
- subject { Regexp::IDENTIFIER }
237
-
238
- it "should match Strings beginning with a '_' character" do
239
- identifier = '_foo'
240
-
241
- expect(subject.match(identifier)[0]).to eq(identifier)
242
- end
243
-
244
- it "should match Strings ending with a '_' character" do
245
- identifier = 'foo_'
246
-
247
- expect(subject.match(identifier)[0]).to eq(identifier)
248
- end
249
-
250
- it "should not match Strings beginning with numberic characters" do
251
- expect(subject.match('1234foo')[0]).to eq('foo')
252
- end
253
-
254
- it "should not match Strings not containing any alpha characters" do
255
- identifier = '_1234_'
256
-
257
- expect(subject.match(identifier)).to be_nil
258
- end
259
- end
260
-
261
- describe "FILE_EXT" do
262
- subject { Regexp::FILE_EXT }
263
-
264
- it "should match the '.' separator character" do
265
- ext = '.txt'
266
-
267
- expect(subject.match(ext)[0]).to eq(ext)
268
- end
269
-
270
- it "should not allow '_' characters" do
271
- expect(subject.match('.foo_bar')[0]).to eq('.foo')
272
- end
273
-
274
- it "should not allow '-' characters" do
275
- expect(subject.match('.foo-bar')[0]).to eq('.foo')
276
- end
277
- end
278
-
279
- describe "FILE_NAME" do
280
- subject { Regexp::FILE_NAME }
281
-
282
- it "should match file names" do
283
- filename = 'foo_bar'
284
-
285
- expect(subject.match(filename)[0]).to eq(filename)
286
- end
287
-
288
- it "should match '\\' escapped characters" do
289
- filename = 'foo\\ bar'
290
-
291
- expect(subject.match(filename)[0]).to eq(filename)
292
- end
293
- end
294
-
295
- describe "FILE" do
296
- subject { Regexp::FILE }
297
-
298
- it "should match the filename and extension" do
299
- filename = 'foo_bar.txt'
300
-
301
- expect(subject.match(filename)[0]).to eq(filename)
302
- end
303
- end
304
-
305
- describe "DIRECTORY" do
306
- subject { Regexp::DIRECTORY }
307
-
308
- it "should match directory names" do
309
- dir = 'foo_bar'
310
-
311
- expect(subject.match(dir)[0]).to eq(dir)
312
- end
313
-
314
- it "should match '.'" do
315
- dir = '.'
316
-
317
- expect(subject.match(dir)[0]).to eq(dir)
318
- end
319
-
320
- it "should match '..'" do
321
- dir = '..'
322
-
323
- expect(subject.match(dir)[0]).to eq(dir)
324
- end
325
- end
326
-
327
- describe "RELATIVE_UNIX_PATH" do
328
- subject { Regexp::RELATIVE_UNIX_PATH }
329
-
330
- it "should match multiple directories" do
331
- path = 'foo/./bar/../baz'
332
-
333
- expect(subject.match(path)[0]).to eq(path)
334
- end
335
- end
336
-
337
- describe "ABSOLUTE_UNIX_PATH" do
338
- subject { Regexp::ABSOLUTE_UNIX_PATH }
339
-
340
- it "should match absolute paths" do
341
- path = '/foo/bar/baz'
342
-
343
- expect(subject.match(path)[0]).to eq(path)
344
- end
345
-
346
- it "should match trailing '/' characters" do
347
- path = '/foo/bar/baz/'
348
-
349
- expect(subject.match(path)[0]).to eq(path)
350
- end
351
-
352
- it "should not match relative directories" do
353
- path = '/foo/./bar/../baz'
354
-
355
- expect(subject.match(path)[0]).to eq('/foo/')
356
- end
357
- end
358
-
359
- describe "UNIX_PATH" do
360
- subject { Regexp::UNIX_PATH }
361
-
362
- it "should match relative paths" do
363
- path = 'foo/./bar/../baz'
364
-
365
- expect(subject.match(path)[0]).to eq(path)
366
- end
367
-
368
- it "should match absolute paths" do
369
- path = '/foo/bar/baz'
370
-
371
- expect(subject.match(path)[0]).to eq(path)
372
- end
373
- end
374
-
375
- describe "RELATIVE_WINDOWS_PATH" do
376
- subject { Regexp::RELATIVE_WINDOWS_PATH }
377
-
378
- it "should match multiple directories" do
379
- path = 'foo\\.\\bar\\..\\baz'
380
-
381
- expect(subject.match(path)[0]).to eq(path)
382
- end
383
- end
384
-
385
- describe "ABSOLUTE_WINDOWS_PATH" do
386
- subject { Regexp::ABSOLUTE_WINDOWS_PATH }
387
-
388
- it "should match absolute paths" do
389
- path = 'C:\\foo\\bar\\baz'
390
-
391
- expect(subject.match(path)[0]).to eq(path)
392
- end
393
-
394
- it "should match trailing '/' characters" do
395
- path = 'C:\\foo\\bar\\baz\\'
396
-
397
- expect(subject.match(path)[0]).to eq(path)
398
- end
399
-
400
- it "should not match relative directories" do
401
- path = 'C:\\foo\\.\\bar\\..\\baz'
402
-
403
- expect(subject.match(path)[0]).to eq('C:\\foo\\')
404
- end
405
- end
406
-
407
- describe "WINDOWS_PATH" do
408
- subject { Regexp::WINDOWS_PATH }
409
-
410
- it "should match relative paths" do
411
- path = 'foo\\.\\bar\\..\\baz'
412
-
413
- expect(subject.match(path)[0]).to eq(path)
414
- end
415
-
416
- it "should match absolute paths" do
417
- path = 'C:\\foo\\bar\\baz'
418
-
419
- expect(subject.match(path)[0]).to eq(path)
420
- end
421
- end
422
-
423
- describe "RELATIVE_PATH" do
424
- subject { Regexp::RELATIVE_PATH }
425
-
426
- it "should match relative UNIX paths" do
427
- path = 'foo/./bar/../baz'
428
-
429
- expect(subject.match(path)[0]).to eq(path)
430
- end
431
-
432
- it "should match relative Windows paths" do
433
- path = 'foo\\.\\bar\\..\\baz'
434
-
435
- expect(subject.match(path)[0]).to eq(path)
436
- end
437
- end
438
-
439
- describe "ABSOLUTE_PATH" do
440
- subject { Regexp::ABSOLUTE_PATH }
441
-
442
- it "should match absolute UNIX paths" do
443
- path = '/foo/bar/baz'
444
-
445
- expect(subject.match(path)[0]).to eq(path)
446
- end
447
-
448
- it "should match absolute Windows paths" do
449
- path = 'C:\\foo\\bar\\baz'
450
-
451
- expect(subject.match(path)[0]).to eq(path)
452
- end
453
- end
454
-
455
- describe "PATH" do
456
- subject { Regexp::PATH }
457
-
458
- it "should match relative UNIX paths" do
459
- path = 'foo/./bar/../baz'
460
-
461
- expect(subject.match(path)[0]).to eq(path)
462
- end
463
-
464
- it "should match absolute UNIX paths" do
465
- path = '/foo/bar/baz'
466
-
467
- expect(subject.match(path)[0]).to eq(path)
468
- end
469
-
470
- it "should match relative Windows paths" do
471
- path = 'foo\\.\\bar\\..\\baz'
472
-
473
- expect(subject.match(path)[0]).to eq(path)
474
- end
475
-
476
- it "should match absolute Windows paths" do
477
- path = 'C:\\foo\\bar\\baz'
478
-
479
- expect(subject.match(path)[0]).to eq(path)
480
- end
481
- end
482
- end
@@ -1,18 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/extensions/resolv'
3
-
4
- describe Resolv do
5
- describe "resolver" do
6
- let(:nameserver) { '4.2.2.1' }
7
-
8
- subject { Resolv }
9
-
10
- it "should create a new Resolv::DNS object if a nameserver is given" do
11
- expect(subject.resolver(nameserver)).to be_kind_of(Resolv::DNS)
12
- end
13
-
14
- it "should return the default resolver otherwise" do
15
- expect(subject.resolver).to eq(Resolv)
16
- end
17
- end
18
- end
@@ -1,180 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/extensions/string'
3
-
4
- describe String do
5
- describe "#each_substring" do
6
- subject { 'hello' }
7
-
8
- it "should enumerate over each sub-string within the String" do
9
- subject.each_substring do |sub_string|
10
- expect(subject).to include(sub_string)
11
- end
12
- end
13
-
14
- it "should allow passing the string index back" do
15
- subject.each_substring do |sub_string,index|
16
- expect(subject[index,sub_string.length]).to eq(sub_string)
17
-
18
- expect(subject).to include(sub_string)
19
- end
20
- end
21
-
22
- it "should enumerate over each sub-string of a minimum length" do
23
- subject.each_substring(2) do |sub_string|
24
- expect(sub_string.length).to be >= 2
25
-
26
- expect(subject).to include(sub_string)
27
- end
28
- end
29
-
30
- it "should return an Enumerator when no block is given" do
31
- substrings = subject.each_substring
32
-
33
- expect(substrings.all? { |sub_string|
34
- subject.include?(sub_string)
35
- }).to be(true)
36
- end
37
- end
38
-
39
- describe "#each_unique_substring" do
40
- subject { 'abablol' }
41
-
42
- it "should enumerate over each unique sub-string within the String" do
43
- seen = []
44
-
45
- subject.each_unique_substring do |sub_string|
46
- expect(subject).to include(sub_string)
47
- expect(seen).to_not include(sub_string)
48
-
49
- seen << sub_string
50
- end
51
- end
52
-
53
- it "should enumerate over each sub-string of a minimum length" do
54
- seen = []
55
-
56
- subject.each_unique_substring(2) do |sub_string|
57
- expect(sub_string.length).to be >= 2
58
-
59
- expect(subject).to include(sub_string)
60
- expect(seen).to_not include(sub_string)
61
-
62
- seen << sub_string
63
- end
64
- end
65
-
66
- it "should return an Enumerator when no block is given" do
67
- seen = subject.each_unique_substring
68
-
69
- expect(seen.all? { |sub_string|
70
- subject.include?(sub_string)
71
- }).to be(true)
72
-
73
- seen = seen.to_a
74
-
75
- expect(seen.uniq).to eq(seen)
76
- end
77
- end
78
-
79
- describe "#common_prefix" do
80
- it "should find the common prefix between two Strings" do
81
- one = 'What is puzzling you is the nature of my game'
82
- two = 'What is puzzling you is the nature of my name'
83
- common = 'What is puzzling you is the nature of my '
84
-
85
- expect(one.common_prefix(two)).to eq(common)
86
- end
87
-
88
- it "should return the common prefix between two Strings with no uncommon postfix" do
89
- one = "1234"
90
- two = "12345"
91
- common = "1234"
92
-
93
- expect(one.common_prefix(two)).to eq(common)
94
- end
95
-
96
- it "should return an empty String if there is no common prefix" do
97
- one = 'Tell me people'
98
- two = 'Whats my name'
99
-
100
- expect(one.common_prefix(two)).to eq('')
101
- end
102
-
103
- it "should return an empty String if one of the strings is also empty" do
104
- one = 'Haha'
105
- two = ''
106
-
107
- expect(one.common_prefix(two)).to eq('')
108
- end
109
- end
110
-
111
- describe "#common_suffix" do
112
- it "should find the common postfix between two Strings" do
113
- one = 'Tell me baby whats my name'
114
- two = "Can't you guess my name"
115
- common = 's my name'
116
-
117
- expect(one.common_suffix(two)).to eq(common)
118
- end
119
-
120
- it "should return an empty String if there is no common postfix" do
121
- one = 'You got to right up, stand up'
122
- two = 'stand up for your rights'
123
-
124
- expect(one.common_suffix(two)).to eq('')
125
- end
126
-
127
- it "should return an empty String if one of the strings is also empty" do
128
- one = 'You and I must fight for our rights'
129
- two = ''
130
-
131
- expect(one.common_suffix(two)).to eq('')
132
- end
133
- end
134
-
135
- describe "#uncommon_substring" do
136
- it "should find the uncommon substring between two Strings" do
137
- one = "Tell me baby whats my name"
138
- two = "Tell me honey whats my name"
139
- uncommon = 'bab'
140
-
141
- expect(one.uncommon_substring(two)).to eq(uncommon)
142
- end
143
-
144
- it "should find the uncommon substring between two Strings with a common prefix" do
145
- one = 'You and I must fight for our rights'
146
- two = 'You and I must fight to survive'
147
- uncommon = 'for our rights'
148
-
149
- expect(one.uncommon_substring(two)).to eq(uncommon)
150
- end
151
-
152
- it "should find the uncommon substring between two Strings with a common postfix" do
153
- one = 'Tell me baby whats my name'
154
- two = "Can't you guess my name"
155
- uncommon = 'Tell me baby what'
156
-
157
- expect(one.uncommon_substring(two)).to eq(uncommon)
158
- end
159
- end
160
-
161
- if RUBY_VERSION < '1.9.'
162
- describe "#dump" do
163
- it "should dump printable strings" do
164
- expect("hello".dump).to eq('"hello"')
165
- end
166
-
167
- it "should dump strings containing control characters" do
168
- expect("hello\n\b\a".dump).to eq('"hello\n\b\a"')
169
- end
170
-
171
- it "should dump strings containing non-printable characters" do
172
- expect("hello\x90\x05\xEF".dump).to eq('"hello\x90\x05\xEF"')
173
- end
174
-
175
- it "should dump the string when calling the inspect method" do
176
- expect("hello\x90\x05\xEF".inspect).to eq('"hello\x90\x05\xEF"')
177
- end
178
- end
179
- end
180
- end