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
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
3
|
-
#
|
|
4
|
-
# This file is part of Ronin Support.
|
|
5
|
-
#
|
|
6
|
-
# Ronin Support is free software: you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU Lesser General Public License as published
|
|
8
|
-
# by the Free Software Foundation, either version 3 of the License, or
|
|
9
|
-
# (at your option) any later version.
|
|
10
|
-
#
|
|
11
|
-
# Ronin Support is distributed in the hope that it will be useful,
|
|
12
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
-
# GNU Lesser General Public License for more details.
|
|
15
|
-
#
|
|
16
|
-
# You should have received a copy of the GNU Lesser General Public License
|
|
17
|
-
# along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
class Array
|
|
21
|
-
|
|
22
|
-
#
|
|
23
|
-
# Decodes the bytes contained within the Array. The Array may contain
|
|
24
|
-
# both Integer and String objects.
|
|
25
|
-
#
|
|
26
|
-
# @return [Array]
|
|
27
|
-
# The bytes contained within the Array.
|
|
28
|
-
#
|
|
29
|
-
# @example
|
|
30
|
-
# [0x41, 0x41, 0x20].bytes
|
|
31
|
-
# # => [0x41, 0x41, 0x20]
|
|
32
|
-
#
|
|
33
|
-
# @example
|
|
34
|
-
# ['A', 'BB', 0x90].bytes
|
|
35
|
-
# # => [0x41, 0x42, 0x42, 0x90]
|
|
36
|
-
#
|
|
37
|
-
# @api public
|
|
38
|
-
#
|
|
39
|
-
def bytes
|
|
40
|
-
bytes = []
|
|
41
|
-
|
|
42
|
-
each do |element|
|
|
43
|
-
case element
|
|
44
|
-
when Integer then bytes << element
|
|
45
|
-
else
|
|
46
|
-
element.to_s.each_byte do |b|
|
|
47
|
-
bytes << b
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
return bytes
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
#
|
|
56
|
-
# Decodes the characters contained within the Array. The Array may contain
|
|
57
|
-
# either Integer or String objects.
|
|
58
|
-
#
|
|
59
|
-
# @return [Array]
|
|
60
|
-
# The characters generated from the array.
|
|
61
|
-
#
|
|
62
|
-
# @example
|
|
63
|
-
# [0x41, 0x41, 0x20].chars
|
|
64
|
-
# # => ["A", "A", " "]
|
|
65
|
-
#
|
|
66
|
-
# @api public
|
|
67
|
-
#
|
|
68
|
-
def chars
|
|
69
|
-
array_bytes = bytes
|
|
70
|
-
array_bytes.map! { |b| b.chr }
|
|
71
|
-
|
|
72
|
-
return array_bytes
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
#
|
|
76
|
-
# @return [String]
|
|
77
|
-
# The String created from the characters within the Array.
|
|
78
|
-
#
|
|
79
|
-
# @example
|
|
80
|
-
# [0x41, 0x41, 0x20].char_string
|
|
81
|
-
# # => "AA "
|
|
82
|
-
#
|
|
83
|
-
# @api public
|
|
84
|
-
#
|
|
85
|
-
def char_string
|
|
86
|
-
chars.join
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
#
|
|
90
|
-
# Decodes the bytes contained with the Array, and escapes them as
|
|
91
|
-
# hexadecimal characters.
|
|
92
|
-
#
|
|
93
|
-
# @return [Array<String>]
|
|
94
|
-
# The hexadecimal characters contained within the Array.
|
|
95
|
-
#
|
|
96
|
-
# @example
|
|
97
|
-
# [0x41, 0x41, 0x20].bytes
|
|
98
|
-
# # => ['\x41', '\x41', '\x20']
|
|
99
|
-
#
|
|
100
|
-
# @example
|
|
101
|
-
# ['A', 'BB', 0x90].bytes
|
|
102
|
-
# # => ['\x41', '\x42', '\x42', '\x90']
|
|
103
|
-
#
|
|
104
|
-
# @api public
|
|
105
|
-
#
|
|
106
|
-
def hex_chars
|
|
107
|
-
array_bytes = bytes
|
|
108
|
-
array_bytes.map! { |b| '\x%x' % b }
|
|
109
|
-
|
|
110
|
-
return array_bytes
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
#
|
|
114
|
-
# Decodes the bytes contained with the Array, and escapes them as
|
|
115
|
-
# hexadecimal integers.
|
|
116
|
-
#
|
|
117
|
-
# @return [Array<String>]
|
|
118
|
-
# The hexadecimal integers contained within the Array.
|
|
119
|
-
#
|
|
120
|
-
# @example
|
|
121
|
-
# [0x41, 0x41, 0x20].bytes
|
|
122
|
-
# # => ['0x41', '0x41', '0x20']
|
|
123
|
-
#
|
|
124
|
-
# @example
|
|
125
|
-
# ['A', 'BB', 0x90].bytes
|
|
126
|
-
# # => ['0x41', '0x42', '0x42', '0x90']
|
|
127
|
-
#
|
|
128
|
-
# @api public
|
|
129
|
-
#
|
|
130
|
-
def hex_integers
|
|
131
|
-
array_bytes = bytes
|
|
132
|
-
array_bytes.map! { |b| '0x%x' % b }
|
|
133
|
-
|
|
134
|
-
return array_bytes
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
end
|
|
@@ -1,297 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
3
|
-
#
|
|
4
|
-
# This file is part of Ronin Support.
|
|
5
|
-
#
|
|
6
|
-
# Ronin Support is free software: you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU Lesser General Public License as published
|
|
8
|
-
# by the Free Software Foundation, either version 3 of the License, or
|
|
9
|
-
# (at your option) any later version.
|
|
10
|
-
#
|
|
11
|
-
# Ronin Support is distributed in the hope that it will be useful,
|
|
12
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
-
# GNU Lesser General Public License for more details.
|
|
15
|
-
#
|
|
16
|
-
# You should have received a copy of the GNU Lesser General Public License
|
|
17
|
-
# along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
require 'set'
|
|
21
|
-
|
|
22
|
-
class String
|
|
23
|
-
|
|
24
|
-
#
|
|
25
|
-
# Creates a new String by formatting each byte.
|
|
26
|
-
#
|
|
27
|
-
# @param [Hash] options
|
|
28
|
-
# Additional options.
|
|
29
|
-
#
|
|
30
|
-
# @option options [#include?] :include (0x00..0xff)
|
|
31
|
-
# The bytes to format.
|
|
32
|
-
#
|
|
33
|
-
# @option options [#include?] :exclude
|
|
34
|
-
# The bytes not to format.
|
|
35
|
-
#
|
|
36
|
-
# @yield [byte]
|
|
37
|
-
# The block which will return the formatted version of each byte
|
|
38
|
-
# within the String.
|
|
39
|
-
#
|
|
40
|
-
# @yieldparam [Integer] byte
|
|
41
|
-
# The byte to format.
|
|
42
|
-
#
|
|
43
|
-
# @return [String]
|
|
44
|
-
# The formatted version of the String.
|
|
45
|
-
#
|
|
46
|
-
# @example
|
|
47
|
-
# "hello".format_bytes { |b| "%x" % b }
|
|
48
|
-
# # => "68656c6c6f"
|
|
49
|
-
#
|
|
50
|
-
# @api public
|
|
51
|
-
#
|
|
52
|
-
def format_bytes(options={})
|
|
53
|
-
included = (options[:include] || (0x00..0xff))
|
|
54
|
-
excluded = (options[:exclude] || Set[])
|
|
55
|
-
formatted = ''
|
|
56
|
-
|
|
57
|
-
each_byte do |b|
|
|
58
|
-
formatted << if (included.include?(b) && !excluded.include?(b))
|
|
59
|
-
yield(b)
|
|
60
|
-
else
|
|
61
|
-
b
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
return formatted
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
#
|
|
69
|
-
# Creates a new String by formatting each character.
|
|
70
|
-
#
|
|
71
|
-
# @param [Hash] options
|
|
72
|
-
# Additional options.
|
|
73
|
-
#
|
|
74
|
-
# @option options [#include?, Regexp] :include (/./m)
|
|
75
|
-
# The bytes to format.
|
|
76
|
-
#
|
|
77
|
-
# @option options [#include?, Regexp] :exclude
|
|
78
|
-
# The bytes not to format.
|
|
79
|
-
#
|
|
80
|
-
# @yield [char]
|
|
81
|
-
# The block which will return the formatted version of each character
|
|
82
|
-
# within the String.
|
|
83
|
-
#
|
|
84
|
-
# @yieldparam [String] char
|
|
85
|
-
# The character to format.
|
|
86
|
-
#
|
|
87
|
-
# @return [String]
|
|
88
|
-
# The formatted version of the String.
|
|
89
|
-
#
|
|
90
|
-
# @example
|
|
91
|
-
# "hello".format_chars { |c| c * 3 }
|
|
92
|
-
# # => "hhheeellllllooo"
|
|
93
|
-
#
|
|
94
|
-
# @api public
|
|
95
|
-
#
|
|
96
|
-
def format_chars(options={})
|
|
97
|
-
included = (options[:include] || /./m)
|
|
98
|
-
excluded = (options[:exclude] || Set[])
|
|
99
|
-
formatted = ''
|
|
100
|
-
|
|
101
|
-
matches = lambda { |filter,c|
|
|
102
|
-
if filter.respond_to?(:include?) then filter.include?(c)
|
|
103
|
-
elsif filter.kind_of?(Regexp) then c =~ filter
|
|
104
|
-
end
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
each_char do |c|
|
|
108
|
-
formatted << if (matches[included,c] && !matches[excluded,c])
|
|
109
|
-
yield(c)
|
|
110
|
-
else
|
|
111
|
-
c
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
return formatted
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
#
|
|
119
|
-
# Creates a new String by randomizing the case of each character in the
|
|
120
|
-
# String.
|
|
121
|
-
#
|
|
122
|
-
# @param [Hash] options
|
|
123
|
-
# Additional options.
|
|
124
|
-
#
|
|
125
|
-
# @option options [Array, Range] :include (0x00..0xff)
|
|
126
|
-
# The bytes to format.
|
|
127
|
-
#
|
|
128
|
-
# @option options [Array, Range] :exclude
|
|
129
|
-
# The bytes not to format.
|
|
130
|
-
#
|
|
131
|
-
# @option options [Float] :probability (0.5)
|
|
132
|
-
# The probability that a character will have it's case changed.
|
|
133
|
-
#
|
|
134
|
-
# @example
|
|
135
|
-
# "get out your checkbook".random_case
|
|
136
|
-
# # => "gEt Out YOur CHEckbook"
|
|
137
|
-
#
|
|
138
|
-
# @api public
|
|
139
|
-
#
|
|
140
|
-
def random_case(options={})
|
|
141
|
-
prob = (options[:probability] || 0.5)
|
|
142
|
-
|
|
143
|
-
format_chars(options) do |c|
|
|
144
|
-
if rand <= prob then c.swapcase
|
|
145
|
-
else c
|
|
146
|
-
end
|
|
147
|
-
end
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
#
|
|
151
|
-
# Inserts data before the occurrence of a pattern.
|
|
152
|
-
#
|
|
153
|
-
# @param [String, Regexp] pattern
|
|
154
|
-
# The pattern to search for.
|
|
155
|
-
#
|
|
156
|
-
# @param [String] data
|
|
157
|
-
# The data to insert before the pattern.
|
|
158
|
-
#
|
|
159
|
-
# @return [String]
|
|
160
|
-
# The new modified String.
|
|
161
|
-
#
|
|
162
|
-
# @api public
|
|
163
|
-
#
|
|
164
|
-
def insert_before(pattern,data)
|
|
165
|
-
string = dup
|
|
166
|
-
index = string.index(pattern)
|
|
167
|
-
|
|
168
|
-
string.insert(index,data) if index
|
|
169
|
-
return string
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
#
|
|
173
|
-
# Inserts data after the occurrence of a pattern.
|
|
174
|
-
#
|
|
175
|
-
# @param [String, Regexp] pattern
|
|
176
|
-
# The pattern to search for.
|
|
177
|
-
#
|
|
178
|
-
# @param [String] data
|
|
179
|
-
# The data to insert after the pattern.
|
|
180
|
-
#
|
|
181
|
-
# @return [String]
|
|
182
|
-
# The new modified String.
|
|
183
|
-
#
|
|
184
|
-
# @api public
|
|
185
|
-
#
|
|
186
|
-
def insert_after(pattern,data)
|
|
187
|
-
string = dup
|
|
188
|
-
match = string.match(pattern)
|
|
189
|
-
|
|
190
|
-
if match
|
|
191
|
-
index = match.end(match.length - 1)
|
|
192
|
-
|
|
193
|
-
string.insert(index,data)
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
return string
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
#
|
|
200
|
-
# Creates a new String by padding the String with repeating text,
|
|
201
|
-
# out to a specified length.
|
|
202
|
-
#
|
|
203
|
-
# @param [String] padding
|
|
204
|
-
# The text to pad the new String with.
|
|
205
|
-
#
|
|
206
|
-
# @param [String] max_length
|
|
207
|
-
# The maximum length to pad the new String out to.
|
|
208
|
-
#
|
|
209
|
-
# @return [String]
|
|
210
|
-
# The padded version of the String.
|
|
211
|
-
#
|
|
212
|
-
# @example
|
|
213
|
-
# "hello".pad('A',50)
|
|
214
|
-
# # => "helloAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
|
215
|
-
#
|
|
216
|
-
# @api public
|
|
217
|
-
#
|
|
218
|
-
def pad(padding,max_length=length)
|
|
219
|
-
padding = padding.to_s
|
|
220
|
-
|
|
221
|
-
if max_length > length
|
|
222
|
-
max_length -= length
|
|
223
|
-
else
|
|
224
|
-
max_length = 0
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
padded = self + (padding * (max_length / padding.length))
|
|
228
|
-
|
|
229
|
-
unless (remaining = (max_length % padding.length)) == 0
|
|
230
|
-
padded << padding[0,remaining]
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
return padded
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
alias escape dump
|
|
237
|
-
|
|
238
|
-
# Common escaped characters.
|
|
239
|
-
UNESCAPE_CHARS = Hash.new do |hash,char|
|
|
240
|
-
if char[0,1] == '\\'
|
|
241
|
-
char[1,1]
|
|
242
|
-
else
|
|
243
|
-
char
|
|
244
|
-
end
|
|
245
|
-
end
|
|
246
|
-
UNESCAPE_CHARS['\0'] = "\0"
|
|
247
|
-
UNESCAPE_CHARS['\a'] = "\a"
|
|
248
|
-
UNESCAPE_CHARS['\b'] = "\b"
|
|
249
|
-
UNESCAPE_CHARS['\t'] = "\t"
|
|
250
|
-
UNESCAPE_CHARS['\n'] = "\n"
|
|
251
|
-
UNESCAPE_CHARS['\v'] = "\v"
|
|
252
|
-
UNESCAPE_CHARS['\f'] = "\f"
|
|
253
|
-
UNESCAPE_CHARS['\r'] = "\r"
|
|
254
|
-
|
|
255
|
-
#
|
|
256
|
-
# Unescapes the escaped String.
|
|
257
|
-
#
|
|
258
|
-
# @return [String]
|
|
259
|
-
# The unescaped version of the hex escaped String.
|
|
260
|
-
#
|
|
261
|
-
# @example
|
|
262
|
-
# "\\x68\\x65\\x6c\\x6c\\x6f".unescape
|
|
263
|
-
# # => "hello"
|
|
264
|
-
#
|
|
265
|
-
# @api public
|
|
266
|
-
#
|
|
267
|
-
# @since 0.5.0
|
|
268
|
-
#
|
|
269
|
-
def unescape
|
|
270
|
-
buffer = ''
|
|
271
|
-
hex_index = 0
|
|
272
|
-
hex_length = length
|
|
273
|
-
|
|
274
|
-
while (hex_index < hex_length)
|
|
275
|
-
hex_substring = self[hex_index..-1]
|
|
276
|
-
|
|
277
|
-
if hex_substring =~ /^\\[0-7]{3}/
|
|
278
|
-
buffer << hex_substring[0,4].to_i(8)
|
|
279
|
-
hex_index += 3
|
|
280
|
-
elsif hex_substring =~ /^\\x[0-9a-fA-F]{1,2}/
|
|
281
|
-
hex_substring[2..-1].scan(/^[0-9a-fA-F]{1,2}/) do |hex_byte|
|
|
282
|
-
buffer << hex_byte.to_i(16)
|
|
283
|
-
hex_index += (2 + hex_byte.length)
|
|
284
|
-
end
|
|
285
|
-
elsif hex_substring =~ /^\\./
|
|
286
|
-
buffer << UNESCAPE_CHARS[hex_substring[0,2]]
|
|
287
|
-
hex_index += 2
|
|
288
|
-
else
|
|
289
|
-
buffer << hex_substring[0,1]
|
|
290
|
-
hex_index += 1
|
|
291
|
-
end
|
|
292
|
-
end
|
|
293
|
-
|
|
294
|
-
return buffer
|
|
295
|
-
end
|
|
296
|
-
|
|
297
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
3
|
-
#
|
|
4
|
-
# This file is part of Ronin Support.
|
|
5
|
-
#
|
|
6
|
-
# Ronin Support is free software: you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU Lesser General Public License as published
|
|
8
|
-
# by the Free Software Foundation, either version 3 of the License, or
|
|
9
|
-
# (at your option) any later version.
|
|
10
|
-
#
|
|
11
|
-
# Ronin Support is distributed in the hope that it will be useful,
|
|
12
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
-
# GNU Lesser General Public License for more details.
|
|
15
|
-
#
|
|
16
|
-
# You should have received a copy of the GNU Lesser General Public License
|
|
17
|
-
# along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
require 'ronin/formatting/extensions/binary'
|
|
21
|
-
require 'ronin/formatting/extensions/text'
|
|
22
|
-
require 'ronin/formatting/extensions/digest'
|
|
23
|
-
require 'ronin/formatting/extensions/http'
|
|
24
|
-
require 'ronin/formatting/extensions/html'
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
3
|
-
#
|
|
4
|
-
# This file is part of Ronin Support.
|
|
5
|
-
#
|
|
6
|
-
# Ronin Support is free software: you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU Lesser General Public License as published
|
|
8
|
-
# by the Free Software Foundation, either version 3 of the License, or
|
|
9
|
-
# (at your option) any later version.
|
|
10
|
-
#
|
|
11
|
-
# Ronin Support is distributed in the hope that it will be useful,
|
|
12
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
-
# GNU Lesser General Public License for more details.
|
|
15
|
-
#
|
|
16
|
-
# You should have received a copy of the GNU Lesser General Public License
|
|
17
|
-
# along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
require 'ronin/formatting/extensions/text'
|
data/lib/ronin/formatting.rb
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
3
|
-
#
|
|
4
|
-
# This file is part of Ronin Support.
|
|
5
|
-
#
|
|
6
|
-
# Ronin Support is free software: you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU Lesser General Public License as published
|
|
8
|
-
# by the Free Software Foundation, either version 3 of the License, or
|
|
9
|
-
# (at your option) any later version.
|
|
10
|
-
#
|
|
11
|
-
# Ronin Support is distributed in the hope that it will be useful,
|
|
12
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
-
# GNU Lesser General Public License for more details.
|
|
15
|
-
#
|
|
16
|
-
# You should have received a copy of the GNU Lesser General Public License
|
|
17
|
-
# along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
require 'ronin/formatting/extensions'
|
|
21
|
-
require 'ronin/formatting/digest'
|
|
22
|
-
require 'ronin/formatting/binary'
|
|
23
|
-
require 'ronin/formatting/text'
|
|
24
|
-
require 'ronin/formatting/http'
|
|
25
|
-
require 'ronin/formatting/html'
|
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
3
|
-
#
|
|
4
|
-
# This file is part of Ronin Support.
|
|
5
|
-
#
|
|
6
|
-
# Ronin Support is free software: you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU Lesser General Public License as published
|
|
8
|
-
# by the Free Software Foundation, either version 3 of the License, or
|
|
9
|
-
# (at your option) any later version.
|
|
10
|
-
#
|
|
11
|
-
# Ronin Support is distributed in the hope that it will be useful,
|
|
12
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
-
# GNU Lesser General Public License for more details.
|
|
15
|
-
#
|
|
16
|
-
# You should have received a copy of the GNU Lesser General Public License
|
|
17
|
-
# along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
require 'ronin/fuzzing/template'
|
|
21
|
-
require 'ronin/fuzzing/repeater'
|
|
22
|
-
require 'ronin/fuzzing/fuzzer'
|
|
23
|
-
require 'ronin/fuzzing/mutator'
|
|
24
|
-
require 'ronin/fuzzing/fuzzing'
|
|
25
|
-
require 'ronin/extensions/regexp'
|
|
26
|
-
|
|
27
|
-
class String
|
|
28
|
-
|
|
29
|
-
#
|
|
30
|
-
# Generate permutations of Strings from a format template.
|
|
31
|
-
#
|
|
32
|
-
# @param [Array(<String,Symbol,Enumerable>, <Integer,Array,Range>)] fields
|
|
33
|
-
# The fields which defines the string or character sets which will
|
|
34
|
-
# make up parts of the String.
|
|
35
|
-
#
|
|
36
|
-
# @yield [string]
|
|
37
|
-
# The given block will be passed each unique String.
|
|
38
|
-
#
|
|
39
|
-
# @yieldparam [String] string
|
|
40
|
-
# A newly generated String.
|
|
41
|
-
#
|
|
42
|
-
# @return [Enumerator]
|
|
43
|
-
# If no block is given, an Enumerator will be returned.
|
|
44
|
-
#
|
|
45
|
-
# @raise [ArgumentError]
|
|
46
|
-
# A given character set name was unknown.
|
|
47
|
-
#
|
|
48
|
-
# @raise [TypeError]
|
|
49
|
-
# A given string set was not a String, Symbol or Enumerable.
|
|
50
|
-
# A given string set length was not an Integer or Enumerable.
|
|
51
|
-
#
|
|
52
|
-
# @example Generate Strings with ranges of repeating sub-strings:
|
|
53
|
-
#
|
|
54
|
-
# @example Generate Strings with three alpha chars and one numeric chars:
|
|
55
|
-
# String.generate([:alpha, 3], :numeric) do |password|
|
|
56
|
-
# puts password
|
|
57
|
-
# end
|
|
58
|
-
#
|
|
59
|
-
# @example Generate Strings with two to four alpha chars:
|
|
60
|
-
# String.generate([:alpha, 2..4]) do |password|
|
|
61
|
-
# puts password
|
|
62
|
-
# end
|
|
63
|
-
#
|
|
64
|
-
# @example Generate Strings using alpha and punctuation chars:
|
|
65
|
-
# String.generate([Chars.alpha + Chars.punctuation, 4]) do |password|
|
|
66
|
-
# puts password
|
|
67
|
-
# end
|
|
68
|
-
#
|
|
69
|
-
# @example Generate Strings from a custom char set:
|
|
70
|
-
# String.generate([['a', 'b', 'c'], 3], [['1', '2', '3'], 3]) do |password|
|
|
71
|
-
# puts password
|
|
72
|
-
# end
|
|
73
|
-
#
|
|
74
|
-
# @example Generate Strings containing known Strings:
|
|
75
|
-
# String.generate("rock", [:numeric, 4]) do |password|
|
|
76
|
-
# puts password
|
|
77
|
-
# end
|
|
78
|
-
#
|
|
79
|
-
# @example Generate Strings with ranges of repeating sub-strings:
|
|
80
|
-
# String.generate(['/AA', (1..100).step(5)]) do |path|
|
|
81
|
-
# puts path
|
|
82
|
-
# end
|
|
83
|
-
#
|
|
84
|
-
# @since 0.3.0
|
|
85
|
-
#
|
|
86
|
-
# @api public
|
|
87
|
-
#
|
|
88
|
-
def self.generate(*fields,&block)
|
|
89
|
-
Ronin::Fuzzing::Template.new(fields).each(&block)
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
#
|
|
93
|
-
# Repeats the String.
|
|
94
|
-
#
|
|
95
|
-
# @param [Enumerable<Integer>, Integer] lengths
|
|
96
|
-
# The number of times to repeat the String.
|
|
97
|
-
#
|
|
98
|
-
# @yield [repeated]
|
|
99
|
-
# The given block will be passed every repeated String.
|
|
100
|
-
#
|
|
101
|
-
# @yieldparam [String] repeated
|
|
102
|
-
# A repeated version of the String.
|
|
103
|
-
#
|
|
104
|
-
# @return [Enumerator]
|
|
105
|
-
# If no block is given, an Enumerator will be returned.
|
|
106
|
-
#
|
|
107
|
-
# @raise [TypeError]
|
|
108
|
-
# `n` must either be Enumerable or an Integer.
|
|
109
|
-
#
|
|
110
|
-
# @example
|
|
111
|
-
# 'A'.repeating(100)
|
|
112
|
-
# # => "AAAAAAAAAAAAA..."
|
|
113
|
-
#
|
|
114
|
-
# @example Generates 100 upto 700 `A`s, increasing by 100 at a time:
|
|
115
|
-
# 'A'.repeating((100..700).step(100)) do |str|
|
|
116
|
-
# # ...
|
|
117
|
-
# end
|
|
118
|
-
#
|
|
119
|
-
# @example Generates 128, 1024, 65536 `A`s:
|
|
120
|
-
# 'A'.repeating([128, 1024, 65536]) do |str|
|
|
121
|
-
# # ...
|
|
122
|
-
# end
|
|
123
|
-
#
|
|
124
|
-
# @api public
|
|
125
|
-
#
|
|
126
|
-
# @since 0.4.0
|
|
127
|
-
#
|
|
128
|
-
def repeating(lengths,&block)
|
|
129
|
-
case lengths
|
|
130
|
-
when Integer
|
|
131
|
-
# if lengths is an Integer, simply multiply the String and return
|
|
132
|
-
repeated = (self * lengths)
|
|
133
|
-
|
|
134
|
-
yield repeated if block_given?
|
|
135
|
-
return repeated
|
|
136
|
-
else
|
|
137
|
-
return Ronin::Fuzzing::Repeater.new(lengths).each(self,&block)
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
#
|
|
142
|
-
# Incrementally fuzzes the String.
|
|
143
|
-
#
|
|
144
|
-
# @param [Hash{Regexp,String,Symbol => Enumerable,Symbol}] substitutions
|
|
145
|
-
# Patterns and their substitutions.
|
|
146
|
-
#
|
|
147
|
-
# @yield [fuzz]
|
|
148
|
-
# The given block will be passed every fuzzed String.
|
|
149
|
-
#
|
|
150
|
-
# @yieldparam [String] fuzz
|
|
151
|
-
# A fuzzed String.
|
|
152
|
-
#
|
|
153
|
-
# @return [Enumerator]
|
|
154
|
-
# If no block is given, an Enumerator will be returned.
|
|
155
|
-
#
|
|
156
|
-
# @example Replace every `e`, `i`, `o`, `u` with `(`, 100 `A`s and a `\0`:
|
|
157
|
-
# "the quick brown fox".fuzz(/[eiou]/ => ['(', ('A' * 100), "\0"]) do |str|
|
|
158
|
-
# p str
|
|
159
|
-
# end
|
|
160
|
-
#
|
|
161
|
-
# @example {String.generate} with {String#fuzz}:
|
|
162
|
-
# "GET /".fuzz('/' => String.generate(['A', 1..100])) do |str|
|
|
163
|
-
# p str
|
|
164
|
-
# end
|
|
165
|
-
#
|
|
166
|
-
# @example Replace a {Regexp::UNIX_PATH} with {Ronin::Fuzzing#format_strings}:
|
|
167
|
-
# "GET /downloads/".fuzz(:unix_path => :format_string)
|
|
168
|
-
#
|
|
169
|
-
# @since 0.3.0
|
|
170
|
-
#
|
|
171
|
-
# @api public
|
|
172
|
-
#
|
|
173
|
-
def fuzz(substitutions={},&block)
|
|
174
|
-
Ronin::Fuzzing::Fuzzer.new(substitutions).each(self,&block)
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
#
|
|
178
|
-
# Permutes over every possible mutation of the String.
|
|
179
|
-
#
|
|
180
|
-
# @param [Hash{Regexp,String,Symbol => Enumerable,Symbol}] mutations
|
|
181
|
-
# The patterns and substitutions to mutate the String with.
|
|
182
|
-
#
|
|
183
|
-
# @yield [mutant]
|
|
184
|
-
# The given block will be yielded every possible mutant String.
|
|
185
|
-
#
|
|
186
|
-
# @yieldparam [String] mutant
|
|
187
|
-
# A mutated String.
|
|
188
|
-
#
|
|
189
|
-
# @return [Enumerator]
|
|
190
|
-
# If no block is given, an Enumerator will be returned.
|
|
191
|
-
#
|
|
192
|
-
# @raise [TypeError]
|
|
193
|
-
# A mutation pattern was not a Regexp, String or Symbol.
|
|
194
|
-
# A mutation substitution was not a Symbol or Enumerable.
|
|
195
|
-
#
|
|
196
|
-
# @example
|
|
197
|
-
# "hello old dog".mutate('e' => ['3'], 'l' => ['1'], 'o' => ['0']) do |str|
|
|
198
|
-
# puts str
|
|
199
|
-
# end
|
|
200
|
-
#
|
|
201
|
-
# @since 0.4.0
|
|
202
|
-
#
|
|
203
|
-
# @api public
|
|
204
|
-
#
|
|
205
|
-
def mutate(mutations={},&block)
|
|
206
|
-
Ronin::Fuzzing::Mutator.new(mutations).each(self,&block)
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
end
|