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,454 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
3
|
-
#
|
|
4
|
-
# This file is part of Ronin Support.
|
|
5
|
-
#
|
|
6
|
-
# Ronin Support is free software: you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU Lesser General Public License as published
|
|
8
|
-
# by the Free Software Foundation, either version 3 of the License, or
|
|
9
|
-
# (at your option) any later version.
|
|
10
|
-
#
|
|
11
|
-
# Ronin Support is distributed in the hope that it will be useful,
|
|
12
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
-
# GNU Lesser General Public License for more details.
|
|
15
|
-
#
|
|
16
|
-
# You should have received a copy of the GNU Lesser General Public License
|
|
17
|
-
# along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
require 'set'
|
|
21
|
-
|
|
22
|
-
module Ronin
|
|
23
|
-
module Binary
|
|
24
|
-
#
|
|
25
|
-
# Provides a translation layer between C-types and Ruby `Array#pack`
|
|
26
|
-
# codes.
|
|
27
|
-
#
|
|
28
|
-
# ## Types
|
|
29
|
-
#
|
|
30
|
-
# * `:uint8` (`C`) - unsigned 8-bit integer.
|
|
31
|
-
# * `:uint16` (`S`) - unsigned 16-bit integer.
|
|
32
|
-
# * `:uint32` (`L`) - unsigned 32-bit integer.
|
|
33
|
-
# * `:uint64` (`Q`) - unsigned 64-bit integer.
|
|
34
|
-
# * `:int8` (`c`) - signed 8-bit integer.
|
|
35
|
-
# * `:int16` (`s`) - signed 16-bit integer.
|
|
36
|
-
# * `:int32` (`l`) - signed 32-bit integer.
|
|
37
|
-
# * `:int64` (`q`) - signed 64-bit integer.
|
|
38
|
-
# * `:uint16_le` (`v`) - unsigned 16-bit integer, little endian.
|
|
39
|
-
# * `:uint32_le` (`V`) - unsigned 32-bit integer, little endian.
|
|
40
|
-
# * `:uint16_be` (`n`) - unsigned 16-bit integer, big endian.
|
|
41
|
-
# * `:uint32_be` (`N`) - unsigned 32-bit integer, big endian.
|
|
42
|
-
# * `:uchar` (`Z`) - unsigned character.
|
|
43
|
-
# * `:ushort` (`S!`) - unsigned short integer, native endian.
|
|
44
|
-
# * `:uint` (`I!`) - unsigned integer, native endian.
|
|
45
|
-
# * `:ulong` (`L!`) - unsigned long integer, native endian.
|
|
46
|
-
# * `:ulong_long` (`Q`) - unsigned quad integer, native endian.
|
|
47
|
-
# * `:char` (`Z`) - signed character.
|
|
48
|
-
# * `:short` (`s!`) - signed short integer, native endian.
|
|
49
|
-
# * `:int` (`i!`) - signed integer, native endian.
|
|
50
|
-
# * `:long` (`l!`) - signed long integer, native endian.
|
|
51
|
-
# * `:long_long` (`q`) - signed quad integer, native endian.
|
|
52
|
-
# * `:utf8` (`U`) - UTF8 character.
|
|
53
|
-
# * `:float` (`F`) - single-precision float, native format.
|
|
54
|
-
# * `:double` (`D`) - double-precision float, native format.
|
|
55
|
-
# * `:float_le` (`e`) - single-precision float, little endian.
|
|
56
|
-
# * `:double_le` (`E`) - double-precision float, little endian.
|
|
57
|
-
# * `:float_be` (`g`) - single-precision float, big endian.
|
|
58
|
-
# * `:double_be` (`G`) - double-precision float, big endian.
|
|
59
|
-
# * `:ubyte` (`C`) - unsigned byte.
|
|
60
|
-
# * `:byte` (`c`) - signed byte.
|
|
61
|
-
# * `:string` (`Z*`) - binary String, `\0` terminated.
|
|
62
|
-
#
|
|
63
|
-
# ### Ruby 1.9 specific C-types
|
|
64
|
-
#
|
|
65
|
-
# * `:uint16_le` (`S<`) - unsigned 16-bit integer, little endian.
|
|
66
|
-
# * `:uint32_le` (`L<`) - unsigned 32-bit integer, little endian.
|
|
67
|
-
# * `:uint64_le` (`Q<`) - unsigned 64-bit integer, little endian.
|
|
68
|
-
# * `:int16_le` (`s<`) - signed 16-bit integer, little endian.
|
|
69
|
-
# * `:int32_le` (`l<`) - signed 32-bit integer, little endian.
|
|
70
|
-
# * `:int64_le` (`q<`) - signed 64-bit integer, little endian.
|
|
71
|
-
# * `:uint16_be` (`S>`) - unsigned 16-bit integer, big endian.
|
|
72
|
-
# * `:uint32_be` (`L>`) - unsigned 32-bit integer, big endian.
|
|
73
|
-
# * `:uint64_be` (`Q>`) - unsigned 64-bit integer, big endian.
|
|
74
|
-
# * `:int16_be` (`s>`) - signed 16-bit integer, big endian.
|
|
75
|
-
# * `:int32_be` (`l>`) - signed 32-bit integer, big endian.
|
|
76
|
-
# * `:int64_be` (`q>`) - signed 64-bit integer, big endian.
|
|
77
|
-
# * `:ushort_le` (`S<`) - unsigned short integer, little endian.
|
|
78
|
-
# * `:uint_le` (`I<`) - unsigned integer, little endian.
|
|
79
|
-
# * `:ulong_le` (`L<`) - unsigned long integer, little endian.
|
|
80
|
-
# * `:ulong_long_le` (`Q<`) - unsigned quad integer, little endian.
|
|
81
|
-
# * `:short_le` (`s<`) - signed short integer, little endian.
|
|
82
|
-
# * `:int_le` (`i<`) - signed integer, little endian.
|
|
83
|
-
# * `:long_le` (`l<`) - signed long integer, little endian.
|
|
84
|
-
# * `:long_long_le` (`q<`) - signed quad integer, little endian.
|
|
85
|
-
# * `:ushort_be` (`S>`) - unsigned short integer, little endian.
|
|
86
|
-
# * `:uint_be` (`I>`) - unsigned integer, little endian.
|
|
87
|
-
# * `:ulong_be` (`L>`) - unsigned long integer, little endian.
|
|
88
|
-
# * `:ulong_long_be` (`Q>`) - unsigned quad integer, little endian.
|
|
89
|
-
# * `:short_be` (`s>`) - signed short integer, little endian.
|
|
90
|
-
# * `:int_be` (`i>`) - signed integer, little endian.
|
|
91
|
-
# * `:long_be` (`l>`) - signed long integer, little endian.
|
|
92
|
-
# * `:long_long_be` (`q>`) - signed quad integer, little endian.
|
|
93
|
-
#
|
|
94
|
-
# @see http://rubydoc.info/stdlib/core/Array:pack
|
|
95
|
-
#
|
|
96
|
-
# @api semipbulic
|
|
97
|
-
#
|
|
98
|
-
# @since 0.5.0
|
|
99
|
-
#
|
|
100
|
-
class Template
|
|
101
|
-
|
|
102
|
-
# Supported C-types and corresponding `Array#pack` codes.
|
|
103
|
-
TYPES = {
|
|
104
|
-
:uint8 => 'C',
|
|
105
|
-
:uint16 => 'S',
|
|
106
|
-
:uint32 => 'L',
|
|
107
|
-
:uint64 => 'Q',
|
|
108
|
-
|
|
109
|
-
:int8 => 'c',
|
|
110
|
-
:int16 => 's',
|
|
111
|
-
:int32 => 'l',
|
|
112
|
-
:int64 => 'q',
|
|
113
|
-
|
|
114
|
-
:uint16_le => 'v',
|
|
115
|
-
:uint32_le => 'V',
|
|
116
|
-
:uint16_be => 'n',
|
|
117
|
-
:uint32_be => 'N',
|
|
118
|
-
|
|
119
|
-
:uchar => 'Z',
|
|
120
|
-
:ushort => 'S!',
|
|
121
|
-
:uint => 'I!',
|
|
122
|
-
:ulong => 'L!',
|
|
123
|
-
:ulong_long => 'Q',
|
|
124
|
-
|
|
125
|
-
:char => 'Z',
|
|
126
|
-
:short => 's!',
|
|
127
|
-
:int => 'i!',
|
|
128
|
-
:long => 'l!',
|
|
129
|
-
:long_long => 'q',
|
|
130
|
-
|
|
131
|
-
:utf8 => 'U',
|
|
132
|
-
|
|
133
|
-
:float => 'F',
|
|
134
|
-
:double => 'D',
|
|
135
|
-
|
|
136
|
-
:float_le => 'e',
|
|
137
|
-
:double_le => 'E',
|
|
138
|
-
|
|
139
|
-
:float_be => 'g',
|
|
140
|
-
:double_be => 'G',
|
|
141
|
-
|
|
142
|
-
:ubyte => 'C',
|
|
143
|
-
:byte => 'c',
|
|
144
|
-
:string => 'Z*'
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
# Additional C-types, not available on Ruby 1.8:
|
|
148
|
-
if RUBY_VERSION > '1.9.'
|
|
149
|
-
TYPES.merge!(
|
|
150
|
-
:uint16_le => 'S<',
|
|
151
|
-
:uint32_le => 'L<',
|
|
152
|
-
:uint64_le => 'Q<',
|
|
153
|
-
|
|
154
|
-
:int16_le => 's<',
|
|
155
|
-
:int32_le => 'l<',
|
|
156
|
-
:int64_le => 'q<',
|
|
157
|
-
|
|
158
|
-
:uint16_be => 'S>',
|
|
159
|
-
:uint32_be => 'L>',
|
|
160
|
-
:uint64_be => 'Q>',
|
|
161
|
-
|
|
162
|
-
:int16_be => 's>',
|
|
163
|
-
:int32_be => 'l>',
|
|
164
|
-
:int64_be => 'q>',
|
|
165
|
-
|
|
166
|
-
:ushort_le => 'S!<',
|
|
167
|
-
:uint_le => 'I!<',
|
|
168
|
-
:ulong_le => 'L!<',
|
|
169
|
-
:ulong_long_le => 'Q<',
|
|
170
|
-
|
|
171
|
-
:short_le => 's!<',
|
|
172
|
-
:int_le => 'i!<',
|
|
173
|
-
:long_le => 'l!<',
|
|
174
|
-
:long_long_le => 'q<',
|
|
175
|
-
|
|
176
|
-
:ushort_be => 'S!>',
|
|
177
|
-
:uint_be => 'I!>',
|
|
178
|
-
:ulong_be => 'L!>',
|
|
179
|
-
:ulong_long_be => 'Q>',
|
|
180
|
-
|
|
181
|
-
:short_be => 's!>',
|
|
182
|
-
:int_be => 'i!>',
|
|
183
|
-
:long_be => 'l!>',
|
|
184
|
-
:long_long_be => 'q>'
|
|
185
|
-
)
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
# Integer C-types
|
|
189
|
-
INT_TYPES = Set[
|
|
190
|
-
:uint8,
|
|
191
|
-
:uint16,
|
|
192
|
-
:uint32,
|
|
193
|
-
:uint64,
|
|
194
|
-
|
|
195
|
-
:int8,
|
|
196
|
-
:int16,
|
|
197
|
-
:int32,
|
|
198
|
-
:int64,
|
|
199
|
-
|
|
200
|
-
:ubyte,
|
|
201
|
-
:ushort,
|
|
202
|
-
:uint,
|
|
203
|
-
:ulong,
|
|
204
|
-
:ulong_long,
|
|
205
|
-
|
|
206
|
-
:byte,
|
|
207
|
-
:short,
|
|
208
|
-
:int,
|
|
209
|
-
:long,
|
|
210
|
-
:long_long,
|
|
211
|
-
|
|
212
|
-
:uint16_le,
|
|
213
|
-
:uint32_le,
|
|
214
|
-
:uint64_le,
|
|
215
|
-
|
|
216
|
-
:int16_le,
|
|
217
|
-
:int32_le,
|
|
218
|
-
:int64_le,
|
|
219
|
-
|
|
220
|
-
:ushort_le,
|
|
221
|
-
:uint_le,
|
|
222
|
-
:ulong_le,
|
|
223
|
-
:ulong_long_le,
|
|
224
|
-
|
|
225
|
-
:short_le,
|
|
226
|
-
:int_le,
|
|
227
|
-
:long_le,
|
|
228
|
-
:long_long_le,
|
|
229
|
-
|
|
230
|
-
:uint16_be,
|
|
231
|
-
:uint32_be,
|
|
232
|
-
:uint64_be,
|
|
233
|
-
|
|
234
|
-
:int16_be,
|
|
235
|
-
:int32_be,
|
|
236
|
-
:int64_be,
|
|
237
|
-
|
|
238
|
-
:ushort_be,
|
|
239
|
-
:uint_be,
|
|
240
|
-
:ulong_be,
|
|
241
|
-
:ulong_long_be,
|
|
242
|
-
|
|
243
|
-
:short_be,
|
|
244
|
-
:int_be,
|
|
245
|
-
:long_be,
|
|
246
|
-
:long_long_be
|
|
247
|
-
]
|
|
248
|
-
|
|
249
|
-
# Float C-types
|
|
250
|
-
FLOAT_TYPES = Set[
|
|
251
|
-
:float, :double,
|
|
252
|
-
:float_le, :double_le,
|
|
253
|
-
:float_be, :double_be
|
|
254
|
-
]
|
|
255
|
-
|
|
256
|
-
# Character C-types
|
|
257
|
-
CHAR_TYPES = Set[:uchar, :char]
|
|
258
|
-
|
|
259
|
-
# String C-types
|
|
260
|
-
STRING_TYPES = CHAR_TYPES + Set[:string]
|
|
261
|
-
|
|
262
|
-
# Types which have little and big endian forms
|
|
263
|
-
ENDIAN_TYPES = Set[
|
|
264
|
-
:uint16, :uint32, :uint64,
|
|
265
|
-
:int16, :int32, :int64,
|
|
266
|
-
:ushort, :uint, :ulong, :ulong_long,
|
|
267
|
-
:short, :int, :long, :long_long,
|
|
268
|
-
:float, :double
|
|
269
|
-
]
|
|
270
|
-
|
|
271
|
-
# The fields of the template
|
|
272
|
-
attr_reader :fields
|
|
273
|
-
|
|
274
|
-
#
|
|
275
|
-
# Creates a new Binary Template.
|
|
276
|
-
#
|
|
277
|
-
# @param [Array<type, (type, length)>] fields
|
|
278
|
-
# The C-types which the packer will use.
|
|
279
|
-
#
|
|
280
|
-
# @param [Hash] options
|
|
281
|
-
# Template options.
|
|
282
|
-
#
|
|
283
|
-
# @option options [:little, :big, :network] :endian
|
|
284
|
-
# The endianness to apply to the C-types.
|
|
285
|
-
#
|
|
286
|
-
# @raise [ArgumentError]
|
|
287
|
-
# A given type is not known.
|
|
288
|
-
#
|
|
289
|
-
# @note
|
|
290
|
-
# The following C-types are **not supported** on Ruby 1.8:
|
|
291
|
-
#
|
|
292
|
-
# * `:uint16_le`
|
|
293
|
-
# * `:uint32_le`
|
|
294
|
-
# * `:uint64_le`
|
|
295
|
-
# * `:int16_le`
|
|
296
|
-
# * `:int32_le`
|
|
297
|
-
# * `:int64_le`
|
|
298
|
-
# * `:uint16_be`
|
|
299
|
-
# * `:uint32_be`
|
|
300
|
-
# * `:uint64_be`
|
|
301
|
-
# * `:int16_be`
|
|
302
|
-
# * `:int32_be`
|
|
303
|
-
# * `:int64_be`
|
|
304
|
-
# * `:ushort_le`
|
|
305
|
-
# * `:uint_le`
|
|
306
|
-
# * `:ulong_le`
|
|
307
|
-
# * `:ulong_long_le`
|
|
308
|
-
# * `:short_le`
|
|
309
|
-
# * `:int_le`
|
|
310
|
-
# * `:long_le`
|
|
311
|
-
# * `:long_long_le`
|
|
312
|
-
# * `:ushort_be`
|
|
313
|
-
# * `:uint_be`
|
|
314
|
-
# * `:ulong_be`
|
|
315
|
-
# * `:ulong_long_be`
|
|
316
|
-
# * `:short_be`
|
|
317
|
-
# * `:int_be`
|
|
318
|
-
# * `:long_be`
|
|
319
|
-
# * `:long_long_be`
|
|
320
|
-
#
|
|
321
|
-
# @example
|
|
322
|
-
# Template.new(:uint32, [:char, 100])
|
|
323
|
-
#
|
|
324
|
-
def initialize(fields,options={})
|
|
325
|
-
@fields = fields
|
|
326
|
-
@template = self.class.compile(@fields,options)
|
|
327
|
-
end
|
|
328
|
-
|
|
329
|
-
#
|
|
330
|
-
# @see #initialize
|
|
331
|
-
#
|
|
332
|
-
def self.[](*fields)
|
|
333
|
-
new(fields)
|
|
334
|
-
end
|
|
335
|
-
|
|
336
|
-
#
|
|
337
|
-
# Translates the type of the field.
|
|
338
|
-
#
|
|
339
|
-
# @param [Symbol] type
|
|
340
|
-
# The type to translate.
|
|
341
|
-
#
|
|
342
|
-
# @param [Hash] options
|
|
343
|
-
# Translation options.
|
|
344
|
-
#
|
|
345
|
-
# @option options [:little, :big, :network] :endian
|
|
346
|
-
# The endianness to apply to the C-types.
|
|
347
|
-
#
|
|
348
|
-
# @return [Symbol]
|
|
349
|
-
# The translated type.
|
|
350
|
-
#
|
|
351
|
-
# @raise [ArgumentError]
|
|
352
|
-
# The value of `:endian` is unknown.
|
|
353
|
-
#
|
|
354
|
-
def self.translate(type,options={})
|
|
355
|
-
if (options[:endian] && ENDIAN_TYPES.include?(type))
|
|
356
|
-
type = case options[:endian]
|
|
357
|
-
when :little then :"#{type}_le"
|
|
358
|
-
when :big, :network then :"#{type}_be"
|
|
359
|
-
else
|
|
360
|
-
raise(ArgumentError,"unknown endianness: #{type}")
|
|
361
|
-
end
|
|
362
|
-
end
|
|
363
|
-
|
|
364
|
-
return type
|
|
365
|
-
end
|
|
366
|
-
|
|
367
|
-
#
|
|
368
|
-
# Compiles C-types into an `Array#pack` / `String#unpack`
|
|
369
|
-
# template.
|
|
370
|
-
#
|
|
371
|
-
# @param [Array<type, (type, length)>] types
|
|
372
|
-
# The C-types which the packer will use.
|
|
373
|
-
#
|
|
374
|
-
# @param [Hash] options
|
|
375
|
-
# Type options.
|
|
376
|
-
#
|
|
377
|
-
# @option options [:little, :big, :network] :endian
|
|
378
|
-
# The endianness to apply to the C-types.
|
|
379
|
-
#
|
|
380
|
-
# @return [String]
|
|
381
|
-
# The `Array#pack` / `String#unpack` template.
|
|
382
|
-
#
|
|
383
|
-
# @raise [ArgumentError]
|
|
384
|
-
# A given type is not known.
|
|
385
|
-
#
|
|
386
|
-
def self.compile(types,options={})
|
|
387
|
-
string = ''
|
|
388
|
-
|
|
389
|
-
types.each do |(type,length)|
|
|
390
|
-
type = translate(type,options)
|
|
391
|
-
|
|
392
|
-
unless (code = TYPES[type])
|
|
393
|
-
raise(ArgumentError,"#{type.inspect} not supported")
|
|
394
|
-
end
|
|
395
|
-
|
|
396
|
-
string << code << length.to_s
|
|
397
|
-
end
|
|
398
|
-
|
|
399
|
-
return string
|
|
400
|
-
end
|
|
401
|
-
|
|
402
|
-
#
|
|
403
|
-
# Packs the data.
|
|
404
|
-
#
|
|
405
|
-
# @param [Array] data
|
|
406
|
-
# The data to pack.
|
|
407
|
-
#
|
|
408
|
-
# @return [String]
|
|
409
|
-
# The packed data.
|
|
410
|
-
#
|
|
411
|
-
def pack(*data)
|
|
412
|
-
data.pack(@template)
|
|
413
|
-
end
|
|
414
|
-
|
|
415
|
-
#
|
|
416
|
-
# Unpacks the string.
|
|
417
|
-
#
|
|
418
|
-
# @param [String] string
|
|
419
|
-
# The raw String to unpack.
|
|
420
|
-
#
|
|
421
|
-
# @return [Array]
|
|
422
|
-
# The unpacked data.
|
|
423
|
-
#
|
|
424
|
-
def unpack(string)
|
|
425
|
-
string.unpack(@template)
|
|
426
|
-
end
|
|
427
|
-
|
|
428
|
-
#
|
|
429
|
-
# Converts the template to a `Array#pack` template String.
|
|
430
|
-
#
|
|
431
|
-
# @return [String]
|
|
432
|
-
# The template String.
|
|
433
|
-
#
|
|
434
|
-
# @see http://rubydoc.info/stdlib/core/Array:pack
|
|
435
|
-
#
|
|
436
|
-
def to_s
|
|
437
|
-
@template
|
|
438
|
-
end
|
|
439
|
-
|
|
440
|
-
#
|
|
441
|
-
# Inspects the template.
|
|
442
|
-
#
|
|
443
|
-
# @return [String]
|
|
444
|
-
# The inspected template.
|
|
445
|
-
#
|
|
446
|
-
# @since 1.5.1
|
|
447
|
-
#
|
|
448
|
-
def inspect
|
|
449
|
-
"<#{self.class}: #{@fields.inspect}>"
|
|
450
|
-
end
|
|
451
|
-
|
|
452
|
-
end
|
|
453
|
-
end
|
|
454
|
-
end
|
|
@@ -1,217 +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/extensions/resolv'
|
|
21
|
-
require 'ronin/extensions/regexp'
|
|
22
|
-
|
|
23
|
-
require 'ipaddr'
|
|
24
|
-
require 'combinatorics/list_comprehension'
|
|
25
|
-
|
|
26
|
-
class IPAddr
|
|
27
|
-
|
|
28
|
-
include Enumerable
|
|
29
|
-
|
|
30
|
-
# Socket families and IP address masks
|
|
31
|
-
MASKS = {
|
|
32
|
-
Socket::AF_INET => IN4MASK,
|
|
33
|
-
Socket::AF_INET6 => IN6MASK
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
#
|
|
37
|
-
# Extracts IP Addresses from text.
|
|
38
|
-
#
|
|
39
|
-
# @param [String] text
|
|
40
|
-
# The text to scan for IP Addresses.
|
|
41
|
-
#
|
|
42
|
-
# @param [Integer, Symbol] version
|
|
43
|
-
# The version of IP Address to scan for (`4`, `6`, `:v4` or `:v6`).
|
|
44
|
-
#
|
|
45
|
-
# @yield [ip]
|
|
46
|
-
# The given block will be passed each extracted IP Address.
|
|
47
|
-
#
|
|
48
|
-
# @yieldparam [String] ip
|
|
49
|
-
# An IP Address from the text.
|
|
50
|
-
#
|
|
51
|
-
# @return [Array<String>]
|
|
52
|
-
# The IP Addresses found in the text.
|
|
53
|
-
#
|
|
54
|
-
# @example
|
|
55
|
-
# IPAddr.extract("Host: 127.0.0.1\n\rHost: 10.1.1.1\n\r")
|
|
56
|
-
# # => ["127.0.0.1", "10.1.1.1"]
|
|
57
|
-
#
|
|
58
|
-
# @example Extract only IPv4 addresses from a large amount of text:
|
|
59
|
-
# IPAddr.extract(text,:v4) do |ip|
|
|
60
|
-
# puts ip
|
|
61
|
-
# end
|
|
62
|
-
#
|
|
63
|
-
# @api public
|
|
64
|
-
#
|
|
65
|
-
def IPAddr.extract(text,version=nil,&block)
|
|
66
|
-
return enum_for(__method__,text,version).to_a unless block_given?
|
|
67
|
-
|
|
68
|
-
regexp = case version
|
|
69
|
-
when :ipv4, :v4, 4 then Regexp::IPv4
|
|
70
|
-
when :ipv6, :v6, 6 then Regexp::IPv6
|
|
71
|
-
else Regexp::IP
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
text.scan(regexp) do |match|
|
|
75
|
-
yield match
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
return nil
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
#
|
|
82
|
-
# Iterates over each IP address within the IP Address range. Supports
|
|
83
|
-
# both IPv4 and IPv6 address ranges.
|
|
84
|
-
#
|
|
85
|
-
# @param [String] cidr_or_glob
|
|
86
|
-
# The IP address range to iterate over.
|
|
87
|
-
# May be in standard CIDR notation or globbed format.
|
|
88
|
-
#
|
|
89
|
-
# @yield [ip]
|
|
90
|
-
# The block which will be passed each IP address contained within the
|
|
91
|
-
# IP address range.
|
|
92
|
-
#
|
|
93
|
-
# @yieldparam [String] ip
|
|
94
|
-
# An IP address within the IP address range.
|
|
95
|
-
#
|
|
96
|
-
# @return [nil]
|
|
97
|
-
#
|
|
98
|
-
# @example Enumerate through a CIDR range
|
|
99
|
-
# IPAddr.each('10.1.1.1/24') do |ip|
|
|
100
|
-
# puts ip
|
|
101
|
-
# end
|
|
102
|
-
#
|
|
103
|
-
# @example Enumerate through a globbed IP range
|
|
104
|
-
# IPAddr.each('10.1.1-5,10-20.*') do |ip|
|
|
105
|
-
# puts ip
|
|
106
|
-
# end
|
|
107
|
-
#
|
|
108
|
-
# @example Enumerate through a globbed IPv6 range
|
|
109
|
-
# IPAddr.each('::ff::02-0a::c3') do |ip|
|
|
110
|
-
# puts ip
|
|
111
|
-
# end
|
|
112
|
-
#
|
|
113
|
-
# @api public
|
|
114
|
-
#
|
|
115
|
-
def IPAddr.each(cidr_or_glob,&block)
|
|
116
|
-
unless (cidr_or_glob.include?('*') ||
|
|
117
|
-
cidr_or_glob.include?(',') ||
|
|
118
|
-
cidr_or_glob.include?('-'))
|
|
119
|
-
return IPAddr.new(cidr_or_glob).each(&block)
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
return enum_for(__method__,cidr_or_glob) unless block
|
|
123
|
-
|
|
124
|
-
if cidr_or_glob.include?('::')
|
|
125
|
-
separator = '::'
|
|
126
|
-
base = 16
|
|
127
|
-
|
|
128
|
-
prefix = if cidr_or_glob.start_with?('::') then '::'
|
|
129
|
-
else ''
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
format = lambda { |address|
|
|
133
|
-
prefix + address.map { |i| '%.2x' % i }.join('::')
|
|
134
|
-
}
|
|
135
|
-
else
|
|
136
|
-
separator = '.'
|
|
137
|
-
base = 10
|
|
138
|
-
format = lambda { |address| address.join('.') }
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
# split the address
|
|
142
|
-
segments = cidr_or_glob.split(separator)
|
|
143
|
-
ranges = []
|
|
144
|
-
|
|
145
|
-
# map the components of the address to numeric ranges
|
|
146
|
-
segments.each do |segment|
|
|
147
|
-
next if segment.empty?
|
|
148
|
-
|
|
149
|
-
ranges << if segment == '*'
|
|
150
|
-
(1..254)
|
|
151
|
-
else
|
|
152
|
-
segment.split(',').map { |octet|
|
|
153
|
-
if octet.include?('-')
|
|
154
|
-
start, stop = octet.split('-',2)
|
|
155
|
-
start, stop = start.to_i(base), stop.to_i(base)
|
|
156
|
-
|
|
157
|
-
(start..stop).to_a
|
|
158
|
-
else
|
|
159
|
-
octet.to_i(base)
|
|
160
|
-
end
|
|
161
|
-
}.flatten
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
# cycle through the address ranges
|
|
166
|
-
ranges.comprehension { |address| yield format[address] }
|
|
167
|
-
return nil
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
#
|
|
171
|
-
# Resolves the host-names for the IP address.
|
|
172
|
-
#
|
|
173
|
-
# @param [String] nameserver
|
|
174
|
-
# The optional nameserver to query.
|
|
175
|
-
#
|
|
176
|
-
# @return [Array<String>]
|
|
177
|
-
# The host-names for the IP address.
|
|
178
|
-
#
|
|
179
|
-
# @api public
|
|
180
|
-
#
|
|
181
|
-
def lookup(nameserver=nil)
|
|
182
|
-
Resolv.resolver(nameserver).getnames(self.to_s)
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
#
|
|
186
|
-
# Iterates over each IP address that is included in the addresses
|
|
187
|
-
# netmask. Supports both IPv4 and IPv6 addresses.
|
|
188
|
-
#
|
|
189
|
-
# @yield [ip]
|
|
190
|
-
# The block which will be passed every IP address covered be the
|
|
191
|
-
# netmask of the IPAddr object.
|
|
192
|
-
#
|
|
193
|
-
# @yieldparam [String] ip
|
|
194
|
-
# An IP address.
|
|
195
|
-
#
|
|
196
|
-
# @example
|
|
197
|
-
# netblock = IPAddr.new('10.1.1.1/24')
|
|
198
|
-
#
|
|
199
|
-
# netblock.each do |ip|
|
|
200
|
-
# puts ip
|
|
201
|
-
# end
|
|
202
|
-
#
|
|
203
|
-
# @api public
|
|
204
|
-
#
|
|
205
|
-
def each
|
|
206
|
-
return enum_for(__method__) unless block_given?
|
|
207
|
-
|
|
208
|
-
family_mask = MASKS[@family]
|
|
209
|
-
|
|
210
|
-
(0..((~@mask_addr) & family_mask)).each do |i|
|
|
211
|
-
yield _to_string(@addr | i)
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
return self
|
|
215
|
-
end
|
|
216
|
-
|
|
217
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# metaprogramming assistant -- metaid.rb
|
|
2
|
-
class Object # :nodoc:
|
|
3
|
-
# The hidden singleton lurks behind everyone
|
|
4
|
-
def metaclass; class << self; self; end; end
|
|
5
|
-
def meta_eval(&blk); metaclass.instance_eval(&blk); end
|
|
6
|
-
|
|
7
|
-
# A class_eval version of meta_eval
|
|
8
|
-
def metaclass_eval(&blk); metaclass.class_eval(&blk); end
|
|
9
|
-
|
|
10
|
-
# A class_def version of meta_def
|
|
11
|
-
def metaclass_def(name, &blk)
|
|
12
|
-
metaclass_eval { define_method(name, &blk) }
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Adds methods to a metaclass
|
|
16
|
-
def meta_def(name, &blk)
|
|
17
|
-
meta_eval { define_method(name, &blk) }
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# Defines an instance method within a class
|
|
21
|
-
def class_def(name, &blk)
|
|
22
|
-
class_eval { define_method(name, &blk) }
|
|
23
|
-
end
|
|
24
|
-
end
|