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,368 +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/network/mixins/mixin'
|
|
21
|
-
require 'ronin/network/tcp'
|
|
22
|
-
|
|
23
|
-
module Ronin
|
|
24
|
-
module Network
|
|
25
|
-
module Mixins
|
|
26
|
-
#
|
|
27
|
-
# Adds TCP convenience methods and connection parameters to a class.
|
|
28
|
-
#
|
|
29
|
-
# Defines the following parameters:
|
|
30
|
-
#
|
|
31
|
-
# * `host` (`String`) - TCP host.
|
|
32
|
-
# * `port` (`Integer`) - TCP port.
|
|
33
|
-
# * `local_host` (`String`) - TCP local host.
|
|
34
|
-
# * `local_port` (`Integer`) - TCP local port.
|
|
35
|
-
# * `server_host` (`String`) - TCP server host.
|
|
36
|
-
# * `server_port` (`Integer`) - TCP server port.
|
|
37
|
-
#
|
|
38
|
-
module TCP
|
|
39
|
-
include Mixin, Network::TCP
|
|
40
|
-
|
|
41
|
-
# TCP host
|
|
42
|
-
parameter :host, :type => String,
|
|
43
|
-
:description => 'TCP host'
|
|
44
|
-
|
|
45
|
-
# TCP port
|
|
46
|
-
parameter :port, :type => Integer,
|
|
47
|
-
:description => 'TCP port'
|
|
48
|
-
|
|
49
|
-
# TCP local host
|
|
50
|
-
parameter :local_host, :type => String,
|
|
51
|
-
:description => 'TCP local host'
|
|
52
|
-
|
|
53
|
-
# TCP local port
|
|
54
|
-
parameter :local_port, :type => Integer,
|
|
55
|
-
:description => 'TCP local port'
|
|
56
|
-
|
|
57
|
-
# TCP server host
|
|
58
|
-
parameter :server_host, :type => String,
|
|
59
|
-
:description => 'TCP server host'
|
|
60
|
-
|
|
61
|
-
# TCP server port
|
|
62
|
-
parameter :server_port, :type => Integer,
|
|
63
|
-
:description => 'TCP server port'
|
|
64
|
-
|
|
65
|
-
protected
|
|
66
|
-
|
|
67
|
-
#
|
|
68
|
-
# Tests whether the TCP port, specified by the `host` and `port`
|
|
69
|
-
# parameters, is open.
|
|
70
|
-
#
|
|
71
|
-
# @param [Integer] timeout (5)
|
|
72
|
-
# The maximum time to attempt connecting.
|
|
73
|
-
#
|
|
74
|
-
# @return [Boolean, nil]
|
|
75
|
-
# Specifies whether the remote TCP port is open.
|
|
76
|
-
# If the connection was not accepted, `nil` will be returned.
|
|
77
|
-
#
|
|
78
|
-
# @see Network::TCP#tcp_open?
|
|
79
|
-
#
|
|
80
|
-
# @api public
|
|
81
|
-
#
|
|
82
|
-
# @since 0.5.0
|
|
83
|
-
#
|
|
84
|
-
def tcp_open?(timeout=nil)
|
|
85
|
-
print_info "Testing if #{host_port} is open ..."
|
|
86
|
-
|
|
87
|
-
super(self.host,self.port,self.local_host,self.local_port,timeout)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
#
|
|
91
|
-
# Opens a TCP connection to the host and port specified by the
|
|
92
|
-
# `host` and `port` parameters. If the `local_host` and
|
|
93
|
-
# `local_port` parameters are set, they will be used for
|
|
94
|
-
# the local host and port of the TCP connection.
|
|
95
|
-
#
|
|
96
|
-
# @yield [socket]
|
|
97
|
-
# If a block is given, it will be passed the newly created socket.
|
|
98
|
-
#
|
|
99
|
-
# @yieldparam [TCPsocket] socket
|
|
100
|
-
# The newly created TCPSocket object.
|
|
101
|
-
#
|
|
102
|
-
# @return [TCPSocket]
|
|
103
|
-
# The newly created TCPSocket object.
|
|
104
|
-
#
|
|
105
|
-
# @example
|
|
106
|
-
# tcp_connect # => TCPSocket
|
|
107
|
-
#
|
|
108
|
-
# @example
|
|
109
|
-
# tcp_connect do |socket|
|
|
110
|
-
# socket.write("GET / HTTP/1.1\n\r\n\r")
|
|
111
|
-
#
|
|
112
|
-
# puts socket.readlines
|
|
113
|
-
# socket.close
|
|
114
|
-
# end
|
|
115
|
-
#
|
|
116
|
-
# @see Network::TCP#tcp_connect
|
|
117
|
-
#
|
|
118
|
-
# @api public
|
|
119
|
-
#
|
|
120
|
-
def tcp_connect(&block)
|
|
121
|
-
print_info "Connecting to #{host_port} ..."
|
|
122
|
-
|
|
123
|
-
return super(self.host,self.port,self.local_host,self.local_port,&block)
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
#
|
|
127
|
-
# Connects to the host and port specified by the `host` and `port`
|
|
128
|
-
# parameters, then sends the given data.
|
|
129
|
-
#
|
|
130
|
-
# @param [String] data
|
|
131
|
-
# The data to send through the connection.
|
|
132
|
-
#
|
|
133
|
-
# @yield [socket]
|
|
134
|
-
# If a block is given, it will be passed the newly created socket.
|
|
135
|
-
#
|
|
136
|
-
# @yieldparam [TCPsocket] socket
|
|
137
|
-
# The newly created TCPSocket object.
|
|
138
|
-
#
|
|
139
|
-
# @return [TCPSocket]
|
|
140
|
-
# The newly created TCPSocket object.
|
|
141
|
-
#
|
|
142
|
-
# @see Network::TCP#tcp_connect_and_send
|
|
143
|
-
#
|
|
144
|
-
# @api public
|
|
145
|
-
#
|
|
146
|
-
def tcp_connect_and_send(data,&block)
|
|
147
|
-
print_info "Connecting to #{host_port} ..."
|
|
148
|
-
print_debug "Sending data: #{data.inspect}"
|
|
149
|
-
|
|
150
|
-
return super(data,self.host,self.port,self.local_host,self.local_port,&block)
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
#
|
|
154
|
-
# Creates a TCP session to the host and port specified by the
|
|
155
|
-
# `host` and `port` parameters.
|
|
156
|
-
#
|
|
157
|
-
# @yield [socket]
|
|
158
|
-
# If a block is given, it will be passed the newly created socket.
|
|
159
|
-
# After the block has returned, the socket will be closed.
|
|
160
|
-
#
|
|
161
|
-
# @yieldparam [TCPsocket] socket
|
|
162
|
-
# The newly created TCPSocket object.
|
|
163
|
-
#
|
|
164
|
-
# @return [nil]
|
|
165
|
-
#
|
|
166
|
-
# @see Network::TCP#tcp_session
|
|
167
|
-
#
|
|
168
|
-
# @api public
|
|
169
|
-
#
|
|
170
|
-
def tcp_session(&block)
|
|
171
|
-
print_info "Connecting to #{host_port} ..."
|
|
172
|
-
|
|
173
|
-
super(self.host,self.port,self.local_host,self.local_port,&block)
|
|
174
|
-
|
|
175
|
-
print_info "Disconnected from #{host_port}"
|
|
176
|
-
return nil
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
#
|
|
180
|
-
# Connects to the host and port specified by the `host` and `port`
|
|
181
|
-
# parameters, reads the banner then closes the connection.
|
|
182
|
-
#
|
|
183
|
-
# @yield [banner]
|
|
184
|
-
# If a block is given, it will be passed the grabbed banner.
|
|
185
|
-
#
|
|
186
|
-
# @yieldparam [String] banner
|
|
187
|
-
# The grabbed banner.
|
|
188
|
-
#
|
|
189
|
-
# @return [String]
|
|
190
|
-
# The grabbed banner.
|
|
191
|
-
#
|
|
192
|
-
# @example
|
|
193
|
-
# tcp_banner
|
|
194
|
-
# # => "220 mx.google.com ESMTP c20sm3096959rvf.1"
|
|
195
|
-
#
|
|
196
|
-
# @see Network::TCP#tcp_banner
|
|
197
|
-
#
|
|
198
|
-
# @api public
|
|
199
|
-
#
|
|
200
|
-
def tcp_banner(&block)
|
|
201
|
-
print_debug "Grabbing banner from #{host_port}"
|
|
202
|
-
|
|
203
|
-
return super(self.host,self.port,self.local_host,self.local_port,&block)
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
#
|
|
207
|
-
# Connects to the host and port specified by the `host` and `port`
|
|
208
|
-
# parameters, sends the given data and then disconnects.
|
|
209
|
-
#
|
|
210
|
-
# @return [true]
|
|
211
|
-
# The data was successfully sent.
|
|
212
|
-
#
|
|
213
|
-
# @example
|
|
214
|
-
# buffer = "GET /" + ('A' * 4096) + "\n\r"
|
|
215
|
-
# tcp_send(buffer)
|
|
216
|
-
# # => true
|
|
217
|
-
#
|
|
218
|
-
# @see Network::TCP#tcp_send
|
|
219
|
-
#
|
|
220
|
-
# @api public
|
|
221
|
-
#
|
|
222
|
-
def tcp_send(data)
|
|
223
|
-
print_info "Connecting to #{host_port} ..."
|
|
224
|
-
print_debug "Sending data: #{data.inspect}"
|
|
225
|
-
|
|
226
|
-
super(data,self.host,self.port,self.local_host,self.local_port)
|
|
227
|
-
|
|
228
|
-
print_info "Disconnected from #{host_port}"
|
|
229
|
-
return true
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
#
|
|
233
|
-
# Creates a new TCPServer object listening on the `server_host`
|
|
234
|
-
# and `server_port` parameters.
|
|
235
|
-
#
|
|
236
|
-
# @yield [server]
|
|
237
|
-
# The given block will be passed the newly created server.
|
|
238
|
-
#
|
|
239
|
-
# @yieldparam [TCPServer] server
|
|
240
|
-
# The newly created server.
|
|
241
|
-
#
|
|
242
|
-
# @return [TCPServer]
|
|
243
|
-
# The newly created server.
|
|
244
|
-
#
|
|
245
|
-
# @example
|
|
246
|
-
# tcp_server
|
|
247
|
-
#
|
|
248
|
-
# @see Network::TCP#tcp_server
|
|
249
|
-
#
|
|
250
|
-
# @api public
|
|
251
|
-
#
|
|
252
|
-
def tcp_server(&block)
|
|
253
|
-
print_info "Listening on #{self.server_host_port} ..."
|
|
254
|
-
|
|
255
|
-
return super(self.server_port,self.server_host,&block)
|
|
256
|
-
end
|
|
257
|
-
|
|
258
|
-
#
|
|
259
|
-
# Creates a new temporary TCPServer object listening on the
|
|
260
|
-
# `server_host` and `server_port` parameters.
|
|
261
|
-
#
|
|
262
|
-
# @yield [server]
|
|
263
|
-
# The given block will be passed the newly created server.
|
|
264
|
-
# When the block has finished, the server will be closed.
|
|
265
|
-
#
|
|
266
|
-
# @yieldparam [TCPServer] server
|
|
267
|
-
# The newly created server.
|
|
268
|
-
#
|
|
269
|
-
# @return [nil]
|
|
270
|
-
#
|
|
271
|
-
# @example
|
|
272
|
-
# tcp_server_session do |server|
|
|
273
|
-
# client1 = server.accept
|
|
274
|
-
# client2 = server.accept
|
|
275
|
-
#
|
|
276
|
-
# client2.write(server.read_line)
|
|
277
|
-
#
|
|
278
|
-
# client1.close
|
|
279
|
-
# client2.close
|
|
280
|
-
# end
|
|
281
|
-
#
|
|
282
|
-
# @see Network::TCP#tcp_server_session
|
|
283
|
-
#
|
|
284
|
-
# @api public
|
|
285
|
-
#
|
|
286
|
-
def tcp_server_session(&block)
|
|
287
|
-
print_info "Listening on #{server_host_port} ..."
|
|
288
|
-
|
|
289
|
-
super(self.server_port,self.server_host,&block)
|
|
290
|
-
|
|
291
|
-
print_info "Closed #{server_host_port}"
|
|
292
|
-
return nil
|
|
293
|
-
end
|
|
294
|
-
|
|
295
|
-
#
|
|
296
|
-
# Creates a new temporary TCPServer object listening on
|
|
297
|
-
# `server_host` and `server_port` parameters.
|
|
298
|
-
# The TCPServer will accepting one client, pass the newly connected
|
|
299
|
-
# client to a given block, disconnects the client and stops
|
|
300
|
-
# listening.
|
|
301
|
-
#
|
|
302
|
-
# @yield [client]
|
|
303
|
-
# The given block will be passed the newly connected client.
|
|
304
|
-
# When the block has finished, the newly connected client and
|
|
305
|
-
# the server will be closed.
|
|
306
|
-
#
|
|
307
|
-
# @yieldparam [TCPSocket] client
|
|
308
|
-
# The newly connected client.
|
|
309
|
-
#
|
|
310
|
-
# @return [nil]
|
|
311
|
-
#
|
|
312
|
-
# @example
|
|
313
|
-
# tcp_accept do |client|
|
|
314
|
-
# client.puts 'lol'
|
|
315
|
-
# end
|
|
316
|
-
#
|
|
317
|
-
# @see Network::TCP#tcp_accept
|
|
318
|
-
#
|
|
319
|
-
# @api public
|
|
320
|
-
#
|
|
321
|
-
# @since 0.5.0
|
|
322
|
-
#
|
|
323
|
-
def tcp_accept(&block)
|
|
324
|
-
print_info "Listening on #{server_host_port} ..."
|
|
325
|
-
|
|
326
|
-
super(self.server_port,self.server_host) do |client|
|
|
327
|
-
client_addr = client.peeraddr
|
|
328
|
-
client_host = (client_addr[2] || client_addr[3])
|
|
329
|
-
client_port = client_addr[1]
|
|
330
|
-
|
|
331
|
-
print_info "Client connected #{client_host}:#{client_port}"
|
|
332
|
-
|
|
333
|
-
yield client if block_given?
|
|
334
|
-
|
|
335
|
-
print_info "Disconnected client #{client_host}:#{client_port}"
|
|
336
|
-
end
|
|
337
|
-
|
|
338
|
-
print_info "Closed #{server_host_port}"
|
|
339
|
-
return nil
|
|
340
|
-
end
|
|
341
|
-
|
|
342
|
-
#
|
|
343
|
-
# @deprecated
|
|
344
|
-
# Deprecated as of 0.5.0. Use {#tcp_accept} instead.
|
|
345
|
-
#
|
|
346
|
-
def tcp_single_server(&block)
|
|
347
|
-
tcp_accept(&block)
|
|
348
|
-
end
|
|
349
|
-
|
|
350
|
-
private
|
|
351
|
-
|
|
352
|
-
#
|
|
353
|
-
# The server host/port parameters.
|
|
354
|
-
#
|
|
355
|
-
# @return [String]
|
|
356
|
-
# The server host/port parameters in String form.
|
|
357
|
-
#
|
|
358
|
-
# @since 0.4.0
|
|
359
|
-
#
|
|
360
|
-
# @api private
|
|
361
|
-
#
|
|
362
|
-
def server_host_port
|
|
363
|
-
"#{self.server_host}:#{self.server_port}"
|
|
364
|
-
end
|
|
365
|
-
end
|
|
366
|
-
end
|
|
367
|
-
end
|
|
368
|
-
end
|
|
@@ -1,208 +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/network/mixins/mixin'
|
|
21
|
-
require 'ronin/network/telnet'
|
|
22
|
-
|
|
23
|
-
module Ronin
|
|
24
|
-
module Network
|
|
25
|
-
module Mixins
|
|
26
|
-
#
|
|
27
|
-
# Adds Telnet convenience methods and connection parameters to a
|
|
28
|
-
# class.
|
|
29
|
-
#
|
|
30
|
-
# Defines the following parameters:
|
|
31
|
-
#
|
|
32
|
-
# * `host` (`String`) - Telnet host.
|
|
33
|
-
# * `port` (`Integer`) - Telnet port.
|
|
34
|
-
# * `telnet_user` (`String`) - Telnet user to login as.
|
|
35
|
-
# * `telnet_password` (`String`) - Telnet password to login with.
|
|
36
|
-
# * `telnet_proxy` (`String`) - Telnet proxy.
|
|
37
|
-
# * `telnet_ssl` (`Boolean`) - Enable Telnet over SSL. Defaults to `true`.
|
|
38
|
-
#
|
|
39
|
-
module Telnet
|
|
40
|
-
include Mixin, Network::Telnet
|
|
41
|
-
|
|
42
|
-
# Telnet host
|
|
43
|
-
parameter :host, :type => String,
|
|
44
|
-
:description => 'Telnet host'
|
|
45
|
-
|
|
46
|
-
# Telnet port
|
|
47
|
-
parameter :port, :type => Integer,
|
|
48
|
-
:description => 'Telnet port'
|
|
49
|
-
|
|
50
|
-
# Telnet user
|
|
51
|
-
parameter :telnet_user, :type => String,
|
|
52
|
-
:description => 'Telnet user to login as'
|
|
53
|
-
|
|
54
|
-
# Telnet password
|
|
55
|
-
parameter :telnet_password, :type => String,
|
|
56
|
-
:description => 'Telnet password to login with'
|
|
57
|
-
|
|
58
|
-
# Telnet proxy
|
|
59
|
-
parameter :telnet_proxy, :description => 'Telnet proxy'
|
|
60
|
-
|
|
61
|
-
# Enable Telnet SSL
|
|
62
|
-
parameter :telnet_ssl, :type => true,
|
|
63
|
-
:description => 'Enable Telnet over SSL'
|
|
64
|
-
|
|
65
|
-
protected
|
|
66
|
-
|
|
67
|
-
#
|
|
68
|
-
# Creates a connection to a Telnet server. The `host`, `port`,
|
|
69
|
-
# `telnet_user`, `telnet_password`, `telnet_proxy` and
|
|
70
|
-
# `telnet_ssl` parameters will also be used to connect to the
|
|
71
|
-
# Telnet server.
|
|
72
|
-
#
|
|
73
|
-
# @param [Hash] options
|
|
74
|
-
# Additional options.
|
|
75
|
-
#
|
|
76
|
-
# @option options [Integer] :port (Network::Telnet.default_port)
|
|
77
|
-
# The port to connect to.
|
|
78
|
-
#
|
|
79
|
-
# @option options [Boolean] :binmode
|
|
80
|
-
# Indicates that newline substitution shall not be performed.
|
|
81
|
-
#
|
|
82
|
-
# @option options [String] :output_log
|
|
83
|
-
# The name of the file to write connection status messages
|
|
84
|
-
# and all received traffic to.
|
|
85
|
-
#
|
|
86
|
-
# @option options [String] :dump_log
|
|
87
|
-
# Similar to the `:output_log` option, but connection output
|
|
88
|
-
# is also written in hexdump format.
|
|
89
|
-
#
|
|
90
|
-
# @option options [Regexp] :prompt (Network::Telnet.default_prompt)
|
|
91
|
-
# A regular expression matching the host command-line prompt
|
|
92
|
-
# sequence, used to determine when a command has finished.
|
|
93
|
-
#
|
|
94
|
-
# @option options [Boolean] :telnet (true)
|
|
95
|
-
# Indicates that the connection shall behave as a telnet
|
|
96
|
-
# connection.
|
|
97
|
-
#
|
|
98
|
-
# @option options [Boolean] :plain
|
|
99
|
-
# Indicates that the connection shall behave as a normal TCP
|
|
100
|
-
# connection.
|
|
101
|
-
#
|
|
102
|
-
# @option options [Integer] :timeout (Network::Telnet.default_timeout)
|
|
103
|
-
# The number of seconds to wait before timing out both the
|
|
104
|
-
# initial attempt to connect to host, and all attempts to read
|
|
105
|
-
# data from the host.
|
|
106
|
-
#
|
|
107
|
-
# @option options [Integer] :wait_time
|
|
108
|
-
# The amount of time to wait after seeing what looks like
|
|
109
|
-
# a prompt.
|
|
110
|
-
#
|
|
111
|
-
# @option options [Net::Telnet, IO] :proxy (Network::Telnet.proxy)
|
|
112
|
-
# A proxy object to used instead of opening a direct connection
|
|
113
|
-
# to the host.
|
|
114
|
-
#
|
|
115
|
-
# @option options [String] :user
|
|
116
|
-
# The user to login as.
|
|
117
|
-
#
|
|
118
|
-
# @option options [String] :password
|
|
119
|
-
# The password to login with.
|
|
120
|
-
#
|
|
121
|
-
# @yield [connection]
|
|
122
|
-
# If a block is given, it will be passed the newly created
|
|
123
|
-
# Telnet connection.
|
|
124
|
-
#
|
|
125
|
-
# @yieldparam [Net::Telnet] connection
|
|
126
|
-
# The newly created Telnet connection.
|
|
127
|
-
#
|
|
128
|
-
# @return [Net::Telnet]
|
|
129
|
-
# The Telnet session
|
|
130
|
-
#
|
|
131
|
-
# @example
|
|
132
|
-
# telnet_connect
|
|
133
|
-
# # => Net::Telnet
|
|
134
|
-
#
|
|
135
|
-
# @see Network::Telnet#telnet_connect
|
|
136
|
-
#
|
|
137
|
-
# @api public
|
|
138
|
-
#
|
|
139
|
-
def telnet_connect(options={},&block)
|
|
140
|
-
print_info "Connecting to #{host_port} ..."
|
|
141
|
-
|
|
142
|
-
return super(self.host,telnet_merge_options(options),&block)
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
#
|
|
146
|
-
# Starts a session with a Telnet server. The `host`, `port`,
|
|
147
|
-
# `telnet_user`, `telnet_password`, `telnet_proxy` and
|
|
148
|
-
# `telnet_ssl` parameters will also be used to connect to the
|
|
149
|
-
# Telnet server.
|
|
150
|
-
#
|
|
151
|
-
# @yield [session]
|
|
152
|
-
# If a block is given, it will be passed the newly created
|
|
153
|
-
# Telnet session. After the block has returned, the Telnet
|
|
154
|
-
# session will be closed.
|
|
155
|
-
#
|
|
156
|
-
# @yieldparam [Net::Telnet] session
|
|
157
|
-
# The newly created Telnet session.
|
|
158
|
-
#
|
|
159
|
-
# @example
|
|
160
|
-
# telnet_session do |movie|
|
|
161
|
-
# movie.each_line { |line| puts line }
|
|
162
|
-
# end
|
|
163
|
-
#
|
|
164
|
-
# @see Network::Telnet#telnet_session
|
|
165
|
-
#
|
|
166
|
-
# @api public
|
|
167
|
-
#
|
|
168
|
-
def telnet_session(options={},&block)
|
|
169
|
-
super(telnet_merge_options(options)) do |sess|
|
|
170
|
-
yield sess if block_given?
|
|
171
|
-
|
|
172
|
-
print "Logging out ..."
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
print_info "Disconnected to #{host_port}"
|
|
176
|
-
return nil
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
private
|
|
180
|
-
|
|
181
|
-
#
|
|
182
|
-
# Merges the Telnet parameters into the options for {Network::Telnet}
|
|
183
|
-
# methods.
|
|
184
|
-
#
|
|
185
|
-
# @param [Hash] options
|
|
186
|
-
# The original options.
|
|
187
|
-
#
|
|
188
|
-
# @return [Hash]
|
|
189
|
-
# The merged options.
|
|
190
|
-
#
|
|
191
|
-
# @since 0.4.0
|
|
192
|
-
#
|
|
193
|
-
# @api private
|
|
194
|
-
#
|
|
195
|
-
def telnet_merge_options(options={})
|
|
196
|
-
options[:port] ||= self.port
|
|
197
|
-
options[:user] ||= self.telnet_user
|
|
198
|
-
options[:password] ||= self.telnet_password
|
|
199
|
-
|
|
200
|
-
options[:proxy] ||= self.telnet_proxy
|
|
201
|
-
options[:ssl] ||= self.telnet_ssl
|
|
202
|
-
|
|
203
|
-
return options
|
|
204
|
-
end
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
end
|
|
208
|
-
end
|