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.
- checksums.yaml +7 -0
- data/.editorconfig +11 -0
- data/.github/workflows/ruby.yml +27 -0
- data/.gitignore +7 -6
- data/.mailmap +1 -0
- data/.ruby-version +1 -0
- data/.yardopts +1 -2
- data/ChangeLog.md +533 -137
- data/Gemfile +20 -20
- data/README.md +137 -61
- data/Rakefile +29 -10
- data/data/text/homoglyphs/ascii.txt +8 -0
- data/data/text/homoglyphs/cyrillic.txt +33 -0
- data/data/text/homoglyphs/full_width.txt +81 -0
- data/data/text/homoglyphs/greek.txt +21 -0
- data/data/text/homoglyphs/latin_numbers.txt +14 -0
- data/data/text/homoglyphs/punctuation.txt +7 -0
- data/data/text/patterns/network/public_suffix.rb.erb +44 -0
- data/examples/ssl_proxy.rb +38 -0
- data/examples/tcp_proxy.rb +41 -0
- data/gemspec.yml +25 -15
- data/lib/ronin/support/archive/core_ext/file.rb +118 -0
- data/lib/ronin/{formatting/sql.rb → support/archive/core_ext.rb} +6 -7
- data/lib/ronin/support/archive/mixin.rb +213 -0
- data/lib/ronin/support/archive/tar/reader.rb +135 -0
- data/lib/ronin/support/archive/tar/writer.rb +197 -0
- data/lib/ronin/support/archive/tar.rb +155 -0
- data/lib/ronin/support/archive/zip/reader/entry.rb +134 -0
- data/lib/ronin/support/archive/zip/reader/statistics.rb +76 -0
- data/lib/ronin/support/archive/zip/reader.rb +273 -0
- data/lib/ronin/support/archive/zip/writer.rb +175 -0
- data/lib/ronin/support/archive/zip.rb +105 -0
- data/lib/ronin/support/archive.rb +211 -0
- data/lib/ronin/support/binary/array.rb +255 -0
- data/lib/ronin/support/binary/bit_flip.rb +147 -0
- data/lib/ronin/support/binary/buffer.rb +2027 -0
- data/lib/ronin/support/binary/byte_slice.rb +324 -0
- data/lib/ronin/support/binary/core_ext/array.rb +75 -0
- data/lib/ronin/support/binary/core_ext/float.rb +80 -0
- data/lib/ronin/support/binary/core_ext/integer.rb +305 -0
- data/lib/ronin/support/binary/core_ext/io.rb +38 -0
- data/lib/ronin/support/binary/core_ext/string.rb +115 -0
- data/lib/ronin/{formatting/extensions/text.rb → support/binary/core_ext.rb} +9 -9
- data/lib/ronin/support/binary/cstring.rb +259 -0
- data/lib/ronin/support/binary/ctypes/aggregate_type.rb +98 -0
- data/lib/ronin/support/binary/ctypes/arch/arm/big_endian.rb +77 -0
- data/lib/ronin/support/binary/ctypes/arch/arm.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/arm64/big_endian.rb +77 -0
- data/lib/ronin/support/binary/ctypes/arch/arm64.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/mips/little_endian.rb +77 -0
- data/lib/ronin/support/binary/ctypes/arch/mips.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/mips64/little_endian.rb +77 -0
- data/lib/ronin/support/binary/ctypes/arch/mips64.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/ppc.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/ppc64.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/x86.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/x86_64.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch.rb +30 -0
- data/lib/ronin/support/binary/ctypes/array_object_type.rb +164 -0
- data/lib/ronin/support/binary/ctypes/array_type.rb +232 -0
- data/lib/ronin/support/binary/ctypes/big_endian.rb +195 -0
- data/lib/ronin/support/binary/ctypes/char_type.rb +59 -0
- data/lib/ronin/support/binary/ctypes/char_types.rb +39 -0
- data/lib/ronin/support/binary/ctypes/enum_type.rb +181 -0
- data/lib/ronin/support/binary/ctypes/float32_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/float64_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/float_type.rb +62 -0
- data/lib/ronin/support/binary/ctypes/int16_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/int32_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/int64_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/int8_type.rb +41 -0
- data/lib/ronin/support/binary/ctypes/int_type.rb +62 -0
- data/lib/ronin/support/binary/ctypes/little_endian.rb +195 -0
- data/lib/ronin/support/binary/ctypes/mixin.rb +135 -0
- data/lib/ronin/support/binary/ctypes/native.rb +205 -0
- data/lib/ronin/support/binary/ctypes/network.rb +29 -0
- data/lib/ronin/support/binary/ctypes/object_type.rb +55 -0
- data/lib/ronin/support/binary/ctypes/os/bsd.rb +65 -0
- data/lib/ronin/support/binary/ctypes/os/freebsd.rb +215 -0
- data/lib/ronin/support/binary/ctypes/os/linux.rb +193 -0
- data/lib/ronin/support/binary/ctypes/os/macos.rb +151 -0
- data/lib/ronin/support/binary/ctypes/os/netbsd.rb +147 -0
- data/lib/ronin/support/binary/ctypes/os/openbsd.rb +168 -0
- data/lib/ronin/support/binary/ctypes/os/unix.rb +78 -0
- data/lib/ronin/support/binary/ctypes/os/windows.rb +125 -0
- data/lib/ronin/support/binary/ctypes/os.rb +125 -0
- data/lib/ronin/support/binary/ctypes/scalar_type.rb +200 -0
- data/lib/ronin/support/binary/ctypes/string_type.rb +143 -0
- data/lib/ronin/support/binary/ctypes/struct_object_type.rb +173 -0
- data/lib/ronin/support/binary/ctypes/struct_type.rb +359 -0
- data/lib/ronin/support/binary/ctypes/type.rb +193 -0
- data/lib/ronin/support/binary/ctypes/type_resolver.rb +206 -0
- data/lib/ronin/support/binary/ctypes/uint16_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/uint32_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/uint64_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/uint8_type.rb +41 -0
- data/lib/ronin/support/binary/ctypes/uint_type.rb +59 -0
- data/lib/ronin/support/binary/ctypes/unbounded_array_type.rb +258 -0
- data/lib/ronin/support/binary/ctypes/union_object_type.rb +173 -0
- data/lib/ronin/support/binary/ctypes/union_type.rb +261 -0
- data/lib/ronin/support/binary/ctypes.rb +462 -0
- data/lib/ronin/support/binary/hexdump/core_ext/file.rb +118 -0
- data/lib/ronin/support/binary/hexdump/core_ext/string.rb +115 -0
- data/lib/ronin/support/binary/hexdump/core_ext.rb +20 -0
- data/lib/ronin/support/binary/hexdump/parser.rb +492 -0
- data/lib/ronin/support/binary/hexdump.rb +20 -0
- data/lib/ronin/support/binary/memory.rb +268 -0
- data/lib/ronin/support/binary/packet.rb +33 -0
- data/lib/ronin/support/binary/stack.rb +256 -0
- data/lib/ronin/support/binary/stream/methods.rb +1755 -0
- data/lib/ronin/support/binary/stream.rb +151 -0
- data/lib/ronin/support/binary/struct/member.rb +86 -0
- data/lib/ronin/support/binary/struct.rb +830 -0
- data/lib/ronin/support/binary/template.rb +284 -0
- data/lib/ronin/support/binary/union.rb +162 -0
- data/lib/ronin/support/binary.rb +26 -0
- data/lib/ronin/support/cli/ansi.rb +330 -0
- data/lib/ronin/support/cli/io_shell/core_ext/io.rb +67 -0
- data/lib/ronin/{fuzzing/extensions.rb → support/cli/io_shell/core_ext.rb} +6 -7
- data/lib/ronin/support/cli/io_shell.rb +161 -0
- data/lib/ronin/support/cli/printing.rb +216 -0
- data/lib/ronin/support/cli.rb +20 -0
- data/lib/ronin/support/compression/core_ext/file.rb +70 -0
- data/lib/ronin/support/compression/core_ext/string.rb +101 -0
- data/lib/ronin/{formatting/html.rb → support/compression/core_ext.rb} +6 -7
- data/lib/ronin/support/compression/gzip/reader.rb +70 -0
- data/lib/ronin/support/compression/gzip/writer.rb +74 -0
- data/lib/ronin/support/compression/gzip.rb +105 -0
- data/lib/ronin/support/compression/mixin.rb +180 -0
- data/lib/ronin/{network/extensions/esmtp/net.rb → support/compression/zlib.rb} +9 -10
- data/lib/ronin/support/compression.rb +174 -0
- data/lib/ronin/{extensions → support/core_ext}/enumerable.rb +5 -6
- data/lib/ronin/{extensions → support/core_ext}/file.rb +11 -34
- data/lib/ronin/support/core_ext/integer.rb +37 -0
- data/lib/ronin/support/core_ext/ipaddr.rb +65 -0
- data/lib/ronin/{extensions → support/core_ext}/kernel.rb +10 -9
- data/lib/ronin/{extensions → support/core_ext}/resolv.rb +5 -28
- data/lib/ronin/{extensions → support/core_ext}/string.rb +117 -57
- data/lib/ronin/support/core_ext.rb +33 -0
- data/lib/ronin/support/crypto/cert.rb +522 -0
- data/lib/ronin/support/crypto/cert_chain.rb +204 -0
- data/lib/ronin/support/crypto/cipher/aes.rb +71 -0
- data/lib/ronin/support/crypto/cipher/aes128.rb +54 -0
- data/lib/ronin/support/crypto/cipher/aes256.rb +54 -0
- data/lib/ronin/support/crypto/cipher.rb +194 -0
- data/lib/ronin/support/crypto/core_ext/file.rb +660 -0
- data/lib/ronin/support/crypto/core_ext/string.rb +548 -0
- data/lib/ronin/{binary.rb → support/crypto/core_ext.rb} +7 -8
- data/lib/ronin/support/crypto/hmac.rb +48 -0
- data/lib/ronin/support/crypto/key/dh.rb +122 -0
- data/lib/ronin/support/crypto/key/dsa.rb +103 -0
- data/lib/ronin/support/crypto/key/ec.rb +99 -0
- data/lib/ronin/support/crypto/key/methods.rb +163 -0
- data/lib/ronin/support/crypto/key/rsa.rb +169 -0
- data/lib/ronin/support/crypto/key.rb +105 -0
- data/lib/ronin/support/crypto/mixin.rb +620 -0
- data/lib/ronin/{network/extensions/http/net.rb → support/crypto/openssl.rb} +9 -10
- data/lib/ronin/support/crypto.rb +779 -0
- data/lib/ronin/support/encoding/base16/core_ext/string.rb +63 -0
- data/lib/ronin/support/encoding/base16/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/base16.rb +82 -0
- data/lib/ronin/support/encoding/base32/core_ext/string.rb +63 -0
- data/lib/ronin/support/encoding/base32/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/base32.rb +164 -0
- data/lib/ronin/support/encoding/base64/core_ext/string.rb +76 -0
- data/lib/ronin/support/encoding/base64/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/base64.rb +78 -0
- data/lib/ronin/support/encoding/c/core_ext/integer.rb +82 -0
- data/lib/ronin/support/encoding/c/core_ext/string.rb +125 -0
- data/lib/ronin/support/encoding/c/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/c.rb +277 -0
- data/lib/ronin/support/encoding/core_ext/string.rb +107 -0
- data/lib/ronin/support/encoding/core_ext.rb +33 -0
- data/lib/ronin/support/encoding/hex/core_ext/integer.rb +82 -0
- data/lib/ronin/support/encoding/hex/core_ext/string.rb +133 -0
- data/lib/ronin/support/encoding/hex/core_ext.rb +22 -0
- data/lib/ronin/support/encoding/hex.rb +248 -0
- data/lib/ronin/support/encoding/html/core_ext/integer.rb +106 -0
- data/lib/ronin/support/encoding/html/core_ext/string.rb +130 -0
- data/lib/ronin/support/encoding/html/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/html.rb +233 -0
- data/lib/ronin/support/encoding/http/core_ext/integer.rb +95 -0
- data/lib/ronin/support/encoding/http/core_ext/string.rb +129 -0
- data/lib/ronin/support/encoding/http/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/http.rb +241 -0
- data/lib/ronin/support/encoding/js/core_ext/integer.rb +67 -0
- data/lib/ronin/support/encoding/js/core_ext/string.rb +125 -0
- data/lib/ronin/support/encoding/js/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/js.rb +279 -0
- data/lib/ronin/support/encoding/powershell/core_ext/integer.rb +87 -0
- data/lib/ronin/support/encoding/powershell/core_ext/string.rb +145 -0
- data/lib/ronin/support/encoding/powershell/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/powershell.rb +297 -0
- data/lib/ronin/support/encoding/punycode/core_ext/string.rb +63 -0
- data/lib/ronin/support/encoding/punycode/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/punycode.rb +76 -0
- data/lib/ronin/support/encoding/quoted_printable/core_ext/string.rb +75 -0
- data/lib/ronin/support/encoding/quoted_printable/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/quoted_printable.rb +102 -0
- data/lib/ronin/support/encoding/ruby/core_ext/string.rb +129 -0
- data/lib/ronin/{formatting/binary.rb → support/encoding/ruby/core_ext.rb} +6 -7
- data/lib/ronin/support/encoding/ruby.rb +235 -0
- data/lib/ronin/support/encoding/shell/core_ext/integer.rb +89 -0
- data/lib/ronin/support/encoding/shell/core_ext/string.rb +134 -0
- data/lib/ronin/support/encoding/shell/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/shell.rb +293 -0
- data/lib/ronin/{network/extensions → support/encoding}/smtp.rb +7 -7
- data/lib/ronin/support/encoding/sql/core_ext/string.rb +114 -0
- data/lib/ronin/{formatting/http.rb → support/encoding/sql/core_ext.rb} +6 -7
- data/lib/ronin/support/encoding/sql.rb +124 -0
- data/lib/ronin/support/encoding/uri/core_ext/integer.rb +149 -0
- data/lib/ronin/support/encoding/uri/core_ext/string.rb +195 -0
- data/lib/ronin/support/encoding/uri/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/uri.rb +424 -0
- data/lib/ronin/support/encoding/uuencoding/core_ext/string.rb +73 -0
- data/lib/ronin/support/encoding/uuencoding/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/uuencoding.rb +70 -0
- data/lib/ronin/support/encoding/xml/core_ext/integer.rb +100 -0
- data/lib/ronin/support/encoding/xml/core_ext/string.rb +124 -0
- data/lib/ronin/support/encoding/xml/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/xml.rb +328 -0
- data/lib/ronin/support/encoding.rb +46 -0
- data/lib/ronin/support/home.rb +88 -0
- data/lib/ronin/support/mixin.rb +42 -0
- data/lib/ronin/support/network/asn/dns_record.rb +112 -0
- data/lib/ronin/support/network/asn/list.rb +269 -0
- data/lib/ronin/support/network/asn/record.rb +164 -0
- data/lib/ronin/support/network/asn/record_set.rb +226 -0
- data/lib/ronin/support/network/asn.rb +88 -0
- data/lib/ronin/{binary/hexdump.rb → support/network/core_ext.rb} +6 -7
- data/lib/ronin/support/network/dns/idn.rb +38 -0
- data/lib/ronin/support/network/dns/mixin.rb +941 -0
- data/lib/ronin/support/network/dns/resolver.rb +707 -0
- data/lib/ronin/support/network/dns.rb +1109 -0
- data/lib/ronin/support/network/domain.rb +70 -0
- data/lib/ronin/support/network/email_address.rb +574 -0
- data/lib/ronin/support/network/esmtp/mixin.rb +115 -0
- data/lib/ronin/support/network/exceptions.rb +43 -0
- data/lib/ronin/support/network/ftp/mixin.rb +106 -0
- data/lib/ronin/support/network/host.rb +1473 -0
- data/lib/ronin/support/network/http/cookie.rb +245 -0
- data/lib/ronin/support/network/http/core_ext/uri/http.rb +63 -0
- data/lib/ronin/support/network/http/core_ext.rb +19 -0
- data/lib/ronin/support/network/http/mixin.rb +890 -0
- data/lib/ronin/support/network/http/request.rb +215 -0
- data/lib/ronin/support/network/http/set_cookie.rb +210 -0
- data/lib/ronin/support/network/http/user_agents.rb +115 -0
- data/lib/ronin/support/network/http.rb +2582 -0
- data/lib/ronin/support/network/imap/mixin.rb +133 -0
- data/lib/ronin/support/network/ip/mixin.rb +114 -0
- data/lib/ronin/support/network/ip.rb +540 -0
- data/lib/ronin/support/network/ip_range/cidr.rb +252 -0
- data/lib/ronin/support/network/ip_range/glob.rb +309 -0
- data/lib/ronin/support/network/ip_range/range.rb +249 -0
- data/lib/ronin/support/network/ip_range.rb +284 -0
- data/lib/ronin/support/network/mixin.rb +58 -0
- data/lib/ronin/support/network/packet.rb +27 -0
- data/lib/ronin/support/network/pop3/mixin.rb +113 -0
- data/lib/ronin/support/network/proxy.rb +602 -0
- data/lib/ronin/support/network/public_suffix/list.rb +339 -0
- data/lib/ronin/support/network/public_suffix/suffix.rb +118 -0
- data/lib/ronin/support/network/public_suffix/suffix_set.rb +150 -0
- data/lib/ronin/support/network/public_suffix.rb +41 -0
- data/lib/ronin/support/network/smtp/email.rb +190 -0
- data/lib/ronin/support/network/smtp/mixin.rb +290 -0
- data/lib/ronin/{extensions/meta.rb → support/network/smtp.rb} +6 -7
- data/lib/ronin/support/network/ssl/local_cert.rb +114 -0
- data/lib/ronin/support/network/ssl/local_key.rb +84 -0
- data/lib/ronin/support/network/ssl/mixin.rb +740 -0
- data/lib/ronin/{network/extensions/imap/net.rb → support/network/ssl/openssl.rb} +9 -10
- data/lib/ronin/support/network/ssl/proxy.rb +296 -0
- data/lib/ronin/support/network/ssl.rb +173 -0
- data/lib/ronin/support/network/tcp/mixin.rb +400 -0
- data/lib/ronin/support/network/tcp/proxy.rb +435 -0
- data/lib/ronin/support/network/tcp.rb +443 -0
- data/lib/ronin/support/network/telnet/mixin.rb +150 -0
- data/lib/ronin/support/network/telnet.rb +90 -0
- data/lib/ronin/support/network/tld/list.rb +266 -0
- data/lib/ronin/support/network/tld.rb +41 -0
- data/lib/ronin/support/network/tls/mixin.rb +670 -0
- data/lib/ronin/support/network/tls/proxy.rb +135 -0
- data/lib/ronin/support/network/tls.rb +53 -0
- data/lib/ronin/support/network/udp/mixin.rb +389 -0
- data/lib/ronin/support/network/udp/proxy.rb +192 -0
- data/lib/ronin/support/network/udp.rb +435 -0
- data/lib/ronin/support/network/unix/mixin.rb +273 -0
- data/lib/ronin/support/network.rb +37 -0
- data/lib/ronin/support/path.rb +136 -0
- data/lib/ronin/{network/extensions/dns/net.rb → support/text/core_ext/regexp.rb} +8 -9
- data/lib/ronin/support/text/core_ext/string.rb +46 -0
- data/lib/ronin/support/text/core_ext.rb +23 -0
- data/lib/ronin/support/text/entropy/core_ext/string.rb +45 -0
- data/lib/ronin/support/text/entropy/core_ext.rb +19 -0
- data/lib/ronin/support/text/entropy.rb +66 -0
- data/lib/ronin/support/text/erb/mixin.rb +44 -0
- data/lib/ronin/support/text/erb.rb +19 -0
- data/lib/ronin/support/text/homoglyph/core_ext/string.rb +108 -0
- data/lib/ronin/{formatting/digest.rb → support/text/homoglyph/core_ext.rb} +6 -7
- data/lib/ronin/{network/http/exceptions/unknown_request.rb → support/text/homoglyph/exceptions.rb} +10 -9
- data/lib/ronin/support/text/homoglyph/table.rb +228 -0
- data/lib/ronin/support/text/homoglyph.rb +142 -0
- data/lib/ronin/support/text/mixin.rb +31 -0
- data/lib/ronin/support/text/patterns/credentials.rb +75 -0
- data/lib/ronin/support/text/patterns/crypto.rb +67 -0
- data/lib/ronin/support/text/patterns/file_system.rb +93 -0
- data/lib/ronin/support/text/patterns/language.rb +37 -0
- data/lib/ronin/support/text/patterns/network/public_suffix.rb +44 -0
- data/lib/ronin/support/text/patterns/network.rb +140 -0
- data/lib/ronin/support/text/patterns/numeric.rb +52 -0
- data/lib/ronin/support/text/patterns/pii.rb +105 -0
- data/lib/ronin/support/text/patterns/source_code.rb +148 -0
- data/lib/ronin/support/text/patterns.rb +25 -0
- data/lib/ronin/support/text/random/mixin.rb +437 -0
- data/lib/ronin/support/text/random.rb +419 -0
- data/lib/ronin/support/text/typo/core_ext/string.rb +123 -0
- data/lib/ronin/support/text/typo/core_ext.rb +19 -0
- data/lib/ronin/support/text/typo/exceptions.rb +28 -0
- data/lib/ronin/support/text/typo/generator.rb +161 -0
- data/lib/ronin/support/text/typo.rb +260 -0
- data/lib/ronin/support/text.rb +26 -0
- data/lib/ronin/support/version.rb +6 -7
- data/lib/ronin/support.rb +20 -15
- data/ronin-support.gemspec +3 -1
- metadata +462 -369
- data/.gemtest +0 -0
- data/lib/ronin/binary/hexdump/parser.rb +0 -403
- data/lib/ronin/binary/struct.rb +0 -567
- data/lib/ronin/binary/template.rb +0 -454
- data/lib/ronin/extensions/ip_addr.rb +0 -217
- data/lib/ronin/extensions/meta/object.rb +0 -24
- data/lib/ronin/extensions/regexp.rb +0 -157
- data/lib/ronin/extensions.rb +0 -29
- data/lib/ronin/formatting/extensions/binary/array.rb +0 -61
- data/lib/ronin/formatting/extensions/binary/base64.rb +0 -106
- data/lib/ronin/formatting/extensions/binary/file.rb +0 -77
- data/lib/ronin/formatting/extensions/binary/float.rb +0 -65
- data/lib/ronin/formatting/extensions/binary/integer.rb +0 -180
- data/lib/ronin/formatting/extensions/binary/string.rb +0 -345
- data/lib/ronin/formatting/extensions/binary.rb +0 -26
- data/lib/ronin/formatting/extensions/digest/file.rb +0 -129
- data/lib/ronin/formatting/extensions/digest/string.rb +0 -86
- data/lib/ronin/formatting/extensions/digest.rb +0 -21
- data/lib/ronin/formatting/extensions/html/integer.rb +0 -142
- data/lib/ronin/formatting/extensions/html/string.rb +0 -194
- data/lib/ronin/formatting/extensions/html.rb +0 -21
- data/lib/ronin/formatting/extensions/http/integer.rb +0 -69
- data/lib/ronin/formatting/extensions/http/string.rb +0 -110
- data/lib/ronin/formatting/extensions/http.rb +0 -21
- data/lib/ronin/formatting/extensions/sql/string.rb +0 -128
- data/lib/ronin/formatting/extensions/sql.rb +0 -20
- data/lib/ronin/formatting/extensions/text/array.rb +0 -137
- data/lib/ronin/formatting/extensions/text/string.rb +0 -297
- data/lib/ronin/formatting/extensions.rb +0 -24
- data/lib/ronin/formatting/text.rb +0 -20
- data/lib/ronin/formatting.rb +0 -25
- data/lib/ronin/fuzzing/extensions/string.rb +0 -209
- data/lib/ronin/fuzzing/fuzzer.rb +0 -110
- data/lib/ronin/fuzzing/fuzzing.rb +0 -360
- data/lib/ronin/fuzzing/mutator.rb +0 -161
- data/lib/ronin/fuzzing/repeater.rb +0 -81
- data/lib/ronin/fuzzing/template.rb +0 -133
- data/lib/ronin/fuzzing.rb +0 -21
- data/lib/ronin/mixin.rb +0 -89
- data/lib/ronin/network/dns.rb +0 -201
- data/lib/ronin/network/esmtp.rb +0 -113
- data/lib/ronin/network/extensions/dns.rb +0 -20
- data/lib/ronin/network/extensions/esmtp.rb +0 -20
- data/lib/ronin/network/extensions/http/uri/http.rb +0 -228
- data/lib/ronin/network/extensions/http.rb +0 -21
- data/lib/ronin/network/extensions/imap.rb +0 -20
- data/lib/ronin/network/extensions/pop3/net.rb +0 -24
- data/lib/ronin/network/extensions/pop3.rb +0 -20
- data/lib/ronin/network/extensions/smtp/net.rb +0 -24
- data/lib/ronin/network/extensions/ssl/net.rb +0 -24
- data/lib/ronin/network/extensions/ssl.rb +0 -20
- data/lib/ronin/network/extensions/tcp/net.rb +0 -24
- data/lib/ronin/network/extensions/tcp.rb +0 -20
- data/lib/ronin/network/extensions/telnet/net.rb +0 -24
- data/lib/ronin/network/extensions/telnet.rb +0 -20
- data/lib/ronin/network/extensions/udp/net.rb +0 -24
- data/lib/ronin/network/extensions/udp.rb +0 -20
- data/lib/ronin/network/extensions.rb +0 -29
- data/lib/ronin/network/ftp.rb +0 -149
- data/lib/ronin/network/http/exceptions.rb +0 -20
- data/lib/ronin/network/http/http.rb +0 -1127
- data/lib/ronin/network/http/proxy.rb +0 -330
- data/lib/ronin/network/http.rb +0 -22
- data/lib/ronin/network/imap.rb +0 -158
- data/lib/ronin/network/mixins/dns.rb +0 -55
- data/lib/ronin/network/mixins/esmtp.rb +0 -164
- data/lib/ronin/network/mixins/ftp.rb +0 -155
- data/lib/ronin/network/mixins/http.rb +0 -227
- data/lib/ronin/network/mixins/imap.rb +0 -156
- data/lib/ronin/network/mixins/mixin.rb +0 -58
- data/lib/ronin/network/mixins/pop3.rb +0 -149
- data/lib/ronin/network/mixins/smtp.rb +0 -159
- data/lib/ronin/network/mixins/ssl.rb +0 -148
- data/lib/ronin/network/mixins/tcp.rb +0 -368
- data/lib/ronin/network/mixins/telnet.rb +0 -208
- data/lib/ronin/network/mixins/udp.rb +0 -381
- data/lib/ronin/network/mixins/unix.rb +0 -279
- data/lib/ronin/network/mixins.rb +0 -29
- data/lib/ronin/network/network.rb +0 -45
- data/lib/ronin/network/pop3.rb +0 -124
- data/lib/ronin/network/proxy.rb +0 -578
- data/lib/ronin/network/smtp/email.rb +0 -174
- data/lib/ronin/network/smtp/smtp.rb +0 -230
- data/lib/ronin/network/smtp.rb +0 -22
- data/lib/ronin/network/ssl.rb +0 -186
- data/lib/ronin/network/tcp/proxy.rb +0 -417
- data/lib/ronin/network/tcp/tcp.rb +0 -443
- data/lib/ronin/network/tcp.rb +0 -21
- data/lib/ronin/network/telnet.rb +0 -264
- data/lib/ronin/network/udp/proxy.rb +0 -191
- data/lib/ronin/network/udp/udp.rb +0 -450
- data/lib/ronin/network/udp.rb +0 -21
- data/lib/ronin/network/unix.rb +0 -286
- data/lib/ronin/network.rb +0 -31
- data/lib/ronin/path.rb +0 -137
- data/lib/ronin/spec/ui/output.rb +0 -22
- data/lib/ronin/support/inflector.rb +0 -92
- data/lib/ronin/support/support.rb +0 -42
- data/lib/ronin/templates/erb.rb +0 -78
- data/lib/ronin/templates/template.rb +0 -169
- data/lib/ronin/templates.rb +0 -21
- data/lib/ronin/ui/output/helpers.rb +0 -296
- data/lib/ronin/ui/output/output.rb +0 -146
- data/lib/ronin/ui/output/terminal/color.rb +0 -124
- data/lib/ronin/ui/output/terminal/raw.rb +0 -103
- data/lib/ronin/ui/output/terminal.rb +0 -21
- data/lib/ronin/ui/output.rb +0 -21
- data/lib/ronin/ui/shell.rb +0 -286
- data/lib/ronin/wordlist.rb +0 -287
- data/spec/binary/hexdump/helpers/hexdumps/ascii.bin +0 -0
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_decimal_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_repeated.txt +0 -6
- data/spec/binary/hexdump/helpers/hexdumps/od_decimal_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_decimal_ints.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_decimal_quads.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_decimal_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_doubles.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_floats.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_hex_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_hex_ints.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_hex_quads.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_hex_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_named_chars.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_octal_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_octal_ints.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_octal_quads.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_octal_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_repeated.txt +0 -6
- data/spec/binary/hexdump/helpers/hexdumps/repeated.bin +0 -1
- data/spec/binary/hexdump/helpers/hexdumps.rb +0 -13
- data/spec/binary/hexdump/parser_spec.rb +0 -302
- data/spec/binary/struct_spec.rb +0 -496
- data/spec/binary/template_spec.rb +0 -414
- data/spec/extensions/enumerable_spec.rb +0 -24
- data/spec/extensions/file_spec.rb +0 -63
- data/spec/extensions/ip_addr_spec.rb +0 -203
- data/spec/extensions/kernel_spec.rb +0 -30
- data/spec/extensions/regexp_spec.rb +0 -482
- data/spec/extensions/resolv_spec.rb +0 -18
- data/spec/extensions/string_spec.rb +0 -179
- data/spec/formatting/binary/array_spec.rb +0 -26
- data/spec/formatting/binary/base64_spec.rb +0 -50
- data/spec/formatting/binary/float_spec.rb +0 -34
- data/spec/formatting/binary/integer_spec.rb +0 -166
- data/spec/formatting/binary/string_spec.rb +0 -197
- data/spec/formatting/digest/string_spec.rb +0 -82
- data/spec/formatting/html/integer_spec.rb +0 -66
- data/spec/formatting/html/string_spec.rb +0 -103
- data/spec/formatting/http/integer_spec.rb +0 -42
- data/spec/formatting/http/string_spec.rb +0 -76
- data/spec/formatting/sql/string_spec.rb +0 -75
- data/spec/formatting/text/array_spec.rb +0 -105
- data/spec/formatting/text/string_spec.rb +0 -162
- data/spec/fuzzing/extensions/string_spec.rb +0 -87
- data/spec/fuzzing/fuzzer_spec.rb +0 -109
- data/spec/fuzzing/fuzzing_spec.rb +0 -24
- data/spec/fuzzing/mutator_spec.rb +0 -112
- data/spec/fuzzing/repeater_spec.rb +0 -57
- data/spec/fuzzing/template_spec.rb +0 -54
- data/spec/mixin_spec.rb +0 -53
- data/spec/network/dns_spec.rb +0 -201
- data/spec/network/ftp_spec.rb +0 -81
- data/spec/network/http/http_spec.rb +0 -466
- data/spec/network/http/proxy_spec.rb +0 -148
- data/spec/network/network_spec.rb +0 -8
- data/spec/network/proxy_spec.rb +0 -121
- data/spec/network/shared/unix_server.rb +0 -31
- data/spec/network/smtp/email_spec.rb +0 -100
- data/spec/network/ssl_spec.rb +0 -70
- data/spec/network/tcp/proxy_spec.rb +0 -116
- data/spec/network/tcp/tcp_spec.rb +0 -273
- data/spec/network/telnet_spec.rb +0 -67
- data/spec/network/udp/udp_spec.rb +0 -271
- data/spec/network/unix_spec.rb +0 -183
- data/spec/path_spec.rb +0 -86
- data/spec/spec_helper.rb +0 -9
- data/spec/support/inflector_spec.rb +0 -22
- data/spec/support_spec.rb +0 -8
- data/spec/templates/classes/example_erb.rb +0 -11
- data/spec/templates/classes/example_template.rb +0 -35
- data/spec/templates/erb_spec.rb +0 -21
- data/spec/templates/helpers/data/includes/_relative.erb +0 -1
- data/spec/templates/helpers/data/templates/example.erb +0 -1
- data/spec/templates/helpers/data.rb +0 -9
- data/spec/templates/template_spec.rb +0 -54
- data/spec/ui/classes/test_shell.rb +0 -22
- data/spec/ui/output_spec.rb +0 -32
- data/spec/ui/shell_spec.rb +0 -83
- 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
|