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,135 @@
|
|
|
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/network/ssl/proxy'
|
|
20
|
+
|
|
21
|
+
module Ronin
|
|
22
|
+
module Support
|
|
23
|
+
module Network
|
|
24
|
+
module TLS
|
|
25
|
+
#
|
|
26
|
+
# The TLS Proxy allows for inspecting and manipulating TLS wrapped
|
|
27
|
+
# protocols.
|
|
28
|
+
#
|
|
29
|
+
# ## Example
|
|
30
|
+
#
|
|
31
|
+
# require 'ronin/support/network/tls/proxy'
|
|
32
|
+
# require 'hexdump'
|
|
33
|
+
#
|
|
34
|
+
# Ronin::Support::Network::TLS::Proxy.start(port: 1337, server: ['www.wired.com', 443]) do |proxy|
|
|
35
|
+
# address = lambda { |socket|
|
|
36
|
+
# addrinfo = socket.peeraddr
|
|
37
|
+
#
|
|
38
|
+
# "#{addrinfo[3]}:#{addrinfo[1]}"
|
|
39
|
+
# }
|
|
40
|
+
# hex = Hexdump::Hexdump.new
|
|
41
|
+
#
|
|
42
|
+
# proxy.on_client_data do |client,server,data|
|
|
43
|
+
# puts "#{address[client]} -> #{proxy}"
|
|
44
|
+
# hex.dump(data)
|
|
45
|
+
# end
|
|
46
|
+
#
|
|
47
|
+
# proxy.on_client_connect do |client|
|
|
48
|
+
# puts "#{address[client]} -> #{proxy} [connected]"
|
|
49
|
+
# end
|
|
50
|
+
#
|
|
51
|
+
# proxy.on_client_disconnect do |client,server|
|
|
52
|
+
# puts "#{address[client]} <- #{proxy} [disconnected]"
|
|
53
|
+
# end
|
|
54
|
+
#
|
|
55
|
+
# proxy.on_server_data do |client,server,data|
|
|
56
|
+
# puts "#{address[client]} <- #{proxy}"
|
|
57
|
+
# hex.dump(data)
|
|
58
|
+
# end
|
|
59
|
+
#
|
|
60
|
+
# proxy.on_server_connect do |client,server|
|
|
61
|
+
# puts "#{address[client]} <- #{proxy} [connected]"
|
|
62
|
+
# end
|
|
63
|
+
#
|
|
64
|
+
# proxy.on_server_disconnect do |client,server|
|
|
65
|
+
# puts "#{address[client]} <- #{proxy} [disconnected]"
|
|
66
|
+
# end
|
|
67
|
+
# end
|
|
68
|
+
#
|
|
69
|
+
# ## Callbacks
|
|
70
|
+
#
|
|
71
|
+
# In addition to the events supported by the {Network::Proxy Proxy}
|
|
72
|
+
# base class, the TLS Proxy also supports the following callbacks.
|
|
73
|
+
#
|
|
74
|
+
# ### client_connect
|
|
75
|
+
#
|
|
76
|
+
# When a client connects to the proxy:
|
|
77
|
+
#
|
|
78
|
+
# on_client_connect do |client|
|
|
79
|
+
# puts "[connected] #{client.remote_address.ip_address}:#{client.remote_addre
|
|
80
|
+
# end
|
|
81
|
+
#
|
|
82
|
+
# ### client_disconnect
|
|
83
|
+
#
|
|
84
|
+
# When a client disconnects from the proxy:
|
|
85
|
+
#
|
|
86
|
+
# on_client_disconnect do |client,server|
|
|
87
|
+
# puts "[disconnected] #{client.remote_address.ip_address}:#{client.remote_ad
|
|
88
|
+
# end
|
|
89
|
+
#
|
|
90
|
+
# ### server_connect
|
|
91
|
+
#
|
|
92
|
+
# When the server accepts a connection from the proxy:
|
|
93
|
+
#
|
|
94
|
+
# on_server_connect do |client,server|
|
|
95
|
+
# puts "[connected] #{proxy}"
|
|
96
|
+
# end
|
|
97
|
+
#
|
|
98
|
+
# ### server_disconnect
|
|
99
|
+
#
|
|
100
|
+
# When the server closes a connection from the proxy.
|
|
101
|
+
#
|
|
102
|
+
# on_server_disconnect do |client,server|
|
|
103
|
+
# puts "[disconnected] #{proxy}"
|
|
104
|
+
# end
|
|
105
|
+
#
|
|
106
|
+
# ### connect
|
|
107
|
+
#
|
|
108
|
+
# Alias for {#on_server_connect}.
|
|
109
|
+
#
|
|
110
|
+
# ### disconnect
|
|
111
|
+
#
|
|
112
|
+
# Alias for {#on_client_disconnect}.
|
|
113
|
+
#
|
|
114
|
+
# @since 1.0.0
|
|
115
|
+
#
|
|
116
|
+
class Proxy < SSL::Proxy
|
|
117
|
+
|
|
118
|
+
#
|
|
119
|
+
# Creates a new TLS Proxy.
|
|
120
|
+
#
|
|
121
|
+
# @param [1, 1.1, 1.2, String, Symbol, nil] version
|
|
122
|
+
# The TLS version to use.
|
|
123
|
+
#
|
|
124
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
125
|
+
# Additional keyword arguments for {SSL::Proxy#initialize}.
|
|
126
|
+
#
|
|
127
|
+
def initialize(version: 1.2, **kwargs)
|
|
128
|
+
super(version: version, **kwargs)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
|
|
20
|
+
require 'ronin/support/network/tls/proxy'
|
|
21
|
+
require 'ronin/support/network/ssl'
|
|
22
|
+
|
|
23
|
+
module Ronin
|
|
24
|
+
module Support
|
|
25
|
+
module Network
|
|
26
|
+
#
|
|
27
|
+
# @since 1.0.0
|
|
28
|
+
#
|
|
29
|
+
module TLS
|
|
30
|
+
include SSL
|
|
31
|
+
|
|
32
|
+
#
|
|
33
|
+
# Creates a new SSL Context.
|
|
34
|
+
#
|
|
35
|
+
# @param [1, 1.1, 1.2, String, Symbol, nil] version
|
|
36
|
+
# The SSL version to use.
|
|
37
|
+
#
|
|
38
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
39
|
+
# Additional keyword arguments for {SSL.context}.
|
|
40
|
+
#
|
|
41
|
+
# @return [OpenSSL::SSL::SSLContext]
|
|
42
|
+
# The newly created SSL Context.
|
|
43
|
+
#
|
|
44
|
+
# @api semipublic
|
|
45
|
+
#
|
|
46
|
+
def self.context(version: 1.2, **kwargs)
|
|
47
|
+
SSL.context(version: version, **kwargs)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
4
|
+
#
|
|
5
|
+
# ronin-support is free software: you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU Lesser General Public License as published
|
|
7
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
# (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# ronin-support is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU Lesser General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU Lesser General Public License
|
|
16
|
+
# along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'ronin/support/network/udp'
|
|
20
|
+
|
|
21
|
+
module Ronin
|
|
22
|
+
module Support
|
|
23
|
+
module Network
|
|
24
|
+
module UDP
|
|
25
|
+
#
|
|
26
|
+
# Provides helper methods for using the UDP protocol.
|
|
27
|
+
#
|
|
28
|
+
module Mixin
|
|
29
|
+
#
|
|
30
|
+
# Tests whether a remote UDP port is open.
|
|
31
|
+
#
|
|
32
|
+
# @param [String] host
|
|
33
|
+
# The host to connect to.
|
|
34
|
+
#
|
|
35
|
+
# @param [Integer] port
|
|
36
|
+
# The port to connect to.
|
|
37
|
+
#
|
|
38
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
39
|
+
# Additional keyword arguments for {#udp_connect}.
|
|
40
|
+
#
|
|
41
|
+
# @option kwargs [Integer] :timeout (5)
|
|
42
|
+
# The maximum time to attempt connecting.
|
|
43
|
+
#
|
|
44
|
+
# @option kwargs [String, nil] :bind_host
|
|
45
|
+
# The local host to bind to.
|
|
46
|
+
#
|
|
47
|
+
# @option kwargs [Integer, nil] :bind_port
|
|
48
|
+
# The local port to bind to.
|
|
49
|
+
#
|
|
50
|
+
# @return [Boolean, nil]
|
|
51
|
+
# Specifies whether the remote UDP port is open.
|
|
52
|
+
# If no data or ICMP error were received, `nil` will be returned.
|
|
53
|
+
#
|
|
54
|
+
# @example
|
|
55
|
+
# udp_open?('4.2.2.1',53)
|
|
56
|
+
# # => true
|
|
57
|
+
#
|
|
58
|
+
# @example Using a timeout:
|
|
59
|
+
# udp_open?('example.com',1111, timeout: 5)
|
|
60
|
+
# # => nil
|
|
61
|
+
#
|
|
62
|
+
# @api public
|
|
63
|
+
#
|
|
64
|
+
# @see UDP.open?
|
|
65
|
+
#
|
|
66
|
+
# @since 0.5.0
|
|
67
|
+
#
|
|
68
|
+
def udp_open?(host,port,**kwargs)
|
|
69
|
+
UDP.open?(host,port,**kwargs)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
#
|
|
73
|
+
# Creates a new UDPSocket object connected to a given host and port.
|
|
74
|
+
#
|
|
75
|
+
# @param [String] host
|
|
76
|
+
# The host to connect to.
|
|
77
|
+
#
|
|
78
|
+
# @param [Integer] port
|
|
79
|
+
# The port to connect to.
|
|
80
|
+
#
|
|
81
|
+
# @option kwargs [String, nil] :bind_host
|
|
82
|
+
# The local host to bind to.
|
|
83
|
+
#
|
|
84
|
+
# @option kwargs [Integer, nil] :bind_port
|
|
85
|
+
# The local port to bind to.
|
|
86
|
+
#
|
|
87
|
+
# @yield [socket]
|
|
88
|
+
# If a block is given, it will be passed the newly created socket.
|
|
89
|
+
# Once the block returns the socket will be closed.
|
|
90
|
+
#
|
|
91
|
+
# @yieldparam [UDPsocket] socket
|
|
92
|
+
# The newly created UDP socket.
|
|
93
|
+
#
|
|
94
|
+
# @return [UDPSocket, nil]
|
|
95
|
+
# The newly created UDP socket object. If a block is given a `nil`
|
|
96
|
+
# will be returned.
|
|
97
|
+
#
|
|
98
|
+
# @example
|
|
99
|
+
# udp_connect('8.8.8.8',53)
|
|
100
|
+
# # => #<UDPSocket:fd 5, AF_INET, 192.168.122.165, 48313>
|
|
101
|
+
#
|
|
102
|
+
# @example
|
|
103
|
+
# udp_connect('8.8.8.8',53) do |socket|
|
|
104
|
+
# # ...
|
|
105
|
+
# end
|
|
106
|
+
#
|
|
107
|
+
# @see UDP.connect
|
|
108
|
+
# @see https://rubydoc.info/stdlib/socket/UDPSocket
|
|
109
|
+
#
|
|
110
|
+
# @api public
|
|
111
|
+
#
|
|
112
|
+
def udp_connect(host,port,**kwargs,&block)
|
|
113
|
+
UDP.connect(host,port,**kwargs,&block)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
#
|
|
117
|
+
# Creates a new UDPSocket object, connected to a given host and port.
|
|
118
|
+
# The given data will then be written to the newly created UDPSocket.
|
|
119
|
+
#
|
|
120
|
+
# @param [String] data
|
|
121
|
+
# The data to send through the connection.
|
|
122
|
+
#
|
|
123
|
+
# @param [String] host
|
|
124
|
+
# The host to connect to.
|
|
125
|
+
#
|
|
126
|
+
# @param [Integer] port
|
|
127
|
+
# The port to connect to.
|
|
128
|
+
#
|
|
129
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
130
|
+
# Additional keyword arguments for {#udp_connect}.
|
|
131
|
+
#
|
|
132
|
+
# @option kwargs [String, nil] :bind_host
|
|
133
|
+
# The local host to bind to.
|
|
134
|
+
#
|
|
135
|
+
# @option kwargs [Integer, nil] :bind_port
|
|
136
|
+
# The local port to bind to.
|
|
137
|
+
#
|
|
138
|
+
# @yield [socket]
|
|
139
|
+
# If a block is given, it will be passed the newly created socket.
|
|
140
|
+
#
|
|
141
|
+
# @yieldparam [UDPsocket] socket
|
|
142
|
+
# The newly created UDPSocket object.
|
|
143
|
+
#
|
|
144
|
+
# @return [UDPSocket]
|
|
145
|
+
# The newly created UDPSocket object.
|
|
146
|
+
#
|
|
147
|
+
# @api public
|
|
148
|
+
#
|
|
149
|
+
# @see UDP.connect_and_send
|
|
150
|
+
#
|
|
151
|
+
def udp_connect_and_send(data,host,port,**kwargs,&block)
|
|
152
|
+
UDP.connect_and_send(data,host,port,**kwargs,&block)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
#
|
|
156
|
+
# Connects to a specified host and port, sends the given data and then
|
|
157
|
+
# closes the connection.
|
|
158
|
+
#
|
|
159
|
+
# @param [String] data
|
|
160
|
+
# The data to send through the connection.
|
|
161
|
+
#
|
|
162
|
+
# @param [String] host
|
|
163
|
+
# The host to connect to.
|
|
164
|
+
#
|
|
165
|
+
# @param [Integer] port
|
|
166
|
+
# The port to connect to.
|
|
167
|
+
#
|
|
168
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
169
|
+
# Additional keyword arguments for {#udp_connect}.
|
|
170
|
+
#
|
|
171
|
+
# @option kwargs [String, nil] :bind_host
|
|
172
|
+
# The local host to bind to.
|
|
173
|
+
#
|
|
174
|
+
# @option kwargs [Integer, nil] :bind_port
|
|
175
|
+
# The local port to bind to.
|
|
176
|
+
#
|
|
177
|
+
# @return [true]
|
|
178
|
+
# The data was successfully sent.
|
|
179
|
+
#
|
|
180
|
+
# @example
|
|
181
|
+
# buffer = "GET /" + ('A' * 4096) + "\n\r"
|
|
182
|
+
# udp_send(buffer,'victim.com',80)
|
|
183
|
+
# # => true
|
|
184
|
+
#
|
|
185
|
+
# @api public
|
|
186
|
+
#
|
|
187
|
+
# @see UDP.send
|
|
188
|
+
#
|
|
189
|
+
# @since 0.4.0
|
|
190
|
+
#
|
|
191
|
+
def udp_send(data,host,port,**kwargs)
|
|
192
|
+
UDP.send(data,host,port,**kwargs)
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
#
|
|
196
|
+
# Reads the banner from the service running on the given host and
|
|
197
|
+
# port.
|
|
198
|
+
#
|
|
199
|
+
# @param [String] host
|
|
200
|
+
# The host to connect to.
|
|
201
|
+
#
|
|
202
|
+
# @param [Integer] port
|
|
203
|
+
# The port to connect to.
|
|
204
|
+
#
|
|
205
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
206
|
+
# Additional keyword arguments for {#udp_connect}.
|
|
207
|
+
#
|
|
208
|
+
# @option kwargs [String, nil] :bind_host
|
|
209
|
+
# The local host to bind to.
|
|
210
|
+
#
|
|
211
|
+
# @option kwargs [Integer, nil] :bind_port
|
|
212
|
+
# The local port to bind to.
|
|
213
|
+
#
|
|
214
|
+
# @yield [banner]
|
|
215
|
+
# If a block is given, it will be passed the grabbed banner.
|
|
216
|
+
#
|
|
217
|
+
# @yieldparam [String] banner
|
|
218
|
+
# The grabbed banner.
|
|
219
|
+
#
|
|
220
|
+
# @return [String]
|
|
221
|
+
# The grabbed banner.
|
|
222
|
+
#
|
|
223
|
+
# @api public
|
|
224
|
+
#
|
|
225
|
+
# @see UDP.banner
|
|
226
|
+
#
|
|
227
|
+
def udp_banner(host,port,**kwargs,&block)
|
|
228
|
+
UDP.banner(host,port,**kwargs,&block)
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
#
|
|
232
|
+
# Creates a new UDPServer listening on a given host and port.
|
|
233
|
+
#
|
|
234
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
235
|
+
# Additional keyword arguments for {UDP.server}.
|
|
236
|
+
#
|
|
237
|
+
# @option kwargs [Integer, nil] :port (0)
|
|
238
|
+
# The local port to listen on.
|
|
239
|
+
#
|
|
240
|
+
# @option kwargs [String, nil] :host
|
|
241
|
+
# The host to bind to.
|
|
242
|
+
#
|
|
243
|
+
# @return [UDPServer]
|
|
244
|
+
# The new UDP server.
|
|
245
|
+
#
|
|
246
|
+
# @example
|
|
247
|
+
# udp_server(port: 1337)
|
|
248
|
+
#
|
|
249
|
+
# @see https://rubydoc.info/stdlib/socket/UDPSocket
|
|
250
|
+
#
|
|
251
|
+
# @api public
|
|
252
|
+
#
|
|
253
|
+
# @see UDP.server
|
|
254
|
+
#
|
|
255
|
+
def udp_server(**kwargs,&block)
|
|
256
|
+
UDP.server(**kwargs,&block)
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
#
|
|
260
|
+
# Creates a new temporary UDPServer listening on a given host and
|
|
261
|
+
# port.
|
|
262
|
+
#
|
|
263
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
264
|
+
# Additional arguments for {#udp_server}.
|
|
265
|
+
#
|
|
266
|
+
# @option kwargs [Integer, nil] :port
|
|
267
|
+
# The local port to bind to.
|
|
268
|
+
#
|
|
269
|
+
# @option kwargs [String, nil] :host
|
|
270
|
+
# The host to bind to.
|
|
271
|
+
#
|
|
272
|
+
# @yield [server]
|
|
273
|
+
# The block which will be called after the server has been created.
|
|
274
|
+
# After the block has finished, the server will be closed.
|
|
275
|
+
#
|
|
276
|
+
# @yieldparam [UDPServer] server
|
|
277
|
+
# The newly created UDP server.
|
|
278
|
+
#
|
|
279
|
+
# @return [nil]
|
|
280
|
+
#
|
|
281
|
+
# @example
|
|
282
|
+
# udp_server_session(port: 1337) do |server|
|
|
283
|
+
# data, sender = server.recvfrom(1024)
|
|
284
|
+
# end
|
|
285
|
+
#
|
|
286
|
+
# @api public
|
|
287
|
+
#
|
|
288
|
+
# @see UDP.server_session
|
|
289
|
+
#
|
|
290
|
+
def udp_server_session(**kwargs,&block)
|
|
291
|
+
UDP.server_session(**kwargs,&block)
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
#
|
|
295
|
+
# Creates a new UDPServer listening on a given host and port,
|
|
296
|
+
# accepting messages from clients in a loop.
|
|
297
|
+
#
|
|
298
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
299
|
+
# Additional arguments for {#udp_server}.
|
|
300
|
+
#
|
|
301
|
+
# @option kwargs [Integer, nil] :port
|
|
302
|
+
# The local port to bind to.
|
|
303
|
+
#
|
|
304
|
+
# @option kwargs [String, nil] :host
|
|
305
|
+
# The host to bind to.
|
|
306
|
+
#
|
|
307
|
+
# @yield [server, (client_host, client_port), mesg]
|
|
308
|
+
# The given block will be passed the client host/port and the
|
|
309
|
+
# received message.
|
|
310
|
+
#
|
|
311
|
+
# @yieldparam [UDPServer] server
|
|
312
|
+
# The UDPServer.
|
|
313
|
+
#
|
|
314
|
+
# @yieldparam [String] client_host
|
|
315
|
+
# The source host of the message.
|
|
316
|
+
#
|
|
317
|
+
# @yieldparam [Integer] client_port
|
|
318
|
+
# The source port of the message.
|
|
319
|
+
#
|
|
320
|
+
# @yieldparam [String] mesg
|
|
321
|
+
# The received message.
|
|
322
|
+
#
|
|
323
|
+
# @return [nil]
|
|
324
|
+
#
|
|
325
|
+
# @example
|
|
326
|
+
# udp_server_loop(port: 1337) do |server,(host,port),mesg|
|
|
327
|
+
# server.send('hello',host,port)
|
|
328
|
+
# end
|
|
329
|
+
#
|
|
330
|
+
# @api public
|
|
331
|
+
#
|
|
332
|
+
# @see UDP.server_loop
|
|
333
|
+
#
|
|
334
|
+
# @since 0.5.0
|
|
335
|
+
#
|
|
336
|
+
def udp_server_loop(**kwargs,&block)
|
|
337
|
+
UDP.server_loop(**kwargs,&block)
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
#
|
|
341
|
+
# Creates a new UDPServer listening on a given host and port,
|
|
342
|
+
# accepts only one message from a client.
|
|
343
|
+
#
|
|
344
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
345
|
+
# Additional arguments for {#udp_server}.
|
|
346
|
+
#
|
|
347
|
+
# @option kwargs [Integer, nil] :port
|
|
348
|
+
# The local port to bind to.
|
|
349
|
+
#
|
|
350
|
+
# @option kwargs [String, nil] :host
|
|
351
|
+
# The host to bind to.
|
|
352
|
+
#
|
|
353
|
+
# @yield [server, (client_host, client_port), mesg]
|
|
354
|
+
# The given block will be passed the client host/port and the
|
|
355
|
+
# received message.
|
|
356
|
+
#
|
|
357
|
+
# @yieldparam [UDPServer] server
|
|
358
|
+
# The UDPServer.
|
|
359
|
+
#
|
|
360
|
+
# @yieldparam [String] client_host
|
|
361
|
+
# The source host of the message.
|
|
362
|
+
#
|
|
363
|
+
# @yieldparam [Integer] client_port
|
|
364
|
+
# The source port of the message.
|
|
365
|
+
#
|
|
366
|
+
# @yieldparam [String] mesg
|
|
367
|
+
# The received message.
|
|
368
|
+
#
|
|
369
|
+
# @return [nil]
|
|
370
|
+
#
|
|
371
|
+
# @example
|
|
372
|
+
# udp_recv(port: 1337) do |server,(host,port),mesg|
|
|
373
|
+
# server.send('hello',host,port)
|
|
374
|
+
# end
|
|
375
|
+
#
|
|
376
|
+
# @api public
|
|
377
|
+
#
|
|
378
|
+
# @see UDP.recv
|
|
379
|
+
#
|
|
380
|
+
# @since 0.5.0
|
|
381
|
+
#
|
|
382
|
+
def udp_recv(**kwargs,&block)
|
|
383
|
+
UDP.recv(**kwargs,&block)
|
|
384
|
+
end
|
|
385
|
+
end
|
|
386
|
+
end
|
|
387
|
+
end
|
|
388
|
+
end
|
|
389
|
+
end
|