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
@@ -0,0 +1,941 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
4
+ #
5
+ # ronin-support is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU Lesser General Public License as published
7
+ # by the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # ronin-support is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public License
16
+ # along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
17
+ #
18
+
19
+ require 'ronin/support/network/dns'
20
+
21
+ module Ronin
22
+ module Support
23
+ module Network
24
+ module DNS
25
+ #
26
+ # Provides helper methods for performing DNS queries.
27
+ #
28
+ module Mixin
29
+ #
30
+ # Sets the DNS nameservers to query.
31
+ #
32
+ # @param [Array<String>] new_nameservers
33
+ # The new DNS nameserver addresses to query.
34
+ #
35
+ # @return [Array<String>]
36
+ # The new DNS nameserver addresses to query.
37
+ #
38
+ def dns_nameservers=(new_nameservers)
39
+ @dns_nameservers = new_nameservers.map(&:to_s)
40
+ @dns_resolver = Network::DNS.resolver(
41
+ nameservers: @dns_nameservers
42
+ )
43
+ return new_nameservers
44
+ end
45
+
46
+ #
47
+ # The default DNS nameserver(s) to query.
48
+ #
49
+ # @return [Array<String>]
50
+ # The addresses of the DNS nameserver(s) to query.
51
+ #
52
+ def dns_nameservers
53
+ @dns_nameservers ||= Network::DNS.nameservers
54
+ end
55
+
56
+ #
57
+ # Sets the primary DNS nameserver to query.
58
+ #
59
+ # @param [String] new_nameserver
60
+ # The address of the new primary DNS nameserver to query.
61
+ #
62
+ # @return [String]
63
+ # The address of the new primary DNS nameserver to query.
64
+ #
65
+ def dns_nameserver=(new_nameserver)
66
+ self.dns_nameservers = [new_nameserver]
67
+ return new_nameserver
68
+ end
69
+
70
+ #
71
+ # Creates a DNS Resolver for the nameserver.
72
+ #
73
+ # @param [Array<String>, String, nil] nameservers
74
+ # Optional DNS nameserver(s) to query.
75
+ #
76
+ # @param [String, nil] nameserver
77
+ # Optional DNS nameserver to query.
78
+ #
79
+ # @return [Resolv, Resolv::DNS]
80
+ # The DNS Resolver.
81
+ #
82
+ # @api public
83
+ #
84
+ def dns_resolver(nameservers: nil, nameserver: nil)
85
+ if nameserver
86
+ Network::DNS.resolver(nameserver: nameserver)
87
+ elsif nameservers
88
+ Network::DNS.resolver(nameservers: nameservers)
89
+ else
90
+ @dns_resolver ||= Network::DNS.resolver(
91
+ nameservers: dns_nameservers
92
+ )
93
+ end
94
+ end
95
+
96
+ #
97
+ # Looks up the address of a hostname.
98
+ #
99
+ # @param [String] host
100
+ # The hostname to lookup.
101
+ #
102
+ # @param [Hash{Symbol => Object}] kwargs
103
+ # Additional keyword arguments.
104
+ #
105
+ # @option [Array<String>, String, nil] :nameservers
106
+ # Optional DNS nameserver(s) to query.
107
+ #
108
+ # @option [String, nil] :nameserver
109
+ # Optional DNS nameserver to query.
110
+ #
111
+ # @return [String, nil]
112
+ # The address of the hostname.
113
+ #
114
+ # @api public
115
+ #
116
+ def dns_get_address(host,**kwargs)
117
+ dns_resolver(**kwargs).get_address(host.to_s)
118
+ end
119
+
120
+ alias dns_lookup dns_get_address
121
+
122
+ #
123
+ # Looks up all addresses of a hostname.
124
+ #
125
+ # @param [String] host
126
+ # The hostname to lookup.
127
+ #
128
+ # @param [Hash{Symbol => Object}] kwargs
129
+ # Additional keyword arguments.
130
+ #
131
+ # @option [Array<String>, String, nil] :nameservers
132
+ # Optional DNS nameserver(s) to query.
133
+ #
134
+ # @option [String, nil] :nameserver
135
+ # Optional DNS nameserver to query.
136
+ #
137
+ # @return [Array<String>]
138
+ # The addresses of the hostname.
139
+ #
140
+ # @api public
141
+ #
142
+ def dns_get_addresses(host,**kwargs)
143
+ dns_resolver(**kwargs).get_addresses(host.to_s)
144
+ end
145
+
146
+ #
147
+ # Looks up the hostname of the address.
148
+ #
149
+ # @param [String] ip
150
+ # The IP address to lookup.
151
+ #
152
+ # @param [Hash{Symbol => Object}] kwargs
153
+ # Additional keyword arguments.
154
+ #
155
+ # @option [Array<String>, String, nil] :nameservers
156
+ # Optional DNS nameserver(s) to query.
157
+ #
158
+ # @option [String, nil] :nameserver
159
+ # Optional DNS nameserver to query.
160
+ #
161
+ # @return [String, nil]
162
+ # The hostname of the address.
163
+ #
164
+ # @api public
165
+ #
166
+ def dns_get_name(ip,**kwargs)
167
+ dns_resolver(**kwargs).get_name(ip.to_s)
168
+ end
169
+
170
+ alias dns_reverse_lookup dns_get_name
171
+
172
+ #
173
+ # Looks up all hostnames associated with the address.
174
+ #
175
+ # @param [String] ip
176
+ # The IP address to lookup.
177
+ #
178
+ # @param [Hash{Symbol => Object}] kwargs
179
+ # Additional keyword arguments.
180
+ #
181
+ # @option [Array<String>, String, nil] :nameservers
182
+ # Optional DNS nameserver(s) to query.
183
+ #
184
+ # @option [String, nil] :nameserver
185
+ # Optional DNS nameserver to query.
186
+ #
187
+ # @return [Array<String>]
188
+ # The hostnames of the address.
189
+ #
190
+ # @api public
191
+ #
192
+ def dns_get_names(ip,**kwargs)
193
+ dns_resolver(**kwargs).get_names(ip.to_s)
194
+ end
195
+
196
+ #
197
+ # Queries a single matching DNS record for the host name.
198
+ #
199
+ # @param [String] name
200
+ # The host name to query.
201
+ #
202
+ # @param [:a, :aaaa, :any, :cname, :hinfo, :loc, :minfo, :mx, :ns, :ptr, :soa, :srv, :txt, :wks] record_type
203
+ # The record type.
204
+ #
205
+ # @param [Hash{Symbol => Object}] kwargs
206
+ # Additional keyword arguments.
207
+ #
208
+ # @option [Array<String>, String, nil] :nameservers
209
+ # Optional DNS nameserver(s) to query.
210
+ #
211
+ # @option [String, nil] :nameserver
212
+ # Optional DNS nameserver to query.
213
+ #
214
+ # @return [Resolv::DNS::Resource, nil]
215
+ # The matching DNS records or `nil` if no matching DNS records
216
+ # could be found.
217
+ #
218
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource
219
+ #
220
+ def dns_get_record(name,record_type,**kwargs)
221
+ dns_resolver(**kwargs).get_record(name.to_s,record_type)
222
+ end
223
+
224
+ #
225
+ # Queries all matching DNS records for the host name.
226
+ #
227
+ # @param [String] name
228
+ # The host name to query.
229
+ #
230
+ # @param [:a, :aaaa, :any, :cname, :hinfo, :loc, :minfo, :mx, :ns, :ptr, :soa, :srv, :txt, :wks] record_type
231
+ # The record type.
232
+ #
233
+ # @param [Hash{Symbol => Object}] kwargs
234
+ # Additional keyword arguments.
235
+ #
236
+ # @option [Array<String>, String, nil] :nameservers
237
+ # Optional DNS nameserver(s) to query.
238
+ #
239
+ # @option [String, nil] :nameserver
240
+ # Optional DNS nameserver to query.
241
+ #
242
+ # @return [Array<Resolv::DNS::Resource>]
243
+ # All matching DNS records.
244
+ #
245
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource
246
+ #
247
+ def dns_get_records(name,record_type,**kwargs)
248
+ dns_resolver(**kwargs).get_records(name.to_s,record_type)
249
+ end
250
+
251
+ #
252
+ # Queries all records of the host name using the `ANY` DNS query.
253
+ #
254
+ # @param [String] name
255
+ # The host name to query.
256
+ #
257
+ # @param [Hash{Symbol => Object}] kwargs
258
+ # Additional keyword arguments.
259
+ #
260
+ # @option [Array<String>, String, nil] :nameservers
261
+ # Optional DNS nameserver(s) to query.
262
+ #
263
+ # @option [String, nil] :nameserver
264
+ # Optional DNS nameserver to query.
265
+ #
266
+ # @return [Array<Resolv::DNS::Resource>]
267
+ # All of the DNS records belonging to the host name.
268
+ #
269
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/ANY
270
+ #
271
+ def dns_get_any_records(name,**kwargs)
272
+ dns_resolver(**kwargs).get_any_records(name.to_s)
273
+ end
274
+
275
+ #
276
+ # Queries the `CNAME` record for the host name.
277
+ #
278
+ # @param [String] name
279
+ # The host name to query.
280
+ #
281
+ # @param [Hash{Symbol => Object}] kwargs
282
+ # Additional keyword arguments.
283
+ #
284
+ # @option [Array<String>, String, nil] :nameservers
285
+ # Optional DNS nameserver(s) to query.
286
+ #
287
+ # @option [String, nil] :nameserver
288
+ # Optional DNS nameserver to query.
289
+ #
290
+ # @return [Resolv::DNS::Resource::IN::CNAME, nil]
291
+ # The `CNAME` record or `nil` if the host name has no `CNAME`
292
+ # record.
293
+ #
294
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/CNAME
295
+ #
296
+ def dns_get_cname_record(name,**kwargs)
297
+ dns_resolver(**kwargs).get_cname_record(name.to_s)
298
+ end
299
+
300
+ #
301
+ # Queries the canonical name for the host name.
302
+ #
303
+ # @param [String] name
304
+ # The host name to query.
305
+ #
306
+ # @param [Hash{Symbol => Object}] kwargs
307
+ # Additional keyword arguments.
308
+ #
309
+ # @option [Array<String>, String, nil] :nameservers
310
+ # Optional DNS nameserver(s) to query.
311
+ #
312
+ # @option [String, nil] :nameserver
313
+ # Optional DNS nameserver to query.
314
+ #
315
+ # @return [String, nil]
316
+ # The canonical name for the host or `nil` if the host has no
317
+ # `CNAME` record.
318
+ #
319
+ def dns_get_cname(name,**kwargs)
320
+ dns_resolver(**kwargs).get_cname(name.to_s)
321
+ end
322
+
323
+ #
324
+ # Queries the `HINFO` record for the host name.
325
+ #
326
+ # @param [String] name
327
+ # The host name to query.
328
+ #
329
+ # @param [Hash{Symbol => Object}] kwargs
330
+ # Additional keyword arguments.
331
+ #
332
+ # @option [Array<String>, String, nil] :nameservers
333
+ # Optional DNS nameserver(s) to query.
334
+ #
335
+ # @option [String, nil] :nameserver
336
+ # Optional DNS nameserver to query.
337
+ #
338
+ # @return [Resolv::DNS::Resource::IN::HINFO, nil]
339
+ # The `HINFO` DNS record or `nil` if the host name has no `HINFO`
340
+ # record.
341
+ #
342
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/HINFO
343
+ #
344
+ def dns_get_hinfo_record(name,**kwargs)
345
+ dns_resolver(**kwargs).get_hinfo_record(name.to_s)
346
+ end
347
+
348
+ #
349
+ # Queries the first `A` record belonging to the host name.
350
+ #
351
+ # @param [String] name
352
+ # The host name to query.
353
+ #
354
+ # @param [Hash{Symbol => Object}] kwargs
355
+ # Additional keyword arguments.
356
+ #
357
+ # @option [Array<String>, String, nil] :nameservers
358
+ # Optional DNS nameserver(s) to query.
359
+ #
360
+ # @option [String, nil] :nameserver
361
+ # Optional DNS nameserver to query.
362
+ #
363
+ # @return [Resolv::DNS::Resource::IN::A, nil]
364
+ # The first `A` DNS record or `nil` if the host name has no `A`
365
+ # records.
366
+ #
367
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/A
368
+ #
369
+ def dns_get_a_record(name,**kwargs)
370
+ dns_resolver(**kwargs).get_a_record(name.to_s)
371
+ end
372
+
373
+ #
374
+ # Queries the first IPv4 address belonging to the host name.
375
+ #
376
+ # @param [String] name
377
+ # The host name to query.
378
+ #
379
+ # @param [Hash{Symbol => Object}] kwargs
380
+ # Additional keyword arguments.
381
+ #
382
+ # @option [Array<String>, String, nil] :nameservers
383
+ # Optional DNS nameserver(s) to query.
384
+ #
385
+ # @option [String, nil] :nameserver
386
+ # Optional DNS nameserver to query.
387
+ #
388
+ # @return [String, nil]
389
+ # The first IPv4 address belonging to the host name.
390
+ #
391
+ def dns_get_a_address(name,**kwargs)
392
+ dns_resolver(**kwargs).get_a_address(name.to_s)
393
+ end
394
+
395
+ #
396
+ # Queries all `A` records belonging to the host name.
397
+ #
398
+ # @param [String] name
399
+ # The host name to query.
400
+ #
401
+ # @param [Hash{Symbol => Object}] kwargs
402
+ # Additional keyword arguments.
403
+ #
404
+ # @option [Array<String>, String, nil] :nameservers
405
+ # Optional DNS nameserver(s) to query.
406
+ #
407
+ # @option [String, nil] :nameserver
408
+ # Optional DNS nameserver to query.
409
+ #
410
+ # @return [Array<Resolv::DNS::Resource::IN::A>]
411
+ # All of the `A` DNS records belonging to the host name.
412
+ #
413
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/A
414
+ #
415
+ def dns_get_a_records(name,**kwargs)
416
+ dns_resolver(**kwargs).get_a_records(name.to_s)
417
+ end
418
+
419
+ #
420
+ # Queries all IPv4 addresses belonging to the host name.
421
+ #
422
+ # @param [String] name
423
+ # The host name to query.
424
+ #
425
+ # @param [Hash{Symbol => Object}] kwargs
426
+ # Additional keyword arguments.
427
+ #
428
+ # @option [Array<String>, String, nil] :nameservers
429
+ # Optional DNS nameserver(s) to query.
430
+ #
431
+ # @option [String, nil] :nameserver
432
+ # Optional DNS nameserver to query.
433
+ #
434
+ # @return [Array<String>]
435
+ # All of the IPv4 addresses belonging to the host name.
436
+ #
437
+ def dns_get_a_addresses(name,**kwargs)
438
+ dns_resolver(**kwargs).get_a_addresses(name.to_s)
439
+ end
440
+
441
+ #
442
+ # Queries the first `AAAA` DNS records belonging to the host name.
443
+ #
444
+ # @param [String] name
445
+ # The host name to query.
446
+ #
447
+ # @param [Hash{Symbol => Object}] kwargs
448
+ # Additional keyword arguments.
449
+ #
450
+ # @option [Array<String>, String, nil] :nameservers
451
+ # Optional DNS nameserver(s) to query.
452
+ #
453
+ # @option [String, nil] :nameserver
454
+ # Optional DNS nameserver to query.
455
+ #
456
+ # @return [Resolv::DNS::Resource::IN::AAAA, nil]
457
+ # The first `AAAA` DNS record or `nil` if the host name has no
458
+ # `AAAA` records.
459
+ #
460
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/AAAA
461
+ #
462
+ def dns_get_aaaa_record(name,**kwargs)
463
+ dns_resolver(**kwargs).get_aaaa_record(name.to_s)
464
+ end
465
+
466
+ #
467
+ # Queries the first IPv6 address belonging to the host name.
468
+ #
469
+ # @param [String] name
470
+ # The host name to query.
471
+ #
472
+ # @param [Hash{Symbol => Object}] kwargs
473
+ # Additional keyword arguments.
474
+ #
475
+ # @option [Array<String>, String, nil] :nameservers
476
+ # Optional DNS nameserver(s) to query.
477
+ #
478
+ # @option [String, nil] :nameserver
479
+ # Optional DNS nameserver to query.
480
+ #
481
+ # @return [String, nil]
482
+ # The first IPv6 address or `nil` if the host name has no IPv6
483
+ # addresses.
484
+ #
485
+ def dns_get_aaaa_address(name,**kwargs)
486
+ dns_resolver(**kwargs).get_aaaa_address(name.to_s)
487
+ end
488
+
489
+ #
490
+ # Queries all `AAAA` DNS records belonging to the host name.
491
+ #
492
+ # @param [String] name
493
+ # The host name to query.
494
+ #
495
+ # @param [Hash{Symbol => Object}] kwargs
496
+ # Additional keyword arguments.
497
+ #
498
+ # @option [Array<String>, String, nil] :nameservers
499
+ # Optional DNS nameserver(s) to query.
500
+ #
501
+ # @option [String, nil] :nameserver
502
+ # Optional DNS nameserver to query.
503
+ #
504
+ # @return [Array<Resolv::DNS::Resource::IN::AAAA>]
505
+ # All of the `AAAA` DNS records belonging to the host name.
506
+ #
507
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/AAAA
508
+ #
509
+ def dns_get_aaaa_records(name,**kwargs)
510
+ dns_resolver(**kwargs).get_aaaa_records(name.to_s)
511
+ end
512
+
513
+ #
514
+ # Queries all IPv6 addresses belonging to the host name.
515
+ #
516
+ # @param [String] name
517
+ # The host name to query.
518
+ #
519
+ # @param [Hash{Symbol => Object}] kwargs
520
+ # Additional keyword arguments.
521
+ #
522
+ # @option [Array<String>, String, nil] :nameservers
523
+ # Optional DNS nameserver(s) to query.
524
+ #
525
+ # @option [String, nil] :nameserver
526
+ # Optional DNS nameserver to query.
527
+ #
528
+ # @return [Array<String>]
529
+ # All IPv6 addresses belonging to the host name.
530
+ #
531
+ def dns_get_aaaa_addresses(name,**kwargs)
532
+ dns_resolver(**kwargs).get_aaaa_addresses(name.to_s)
533
+ end
534
+
535
+ #
536
+ # Queries all `SRV` DNS records belonging to the host name.
537
+ #
538
+ # @param [String] name
539
+ # The host name to query.
540
+ #
541
+ # @param [Hash{Symbol => Object}] kwargs
542
+ # Additional keyword arguments.
543
+ #
544
+ # @option [Array<String>, String, nil] :nameservers
545
+ # Optional DNS nameserver(s) to query.
546
+ #
547
+ # @option [String, nil] :nameserver
548
+ # Optional DNS nameserver to query.
549
+ #
550
+ # @return [Array<Resolv::DNS::Resource::IN::SRV>]
551
+ # All `SRV` DNS records belonging to the host name.
552
+ #
553
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/SRV
554
+ #
555
+ def dns_get_srv_records(name,**kwargs)
556
+ dns_resolver(**kwargs).get_srv_records(name.to_s)
557
+ end
558
+
559
+ #
560
+ # Queries all `WKS` (Well-Known-Service) DNS records belonging to the
561
+ # host name.
562
+ #
563
+ # @param [String] name
564
+ # The host name to query.
565
+ #
566
+ # @param [Hash{Symbol => Object}] kwargs
567
+ # Additional keyword arguments.
568
+ #
569
+ # @option [Array<String>, String, nil] :nameservers
570
+ # Optional DNS nameserver(s) to query.
571
+ #
572
+ # @option [String, nil] :nameserver
573
+ # Optional DNS nameserver to query.
574
+ #
575
+ # @return [Array<Resolv::DNS::Resource::IN::WKS>]
576
+ # All `WKS` DNS records belonging to the host name.
577
+ #
578
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/WKS
579
+ #
580
+ def dns_get_wks_records(name,**kwargs)
581
+ dns_resolver(**kwargs).get_wks_records(name.to_s)
582
+ end
583
+
584
+ #
585
+ # Queries the `LOC` (Location) DNS record of the host name.
586
+ #
587
+ # @param [String] name
588
+ # The host name to query.
589
+ #
590
+ # @param [Hash{Symbol => Object}] kwargs
591
+ # Additional keyword arguments.
592
+ #
593
+ # @option [Array<String>, String, nil] :nameservers
594
+ # Optional DNS nameserver(s) to query.
595
+ #
596
+ # @option [String, nil] :nameserver
597
+ # Optional DNS nameserver to query.
598
+ #
599
+ # @return [Resolv::DNS::Resource::LOC, nil]
600
+ # The `LOC` DNS record of the host name or `nil` if the host name
601
+ # has no `LOC` record.
602
+ #
603
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/LOC
604
+ #
605
+ def dns_get_loc_record(name,**kwargs)
606
+ dns_resolver(**kwargs).get_loc_record(name.to_s)
607
+ end
608
+
609
+ #
610
+ # Queries the `MINFO` (Machine-Info) DNS record of the host name.
611
+ #
612
+ # @param [String] name
613
+ # The host name to query.
614
+ #
615
+ # @param [Hash{Symbol => Object}] kwargs
616
+ # Additional keyword arguments.
617
+ #
618
+ # @option [Array<String>, String, nil] :nameservers
619
+ # Optional DNS nameserver(s) to query.
620
+ #
621
+ # @option [String, nil] :nameserver
622
+ # Optional DNS nameserver to query.
623
+ #
624
+ # @return [Resolv::DNS::Resource::MINFO, nil]
625
+ # The `MINFO` DNS record of the host name or `nil` if the host name
626
+ # has no `MINFO` record.
627
+ #
628
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/MINFO
629
+ #
630
+ def dns_get_minfo_record(name,**kwargs)
631
+ dns_resolver(**kwargs).get_minfo_record(name.to_s)
632
+ end
633
+
634
+ #
635
+ # Queries all `MX` DNS records belonging to the host name.
636
+ #
637
+ # @param [String] name
638
+ # The host name to query.
639
+ #
640
+ # @param [Hash{Symbol => Object}] kwargs
641
+ # Additional keyword arguments.
642
+ #
643
+ # @option [Array<String>, String, nil] :nameservers
644
+ # Optional DNS nameserver(s) to query.
645
+ #
646
+ # @option [String, nil] :nameserver
647
+ # Optional DNS nameserver to query.
648
+ #
649
+ # @return [Array<Resolv::DNS::Resource::MX>]
650
+ # All `MX` DNS records belonging to the host name.
651
+ #
652
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/MX
653
+ #
654
+ def dns_get_mx_records(name,**kwargs)
655
+ dns_resolver(**kwargs).get_mx_records(name.to_s)
656
+ end
657
+
658
+ #
659
+ # Queries the mailservers for the host name.
660
+ #
661
+ # @param [String] name
662
+ # The host name to query.
663
+ #
664
+ # @param [Hash{Symbol => Object}] kwargs
665
+ # Additional keyword arguments.
666
+ #
667
+ # @option [Array<String>, String, nil] :nameservers
668
+ # Optional DNS nameserver(s) to query.
669
+ #
670
+ # @option [String, nil] :nameserver
671
+ # Optional DNS nameserver to query.
672
+ #
673
+ # @return [Array<String>]
674
+ # The host names of the mailservers serving the given host name.
675
+ #
676
+ def dns_get_mailservers(name,**kwargs)
677
+ dns_resolver(**kwargs).get_mailservers(name.to_s)
678
+ end
679
+
680
+ #
681
+ # Queries all `NS` DNS records belonging to the host name.
682
+ #
683
+ # @param [String] name
684
+ # The host name to query.
685
+ #
686
+ # @param [Hash{Symbol => Object}] kwargs
687
+ # Additional keyword arguments.
688
+ #
689
+ # @option [Array<String>, String, nil] :nameservers
690
+ # Optional DNS nameserver(s) to query.
691
+ #
692
+ # @option [String, nil] :nameserver
693
+ # Optional DNS nameserver to query.
694
+ #
695
+ # @return [Array<Resolv::DNS::Resource::NS>]
696
+ # All `NS` DNS records belonging to the host name.
697
+ #
698
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/NS
699
+ #
700
+ def dns_get_ns_records(name,**kwargs)
701
+ dns_resolver(**kwargs).get_ns_records(name.to_s)
702
+ end
703
+
704
+ #
705
+ # Queries the nameservers for the host name.
706
+ #
707
+ # @param [String] name
708
+ # The host name to query.
709
+ #
710
+ # @param [Hash{Symbol => Object}] kwargs
711
+ # Additional keyword arguments.
712
+ #
713
+ # @option [Array<String>, String, nil] :nameservers
714
+ # Optional DNS nameserver(s) to query.
715
+ #
716
+ # @option [String, nil] :nameserver
717
+ # Optional DNS nameserver to query.
718
+ #
719
+ # @return [Array<String>]
720
+ # The host names of the nameservers serving the given host name.
721
+ #
722
+ def dns_get_nameservers(name,**kwargs)
723
+ dns_resolver(**kwargs).get_nameservers(name.to_s)
724
+ end
725
+
726
+ #
727
+ # Queries the first `PTR` DNS record for the IP address.
728
+ #
729
+ # @param [String] ip
730
+ # The IP address to query.
731
+ #
732
+ # @param [Hash{Symbol => Object}] kwargs
733
+ # Additional keyword arguments.
734
+ #
735
+ # @option [Array<String>, String, nil] :nameservers
736
+ # Optional DNS nameserver(s) to query.
737
+ #
738
+ # @option [String, nil] :nameserver
739
+ # Optional DNS nameserver to query.
740
+ #
741
+ # @return [Resolv::DNS::Resource::PTR, nil]
742
+ # The first `PTR` DNS record of the host name or `nil` if the host
743
+ # name has no `PTR` records.
744
+ #
745
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/PTR
746
+ #
747
+ def dns_get_ptr_record(ip,**kwargs)
748
+ dns_resolver(**kwargs).get_ptr_record(ip.to_s)
749
+ end
750
+
751
+ #
752
+ # Queries the `PTR` host name for the IP address.
753
+ #
754
+ # @param [String] ip
755
+ # The IP address to query.
756
+ #
757
+ # @param [Hash{Symbol => Object}] kwargs
758
+ # Additional keyword arguments.
759
+ #
760
+ # @option [Array<String>, String, nil] :nameservers
761
+ # Optional DNS nameserver(s) to query.
762
+ #
763
+ # @option [String, nil] :nameserver
764
+ # Optional DNS nameserver to query.
765
+ #
766
+ # @return [String, nil]
767
+ # The host name that points to the given IP.
768
+ #
769
+ def dns_get_ptr_name(ip,**kwargs)
770
+ dns_resolver(**kwargs).get_ptr_name(ip.to_s)
771
+ end
772
+
773
+ #
774
+ # Queries all `PTR` DNS records for the IP address.
775
+ #
776
+ # @param [String] ip
777
+ # The IP address to query.
778
+ #
779
+ # @param [Hash{Symbol => Object}] kwargs
780
+ # Additional keyword arguments.
781
+ #
782
+ # @option [Array<String>, String, nil] :nameservers
783
+ # Optional DNS nameserver(s) to query.
784
+ #
785
+ # @option [String, nil] :nameserver
786
+ # Optional DNS nameserver to query.
787
+ #
788
+ # @return [Array<Resolv::DNS::Resource::PTR>]
789
+ # All `PTR` DNS records for the given IP.
790
+ #
791
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/PTR
792
+ #
793
+ def dns_get_ptr_records(ip,**kwargs)
794
+ dns_resolver(**kwargs).get_ptr_records(ip.to_s)
795
+ end
796
+
797
+ #
798
+ # Queries all `PTR` names for the IP address.
799
+ #
800
+ # @param [String] ip
801
+ # The IP address to query.
802
+ #
803
+ # @param [Hash{Symbol => Object}] kwargs
804
+ # Additional keyword arguments.
805
+ #
806
+ # @option [Array<String>, String, nil] :nameservers
807
+ # Optional DNS nameserver(s) to query.
808
+ #
809
+ # @option [String, nil] :nameserver
810
+ # Optional DNS nameserver to query.
811
+ #
812
+ # @return [Array<String>]
813
+ # The `PTR` names for the given IP.
814
+ #
815
+ def dns_get_ptr_names(ip,**kwargs)
816
+ dns_resolver(**kwargs).get_ptr_names(ip.to_s)
817
+ end
818
+
819
+ #
820
+ # Queries the first `SOA` DNS record belonging to the host name.
821
+ #
822
+ # @param [String] name
823
+ # The host name to query.
824
+ #
825
+ # @param [Hash{Symbol => Object}] kwargs
826
+ # Additional keyword arguments.
827
+ #
828
+ # @option [Array<String>, String, nil] :nameservers
829
+ # Optional DNS nameserver(s) to query.
830
+ #
831
+ # @option [String, nil] :nameserver
832
+ # Optional DNS nameserver to query.
833
+ #
834
+ # @return [Resolv::DNS::Resource::SOA, nil]
835
+ # The first `SOA` DNS record for the host name or `nil` if the host
836
+ # name has no `SOA` records.
837
+ #
838
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/SOA
839
+ #
840
+ def dns_get_soa_record(name,**kwargs)
841
+ dns_resolver(**kwargs).get_soa_record(name.to_s)
842
+ end
843
+
844
+ #
845
+ # Queiries the first `TXT` DNS record belonging to the host name.
846
+ #
847
+ # @param [String] name
848
+ # The host name to query.
849
+ #
850
+ # @param [Hash{Symbol => Object}] kwargs
851
+ # Additional keyword arguments.
852
+ #
853
+ # @option [Array<String>, String, nil] :nameservers
854
+ # Optional DNS nameserver(s) to query.
855
+ #
856
+ # @option [String, nil] :nameserver
857
+ # Optional DNS nameserver to query.
858
+ #
859
+ # @return [Resolv::DNS::Resource::TXT, nil]
860
+ # The first `TXT` DNS record for the host name or `nil` if the host
861
+ # name has no `TXT` records.
862
+ #
863
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/TXT
864
+ #
865
+ def dns_get_txt_record(name,**kwargs)
866
+ dns_resolver(**kwargs).get_txt_record(name.to_s)
867
+ end
868
+
869
+ #
870
+ # Queries the first `TXT` string belonging to the host name.
871
+ #
872
+ # @param [String] name
873
+ # The host name to query.
874
+ #
875
+ # @param [Hash{Symbol => Object}] kwargs
876
+ # Additional keyword arguments.
877
+ #
878
+ # @option [Array<String>, String, nil] :nameservers
879
+ # Optional DNS nameserver(s) to query.
880
+ #
881
+ # @option [String, nil] :nameserver
882
+ # Optional DNS nameserver to query.
883
+ #
884
+ # @return [String, nil]
885
+ # The first `TXT` string belonging to the host name or `nil` if the
886
+ # host name has no `TXT` records.
887
+ #
888
+ def dns_get_txt_string(name,**kwargs)
889
+ dns_resolver(**kwargs).get_txt_string(name.to_s)
890
+ end
891
+
892
+ #
893
+ # Queries all `TXT` DNS records belonging to the host name.
894
+ #
895
+ # @param [String] name
896
+ # The host name to query.
897
+ #
898
+ # @param [Hash{Symbol => Object}] kwargs
899
+ # Additional keyword arguments.
900
+ #
901
+ # @option [Array<String>, String, nil] :nameservers
902
+ # Optional DNS nameserver(s) to query.
903
+ #
904
+ # @option [String, nil] :nameserver
905
+ # Optional DNS nameserver to query.
906
+ #
907
+ # @return [Array<Resolv::DNS::Resource::TXT>]
908
+ # All of the `TXT` DNS records belonging to the host name.
909
+ #
910
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/TXT
911
+ #
912
+ def dns_get_txt_records(name,**kwargs)
913
+ dns_resolver(**kwargs).get_txt_records(name.to_s)
914
+ end
915
+
916
+ #
917
+ # Queries all of the `TXT` string values of the host name.
918
+ #
919
+ # @param [String] name
920
+ # The host name to query.
921
+ #
922
+ # @param [Hash{Symbol => Object}] kwargs
923
+ # Additional keyword arguments.
924
+ #
925
+ # @option [Array<String>, String, nil] :nameservers
926
+ # Optional DNS nameserver(s) to query.
927
+ #
928
+ # @option [String, nil] :nameserver
929
+ # Optional DNS nameserver to query.
930
+ #
931
+ # @return [Array<String>]
932
+ # All `TXT` string values belonging of the host name.
933
+ #
934
+ def dns_get_txt_strings(name,**kwargs)
935
+ dns_resolver(**kwargs).get_txt_strings(name.to_s)
936
+ end
937
+ end
938
+ end
939
+ end
940
+ end
941
+ end