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,548 @@
|
|
|
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
|
+
require 'digest'
|
|
22
|
+
|
|
23
|
+
class String
|
|
24
|
+
|
|
25
|
+
#
|
|
26
|
+
# @return [String]
|
|
27
|
+
# The MD5 checksum of the String.
|
|
28
|
+
#
|
|
29
|
+
# @example
|
|
30
|
+
# "hello".md5
|
|
31
|
+
# # => "5d41402abc4b2a76b9719d911017c592"
|
|
32
|
+
#
|
|
33
|
+
# @api public
|
|
34
|
+
#
|
|
35
|
+
def md5
|
|
36
|
+
Digest::MD5.hexdigest(self)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
#
|
|
40
|
+
# @return [String]
|
|
41
|
+
# The SHA1 checksum of the String.
|
|
42
|
+
#
|
|
43
|
+
# @example
|
|
44
|
+
# "hello".sha1
|
|
45
|
+
# # => "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d"
|
|
46
|
+
#
|
|
47
|
+
# @api public
|
|
48
|
+
#
|
|
49
|
+
def sha1
|
|
50
|
+
Digest::SHA1.hexdigest(self)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
alias sha128 sha1
|
|
54
|
+
|
|
55
|
+
#
|
|
56
|
+
# @return [String]
|
|
57
|
+
# The SHA2 checksum of the String.
|
|
58
|
+
#
|
|
59
|
+
# @example
|
|
60
|
+
# "hello".sha2
|
|
61
|
+
# # => "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"
|
|
62
|
+
#
|
|
63
|
+
# @api public
|
|
64
|
+
#
|
|
65
|
+
def sha256
|
|
66
|
+
Digest::SHA256.hexdigest(self)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
alias sha2 sha256
|
|
70
|
+
|
|
71
|
+
#
|
|
72
|
+
# @return [String]
|
|
73
|
+
# The SHA512 checksum of the String.
|
|
74
|
+
#
|
|
75
|
+
# @example
|
|
76
|
+
# "hello".sha512
|
|
77
|
+
# # => "9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043"
|
|
78
|
+
#
|
|
79
|
+
# @api public
|
|
80
|
+
#
|
|
81
|
+
def sha512
|
|
82
|
+
Digest::SHA512.hexdigest(self)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
#
|
|
86
|
+
# Calculates the RMD160 checksum for the String.
|
|
87
|
+
#
|
|
88
|
+
# @return [String]
|
|
89
|
+
# The RMD160 checksum of the String.
|
|
90
|
+
#
|
|
91
|
+
# @example
|
|
92
|
+
# "hello".rmd160
|
|
93
|
+
# # => "108f07b8382412612c048d07d13f814118445acd"
|
|
94
|
+
#
|
|
95
|
+
# @api public
|
|
96
|
+
#
|
|
97
|
+
# @since 0.6.0
|
|
98
|
+
#
|
|
99
|
+
# @note JRuby and TruffleRuby do not yet support RMD160.
|
|
100
|
+
#
|
|
101
|
+
def rmd160
|
|
102
|
+
Digest::RMD160.hexdigest(self)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
#
|
|
106
|
+
# Calculates the HMAC of the String.
|
|
107
|
+
#
|
|
108
|
+
# @param [String] key
|
|
109
|
+
# The secret key for the HMAC.
|
|
110
|
+
#
|
|
111
|
+
# @param [Symbol] digest
|
|
112
|
+
# The digest algorithm for the HMAC.
|
|
113
|
+
#
|
|
114
|
+
# @return [String]
|
|
115
|
+
# The hex-encoded HMAC for the String.
|
|
116
|
+
#
|
|
117
|
+
# @see Ronin::Support::Crypto.hmac
|
|
118
|
+
#
|
|
119
|
+
# @since 0.6.0
|
|
120
|
+
#
|
|
121
|
+
# @api public
|
|
122
|
+
#
|
|
123
|
+
def hmac(key: , digest: :sha1)
|
|
124
|
+
hmac = Ronin::Support::Crypto.hmac(self, key: key, digest: digest)
|
|
125
|
+
return hmac.hexdigest
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
#
|
|
129
|
+
# Encrypts the String.
|
|
130
|
+
#
|
|
131
|
+
# @param [String] cipher
|
|
132
|
+
# The cipher to use.
|
|
133
|
+
#
|
|
134
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
135
|
+
# Additional keyword arguments for {Ronin::Support::Crypto.cipher}.
|
|
136
|
+
#
|
|
137
|
+
# @option kwargs [Symbol] :hash (:sha1)
|
|
138
|
+
# The algorithm to hash the `:password`.
|
|
139
|
+
#
|
|
140
|
+
# @option kwargs [String] :key
|
|
141
|
+
# The secret key to use.
|
|
142
|
+
#
|
|
143
|
+
# @option kwargs [String] :password
|
|
144
|
+
# The password for the cipher.
|
|
145
|
+
#
|
|
146
|
+
# @option kwargs [String] :iv
|
|
147
|
+
# The optional Initial Vector (IV).
|
|
148
|
+
#
|
|
149
|
+
# @option kwargs [Integer] :padding
|
|
150
|
+
# Sets the padding for the cipher.
|
|
151
|
+
#
|
|
152
|
+
# @return [String]
|
|
153
|
+
# The encrypted String.
|
|
154
|
+
#
|
|
155
|
+
# @see http://rubydoc.info/stdlib/openssl/OpenSSL/Cipher
|
|
156
|
+
#
|
|
157
|
+
# @since 0.6.0
|
|
158
|
+
#
|
|
159
|
+
# @api public
|
|
160
|
+
#
|
|
161
|
+
def encrypt(cipher,**kwargs)
|
|
162
|
+
Ronin::Support::Crypto.encrypt(self, cipher: cipher,
|
|
163
|
+
direction: :encrypt,
|
|
164
|
+
**kwargs)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
#
|
|
168
|
+
# Decrypts the String.
|
|
169
|
+
#
|
|
170
|
+
# @param [String] cipher
|
|
171
|
+
# The cipher to use.
|
|
172
|
+
#
|
|
173
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
174
|
+
# Additional keyword arguments for {Ronin::Support::Crypto.cipher}.
|
|
175
|
+
#
|
|
176
|
+
# @option kwargs [Symbol] :hash (:sha1)
|
|
177
|
+
# The algorithm to hash the `:password`.
|
|
178
|
+
#
|
|
179
|
+
# @option kwargs [String] :key
|
|
180
|
+
# The secret key to use.
|
|
181
|
+
#
|
|
182
|
+
# @option kwargs [String] :password
|
|
183
|
+
# The password for the cipher.
|
|
184
|
+
#
|
|
185
|
+
# @option kwargs [String] :iv
|
|
186
|
+
# The optional Initial Vector (IV).
|
|
187
|
+
#
|
|
188
|
+
# @option kwargs [Integer] :padding
|
|
189
|
+
# Sets the padding for the cipher.
|
|
190
|
+
#
|
|
191
|
+
# @return [String]
|
|
192
|
+
# The decrypted String.
|
|
193
|
+
#
|
|
194
|
+
# @see http://rubydoc.info/stdlib/openssl/OpenSSL/Cipher
|
|
195
|
+
#
|
|
196
|
+
# @since 0.6.0
|
|
197
|
+
#
|
|
198
|
+
# @api public
|
|
199
|
+
#
|
|
200
|
+
def decrypt(cipher,**kwargs)
|
|
201
|
+
Ronin::Support::Crypto.decrypt(self, cipher: cipher,
|
|
202
|
+
direction: :decrypt,
|
|
203
|
+
**kwargs)
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
#
|
|
207
|
+
# Encrypts the String using AES.
|
|
208
|
+
#
|
|
209
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
210
|
+
# Additional keyword arguments for {Ronin::Support::Crypto.aes_cipher}.
|
|
211
|
+
#
|
|
212
|
+
# @option kwargs [Integer] :key_size
|
|
213
|
+
# The desired key size in bits.
|
|
214
|
+
#
|
|
215
|
+
# @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] mode (:cbc)
|
|
216
|
+
# The desired AES cipher mode.
|
|
217
|
+
#
|
|
218
|
+
# @option kwargs [Symbol] :hash (:sha256)
|
|
219
|
+
# The algorithm to hash the `:password`.
|
|
220
|
+
#
|
|
221
|
+
# @option kwargs [String] :key
|
|
222
|
+
# The secret key to use.
|
|
223
|
+
#
|
|
224
|
+
# @option kwargs [String] :password
|
|
225
|
+
# The password for the cipher.
|
|
226
|
+
#
|
|
227
|
+
# @option kwargs [String] :iv
|
|
228
|
+
# The optional Initial Vector (IV).
|
|
229
|
+
#
|
|
230
|
+
# @option kwargs [Integer] :padding
|
|
231
|
+
# Sets the padding for the cipher.
|
|
232
|
+
#
|
|
233
|
+
# @return [String]
|
|
234
|
+
# The encrypted data.
|
|
235
|
+
#
|
|
236
|
+
# @raise [ArgumentError]
|
|
237
|
+
# Either the the `key:` or `password:` keyword argument must be given.
|
|
238
|
+
#
|
|
239
|
+
# @since 1.0.0
|
|
240
|
+
#
|
|
241
|
+
def aes_encrypt(**kwargs)
|
|
242
|
+
Ronin::Support::Crypto.aes_encrypt(self,**kwargs)
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
#
|
|
246
|
+
# Decrypts the String using AES.
|
|
247
|
+
#
|
|
248
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
249
|
+
# Additional keyword arguments for {Ronin::Support::Crypto.aes_cipher}.
|
|
250
|
+
#
|
|
251
|
+
# @option kwargs [Integer] :key_size
|
|
252
|
+
# The desired key size in bits.
|
|
253
|
+
#
|
|
254
|
+
# @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] mode (:cbc)
|
|
255
|
+
# The desired AES cipher mode.
|
|
256
|
+
#
|
|
257
|
+
# @option kwargs [Symbol] :hash (:sha256)
|
|
258
|
+
# The algorithm to hash the `:password`.
|
|
259
|
+
#
|
|
260
|
+
# @option kwargs [String] :key
|
|
261
|
+
# The secret key to use.
|
|
262
|
+
#
|
|
263
|
+
# @option kwargs [String] :password
|
|
264
|
+
# The password for the cipher.
|
|
265
|
+
#
|
|
266
|
+
# @option kwargs [String] :iv
|
|
267
|
+
# The optional Initial Vector (IV).
|
|
268
|
+
#
|
|
269
|
+
# @option kwargs [Integer] :padding
|
|
270
|
+
# Sets the padding for the cipher.
|
|
271
|
+
#
|
|
272
|
+
# @return [String]
|
|
273
|
+
# The encrypted data.
|
|
274
|
+
#
|
|
275
|
+
# @raise [ArgumentError]
|
|
276
|
+
# Either the the `key:` or `password:` keyword argument must be given.
|
|
277
|
+
#
|
|
278
|
+
# @since 1.0.0
|
|
279
|
+
#
|
|
280
|
+
def aes_decrypt(**kwargs)
|
|
281
|
+
Ronin::Support::Crypto.aes_decrypt(self,**kwargs)
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
#
|
|
285
|
+
# Encrypts the String using AES-128.
|
|
286
|
+
#
|
|
287
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
288
|
+
# Additional keyword arguments for {Ronin::Support::Crypto.aes128_cipher}.
|
|
289
|
+
#
|
|
290
|
+
# @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] mode (:cbc)
|
|
291
|
+
# The desired AES cipher mode.
|
|
292
|
+
#
|
|
293
|
+
# @option kwargs [Symbol] :hash (:md5)
|
|
294
|
+
# The algorithm to hash the `:password`.
|
|
295
|
+
#
|
|
296
|
+
# @option kwargs [String] :key
|
|
297
|
+
# The secret key to use.
|
|
298
|
+
#
|
|
299
|
+
# @option kwargs [String] :password
|
|
300
|
+
# The password for the cipher.
|
|
301
|
+
#
|
|
302
|
+
# @option kwargs [String] :iv
|
|
303
|
+
# The optional Initial Vector (IV).
|
|
304
|
+
#
|
|
305
|
+
# @option kwargs [Integer] :padding
|
|
306
|
+
# Sets the padding for the cipher.
|
|
307
|
+
#
|
|
308
|
+
# @return [String]
|
|
309
|
+
# The encrypted data.
|
|
310
|
+
#
|
|
311
|
+
# @raise [ArgumentError]
|
|
312
|
+
# Either the the `key:` or `password:` keyword argument must be given.
|
|
313
|
+
#
|
|
314
|
+
# @since 1.0.0
|
|
315
|
+
#
|
|
316
|
+
def aes128_encrypt(**kwargs)
|
|
317
|
+
Ronin::Support::Crypto.aes128_encrypt(self,**kwargs)
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
#
|
|
321
|
+
# Decrypts the String using AES-128.
|
|
322
|
+
#
|
|
323
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
324
|
+
# Additional keyword arguments for {Ronin::Support::Crypto.aes128_cipher}.
|
|
325
|
+
#
|
|
326
|
+
# @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] mode (:cbc)
|
|
327
|
+
# The desired AES cipher mode.
|
|
328
|
+
#
|
|
329
|
+
# @option kwargs [Symbol] :hash (:md5)
|
|
330
|
+
# The algorithm to hash the `:password`.
|
|
331
|
+
#
|
|
332
|
+
# @option kwargs [String] :key
|
|
333
|
+
# The secret key to use.
|
|
334
|
+
#
|
|
335
|
+
# @option kwargs [String] :password
|
|
336
|
+
# The password for the cipher.
|
|
337
|
+
#
|
|
338
|
+
# @option kwargs [String] :iv
|
|
339
|
+
# The optional Initial Vector (IV).
|
|
340
|
+
#
|
|
341
|
+
# @option kwargs [Integer] :padding
|
|
342
|
+
# Sets the padding for the cipher.
|
|
343
|
+
#
|
|
344
|
+
# @return [String]
|
|
345
|
+
# The encrypted data.
|
|
346
|
+
#
|
|
347
|
+
# @raise [ArgumentError]
|
|
348
|
+
# Either the the `key:` or `password:` keyword argument must be given.
|
|
349
|
+
#
|
|
350
|
+
# @since 1.0.0
|
|
351
|
+
#
|
|
352
|
+
def aes128_decrypt(**kwargs)
|
|
353
|
+
Ronin::Support::Crypto.aes128_decrypt(self,**kwargs)
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
#
|
|
357
|
+
# Encrypts the String using AES-256.
|
|
358
|
+
#
|
|
359
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
360
|
+
# Additional keyword arguments for {Ronin::Support::Crypto.aes256_cipher}.
|
|
361
|
+
#
|
|
362
|
+
# @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] mode (:cbc)
|
|
363
|
+
# The desired AES cipher mode.
|
|
364
|
+
#
|
|
365
|
+
# @option kwargs [Symbol] :hash (:sha256)
|
|
366
|
+
# The algorithm to hash the `:password`.
|
|
367
|
+
#
|
|
368
|
+
# @option kwargs [String] :key
|
|
369
|
+
# The secret key to use.
|
|
370
|
+
#
|
|
371
|
+
# @option kwargs [String] :password
|
|
372
|
+
# The password for the cipher.
|
|
373
|
+
#
|
|
374
|
+
# @option kwargs [String] :iv
|
|
375
|
+
# The optional Initial Vector (IV).
|
|
376
|
+
#
|
|
377
|
+
# @option kwargs [Integer] :padding
|
|
378
|
+
# Sets the padding for the cipher.
|
|
379
|
+
#
|
|
380
|
+
# @return [String]
|
|
381
|
+
# The encrypted data.
|
|
382
|
+
#
|
|
383
|
+
# @raise [ArgumentError]
|
|
384
|
+
# Either the the `key:` or `password:` keyword argument must be given.
|
|
385
|
+
#
|
|
386
|
+
# @since 1.0.0
|
|
387
|
+
#
|
|
388
|
+
def aes256_encrypt(**kwargs)
|
|
389
|
+
Ronin::Support::Crypto.aes256_encrypt(self,**kwargs)
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
#
|
|
393
|
+
# Decrypts the String using AES-256.
|
|
394
|
+
#
|
|
395
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
396
|
+
# Additional keyword arguments for {Ronin::Support::Crypto.aes256_cipher}.
|
|
397
|
+
#
|
|
398
|
+
# @option kwargs [:cbc, :cfb, :ofb, :ctr, Symbol] mode (:cbc)
|
|
399
|
+
# The desired AES cipher mode.
|
|
400
|
+
#
|
|
401
|
+
# @option kwargs [Symbol] :hash (:sha256)
|
|
402
|
+
# The algorithm to hash the `:password`.
|
|
403
|
+
#
|
|
404
|
+
# @option kwargs [String] :key
|
|
405
|
+
# The secret key to use.
|
|
406
|
+
#
|
|
407
|
+
# @option kwargs [String] :password
|
|
408
|
+
# The password for the cipher.
|
|
409
|
+
#
|
|
410
|
+
# @option kwargs [String] :iv
|
|
411
|
+
# The optional Initial Vector (IV).
|
|
412
|
+
#
|
|
413
|
+
# @option kwargs [Integer] :padding
|
|
414
|
+
# Sets the padding for the cipher.
|
|
415
|
+
#
|
|
416
|
+
# @return [String]
|
|
417
|
+
# The encrypted data.
|
|
418
|
+
#
|
|
419
|
+
# @raise [ArgumentError]
|
|
420
|
+
# Either the the `key:` or `password:` keyword argument must be given.
|
|
421
|
+
#
|
|
422
|
+
# @since 1.0.0
|
|
423
|
+
#
|
|
424
|
+
def aes256_decrypt(**kwargs)
|
|
425
|
+
Ronin::Support::Crypto.aes256_decrypt(self,**kwargs)
|
|
426
|
+
end
|
|
427
|
+
|
|
428
|
+
#
|
|
429
|
+
# Encrypts the String using the given RSA key.
|
|
430
|
+
#
|
|
431
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
432
|
+
# Additional keyword arguments for {Ronin::Support::Crypto.rsa_encrypt}.
|
|
433
|
+
#
|
|
434
|
+
# @option kwargs [String, nil] :key
|
|
435
|
+
# The PEM or DER encoded RSA key string.
|
|
436
|
+
#
|
|
437
|
+
# @option kwargs [String, nil] :key_file
|
|
438
|
+
# The path to the PEM or DER encoded RSA key file.
|
|
439
|
+
#
|
|
440
|
+
# @option kwargs [String, nil] :key_password
|
|
441
|
+
# The optional password to decrypt the encrypted RSA key.
|
|
442
|
+
#
|
|
443
|
+
# @option kwargs [:pkcs1_oaep, :pkcs1, :sslv23,
|
|
444
|
+
# nil, false] :padding (:pkcs1)
|
|
445
|
+
# Optional padding mode. `nil` and `false` will disable padding.
|
|
446
|
+
#
|
|
447
|
+
# @return [String]
|
|
448
|
+
# The encrypted data.
|
|
449
|
+
#
|
|
450
|
+
# @raise [ArgumentError]
|
|
451
|
+
# Either the `key:` or `key_file:` keyword argument must be given.
|
|
452
|
+
#
|
|
453
|
+
# @since 1.0.0
|
|
454
|
+
#
|
|
455
|
+
def rsa_encrypt(**kwargs)
|
|
456
|
+
Ronin::Support::Crypto.rsa_encrypt(self,**kwargs)
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
#
|
|
460
|
+
# Decrypts the String using the given RSA key.
|
|
461
|
+
#
|
|
462
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
463
|
+
# Additional keyword arguments for {Ronin::Support::Crypto.rsa_decrypt}.
|
|
464
|
+
#
|
|
465
|
+
# @option kwargs [String, nil] :key
|
|
466
|
+
# The PEM or DER encoded RSA key string.
|
|
467
|
+
#
|
|
468
|
+
# @option kwargs [String, nil] :key_file
|
|
469
|
+
# The path to the PEM or DER encoded RSA key file.
|
|
470
|
+
#
|
|
471
|
+
# @option kwargs [String, nil] :key_password
|
|
472
|
+
# The optional password to decrypt the encrypted RSA key.
|
|
473
|
+
#
|
|
474
|
+
# @option kwargs [:pkcs1_oaep, :pkcs1, :sslv23,
|
|
475
|
+
# nil, false] :padding (:pkcs1)
|
|
476
|
+
# Optional padding mode. `nil` and `false` will disable padding.
|
|
477
|
+
#
|
|
478
|
+
# @return [String]
|
|
479
|
+
# The decrypted data.
|
|
480
|
+
#
|
|
481
|
+
# @raise [ArgumentError]
|
|
482
|
+
# Either the `key:` or `key_file:` keyword argument must be given.
|
|
483
|
+
#
|
|
484
|
+
# @since 1.0.0
|
|
485
|
+
#
|
|
486
|
+
def rsa_decrypt(**kwargs)
|
|
487
|
+
Ronin::Support::Crypto.rsa_decrypt(self,**kwargs)
|
|
488
|
+
end
|
|
489
|
+
|
|
490
|
+
#
|
|
491
|
+
# Rotates the characters in the string using the given alphabet.
|
|
492
|
+
#
|
|
493
|
+
# @param [Integer] n
|
|
494
|
+
# The number of characters to shift each character by.
|
|
495
|
+
#
|
|
496
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
497
|
+
# Additional keyword arguments.
|
|
498
|
+
#
|
|
499
|
+
# @option kwargs [Array<Array<String>>] :alphabets
|
|
500
|
+
# The alphabet(s) to use.
|
|
501
|
+
#
|
|
502
|
+
# @return [String]
|
|
503
|
+
# The rotated string.
|
|
504
|
+
#
|
|
505
|
+
# @note
|
|
506
|
+
# This method was added as a joke and should not be used for secure
|
|
507
|
+
# cryptographic communications.
|
|
508
|
+
#
|
|
509
|
+
# @example ROT13 "encryption":
|
|
510
|
+
# "The quick brown fox jumps over 13 lazy dogs.".rot
|
|
511
|
+
# # => "Gur dhvpx oebja sbk whzcf bire 46 ynml qbtf."
|
|
512
|
+
#
|
|
513
|
+
# @example ROT13 "decryption":
|
|
514
|
+
# "Gur dhvpx oebja sbk whzcf bire 46 ynml qbtf.".rot(-13)
|
|
515
|
+
# # => "The quick brown fox jumps over 13 lazy dogs."
|
|
516
|
+
#
|
|
517
|
+
# @since 1.0.0
|
|
518
|
+
#
|
|
519
|
+
def rot(n=13,**kwargs)
|
|
520
|
+
Ronin::Support::Crypto.rot(self,n,**kwargs)
|
|
521
|
+
end
|
|
522
|
+
|
|
523
|
+
#
|
|
524
|
+
# XOR encodes the String.
|
|
525
|
+
#
|
|
526
|
+
# @param [Enumerable, Integer] key
|
|
527
|
+
# The byte to XOR against each byte in the String.
|
|
528
|
+
#
|
|
529
|
+
# @return [String]
|
|
530
|
+
# The XOR encoded String.
|
|
531
|
+
#
|
|
532
|
+
# @example
|
|
533
|
+
# "hello".xor(0x41)
|
|
534
|
+
# # => ")$--."
|
|
535
|
+
#
|
|
536
|
+
# @example
|
|
537
|
+
# "hello again".xor([0x55, 0x41, 0xe1])
|
|
538
|
+
# # => "=$\x8d9.\xc14&\x80</"
|
|
539
|
+
#
|
|
540
|
+
# @api public
|
|
541
|
+
#
|
|
542
|
+
def xor(key)
|
|
543
|
+
Ronin::Support::Crypto.xor(self,key)
|
|
544
|
+
end
|
|
545
|
+
|
|
546
|
+
alias ^ xor
|
|
547
|
+
|
|
548
|
+
end
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
#
|
|
2
|
-
# Copyright (c) 2006-
|
|
3
|
+
# Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
3
4
|
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
# Ronin Support is free software: you can redistribute it and/or modify
|
|
5
|
+
# ronin-support is free software: you can redistribute it and/or modify
|
|
7
6
|
# it under the terms of the GNU Lesser General Public License as published
|
|
8
7
|
# by the Free Software Foundation, either version 3 of the License, or
|
|
9
8
|
# (at your option) any later version.
|
|
10
9
|
#
|
|
11
|
-
#
|
|
10
|
+
# ronin-support is distributed in the hope that it will be useful,
|
|
12
11
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
12
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
13
|
# GNU Lesser General Public License for more details.
|
|
15
14
|
#
|
|
16
15
|
# You should have received a copy of the GNU Lesser General Public License
|
|
17
|
-
# along with
|
|
16
|
+
# along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
|
|
18
17
|
#
|
|
19
18
|
|
|
20
|
-
require 'ronin/
|
|
21
|
-
require 'ronin/
|
|
19
|
+
require 'ronin/support/crypto/core_ext/string'
|
|
20
|
+
require 'ronin/support/crypto/core_ext/file'
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
4
|
+
#
|
|
5
|
+
# ronin-support is free software: you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU Lesser General Public License as published
|
|
7
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
# (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# ronin-support is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU Lesser General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU Lesser General Public License
|
|
16
|
+
# along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'ronin/support/crypto/openssl'
|
|
20
|
+
|
|
21
|
+
module Ronin
|
|
22
|
+
module Support
|
|
23
|
+
module Crypto
|
|
24
|
+
#
|
|
25
|
+
# Represents a Hash-based Message Authentication Code (HMAC).
|
|
26
|
+
#
|
|
27
|
+
# @see http://rubydoc.info/stdlib/openssl/OpenSSL/HMAC
|
|
28
|
+
#
|
|
29
|
+
# @since 1.0.0
|
|
30
|
+
#
|
|
31
|
+
# @api public
|
|
32
|
+
#
|
|
33
|
+
class HMAC < OpenSSL::HMAC
|
|
34
|
+
|
|
35
|
+
#
|
|
36
|
+
# Inspects the HMAC.
|
|
37
|
+
#
|
|
38
|
+
# @return [String]
|
|
39
|
+
# The inspected object containing the HMAC hexdigest string.
|
|
40
|
+
#
|
|
41
|
+
def inspect
|
|
42
|
+
"#<#{self.class}: #{super}>"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|