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,105 @@
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 <http://www.gnu.org/licenses/>.
17
+ #
18
+
19
+ require 'ronin/support/crypto/key/dh'
20
+ require 'ronin/support/crypto/key/dsa'
21
+ require 'ronin/support/crypto/key/ec'
22
+ require 'ronin/support/crypto/key/rsa'
23
+
24
+ module Ronin
25
+ module Support
26
+ module Crypto
27
+ module Key
28
+ #
29
+ # Parses an PEM encoded key.
30
+ #
31
+ # @param [String] key
32
+ # The PEM or DER encoded key string.
33
+ #
34
+ # @param [String, nil] password
35
+ # Optional password to decrypt the key.
36
+ #
37
+ # @return [OpenSSL::PKey]
38
+ # The parsed key.
39
+ #
40
+ # @return [DSA, EC, RSA]
41
+ # The parsed key.
42
+ #
43
+ # @raise [ArgumentError]
44
+ # The key type could not be determined from the key file.
45
+ #
46
+ # @api public
47
+ #
48
+ def self.parse(key, password: nil)
49
+ key_class = if key.start_with?('-----BEGIN RSA PRIVATE KEY-----')
50
+ RSA
51
+ elsif key.start_with?('-----BEGIN DSA PRIVATE KEY-----')
52
+ DSA
53
+ elsif key.start_with?('-----BEGIN EC PRIVATE KEY-----')
54
+ EC
55
+ else
56
+ raise(ArgumentError,"cannot determine the key type for key: #{key.inspect}")
57
+ end
58
+
59
+ key_class.parse(key, password: password)
60
+ end
61
+
62
+ #
63
+ # Alias for {parse}.
64
+ #
65
+ # @param [String] key
66
+ # The PEM or DER encoded key string.
67
+ #
68
+ # @param [Hash{Symbol => Object}] kwargs
69
+ # Additional keyword arguments for {parse}.
70
+ #
71
+ # @option kwargs [String, nil] :password
72
+ # Optional password to decrypt the key.
73
+ #
74
+ # @return [DSA, EC, RSA]
75
+ # The parsed key.
76
+ #
77
+ # @see parse
78
+ #
79
+ # @api public
80
+ #
81
+ def self.load(key,**kwargs)
82
+ parse(key,**kwargs)
83
+ end
84
+
85
+ #
86
+ # Loads the key from the file.
87
+ #
88
+ # @param [String] path
89
+ # The path to the key file.
90
+ #
91
+ # @return [DSA, EC, RSA]
92
+ # The loaded key.
93
+ #
94
+ # @raise [ArgumentError]
95
+ # The key type could not be determined from the key file.
96
+ #
97
+ # @api public
98
+ #
99
+ def self.load_file(path)
100
+ parse(File.read(path))
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,620 @@
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 <http://www.gnu.org/licenses/>.
17
+ #
18
+
19
+ require 'ronin/support/crypto'
20
+
21
+ module Ronin
22
+ module Support
23
+ module Crypto
24
+ #
25
+ # Provides helper methods for cryptographic functions.
26
+ #
27
+ # @api public
28
+ #
29
+ # @since 1.0.0
30
+ #
31
+ module Mixin
32
+ #
33
+ # Looks up a digest.
34
+ #
35
+ # @param [String, Symbol] name
36
+ # The name of the digest.
37
+ #
38
+ # @return [OpenSSL::Digest]
39
+ # The OpenSSL Digest class.
40
+ #
41
+ # @example
42
+ # crypto_digest(:ripemd160)
43
+ # # => OpenSSL::Digest::RIPEMD160
44
+ #
45
+ # @see Crypto.digest
46
+ #
47
+ def crypto_digest(name)
48
+ Crypto.digest(name)
49
+ end
50
+
51
+ alias digest crypto_digest
52
+
53
+ #
54
+ # Creates a new HMAC.
55
+ #
56
+ # @param [String, nil] data
57
+ # The optional data to sign.
58
+ #
59
+ # @param [String] key
60
+ # The secret key for the HMAC.
61
+ #
62
+ # @param [Symbol] digest
63
+ # The digest algorithm for the HMAC.
64
+ #
65
+ # @return [String]
66
+ # The hex-encoded HMAC for the String.
67
+ #
68
+ # @see http://rubydoc.info/stdlib/openssl/OpenSSL/HMAC
69
+ #
70
+ # @example
71
+ # crypto_hmac('secret')
72
+ #
73
+ # @see Crypto.hmac
74
+ #
75
+ def crypto_hmac(data=nil, key: , digest: :sha1)
76
+ Crypto.hmac(data, key: key, digest: digest)
77
+ end
78
+
79
+ alias hmac crypto_hmac
80
+
81
+ #
82
+ # Creates a cipher.
83
+ #
84
+ # @param [String] name
85
+ # The cipher name.
86
+ #
87
+ # @param [Hash{Symbol => Object}] kwargs
88
+ # Additional keyword arguments for {Cipher#initialize}.
89
+ #
90
+ # @option kwargs [:encrypt, :decrypt] :direction
91
+ # Specifies whether to encrypt or decrypt data.
92
+ #
93
+ # @option kwargs [Symbol] :hash (:sha256)
94
+ # The algorithm to hash the `:password`.
95
+ #
96
+ # @option kwargs [String] :key
97
+ # The secret key to use.
98
+ #
99
+ # @option kwargs [String] :password
100
+ # The password for the cipher.
101
+ #
102
+ # @option kwargs [String] :iv
103
+ # The optional Initial Vector (IV).
104
+ #
105
+ # @option kwargs [Integer] :padding
106
+ # Sets the padding for the cipher.
107
+ #
108
+ # @return [OpenSSL::Cipher]
109
+ # The newly created cipher.
110
+ #
111
+ # @raise [ArgumentError]
112
+ # Either the the `key:` or `password:` keyword argument must be given.
113
+ #
114
+ # @example
115
+ # crypto_cipher('aes-128-cbc', mode: :encrypt, key 'secret'.md5)
116
+ # # => #<OpenSSL::Cipher:0x0000000170d108>
117
+ #
118
+ # @see Crypto.cipher
119
+ #
120
+ def crypto_cipher(name,**kwargs)
121
+ Crypto.cipher(name,**kwargs)
122
+ end
123
+
124
+ alias cipher crypto_cipher
125
+
126
+ #
127
+ # Encrypts data using the cipher.
128
+ #
129
+ # @param [#to_s] data
130
+ # The data to encrypt.
131
+ #
132
+ # @param [String] cipher
133
+ # The cipher name (ex: `"aes-256-cbc"`).
134
+ #
135
+ # @param [Hash{Symbol => Object}] kwargs
136
+ # Additional keyword arguments for {cipher}.
137
+ #
138
+ # @return [String]
139
+ # The encrypted data.
140
+ #
141
+ # @raise [ArgumentError]
142
+ # Either the the `key:` or `password:` keyword argument must be given.
143
+ #
144
+ # @see Crypto.encrypt
145
+ #
146
+ def crypto_encrypt(data, cipher: ,**kwargs)
147
+ Crypto.encrypt(data, cipher: cipher, **kwargs)
148
+ end
149
+
150
+ alias encrypt crypto_encrypt
151
+
152
+ #
153
+ # Decrypts data using the cipher.
154
+ #
155
+ # @param [#to_s] data
156
+ # The data to decrypt.
157
+ #
158
+ # @param [String] cipher
159
+ # The cipher name (ex: `"aes-256-cbc"`).
160
+ #
161
+ # @param [Hash{Symbol => Object}] kwargs
162
+ # Additional keyword arguments for {cipher}.
163
+ #
164
+ # @return [String]
165
+ # The decrypted data.
166
+ #
167
+ # @raise [ArgumentError]
168
+ # Either the the `key:` or `password:` keyword argument must be given.
169
+ #
170
+ # @see Crypto.decrypt
171
+ #
172
+ def crypto_decrypt(data, cipher: ,**kwargs)
173
+ Crypto.decrypt(data, cipher: cipher, **kwargs)
174
+ end
175
+
176
+ alias decrypt crypto_decrypt
177
+
178
+ #
179
+ # Creates a new AES cipher.
180
+ #
181
+ # @param [Hash{Symbol => Object}] kwargs
182
+ # Additional keyword arguments for {Cipher::AES#initialize}.
183
+ #
184
+ # @option kwargs [Integer] :key_size
185
+ # The desired key size in bits.
186
+ #
187
+ # @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] :mode (:cbc)
188
+ # The desired AES cipher mode.
189
+ #
190
+ # @option kwargs [Symbol] :hash (:sha256)
191
+ # The algorithm to hash the `:password`.
192
+ #
193
+ # @option kwargs [String] :key
194
+ # The secret key to use.
195
+ #
196
+ # @option kwargs [String] :password
197
+ # The password for the cipher.
198
+ #
199
+ # @option kwargs [String] :iv
200
+ # The optional Initial Vector (IV).
201
+ #
202
+ # @option kwargs [Integer] :padding
203
+ # Sets the padding for the cipher.
204
+ #
205
+ # @return [Cipher::AES]
206
+ # The new AES cipher.
207
+ #
208
+ # @example
209
+ # crypto_aes_cipher(direction: :encrypt, password: 's3cr3t')
210
+ # # => #<Ronin::Support::Crypto::Cipher::AES:0x00007f2b84dfa6b8 @key_size=256, @mode=:cbc>
211
+ #
212
+ # @see Crypto.aes_cipher
213
+ #
214
+ def crypto_aes_cipher(**kwargs)
215
+ Crypto.aes_cipher(**kwargs)
216
+ end
217
+
218
+ alias aes_cipher crypto_aes_cipher
219
+
220
+ #
221
+ # Encrypts data using AES.
222
+ #
223
+ # @param [#to_s] data
224
+ # The data to encrypt.
225
+ #
226
+ # @param [Hash{Symbol => Object}] kwargs
227
+ # Additional keyword arguments for {Cipher.aes_cipher}.
228
+ #
229
+ # @option kwargs [Integer] :key_size
230
+ # The desired key size in bits.
231
+ #
232
+ # @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] mode (:cbc)
233
+ # The desired AES cipher mode.
234
+ #
235
+ # @option kwargs [Symbol] :hash (:sha256)
236
+ # The algorithm to hash the `:password`.
237
+ #
238
+ # @option kwargs [String] :key
239
+ # The secret key to use.
240
+ #
241
+ # @option kwargs [String] :password
242
+ # The password for the cipher.
243
+ #
244
+ # @option kwargs [String] :iv
245
+ # The optional Initial Vector (IV).
246
+ #
247
+ # @option kwargs [Integer] :padding
248
+ # Sets the padding for the cipher.
249
+ #
250
+ # @return [String]
251
+ # The encrypted data.
252
+ #
253
+ # @raise [ArgumentError]
254
+ # Either the the `key:` or `password:` keyword argument must be given.
255
+ #
256
+ # @see Crypto.aes_encrypt
257
+ #
258
+ def crypto_aes_encrypt(data,**kwargs)
259
+ Crypto.aes_encrypt(data,**kwargs)
260
+ end
261
+
262
+ alias aes_encrypt crypto_aes_encrypt
263
+
264
+ #
265
+ # Decrypts data using AES.
266
+ #
267
+ # @param [#to_s] data
268
+ # The data to encrypt.
269
+ #
270
+ # @param [Hash{Symbol => Object}] kwargs
271
+ # Additional keyword arguments for {Cipher.aes_cipher}.
272
+ #
273
+ # @option kwargs [Integer] :key_size
274
+ # The desired key size in bits.
275
+ #
276
+ # @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] mode (:cbc)
277
+ # The desired AES cipher mode.
278
+ #
279
+ # @option kwargs [Symbol] :hash (:sha256)
280
+ # The algorithm to hash the `:password`.
281
+ #
282
+ # @option kwargs [String] :key
283
+ # The secret key to use.
284
+ #
285
+ # @option kwargs [String] :password
286
+ # The password for the cipher.
287
+ #
288
+ # @option kwargs [String] :iv
289
+ # The optional Initial Vector (IV).
290
+ #
291
+ # @option kwargs [Integer] :padding
292
+ # Sets the padding for the cipher.
293
+ #
294
+ # @return [String]
295
+ # The encrypted data.
296
+ #
297
+ # @raise [ArgumentError]
298
+ # Either the the `key:` or `password:` keyword argument must be given.
299
+ #
300
+ # @see Crypto.aes_decrypt
301
+ #
302
+ def crypto_aes_decrypt(data,**kwargs)
303
+ Crypto.aes_decrypt(data,**kwargs)
304
+ end
305
+
306
+ alias aes_decrypt crypto_aes_decrypt
307
+
308
+ #
309
+ # Creates a new AES-128 cipher.
310
+ #
311
+ # @param [Hash{Symbol => Object}] kwargs
312
+ # Additional keyword arguments for {Cipher::AES128#initialize}.
313
+ #
314
+ # @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] :mode (:cbc)
315
+ # The desired AES cipher mode.
316
+ #
317
+ # @option kwargs [Symbol] :hash (:md5)
318
+ # The algorithm to hash the `:password`.
319
+ #
320
+ # @option kwargs [String] :key
321
+ # The secret key to use.
322
+ #
323
+ # @option kwargs [String] :password
324
+ # The password for the cipher.
325
+ #
326
+ # @option kwargs [String] :iv
327
+ # The optional Initial Vector (IV).
328
+ #
329
+ # @option kwargs [Integer] :padding
330
+ # Sets the padding for the cipher.
331
+ #
332
+ # @return [Cipher::AES]
333
+ # The new AES cipher.
334
+ #
335
+ # @example
336
+ # Crypto.aes128_cipher(direction: :encrypt, password: 's3cr3t')
337
+ # # => #<Ronin::Support::Crypto::Cipher::AES128:0x00007f8bde789648 @key_size=128, @mode=:cbc>
338
+ #
339
+ # @see Crypto.aes128_cipher
340
+ #
341
+ def crypto_aes128_cipher(**kwargs)
342
+ Crypto.aes128_cipher(**kwargs)
343
+ end
344
+
345
+ alias aes128_cipher crypto_aes128_cipher
346
+
347
+ #
348
+ # Encrypts data using AES-128.
349
+ #
350
+ # @param [#to_s] data
351
+ # The data to encrypt.
352
+ #
353
+ # @param [Hash{Symbol => Object}] kwargs
354
+ # Additional keyword arguments for {Cipher.aes128_cipher}.
355
+ #
356
+ # @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] mode (:cbc)
357
+ # The desired AES cipher mode.
358
+ #
359
+ # @option kwargs [Symbol] :hash (:md5)
360
+ # The algorithm to hash the `:password`.
361
+ #
362
+ # @option kwargs [String] :key
363
+ # The secret key to use.
364
+ #
365
+ # @option kwargs [String] :password
366
+ # The password for the cipher.
367
+ #
368
+ # @option kwargs [String] :iv
369
+ # The optional Initial Vector (IV).
370
+ #
371
+ # @option kwargs [Integer] :padding
372
+ # Sets the padding for the cipher.
373
+ #
374
+ # @return [String]
375
+ # The encrypted data.
376
+ #
377
+ # @raise [ArgumentError]
378
+ # Either the the `key:` or `password:` keyword argument must be given.
379
+ #
380
+ # @see Crypto.aes128_encrypt
381
+ #
382
+ def crypto_aes128_encrypt(data,**kwargs)
383
+ Crypto.aes128_encrypt(data,**kwargs)
384
+ end
385
+
386
+ alias aes128_encrypt crypto_aes128_encrypt
387
+
388
+ #
389
+ # Decrypts data using AES-128.
390
+ #
391
+ # @param [#to_s] data
392
+ # The data to encrypt.
393
+ #
394
+ # @param [Hash{Symbol => Object}] kwargs
395
+ # Additional keyword arguments for {Cipher.aes128_cipher}.
396
+ #
397
+ # @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] mode (:cbc)
398
+ # The desired AES cipher mode.
399
+ #
400
+ # @option kwargs [Symbol] :hash (:md5)
401
+ # The algorithm to hash the `:password`.
402
+ #
403
+ # @option kwargs [String] :key
404
+ # The secret key to use.
405
+ #
406
+ # @option kwargs [String] :password
407
+ # The password for the cipher.
408
+ #
409
+ # @option kwargs [String] :iv
410
+ # The optional Initial Vector (IV).
411
+ #
412
+ # @option kwargs [Integer] :padding
413
+ # Sets the padding for the cipher.
414
+ #
415
+ # @return [String]
416
+ # The encrypted data.
417
+ #
418
+ # @raise [ArgumentError]
419
+ # Either the the `key:` or `password:` keyword argument must be given.
420
+ #
421
+ # @see Crypto.aes128_decrypt
422
+ #
423
+ def crypto_aes128_decrypt(data,**kwargs)
424
+ Crypto.aes128_decrypt(data,**kwargs)
425
+ end
426
+
427
+ alias aes128_decrypt crypto_aes128_decrypt
428
+
429
+ #
430
+ # Creates a new AES-256 cipher.
431
+ #
432
+ # @param [Hash{Symbol => Object}] kwargs
433
+ # Additional keyword arguments for {Cipher::AES256#initialize}.
434
+ #
435
+ # @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] :mode (:cbc)
436
+ # The desired AES cipher mode.
437
+ #
438
+ # @option kwargs [Symbol] :hash (:sha256)
439
+ # The algorithm to hash the `:password`.
440
+ #
441
+ # @option kwargs [String] :key
442
+ # The secret key to use.
443
+ #
444
+ # @option kwargs [String] :password
445
+ # The password for the cipher.
446
+ #
447
+ # @option kwargs [String] :iv
448
+ # The optional Initial Vector (IV).
449
+ #
450
+ # @option kwargs [Integer] :padding
451
+ # Sets the padding for the cipher.
452
+ #
453
+ # @return [Cipher::AES]
454
+ # The new AES cipher.
455
+ #
456
+ # @example
457
+ # Crypto.aes256(direction: :encrypt, password: 's3cr3t')
458
+ # # => #<Ronin::Support::Crypto::Cipher::AES256:0x00007f8bde789648 @key_size=256, @mode=:cbc>
459
+ #
460
+ # @see Crypto.aes256_cipher
461
+ #
462
+ def crypto_aes256_cipher(**kwargs)
463
+ Crypto.aes256_cipher(**kwargs)
464
+ end
465
+
466
+ alias aes256_cipher crypto_aes256_cipher
467
+
468
+ #
469
+ # Encrypts data using AES-256.
470
+ #
471
+ # @param [#to_s] data
472
+ # The data to encrypt.
473
+ #
474
+ # @param [Hash{Symbol => Object}] kwargs
475
+ # Additional keyword arguments for {Cipher.aes256_cipher}.
476
+ #
477
+ # @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] mode (:cbc)
478
+ # The desired AES cipher mode.
479
+ #
480
+ # @option kwargs [Symbol] :hash (:sha256)
481
+ # The algorithm to hash the `:password`.
482
+ #
483
+ # @option kwargs [String] :key
484
+ # The secret key to use.
485
+ #
486
+ # @option kwargs [String] :password
487
+ # The password for the cipher.
488
+ #
489
+ # @option kwargs [String] :iv
490
+ # The optional Initial Vector (IV).
491
+ #
492
+ # @option kwargs [Integer] :padding
493
+ # Sets the padding for the cipher.
494
+ #
495
+ # @return [String]
496
+ # The encrypted data.
497
+ #
498
+ # @raise [ArgumentError]
499
+ # Either the the `key:` or `password:` keyword argument must be given.
500
+ #
501
+ # @see Crypto.aes256_encrypt
502
+ #
503
+ def crypto_aes256_encrypt(data,**kwargs)
504
+ Crypto.aes256_encrypt(data,**kwargs)
505
+ end
506
+
507
+ alias aes256_encrypt crypto_aes256_encrypt
508
+
509
+ #
510
+ # Decrypts data using AES-256.
511
+ #
512
+ # @param [#to_s] data
513
+ # The data to encrypt.
514
+ #
515
+ # @param [Hash{Symbol => Object}] kwargs
516
+ # Additional keyword arguments for {Cipher.aes256_cipher}.
517
+ #
518
+ # @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] mode (:cbc)
519
+ # The desired AES cipher mode.
520
+ #
521
+ # @option kwargs [Symbol] :hash (:sh256)
522
+ # The algorithm to hash the `:password`.
523
+ #
524
+ # @option kwargs [String] :key
525
+ # The secret key to use.
526
+ #
527
+ # @option kwargs [String] :password
528
+ # The password for the cipher.
529
+ #
530
+ # @option kwargs [String] :iv
531
+ # The optional Initial Vector (IV).
532
+ #
533
+ # @option kwargs [Integer] :padding
534
+ # Sets the padding for the cipher.
535
+ #
536
+ # @return [String]
537
+ # The encrypted data.
538
+ #
539
+ # @raise [ArgumentError]
540
+ # Either the the `key:` or `password:` keyword argument must be given.
541
+ #
542
+ # @see Crypto.aes256_decrypt
543
+ #
544
+ def crypto_aes256_decrypt(data,**kwargs)
545
+ Crypto.aes256_decrypt(data,**kwargs)
546
+ end
547
+
548
+ alias aes256_decrypt crypto_aes256_decrypt
549
+
550
+ #
551
+ # Encrypts the given data using the given RSA key.
552
+ #
553
+ # @param [String] data
554
+ # The data to encrypt.
555
+ #
556
+ # @param [Hash{Symbol => Object}] kwargs
557
+ # Additional keyword arguments for {Crypto.rsa_encrypt}.
558
+ #
559
+ # @option kwargs [String, nil] :key
560
+ # The PEM or DER encoded RSA key string.
561
+ #
562
+ # @option kwargs [String, nil] :key_file
563
+ # The path to the PEM or DER encoded RSA key file.
564
+ #
565
+ # @option kwargs [String, nil] :key_password
566
+ # The optional password to decrypt the encrypted RSA key.
567
+ #
568
+ # @option kwargs [:pkcs1_oaep, :pkcs1, :sslv23,
569
+ # nil, false] :padding (:pkcs1)
570
+ # Optional padding mode. `nil` and `false` will disable padding.
571
+ #
572
+ # @return [String]
573
+ # The encrypted data.
574
+ #
575
+ # @raise [ArgumentError]
576
+ # Either the `key:` or `key_file:` keyword argument must be given.
577
+ #
578
+ def crypto_rsa_encrypt(data,**kwargs)
579
+ Crypto.rsa_encrypt(data,**kwargs)
580
+ end
581
+
582
+ alias rsa_encrypt crypto_rsa_encrypt
583
+
584
+ #
585
+ # Decrypts the given data using the given RSA key.
586
+ #
587
+ # @param [String] data
588
+ # The data to decrypt.
589
+ #
590
+ # @param [Hash{Symbol => Object}] kwargs
591
+ # Additional keyword arguments for {Crypto.rsa_decrypt}.
592
+ #
593
+ # @option kwargs [String, nil] :key
594
+ # The PEM or DER encoded RSA key string.
595
+ #
596
+ # @option kwargs [String, nil] :key_file
597
+ # The path to the PEM or DER encoded RSA key file.
598
+ #
599
+ # @option kwargs [String, nil] :key_password
600
+ # The optional password to decrypt the encrypted RSA key.
601
+ #
602
+ # @option kwargs [:pkcs1_oaep, :pkcs1, :sslv23,
603
+ # nil, false] :padding (:pkcs1)
604
+ # Optional padding mode. `nil` and `false` will disable padding.
605
+ #
606
+ # @return [String]
607
+ # The decrypted data.
608
+ #
609
+ # @raise [ArgumentError]
610
+ # Either the `key:` or `key_file:` keyword argument must be given.
611
+ #
612
+ def crypto_rsa_decrypt(data,**kwargs)
613
+ Crypto.rsa_decrypt(data,**kwargs)
614
+ end
615
+
616
+ alias rsa_decrypt crypto_rsa_decrypt
617
+ end
618
+ end
619
+ end
620
+ end