ronin-support 0.5.1 → 1.0.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.editorconfig +11 -0
- data/.github/workflows/ruby.yml +27 -0
- data/.gitignore +7 -6
- data/.mailmap +1 -0
- data/.ruby-version +1 -0
- data/.yardopts +1 -2
- data/ChangeLog.md +533 -137
- data/Gemfile +20 -20
- data/README.md +137 -61
- data/Rakefile +29 -10
- data/data/text/homoglyphs/ascii.txt +8 -0
- data/data/text/homoglyphs/cyrillic.txt +33 -0
- data/data/text/homoglyphs/full_width.txt +81 -0
- data/data/text/homoglyphs/greek.txt +21 -0
- data/data/text/homoglyphs/latin_numbers.txt +14 -0
- data/data/text/homoglyphs/punctuation.txt +7 -0
- data/data/text/patterns/network/public_suffix.rb.erb +44 -0
- data/examples/ssl_proxy.rb +38 -0
- data/examples/tcp_proxy.rb +41 -0
- data/gemspec.yml +25 -15
- data/lib/ronin/support/archive/core_ext/file.rb +118 -0
- data/lib/ronin/{formatting/sql.rb → support/archive/core_ext.rb} +6 -7
- data/lib/ronin/support/archive/mixin.rb +213 -0
- data/lib/ronin/support/archive/tar/reader.rb +135 -0
- data/lib/ronin/support/archive/tar/writer.rb +197 -0
- data/lib/ronin/support/archive/tar.rb +155 -0
- data/lib/ronin/support/archive/zip/reader/entry.rb +134 -0
- data/lib/ronin/support/archive/zip/reader/statistics.rb +76 -0
- data/lib/ronin/support/archive/zip/reader.rb +273 -0
- data/lib/ronin/support/archive/zip/writer.rb +175 -0
- data/lib/ronin/support/archive/zip.rb +105 -0
- data/lib/ronin/support/archive.rb +211 -0
- data/lib/ronin/support/binary/array.rb +255 -0
- data/lib/ronin/support/binary/bit_flip.rb +147 -0
- data/lib/ronin/support/binary/buffer.rb +2027 -0
- data/lib/ronin/support/binary/byte_slice.rb +324 -0
- data/lib/ronin/support/binary/core_ext/array.rb +75 -0
- data/lib/ronin/support/binary/core_ext/float.rb +80 -0
- data/lib/ronin/support/binary/core_ext/integer.rb +305 -0
- data/lib/ronin/support/binary/core_ext/io.rb +38 -0
- data/lib/ronin/support/binary/core_ext/string.rb +115 -0
- data/lib/ronin/{formatting/extensions/text.rb → support/binary/core_ext.rb} +9 -9
- data/lib/ronin/support/binary/cstring.rb +259 -0
- data/lib/ronin/support/binary/ctypes/aggregate_type.rb +98 -0
- data/lib/ronin/support/binary/ctypes/arch/arm/big_endian.rb +77 -0
- data/lib/ronin/support/binary/ctypes/arch/arm.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/arm64/big_endian.rb +77 -0
- data/lib/ronin/support/binary/ctypes/arch/arm64.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/mips/little_endian.rb +77 -0
- data/lib/ronin/support/binary/ctypes/arch/mips.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/mips64/little_endian.rb +77 -0
- data/lib/ronin/support/binary/ctypes/arch/mips64.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/ppc.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/ppc64.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/x86.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/x86_64.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch.rb +30 -0
- data/lib/ronin/support/binary/ctypes/array_object_type.rb +164 -0
- data/lib/ronin/support/binary/ctypes/array_type.rb +232 -0
- data/lib/ronin/support/binary/ctypes/big_endian.rb +195 -0
- data/lib/ronin/support/binary/ctypes/char_type.rb +59 -0
- data/lib/ronin/support/binary/ctypes/char_types.rb +39 -0
- data/lib/ronin/support/binary/ctypes/enum_type.rb +181 -0
- data/lib/ronin/support/binary/ctypes/float32_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/float64_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/float_type.rb +62 -0
- data/lib/ronin/support/binary/ctypes/int16_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/int32_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/int64_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/int8_type.rb +41 -0
- data/lib/ronin/support/binary/ctypes/int_type.rb +62 -0
- data/lib/ronin/support/binary/ctypes/little_endian.rb +195 -0
- data/lib/ronin/support/binary/ctypes/mixin.rb +135 -0
- data/lib/ronin/support/binary/ctypes/native.rb +205 -0
- data/lib/ronin/support/binary/ctypes/network.rb +29 -0
- data/lib/ronin/support/binary/ctypes/object_type.rb +55 -0
- data/lib/ronin/support/binary/ctypes/os/bsd.rb +65 -0
- data/lib/ronin/support/binary/ctypes/os/freebsd.rb +215 -0
- data/lib/ronin/support/binary/ctypes/os/linux.rb +193 -0
- data/lib/ronin/support/binary/ctypes/os/macos.rb +151 -0
- data/lib/ronin/support/binary/ctypes/os/netbsd.rb +147 -0
- data/lib/ronin/support/binary/ctypes/os/openbsd.rb +168 -0
- data/lib/ronin/support/binary/ctypes/os/unix.rb +78 -0
- data/lib/ronin/support/binary/ctypes/os/windows.rb +125 -0
- data/lib/ronin/support/binary/ctypes/os.rb +125 -0
- data/lib/ronin/support/binary/ctypes/scalar_type.rb +200 -0
- data/lib/ronin/support/binary/ctypes/string_type.rb +143 -0
- data/lib/ronin/support/binary/ctypes/struct_object_type.rb +173 -0
- data/lib/ronin/support/binary/ctypes/struct_type.rb +359 -0
- data/lib/ronin/support/binary/ctypes/type.rb +193 -0
- data/lib/ronin/support/binary/ctypes/type_resolver.rb +206 -0
- data/lib/ronin/support/binary/ctypes/uint16_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/uint32_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/uint64_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/uint8_type.rb +41 -0
- data/lib/ronin/support/binary/ctypes/uint_type.rb +59 -0
- data/lib/ronin/support/binary/ctypes/unbounded_array_type.rb +258 -0
- data/lib/ronin/support/binary/ctypes/union_object_type.rb +173 -0
- data/lib/ronin/support/binary/ctypes/union_type.rb +261 -0
- data/lib/ronin/support/binary/ctypes.rb +462 -0
- data/lib/ronin/support/binary/hexdump/core_ext/file.rb +118 -0
- data/lib/ronin/support/binary/hexdump/core_ext/string.rb +115 -0
- data/lib/ronin/support/binary/hexdump/core_ext.rb +20 -0
- data/lib/ronin/support/binary/hexdump/parser.rb +492 -0
- data/lib/ronin/support/binary/hexdump.rb +20 -0
- data/lib/ronin/support/binary/memory.rb +268 -0
- data/lib/ronin/support/binary/packet.rb +33 -0
- data/lib/ronin/support/binary/stack.rb +256 -0
- data/lib/ronin/support/binary/stream/methods.rb +1755 -0
- data/lib/ronin/support/binary/stream.rb +151 -0
- data/lib/ronin/support/binary/struct/member.rb +86 -0
- data/lib/ronin/support/binary/struct.rb +830 -0
- data/lib/ronin/support/binary/template.rb +284 -0
- data/lib/ronin/support/binary/union.rb +162 -0
- data/lib/ronin/support/binary.rb +26 -0
- data/lib/ronin/support/cli/ansi.rb +330 -0
- data/lib/ronin/support/cli/io_shell/core_ext/io.rb +67 -0
- data/lib/ronin/{fuzzing/extensions.rb → support/cli/io_shell/core_ext.rb} +6 -7
- data/lib/ronin/support/cli/io_shell.rb +161 -0
- data/lib/ronin/support/cli/printing.rb +216 -0
- data/lib/ronin/support/cli.rb +20 -0
- data/lib/ronin/support/compression/core_ext/file.rb +70 -0
- data/lib/ronin/support/compression/core_ext/string.rb +101 -0
- data/lib/ronin/{formatting/html.rb → support/compression/core_ext.rb} +6 -7
- data/lib/ronin/support/compression/gzip/reader.rb +70 -0
- data/lib/ronin/support/compression/gzip/writer.rb +74 -0
- data/lib/ronin/support/compression/gzip.rb +105 -0
- data/lib/ronin/support/compression/mixin.rb +180 -0
- data/lib/ronin/{network/extensions/esmtp/net.rb → support/compression/zlib.rb} +9 -10
- data/lib/ronin/support/compression.rb +174 -0
- data/lib/ronin/{extensions → support/core_ext}/enumerable.rb +5 -6
- data/lib/ronin/{extensions → support/core_ext}/file.rb +11 -34
- data/lib/ronin/support/core_ext/integer.rb +37 -0
- data/lib/ronin/support/core_ext/ipaddr.rb +65 -0
- data/lib/ronin/{extensions → support/core_ext}/kernel.rb +10 -9
- data/lib/ronin/{extensions → support/core_ext}/resolv.rb +5 -28
- data/lib/ronin/{extensions → support/core_ext}/string.rb +117 -57
- data/lib/ronin/support/core_ext.rb +33 -0
- data/lib/ronin/support/crypto/cert.rb +522 -0
- data/lib/ronin/support/crypto/cert_chain.rb +204 -0
- data/lib/ronin/support/crypto/cipher/aes.rb +71 -0
- data/lib/ronin/support/crypto/cipher/aes128.rb +54 -0
- data/lib/ronin/support/crypto/cipher/aes256.rb +54 -0
- data/lib/ronin/support/crypto/cipher.rb +194 -0
- data/lib/ronin/support/crypto/core_ext/file.rb +660 -0
- data/lib/ronin/support/crypto/core_ext/string.rb +548 -0
- data/lib/ronin/{binary.rb → support/crypto/core_ext.rb} +7 -8
- data/lib/ronin/support/crypto/hmac.rb +48 -0
- data/lib/ronin/support/crypto/key/dh.rb +122 -0
- data/lib/ronin/support/crypto/key/dsa.rb +103 -0
- data/lib/ronin/support/crypto/key/ec.rb +99 -0
- data/lib/ronin/support/crypto/key/methods.rb +163 -0
- data/lib/ronin/support/crypto/key/rsa.rb +169 -0
- data/lib/ronin/support/crypto/key.rb +105 -0
- data/lib/ronin/support/crypto/mixin.rb +620 -0
- data/lib/ronin/{network/extensions/http/net.rb → support/crypto/openssl.rb} +9 -10
- data/lib/ronin/support/crypto.rb +779 -0
- data/lib/ronin/support/encoding/base16/core_ext/string.rb +63 -0
- data/lib/ronin/support/encoding/base16/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/base16.rb +82 -0
- data/lib/ronin/support/encoding/base32/core_ext/string.rb +63 -0
- data/lib/ronin/support/encoding/base32/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/base32.rb +164 -0
- data/lib/ronin/support/encoding/base64/core_ext/string.rb +76 -0
- data/lib/ronin/support/encoding/base64/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/base64.rb +78 -0
- data/lib/ronin/support/encoding/c/core_ext/integer.rb +82 -0
- data/lib/ronin/support/encoding/c/core_ext/string.rb +125 -0
- data/lib/ronin/support/encoding/c/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/c.rb +277 -0
- data/lib/ronin/support/encoding/core_ext/string.rb +107 -0
- data/lib/ronin/support/encoding/core_ext.rb +33 -0
- data/lib/ronin/support/encoding/hex/core_ext/integer.rb +82 -0
- data/lib/ronin/support/encoding/hex/core_ext/string.rb +133 -0
- data/lib/ronin/support/encoding/hex/core_ext.rb +22 -0
- data/lib/ronin/support/encoding/hex.rb +248 -0
- data/lib/ronin/support/encoding/html/core_ext/integer.rb +106 -0
- data/lib/ronin/support/encoding/html/core_ext/string.rb +130 -0
- data/lib/ronin/support/encoding/html/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/html.rb +233 -0
- data/lib/ronin/support/encoding/http/core_ext/integer.rb +95 -0
- data/lib/ronin/support/encoding/http/core_ext/string.rb +129 -0
- data/lib/ronin/support/encoding/http/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/http.rb +241 -0
- data/lib/ronin/support/encoding/js/core_ext/integer.rb +67 -0
- data/lib/ronin/support/encoding/js/core_ext/string.rb +125 -0
- data/lib/ronin/support/encoding/js/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/js.rb +279 -0
- data/lib/ronin/support/encoding/powershell/core_ext/integer.rb +87 -0
- data/lib/ronin/support/encoding/powershell/core_ext/string.rb +145 -0
- data/lib/ronin/support/encoding/powershell/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/powershell.rb +297 -0
- data/lib/ronin/support/encoding/punycode/core_ext/string.rb +63 -0
- data/lib/ronin/support/encoding/punycode/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/punycode.rb +76 -0
- data/lib/ronin/support/encoding/quoted_printable/core_ext/string.rb +75 -0
- data/lib/ronin/support/encoding/quoted_printable/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/quoted_printable.rb +102 -0
- data/lib/ronin/support/encoding/ruby/core_ext/string.rb +129 -0
- data/lib/ronin/{formatting/binary.rb → support/encoding/ruby/core_ext.rb} +6 -7
- data/lib/ronin/support/encoding/ruby.rb +235 -0
- data/lib/ronin/support/encoding/shell/core_ext/integer.rb +89 -0
- data/lib/ronin/support/encoding/shell/core_ext/string.rb +134 -0
- data/lib/ronin/support/encoding/shell/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/shell.rb +293 -0
- data/lib/ronin/{network/extensions → support/encoding}/smtp.rb +7 -7
- data/lib/ronin/support/encoding/sql/core_ext/string.rb +114 -0
- data/lib/ronin/{formatting/http.rb → support/encoding/sql/core_ext.rb} +6 -7
- data/lib/ronin/support/encoding/sql.rb +124 -0
- data/lib/ronin/support/encoding/uri/core_ext/integer.rb +149 -0
- data/lib/ronin/support/encoding/uri/core_ext/string.rb +195 -0
- data/lib/ronin/support/encoding/uri/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/uri.rb +424 -0
- data/lib/ronin/support/encoding/uuencoding/core_ext/string.rb +73 -0
- data/lib/ronin/support/encoding/uuencoding/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/uuencoding.rb +70 -0
- data/lib/ronin/support/encoding/xml/core_ext/integer.rb +100 -0
- data/lib/ronin/support/encoding/xml/core_ext/string.rb +124 -0
- data/lib/ronin/support/encoding/xml/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/xml.rb +328 -0
- data/lib/ronin/support/encoding.rb +46 -0
- data/lib/ronin/support/home.rb +88 -0
- data/lib/ronin/support/mixin.rb +42 -0
- data/lib/ronin/support/network/asn/dns_record.rb +112 -0
- data/lib/ronin/support/network/asn/list.rb +269 -0
- data/lib/ronin/support/network/asn/record.rb +164 -0
- data/lib/ronin/support/network/asn/record_set.rb +226 -0
- data/lib/ronin/support/network/asn.rb +88 -0
- data/lib/ronin/{binary/hexdump.rb → support/network/core_ext.rb} +6 -7
- data/lib/ronin/support/network/dns/idn.rb +38 -0
- data/lib/ronin/support/network/dns/mixin.rb +941 -0
- data/lib/ronin/support/network/dns/resolver.rb +707 -0
- data/lib/ronin/support/network/dns.rb +1109 -0
- data/lib/ronin/support/network/domain.rb +70 -0
- data/lib/ronin/support/network/email_address.rb +574 -0
- data/lib/ronin/support/network/esmtp/mixin.rb +115 -0
- data/lib/ronin/support/network/exceptions.rb +43 -0
- data/lib/ronin/support/network/ftp/mixin.rb +106 -0
- data/lib/ronin/support/network/host.rb +1473 -0
- data/lib/ronin/support/network/http/cookie.rb +245 -0
- data/lib/ronin/support/network/http/core_ext/uri/http.rb +63 -0
- data/lib/ronin/support/network/http/core_ext.rb +19 -0
- data/lib/ronin/support/network/http/mixin.rb +890 -0
- data/lib/ronin/support/network/http/request.rb +215 -0
- data/lib/ronin/support/network/http/set_cookie.rb +210 -0
- data/lib/ronin/support/network/http/user_agents.rb +115 -0
- data/lib/ronin/support/network/http.rb +2582 -0
- data/lib/ronin/support/network/imap/mixin.rb +133 -0
- data/lib/ronin/support/network/ip/mixin.rb +114 -0
- data/lib/ronin/support/network/ip.rb +540 -0
- data/lib/ronin/support/network/ip_range/cidr.rb +252 -0
- data/lib/ronin/support/network/ip_range/glob.rb +309 -0
- data/lib/ronin/support/network/ip_range/range.rb +249 -0
- data/lib/ronin/support/network/ip_range.rb +284 -0
- data/lib/ronin/support/network/mixin.rb +58 -0
- data/lib/ronin/support/network/packet.rb +27 -0
- data/lib/ronin/support/network/pop3/mixin.rb +113 -0
- data/lib/ronin/support/network/proxy.rb +602 -0
- data/lib/ronin/support/network/public_suffix/list.rb +339 -0
- data/lib/ronin/support/network/public_suffix/suffix.rb +118 -0
- data/lib/ronin/support/network/public_suffix/suffix_set.rb +150 -0
- data/lib/ronin/support/network/public_suffix.rb +41 -0
- data/lib/ronin/support/network/smtp/email.rb +190 -0
- data/lib/ronin/support/network/smtp/mixin.rb +290 -0
- data/lib/ronin/{extensions/meta.rb → support/network/smtp.rb} +6 -7
- data/lib/ronin/support/network/ssl/local_cert.rb +114 -0
- data/lib/ronin/support/network/ssl/local_key.rb +84 -0
- data/lib/ronin/support/network/ssl/mixin.rb +740 -0
- data/lib/ronin/{network/extensions/imap/net.rb → support/network/ssl/openssl.rb} +9 -10
- data/lib/ronin/support/network/ssl/proxy.rb +296 -0
- data/lib/ronin/support/network/ssl.rb +173 -0
- data/lib/ronin/support/network/tcp/mixin.rb +400 -0
- data/lib/ronin/support/network/tcp/proxy.rb +435 -0
- data/lib/ronin/support/network/tcp.rb +443 -0
- data/lib/ronin/support/network/telnet/mixin.rb +150 -0
- data/lib/ronin/support/network/telnet.rb +90 -0
- data/lib/ronin/support/network/tld/list.rb +266 -0
- data/lib/ronin/support/network/tld.rb +41 -0
- data/lib/ronin/support/network/tls/mixin.rb +670 -0
- data/lib/ronin/support/network/tls/proxy.rb +135 -0
- data/lib/ronin/support/network/tls.rb +53 -0
- data/lib/ronin/support/network/udp/mixin.rb +389 -0
- data/lib/ronin/support/network/udp/proxy.rb +192 -0
- data/lib/ronin/support/network/udp.rb +435 -0
- data/lib/ronin/support/network/unix/mixin.rb +273 -0
- data/lib/ronin/support/network.rb +37 -0
- data/lib/ronin/support/path.rb +136 -0
- data/lib/ronin/{network/extensions/dns/net.rb → support/text/core_ext/regexp.rb} +8 -9
- data/lib/ronin/support/text/core_ext/string.rb +46 -0
- data/lib/ronin/support/text/core_ext.rb +23 -0
- data/lib/ronin/support/text/entropy/core_ext/string.rb +45 -0
- data/lib/ronin/support/text/entropy/core_ext.rb +19 -0
- data/lib/ronin/support/text/entropy.rb +66 -0
- data/lib/ronin/support/text/erb/mixin.rb +44 -0
- data/lib/ronin/support/text/erb.rb +19 -0
- data/lib/ronin/support/text/homoglyph/core_ext/string.rb +108 -0
- data/lib/ronin/{formatting/digest.rb → support/text/homoglyph/core_ext.rb} +6 -7
- data/lib/ronin/{network/http/exceptions/unknown_request.rb → support/text/homoglyph/exceptions.rb} +10 -9
- data/lib/ronin/support/text/homoglyph/table.rb +228 -0
- data/lib/ronin/support/text/homoglyph.rb +142 -0
- data/lib/ronin/support/text/mixin.rb +31 -0
- data/lib/ronin/support/text/patterns/credentials.rb +75 -0
- data/lib/ronin/support/text/patterns/crypto.rb +67 -0
- data/lib/ronin/support/text/patterns/file_system.rb +93 -0
- data/lib/ronin/support/text/patterns/language.rb +37 -0
- data/lib/ronin/support/text/patterns/network/public_suffix.rb +44 -0
- data/lib/ronin/support/text/patterns/network.rb +140 -0
- data/lib/ronin/support/text/patterns/numeric.rb +52 -0
- data/lib/ronin/support/text/patterns/pii.rb +105 -0
- data/lib/ronin/support/text/patterns/source_code.rb +148 -0
- data/lib/ronin/support/text/patterns.rb +25 -0
- data/lib/ronin/support/text/random/mixin.rb +437 -0
- data/lib/ronin/support/text/random.rb +419 -0
- data/lib/ronin/support/text/typo/core_ext/string.rb +123 -0
- data/lib/ronin/support/text/typo/core_ext.rb +19 -0
- data/lib/ronin/support/text/typo/exceptions.rb +28 -0
- data/lib/ronin/support/text/typo/generator.rb +161 -0
- data/lib/ronin/support/text/typo.rb +260 -0
- data/lib/ronin/support/text.rb +26 -0
- data/lib/ronin/support/version.rb +6 -7
- data/lib/ronin/support.rb +20 -15
- data/ronin-support.gemspec +3 -1
- metadata +462 -369
- data/.gemtest +0 -0
- data/lib/ronin/binary/hexdump/parser.rb +0 -403
- data/lib/ronin/binary/struct.rb +0 -567
- data/lib/ronin/binary/template.rb +0 -454
- data/lib/ronin/extensions/ip_addr.rb +0 -217
- data/lib/ronin/extensions/meta/object.rb +0 -24
- data/lib/ronin/extensions/regexp.rb +0 -157
- data/lib/ronin/extensions.rb +0 -29
- data/lib/ronin/formatting/extensions/binary/array.rb +0 -61
- data/lib/ronin/formatting/extensions/binary/base64.rb +0 -106
- data/lib/ronin/formatting/extensions/binary/file.rb +0 -77
- data/lib/ronin/formatting/extensions/binary/float.rb +0 -65
- data/lib/ronin/formatting/extensions/binary/integer.rb +0 -180
- data/lib/ronin/formatting/extensions/binary/string.rb +0 -345
- data/lib/ronin/formatting/extensions/binary.rb +0 -26
- data/lib/ronin/formatting/extensions/digest/file.rb +0 -129
- data/lib/ronin/formatting/extensions/digest/string.rb +0 -86
- data/lib/ronin/formatting/extensions/digest.rb +0 -21
- data/lib/ronin/formatting/extensions/html/integer.rb +0 -142
- data/lib/ronin/formatting/extensions/html/string.rb +0 -194
- data/lib/ronin/formatting/extensions/html.rb +0 -21
- data/lib/ronin/formatting/extensions/http/integer.rb +0 -69
- data/lib/ronin/formatting/extensions/http/string.rb +0 -110
- data/lib/ronin/formatting/extensions/http.rb +0 -21
- data/lib/ronin/formatting/extensions/sql/string.rb +0 -128
- data/lib/ronin/formatting/extensions/sql.rb +0 -20
- data/lib/ronin/formatting/extensions/text/array.rb +0 -137
- data/lib/ronin/formatting/extensions/text/string.rb +0 -297
- data/lib/ronin/formatting/extensions.rb +0 -24
- data/lib/ronin/formatting/text.rb +0 -20
- data/lib/ronin/formatting.rb +0 -25
- data/lib/ronin/fuzzing/extensions/string.rb +0 -209
- data/lib/ronin/fuzzing/fuzzer.rb +0 -110
- data/lib/ronin/fuzzing/fuzzing.rb +0 -360
- data/lib/ronin/fuzzing/mutator.rb +0 -161
- data/lib/ronin/fuzzing/repeater.rb +0 -81
- data/lib/ronin/fuzzing/template.rb +0 -133
- data/lib/ronin/fuzzing.rb +0 -21
- data/lib/ronin/mixin.rb +0 -89
- data/lib/ronin/network/dns.rb +0 -201
- data/lib/ronin/network/esmtp.rb +0 -113
- data/lib/ronin/network/extensions/dns.rb +0 -20
- data/lib/ronin/network/extensions/esmtp.rb +0 -20
- data/lib/ronin/network/extensions/http/uri/http.rb +0 -228
- data/lib/ronin/network/extensions/http.rb +0 -21
- data/lib/ronin/network/extensions/imap.rb +0 -20
- data/lib/ronin/network/extensions/pop3/net.rb +0 -24
- data/lib/ronin/network/extensions/pop3.rb +0 -20
- data/lib/ronin/network/extensions/smtp/net.rb +0 -24
- data/lib/ronin/network/extensions/ssl/net.rb +0 -24
- data/lib/ronin/network/extensions/ssl.rb +0 -20
- data/lib/ronin/network/extensions/tcp/net.rb +0 -24
- data/lib/ronin/network/extensions/tcp.rb +0 -20
- data/lib/ronin/network/extensions/telnet/net.rb +0 -24
- data/lib/ronin/network/extensions/telnet.rb +0 -20
- data/lib/ronin/network/extensions/udp/net.rb +0 -24
- data/lib/ronin/network/extensions/udp.rb +0 -20
- data/lib/ronin/network/extensions.rb +0 -29
- data/lib/ronin/network/ftp.rb +0 -149
- data/lib/ronin/network/http/exceptions.rb +0 -20
- data/lib/ronin/network/http/http.rb +0 -1127
- data/lib/ronin/network/http/proxy.rb +0 -330
- data/lib/ronin/network/http.rb +0 -22
- data/lib/ronin/network/imap.rb +0 -158
- data/lib/ronin/network/mixins/dns.rb +0 -55
- data/lib/ronin/network/mixins/esmtp.rb +0 -164
- data/lib/ronin/network/mixins/ftp.rb +0 -155
- data/lib/ronin/network/mixins/http.rb +0 -227
- data/lib/ronin/network/mixins/imap.rb +0 -156
- data/lib/ronin/network/mixins/mixin.rb +0 -58
- data/lib/ronin/network/mixins/pop3.rb +0 -149
- data/lib/ronin/network/mixins/smtp.rb +0 -159
- data/lib/ronin/network/mixins/ssl.rb +0 -148
- data/lib/ronin/network/mixins/tcp.rb +0 -368
- data/lib/ronin/network/mixins/telnet.rb +0 -208
- data/lib/ronin/network/mixins/udp.rb +0 -381
- data/lib/ronin/network/mixins/unix.rb +0 -279
- data/lib/ronin/network/mixins.rb +0 -29
- data/lib/ronin/network/network.rb +0 -45
- data/lib/ronin/network/pop3.rb +0 -124
- data/lib/ronin/network/proxy.rb +0 -578
- data/lib/ronin/network/smtp/email.rb +0 -174
- data/lib/ronin/network/smtp/smtp.rb +0 -230
- data/lib/ronin/network/smtp.rb +0 -22
- data/lib/ronin/network/ssl.rb +0 -186
- data/lib/ronin/network/tcp/proxy.rb +0 -417
- data/lib/ronin/network/tcp/tcp.rb +0 -443
- data/lib/ronin/network/tcp.rb +0 -21
- data/lib/ronin/network/telnet.rb +0 -264
- data/lib/ronin/network/udp/proxy.rb +0 -191
- data/lib/ronin/network/udp/udp.rb +0 -450
- data/lib/ronin/network/udp.rb +0 -21
- data/lib/ronin/network/unix.rb +0 -286
- data/lib/ronin/network.rb +0 -31
- data/lib/ronin/path.rb +0 -137
- data/lib/ronin/spec/ui/output.rb +0 -22
- data/lib/ronin/support/inflector.rb +0 -92
- data/lib/ronin/support/support.rb +0 -42
- data/lib/ronin/templates/erb.rb +0 -78
- data/lib/ronin/templates/template.rb +0 -169
- data/lib/ronin/templates.rb +0 -21
- data/lib/ronin/ui/output/helpers.rb +0 -296
- data/lib/ronin/ui/output/output.rb +0 -146
- data/lib/ronin/ui/output/terminal/color.rb +0 -124
- data/lib/ronin/ui/output/terminal/raw.rb +0 -103
- data/lib/ronin/ui/output/terminal.rb +0 -21
- data/lib/ronin/ui/output.rb +0 -21
- data/lib/ronin/ui/shell.rb +0 -286
- data/lib/ronin/wordlist.rb +0 -287
- data/spec/binary/hexdump/helpers/hexdumps/ascii.bin +0 -0
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_decimal_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_repeated.txt +0 -6
- data/spec/binary/hexdump/helpers/hexdumps/od_decimal_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_decimal_ints.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_decimal_quads.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_decimal_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_doubles.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_floats.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_hex_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_hex_ints.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_hex_quads.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_hex_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_named_chars.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_octal_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_octal_ints.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_octal_quads.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_octal_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_repeated.txt +0 -6
- data/spec/binary/hexdump/helpers/hexdumps/repeated.bin +0 -1
- data/spec/binary/hexdump/helpers/hexdumps.rb +0 -13
- data/spec/binary/hexdump/parser_spec.rb +0 -302
- data/spec/binary/struct_spec.rb +0 -496
- data/spec/binary/template_spec.rb +0 -414
- data/spec/extensions/enumerable_spec.rb +0 -24
- data/spec/extensions/file_spec.rb +0 -63
- data/spec/extensions/ip_addr_spec.rb +0 -203
- data/spec/extensions/kernel_spec.rb +0 -30
- data/spec/extensions/regexp_spec.rb +0 -482
- data/spec/extensions/resolv_spec.rb +0 -18
- data/spec/extensions/string_spec.rb +0 -179
- data/spec/formatting/binary/array_spec.rb +0 -26
- data/spec/formatting/binary/base64_spec.rb +0 -50
- data/spec/formatting/binary/float_spec.rb +0 -34
- data/spec/formatting/binary/integer_spec.rb +0 -166
- data/spec/formatting/binary/string_spec.rb +0 -197
- data/spec/formatting/digest/string_spec.rb +0 -82
- data/spec/formatting/html/integer_spec.rb +0 -66
- data/spec/formatting/html/string_spec.rb +0 -103
- data/spec/formatting/http/integer_spec.rb +0 -42
- data/spec/formatting/http/string_spec.rb +0 -76
- data/spec/formatting/sql/string_spec.rb +0 -75
- data/spec/formatting/text/array_spec.rb +0 -105
- data/spec/formatting/text/string_spec.rb +0 -162
- data/spec/fuzzing/extensions/string_spec.rb +0 -87
- data/spec/fuzzing/fuzzer_spec.rb +0 -109
- data/spec/fuzzing/fuzzing_spec.rb +0 -24
- data/spec/fuzzing/mutator_spec.rb +0 -112
- data/spec/fuzzing/repeater_spec.rb +0 -57
- data/spec/fuzzing/template_spec.rb +0 -54
- data/spec/mixin_spec.rb +0 -53
- data/spec/network/dns_spec.rb +0 -201
- data/spec/network/ftp_spec.rb +0 -81
- data/spec/network/http/http_spec.rb +0 -466
- data/spec/network/http/proxy_spec.rb +0 -148
- data/spec/network/network_spec.rb +0 -8
- data/spec/network/proxy_spec.rb +0 -121
- data/spec/network/shared/unix_server.rb +0 -31
- data/spec/network/smtp/email_spec.rb +0 -100
- data/spec/network/ssl_spec.rb +0 -70
- data/spec/network/tcp/proxy_spec.rb +0 -116
- data/spec/network/tcp/tcp_spec.rb +0 -273
- data/spec/network/telnet_spec.rb +0 -67
- data/spec/network/udp/udp_spec.rb +0 -271
- data/spec/network/unix_spec.rb +0 -183
- data/spec/path_spec.rb +0 -86
- data/spec/spec_helper.rb +0 -9
- data/spec/support/inflector_spec.rb +0 -22
- data/spec/support_spec.rb +0 -8
- data/spec/templates/classes/example_erb.rb +0 -11
- data/spec/templates/classes/example_template.rb +0 -35
- data/spec/templates/erb_spec.rb +0 -21
- data/spec/templates/helpers/data/includes/_relative.erb +0 -1
- data/spec/templates/helpers/data/templates/example.erb +0 -1
- data/spec/templates/helpers/data.rb +0 -9
- data/spec/templates/template_spec.rb +0 -54
- data/spec/ui/classes/test_shell.rb +0 -22
- data/spec/ui/output_spec.rb +0 -32
- data/spec/ui/shell_spec.rb +0 -83
- data/spec/wordlist_spec.rb +0 -151
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
4
|
+
#
|
|
5
|
+
# ronin-support is free software: you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU Lesser General Public License as published
|
|
7
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
# (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# ronin-support is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU Lesser General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU Lesser General Public License
|
|
16
|
+
# along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'ronin/support/binary/ctypes'
|
|
20
|
+
require 'ronin/support/binary/bit_flip'
|
|
21
|
+
|
|
22
|
+
class Integer
|
|
23
|
+
|
|
24
|
+
#
|
|
25
|
+
# Enumerates over every bit flip in the integer.
|
|
26
|
+
#
|
|
27
|
+
# @param [Integer, Range(Integer)] bits
|
|
28
|
+
# The number of bits to flip or a range of bit indexes to flip.
|
|
29
|
+
#
|
|
30
|
+
# @yield [int]
|
|
31
|
+
# If a block is given, it will be passed each bit-flipped integer.
|
|
32
|
+
#
|
|
33
|
+
# @yieldparam [Integer] int
|
|
34
|
+
# The integer but with one of it's bits flipped.
|
|
35
|
+
#
|
|
36
|
+
# @return [Enumerator]
|
|
37
|
+
# If no block is given, an Enumerator object will be returned.
|
|
38
|
+
#
|
|
39
|
+
# @raise [ArgumentError]
|
|
40
|
+
# The given bits must be either a Range or an Integer.
|
|
41
|
+
#
|
|
42
|
+
# @example bit-flip all eight bits:
|
|
43
|
+
# 0x41.each_bit_flip(8) { |int| puts "%.8b" % int }
|
|
44
|
+
#
|
|
45
|
+
# @example bit-flip bits 8-16:
|
|
46
|
+
# 0xffff.each_bit_flip(8...16) { |int| puts "%.16b" % int }
|
|
47
|
+
#
|
|
48
|
+
# @api public
|
|
49
|
+
#
|
|
50
|
+
def each_bit_flip(bits,&block)
|
|
51
|
+
Ronin::Support::Binary::BitFlip::Integer.each_bit_flip(self,bits,&block)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
#
|
|
55
|
+
# Returns every bit flip in the integer.
|
|
56
|
+
#
|
|
57
|
+
# @param [Integer, Range(Integer)] bits
|
|
58
|
+
# The number of bits to flip or a range of bit indexes to flip.
|
|
59
|
+
#
|
|
60
|
+
# @return [Array<Integer>]
|
|
61
|
+
# The bit-flipped integers.
|
|
62
|
+
#
|
|
63
|
+
# @raise [ArgumentError]
|
|
64
|
+
# The given bits must be either a Range or an Integer.
|
|
65
|
+
#
|
|
66
|
+
# @example bit-flip all eight bits:
|
|
67
|
+
# 0x41.bit_flips(8)
|
|
68
|
+
#
|
|
69
|
+
# @example bit-flip bits 8-16:
|
|
70
|
+
# 0xffff.bit_flips(8...16)
|
|
71
|
+
#
|
|
72
|
+
# @api public
|
|
73
|
+
#
|
|
74
|
+
def bit_flips(bits)
|
|
75
|
+
Ronin::Support::Binary::BitFlip::Integer.bit_flips(self,bits)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
alias flip_bits bit_flips
|
|
79
|
+
|
|
80
|
+
#
|
|
81
|
+
# Packs the Integer into a String.
|
|
82
|
+
#
|
|
83
|
+
# @param [String, Symbol] argument
|
|
84
|
+
# The `Array#pack` String or {Ronin::Support::Binary::Template} type.
|
|
85
|
+
#
|
|
86
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
87
|
+
# Additional keyword arguments for
|
|
88
|
+
# {Ronin::Support::Binary::CTypes.platform}.
|
|
89
|
+
#
|
|
90
|
+
# @option kwargs [:little, :big, :net, nil] :endian
|
|
91
|
+
# The desired endianness of the binary format.
|
|
92
|
+
#
|
|
93
|
+
# @option kwargs [:x86, :x86_64,
|
|
94
|
+
# :ppc, :ppc64,
|
|
95
|
+
# :mips, :mips_le, :mips_be,
|
|
96
|
+
# :mips64, :mips64_le, :mips64_be,
|
|
97
|
+
# :arm, :arm_le, :arm_be,
|
|
98
|
+
# :arm64, :arm64_le, :arm64_be] :arch
|
|
99
|
+
# The desired architecture of the binary format.
|
|
100
|
+
#
|
|
101
|
+
# @option kwargs [:linux, :macos, :windows,
|
|
102
|
+
# :bsd, :freebsd, :openbsd, :netbsd] :os
|
|
103
|
+
# The Operating System name to lookup.
|
|
104
|
+
#
|
|
105
|
+
# @return [String]
|
|
106
|
+
# The packed Integer.
|
|
107
|
+
#
|
|
108
|
+
# @raise [ArgumentError]
|
|
109
|
+
# The given argument was not a `String`, `Symbol`, or valid type name.
|
|
110
|
+
#
|
|
111
|
+
# @example using a `Array#pack` format string:
|
|
112
|
+
# 0x41.pack('V')
|
|
113
|
+
# # => "A\0\0\0"
|
|
114
|
+
#
|
|
115
|
+
# @example using {Ronin::Support::Binary::CTypes} types:
|
|
116
|
+
# 0x41.pack(:uint32_le)
|
|
117
|
+
# # => "A\x00\x00\x00"
|
|
118
|
+
#
|
|
119
|
+
# @example specifying the endian-ness:
|
|
120
|
+
# 0x41.pack(:uint32, endian: :big)
|
|
121
|
+
# # => "\x00\x00\x00A"
|
|
122
|
+
#
|
|
123
|
+
# @example specifying the architecture:
|
|
124
|
+
# 0x41.pack(:ulong, arch: :arm64)
|
|
125
|
+
# # => "A\x00\x00\x00\x00\x00\x00\x00"
|
|
126
|
+
#
|
|
127
|
+
# @example specifying the architecture and Operating System (OS):
|
|
128
|
+
# 0x41.pack(:size_t, arch: :arm64, os: :linux)
|
|
129
|
+
# # => "A\x00\x00\x00\x00\x00\x00\x00"
|
|
130
|
+
#
|
|
131
|
+
# @see http://rubydoc.info/stdlib/core/Array:pack
|
|
132
|
+
# @see Ronin::Support::Binary::Template
|
|
133
|
+
#
|
|
134
|
+
# @api public
|
|
135
|
+
#
|
|
136
|
+
def pack(argument, **kwargs)
|
|
137
|
+
case argument
|
|
138
|
+
when String
|
|
139
|
+
[self].pack(argument)
|
|
140
|
+
when Symbol
|
|
141
|
+
types = Ronin::Support::Binary::CTypes.platform(**kwargs)
|
|
142
|
+
type = types[argument]
|
|
143
|
+
type.pack(self)
|
|
144
|
+
else
|
|
145
|
+
raise(ArgumentError,"invalid pack argument: #{argument}")
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
#
|
|
150
|
+
# Converts the integer into an 8-bit unsigned integer.
|
|
151
|
+
#
|
|
152
|
+
# @return [Integer]
|
|
153
|
+
# The integer truncated to 8-bits.
|
|
154
|
+
#
|
|
155
|
+
# @api public
|
|
156
|
+
#
|
|
157
|
+
# @since 1.0.0
|
|
158
|
+
#
|
|
159
|
+
def to_uint8
|
|
160
|
+
self & 0xff
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
alias to_u8 to_uint8
|
|
164
|
+
|
|
165
|
+
#
|
|
166
|
+
# Converts the integer into an 16-bit unsigned integer.
|
|
167
|
+
#
|
|
168
|
+
# @return [Integer]
|
|
169
|
+
# The integer truncated to 16-bits.
|
|
170
|
+
#
|
|
171
|
+
# @api public
|
|
172
|
+
#
|
|
173
|
+
# @since 1.0.0
|
|
174
|
+
#
|
|
175
|
+
def to_uint16
|
|
176
|
+
self & 0xffff
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
alias to_u16 to_uint16
|
|
180
|
+
|
|
181
|
+
#
|
|
182
|
+
# Converts the integer into an 32-bit unsigned integer.
|
|
183
|
+
#
|
|
184
|
+
# @return [Integer]
|
|
185
|
+
# The integer truncated to 32-bits.
|
|
186
|
+
#
|
|
187
|
+
# @api public
|
|
188
|
+
#
|
|
189
|
+
# @since 1.0.0
|
|
190
|
+
#
|
|
191
|
+
def to_uint32
|
|
192
|
+
self & 0xffffffff
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
alias to_u32 to_uint32
|
|
196
|
+
|
|
197
|
+
#
|
|
198
|
+
# Converts the integer into an 64-bit unsigned integer.
|
|
199
|
+
#
|
|
200
|
+
# @return [Integer]
|
|
201
|
+
# The integer truncated to 64-bits.
|
|
202
|
+
#
|
|
203
|
+
# @api public
|
|
204
|
+
#
|
|
205
|
+
# @since 1.0.0
|
|
206
|
+
#
|
|
207
|
+
def to_uint64
|
|
208
|
+
self & 0xffffffffffffffff
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
alias to_u64 to_uint64
|
|
212
|
+
|
|
213
|
+
#
|
|
214
|
+
# Converts the integer into an 8-bit signed integer.
|
|
215
|
+
#
|
|
216
|
+
# @return [Integer]
|
|
217
|
+
# The integer truncated to 8-bits with signed preserved.
|
|
218
|
+
#
|
|
219
|
+
# @api public
|
|
220
|
+
#
|
|
221
|
+
# @since 1.0.0
|
|
222
|
+
#
|
|
223
|
+
def to_int8
|
|
224
|
+
int = self & 0xff
|
|
225
|
+
|
|
226
|
+
if int[7] == 1
|
|
227
|
+
# interpret the new signed bit
|
|
228
|
+
int -= 0x100
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
return int
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
alias to_i8 to_int8
|
|
235
|
+
|
|
236
|
+
#
|
|
237
|
+
# Converts the integer into an 16-bit signed integer.
|
|
238
|
+
#
|
|
239
|
+
# @return [Integer]
|
|
240
|
+
# The integer truncated to 16-bits with signed preserved.
|
|
241
|
+
#
|
|
242
|
+
# @api public
|
|
243
|
+
#
|
|
244
|
+
# @since 1.0.0
|
|
245
|
+
#
|
|
246
|
+
def to_int16
|
|
247
|
+
int = self & 0xffff
|
|
248
|
+
|
|
249
|
+
if int[15] == 1
|
|
250
|
+
# interpret the new signed bit
|
|
251
|
+
int -= 0x10000
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
return int
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
alias to_i16 to_int16
|
|
258
|
+
|
|
259
|
+
#
|
|
260
|
+
# Converts the integer into an 32-bit signed integer.
|
|
261
|
+
#
|
|
262
|
+
# @return [Integer]
|
|
263
|
+
# The integer truncated to 32-bits with signed preserved.
|
|
264
|
+
#
|
|
265
|
+
# @api public
|
|
266
|
+
#
|
|
267
|
+
# @since 1.0.0
|
|
268
|
+
#
|
|
269
|
+
def to_int32
|
|
270
|
+
int = self & 0xffffffff
|
|
271
|
+
|
|
272
|
+
if int[31] == 1
|
|
273
|
+
# interpret the new signed bit
|
|
274
|
+
int -= 0x100000000
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
return int
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
alias to_i32 to_int32
|
|
281
|
+
|
|
282
|
+
#
|
|
283
|
+
# Converts the integer into an 64-bit signed integer.
|
|
284
|
+
#
|
|
285
|
+
# @return [Integer]
|
|
286
|
+
# The integer truncated to 64-bits with signed preserved.
|
|
287
|
+
#
|
|
288
|
+
# @api public
|
|
289
|
+
#
|
|
290
|
+
# @since 1.0.0
|
|
291
|
+
#
|
|
292
|
+
def to_int64
|
|
293
|
+
int = self & 0xffffffffffffffff
|
|
294
|
+
|
|
295
|
+
if int[63] == 1
|
|
296
|
+
# interpret the new signed bit
|
|
297
|
+
int -= 0x10000000000000000
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
return int
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
alias to_i64 to_int64
|
|
304
|
+
|
|
305
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
4
|
+
#
|
|
5
|
+
# ronin-support is free software: you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU Lesser General Public License as published
|
|
7
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
# (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# ronin-support is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU Lesser General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU Lesser General Public License
|
|
16
|
+
# along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'ronin/support/binary/stream/methods'
|
|
20
|
+
require 'ronin/support/binary/ctypes'
|
|
21
|
+
|
|
22
|
+
class IO
|
|
23
|
+
|
|
24
|
+
include Ronin::Support::Binary::Stream::Methods
|
|
25
|
+
|
|
26
|
+
#
|
|
27
|
+
# The type system which `read_*`/`write_*`
|
|
28
|
+
# {Ronin::Support::Binary::Stream::Methods methods} will use.
|
|
29
|
+
#
|
|
30
|
+
# @api private
|
|
31
|
+
#
|
|
32
|
+
# @see Ronin::Support::Binary::Stream::Methods
|
|
33
|
+
#
|
|
34
|
+
def type_system
|
|
35
|
+
Ronin::Support::Binary::CTypes
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
4
|
+
#
|
|
5
|
+
# ronin-support is free software: you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU Lesser General Public License as published
|
|
7
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
# (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# ronin-support is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU Lesser General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU Lesser General Public License
|
|
16
|
+
# along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'ronin/support/binary/core_ext/integer'
|
|
20
|
+
require 'ronin/support/binary/template'
|
|
21
|
+
require 'ronin/support/binary/bit_flip'
|
|
22
|
+
|
|
23
|
+
class String
|
|
24
|
+
|
|
25
|
+
alias unpack_original unpack
|
|
26
|
+
|
|
27
|
+
#
|
|
28
|
+
# Unpacks the String.
|
|
29
|
+
#
|
|
30
|
+
# @param [String, Array<Symbol, (Symbol, Integer)>] arguments
|
|
31
|
+
# The `String#unpack` format string or a list of
|
|
32
|
+
# {Ronin::Support::Binary::Template} types.
|
|
33
|
+
#
|
|
34
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
35
|
+
# Additional keyword arguments for
|
|
36
|
+
# {Ronin::Support::Binary::Template#initialize}.
|
|
37
|
+
#
|
|
38
|
+
# @option kwargs [:little, :big, :net, nil] :endian
|
|
39
|
+
# The desired endianness of the packed data.
|
|
40
|
+
#
|
|
41
|
+
# @option kwargs [:x86, :x86_64, :ppc, :ppc64,
|
|
42
|
+
# :arm, :arm_be, :arm64, :arm64_be,
|
|
43
|
+
# :mips, :mips_le, :mips64, :mips64_le, nil] :arch
|
|
44
|
+
# The desired architecture that the data was packed for.
|
|
45
|
+
#
|
|
46
|
+
# @return [Array]
|
|
47
|
+
# The values unpacked from the String.
|
|
48
|
+
#
|
|
49
|
+
# @raise [ArgumentError]
|
|
50
|
+
# One of the arguments was not a known {Ronin::Support::Binary::Template}
|
|
51
|
+
# type.
|
|
52
|
+
#
|
|
53
|
+
# @example using {Ronin::Support::Binary::Template} types:
|
|
54
|
+
# "A\0\0\0hello\0".unpack(:uint32_le, :string)
|
|
55
|
+
# # => [10, "hello"]
|
|
56
|
+
#
|
|
57
|
+
# @example using a `String#unpack` format string:
|
|
58
|
+
# "A\0\0\0".unpack('V')
|
|
59
|
+
# # => 65
|
|
60
|
+
#
|
|
61
|
+
# @see https://rubydoc.info/stdlib/core/String:unpack
|
|
62
|
+
# @see Ronin::Support::Binary::Template
|
|
63
|
+
#
|
|
64
|
+
# @since 0.5.0
|
|
65
|
+
#
|
|
66
|
+
# @api public
|
|
67
|
+
#
|
|
68
|
+
def unpack(*arguments,**kwargs)
|
|
69
|
+
if (arguments.length == 1 && arguments.first.kind_of?(String))
|
|
70
|
+
unpack_original(arguments.first)
|
|
71
|
+
else
|
|
72
|
+
format = Ronin::Support::Binary::Template.new(arguments,**kwargs)
|
|
73
|
+
unpack_original(format.pack_string)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
#
|
|
78
|
+
# Enumerates over every bit flip of every byte in the string.
|
|
79
|
+
#
|
|
80
|
+
# @yield [string]
|
|
81
|
+
# If a block is given, it will be passed each bit-flipped string.
|
|
82
|
+
#
|
|
83
|
+
# @yieldparam [String] string
|
|
84
|
+
# The String, but with one of it's bits flipped.
|
|
85
|
+
#
|
|
86
|
+
# @return [Enumerator]
|
|
87
|
+
# If no block is given, an Enumerator object will be returned.
|
|
88
|
+
#
|
|
89
|
+
# @example bit-flip all bytes in the String:
|
|
90
|
+
# "foo".each_bit_flip { |string| puts string }
|
|
91
|
+
#
|
|
92
|
+
# @api public
|
|
93
|
+
#
|
|
94
|
+
def each_bit_flip(&block)
|
|
95
|
+
Ronin::Support::Binary::BitFlip::String.each_bit_flip(self,&block)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
#
|
|
99
|
+
# Returns every bit flip of every byte in the string.
|
|
100
|
+
#
|
|
101
|
+
# @return [Array<String>]
|
|
102
|
+
# The bit-flipped strings.
|
|
103
|
+
#
|
|
104
|
+
# @example bit-flip all bytes in the String:
|
|
105
|
+
# "foo".bit_flips
|
|
106
|
+
#
|
|
107
|
+
# @api public
|
|
108
|
+
#
|
|
109
|
+
def bit_flips
|
|
110
|
+
Ronin::Support::Binary::BitFlip::String.bit_flips(self)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
alias flip_bits bit_flips
|
|
114
|
+
|
|
115
|
+
end
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
#
|
|
2
|
-
# Copyright (c) 2006-
|
|
3
|
+
# Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
3
4
|
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
# Ronin Support is free software: you can redistribute it and/or modify
|
|
5
|
+
# ronin-support is free software: you can redistribute it and/or modify
|
|
7
6
|
# it under the terms of the GNU Lesser General Public License as published
|
|
8
7
|
# by the Free Software Foundation, either version 3 of the License, or
|
|
9
8
|
# (at your option) any later version.
|
|
10
9
|
#
|
|
11
|
-
#
|
|
10
|
+
# ronin-support is distributed in the hope that it will be useful,
|
|
12
11
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
12
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
13
|
# GNU Lesser General Public License for more details.
|
|
15
14
|
#
|
|
16
15
|
# You should have received a copy of the GNU Lesser General Public License
|
|
17
|
-
# along with
|
|
16
|
+
# along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
|
|
18
17
|
#
|
|
19
18
|
|
|
20
|
-
require 'ronin/
|
|
21
|
-
require 'ronin/
|
|
19
|
+
require 'ronin/support/binary/core_ext/string'
|
|
20
|
+
require 'ronin/support/binary/core_ext/array'
|
|
21
|
+
require 'ronin/support/binary/core_ext/io'
|
|
22
22
|
|
|
23
|
-
require '
|
|
23
|
+
require 'hexdump/core_ext'
|