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,462 @@
|
|
|
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/native'
|
|
20
|
+
require 'ronin/support/binary/ctypes/little_endian'
|
|
21
|
+
require 'ronin/support/binary/ctypes/big_endian'
|
|
22
|
+
require 'ronin/support/binary/ctypes/network'
|
|
23
|
+
require 'ronin/support/binary/ctypes/arch'
|
|
24
|
+
require 'ronin/support/binary/ctypes/os'
|
|
25
|
+
|
|
26
|
+
require 'ronin/support/binary/ctypes/array_type'
|
|
27
|
+
require 'ronin/support/binary/ctypes/unbounded_array_type'
|
|
28
|
+
require 'ronin/support/binary/ctypes/struct_type'
|
|
29
|
+
|
|
30
|
+
require 'ronin/support/binary/ctypes/array_object_type'
|
|
31
|
+
require 'ronin/support/binary/ctypes/struct_object_type'
|
|
32
|
+
require 'ronin/support/binary/ctypes/union_object_type'
|
|
33
|
+
|
|
34
|
+
module Ronin
|
|
35
|
+
module Support
|
|
36
|
+
module Binary
|
|
37
|
+
#
|
|
38
|
+
# Provides a complete virtual C type system, implemented purely in Ruby.
|
|
39
|
+
# The type objects are then used by {Binary::Template}, {Binary::Buffer},
|
|
40
|
+
# {Binary::Stream}, {Binary::Array}, {Binary::Struct}, and {Binary::Union}
|
|
41
|
+
# to encode and decoded any C binary data.
|
|
42
|
+
#
|
|
43
|
+
# ## Supported Types
|
|
44
|
+
#
|
|
45
|
+
# * Scalar Types:
|
|
46
|
+
# * Character Types:
|
|
47
|
+
# * {CharType char} (ex: `'c'`)
|
|
48
|
+
# * {StringType string} (ex: `"abc"`)
|
|
49
|
+
# * Signed Integer Types:
|
|
50
|
+
# * {CTypes::Int8Type int8} (`-127` - `127`)
|
|
51
|
+
# * {CTypes::Int16Type int16} (`-32768` to `32767`)
|
|
52
|
+
# * {CTypes::Int32Type int32} (`-2147483648` - `2147483648`)
|
|
53
|
+
# * {CTypes::Int64Type int64} (`-9223372036854775808` -
|
|
54
|
+
# `9223372036854775808`)
|
|
55
|
+
# * Unsigned Integer Types:
|
|
56
|
+
# * {CTypes::UInt8Type uint8} (`0x00` - `0xff`)
|
|
57
|
+
# * {CTypes::UInt16Type uint16} (`0x0000` - `0xffff`)
|
|
58
|
+
# * {CTypes::UInt32Type uint32} (`0x00000000` - `0xffffffff`)
|
|
59
|
+
# * {CTypes::UInt64Type uint64} (`0x0000000000000000` -
|
|
60
|
+
# `0xffffffffffffffff`)
|
|
61
|
+
# * Floating Point Types:
|
|
62
|
+
# * {CTypes::Float32Type float} (`-3.40282347E+38F` -
|
|
63
|
+
# `3.40282347E+38F`)
|
|
64
|
+
# * {CTypes::Float64Type double} (`-1.79769313486231570E+308` -
|
|
65
|
+
# `1.79769313486231570E+308`)
|
|
66
|
+
# * Aggregate Types:
|
|
67
|
+
# * {CTypes::ArrayType Array} (ex: `{1,2,3}`)
|
|
68
|
+
# * {CTypes::UnboundedArrayType unbounded Array} (ex: `char c[] = {...}`)
|
|
69
|
+
# * {CTypes::StructType struct} (ex: `struct s = {1, 'c', ...}`)
|
|
70
|
+
# * {CTypes::UnionType union} (ex: `union u = {1234}`)
|
|
71
|
+
# * Object Types:
|
|
72
|
+
# * {CTypes::ArrayObjectType array} objects (see: {Binary::Array}).
|
|
73
|
+
# * {CTypes::StructObjectType struct} objects (see: {Binary::Struct}).
|
|
74
|
+
# * {CTypes::UnionObjectType union} objects (see: {Binary::Union}).
|
|
75
|
+
#
|
|
76
|
+
# ## Supported Endian-ness
|
|
77
|
+
#
|
|
78
|
+
# * {CTypes::LittleEndian little-endian} byte-order
|
|
79
|
+
# * {CTypes::BigEndian big-endian} byte-order
|
|
80
|
+
# * {CTypes::Network network} byte-order
|
|
81
|
+
#
|
|
82
|
+
# ## Supported Architectures
|
|
83
|
+
#
|
|
84
|
+
# * {CTypes::Arch::ARM arm}
|
|
85
|
+
# * {CTypes::Arch::ARM::BigEndian armbe (big-endian)}
|
|
86
|
+
# * {CTypes::Arch::ARM64 arm64}
|
|
87
|
+
# * {CTypes::Arch::ARM64::BigEndian arm64be (big-endian)}
|
|
88
|
+
# * {CTypes::Arch::MIPS mips}
|
|
89
|
+
# * {CTypes::Arch::MIPS::LittleEndian mipsle (little-endian)}
|
|
90
|
+
# * {CTypes::Arch::MIPS64 mips64}
|
|
91
|
+
# * {CTypes::Arch::MIPS64::LittleEndian mips64le (little-endian)}
|
|
92
|
+
# * {CTypes::Arch::PPC ppc}
|
|
93
|
+
# * {CTypes::Arch::PPC64 ppc64}
|
|
94
|
+
# * {CTypes::Arch::X86 x86}
|
|
95
|
+
# * {CTypes::Arch::X86_64 x86-64}
|
|
96
|
+
#
|
|
97
|
+
# ## Supported Operating Systems (OS)
|
|
98
|
+
#
|
|
99
|
+
# * {CTypes::OS::UNIX UNIX}
|
|
100
|
+
# * {CTypes::OS::BSD BSD}
|
|
101
|
+
# * {CTypes::OS::FreeBSD FreeBSD}
|
|
102
|
+
# * {CTypes::OS::OpenBSD OpenBSD}
|
|
103
|
+
# * {CTypes::OS::NetBSD NetBSD}
|
|
104
|
+
# * {CTypes::OS::Linux Linux}
|
|
105
|
+
# * {CTypes::OS::MacOS macOS}
|
|
106
|
+
# * {CTypes::OS::Windows Windows}
|
|
107
|
+
#
|
|
108
|
+
module CTypes
|
|
109
|
+
include Native
|
|
110
|
+
|
|
111
|
+
# little-endian types
|
|
112
|
+
INT16_LE = LittleEndian::INT16
|
|
113
|
+
INT32_LE = LittleEndian::INT32
|
|
114
|
+
INT64_LE = LittleEndian::INT64
|
|
115
|
+
|
|
116
|
+
UINT16_LE = LittleEndian::UINT16
|
|
117
|
+
UINT32_LE = LittleEndian::UINT32
|
|
118
|
+
UINT64_LE = LittleEndian::UINT64
|
|
119
|
+
|
|
120
|
+
WORD_LE = LittleEndian::WORD
|
|
121
|
+
DWORD_LE = LittleEndian::DWORD
|
|
122
|
+
QWORD_LE = LittleEndian::QWORD
|
|
123
|
+
|
|
124
|
+
MACHINE_WORD_LE = LittleEndian::MACHINE_WORD
|
|
125
|
+
POINTER_LE = LittleEndian::POINTER
|
|
126
|
+
|
|
127
|
+
FLOAT32_LE = LittleEndian::FLOAT32
|
|
128
|
+
FLOAT64_LE = LittleEndian::FLOAT64
|
|
129
|
+
|
|
130
|
+
FLOAT_LE = LittleEndian::FLOAT
|
|
131
|
+
DOUBLE_LE = LittleEndian::DOUBLE
|
|
132
|
+
|
|
133
|
+
# big-endian types
|
|
134
|
+
INT16_BE = BigEndian::INT16
|
|
135
|
+
INT32_BE = BigEndian::INT32
|
|
136
|
+
INT64_BE = BigEndian::INT64
|
|
137
|
+
|
|
138
|
+
UINT16_BE = BigEndian::UINT16
|
|
139
|
+
UINT32_BE = BigEndian::UINT32
|
|
140
|
+
UINT64_BE = BigEndian::UINT64
|
|
141
|
+
|
|
142
|
+
WORD_BE = BigEndian::WORD
|
|
143
|
+
DWORD_BE = BigEndian::DWORD
|
|
144
|
+
QWORD_BE = BigEndian::QWORD
|
|
145
|
+
|
|
146
|
+
MACHINE_WORD_BE = BigEndian::MACHINE_WORD
|
|
147
|
+
POINTER_BE = BigEndian::POINTER
|
|
148
|
+
|
|
149
|
+
FLOAT32_BE = BigEndian::FLOAT32
|
|
150
|
+
FLOAT64_BE = BigEndian::FLOAT64
|
|
151
|
+
|
|
152
|
+
FLOAT_BE = BigEndian::FLOAT
|
|
153
|
+
DOUBLE_BE = BigEndian::DOUBLE
|
|
154
|
+
|
|
155
|
+
# network byte-order types
|
|
156
|
+
INT16_NE = Network::INT16
|
|
157
|
+
INT32_NE = Network::INT32
|
|
158
|
+
INT64_NE = Network::INT64
|
|
159
|
+
|
|
160
|
+
UINT16_NE = Network::UINT16
|
|
161
|
+
UINT32_NE = Network::UINT32
|
|
162
|
+
UINT64_NE = Network::UINT64
|
|
163
|
+
|
|
164
|
+
WORD_NE = Network::WORD
|
|
165
|
+
DWORD_NE = Network::DWORD
|
|
166
|
+
QWORD_NE = Network::QWORD
|
|
167
|
+
|
|
168
|
+
MACHINE_WORD_NE = Network::MACHINE_WORD
|
|
169
|
+
POINTER_NE = Network::POINTER
|
|
170
|
+
|
|
171
|
+
FLOAT32_NE = Network::FLOAT32
|
|
172
|
+
FLOAT64_NE = Network::FLOAT64
|
|
173
|
+
|
|
174
|
+
FLOAT_NE = Network::FLOAT
|
|
175
|
+
DOUBLE_NE = Network::DOUBLE
|
|
176
|
+
|
|
177
|
+
INT16_NET = Network::INT16
|
|
178
|
+
INT32_NET = Network::INT32
|
|
179
|
+
INT64_NET = Network::INT64
|
|
180
|
+
|
|
181
|
+
UINT16_NET = Network::UINT16
|
|
182
|
+
UINT32_NET = Network::UINT32
|
|
183
|
+
UINT64_NET = Network::UINT64
|
|
184
|
+
|
|
185
|
+
WORD_NET = Network::WORD
|
|
186
|
+
DWORD_NET = Network::DWORD
|
|
187
|
+
QWORD_NET = Network::QWORD
|
|
188
|
+
|
|
189
|
+
MACHINE_WORD_NET = Network::MACHINE_WORD
|
|
190
|
+
POINTER_NET = Network::POINTER
|
|
191
|
+
|
|
192
|
+
FLOAT32_NET = Network::FLOAT32
|
|
193
|
+
FLOAT64_NET = Network::FLOAT64
|
|
194
|
+
|
|
195
|
+
FLOAT_NET = Network::FLOAT
|
|
196
|
+
DOUBLE_NET = Network::DOUBLE
|
|
197
|
+
|
|
198
|
+
# All types (native, little-endian, big-endian, and network byte-order).
|
|
199
|
+
TYPES = Native::TYPES.merge(
|
|
200
|
+
# little-endian types
|
|
201
|
+
int16_le: LittleEndian::INT16,
|
|
202
|
+
int32_le: LittleEndian::INT32,
|
|
203
|
+
int64_le: LittleEndian::INT64,
|
|
204
|
+
|
|
205
|
+
short_le: LittleEndian::INT16,
|
|
206
|
+
int_le: LittleEndian::INT32,
|
|
207
|
+
long_le: LittleEndian::LONG,
|
|
208
|
+
long_long_le: LittleEndian::INT64,
|
|
209
|
+
|
|
210
|
+
uint16_le: LittleEndian::UINT16,
|
|
211
|
+
uint32_le: LittleEndian::UINT32,
|
|
212
|
+
uint64_le: LittleEndian::UINT64,
|
|
213
|
+
|
|
214
|
+
ushort_le: LittleEndian::UINT16,
|
|
215
|
+
uint_le: LittleEndian::UINT32,
|
|
216
|
+
ulong_le: LittleEndian::ULONG,
|
|
217
|
+
ulong_long_le: LittleEndian::UINT64,
|
|
218
|
+
|
|
219
|
+
word_le: WORD_LE,
|
|
220
|
+
dword_le: DWORD_LE,
|
|
221
|
+
qword_le: QWORD_LE,
|
|
222
|
+
|
|
223
|
+
machine_word_le: LittleEndian::MACHINE_WORD,
|
|
224
|
+
pointer_le: LittleEndian::POINTER,
|
|
225
|
+
|
|
226
|
+
float32_le: LittleEndian::FLOAT32,
|
|
227
|
+
float64_le: LittleEndian::FLOAT64,
|
|
228
|
+
|
|
229
|
+
float_le: LittleEndian::FLOAT,
|
|
230
|
+
double_le: LittleEndian::DOUBLE,
|
|
231
|
+
|
|
232
|
+
# big-endian types
|
|
233
|
+
int16_be: BigEndian::INT16,
|
|
234
|
+
int32_be: BigEndian::INT32,
|
|
235
|
+
int64_be: BigEndian::INT64,
|
|
236
|
+
|
|
237
|
+
short_be: BigEndian::INT16,
|
|
238
|
+
int_be: BigEndian::INT32,
|
|
239
|
+
long_be: BigEndian::LONG,
|
|
240
|
+
long_long_be: BigEndian::INT64,
|
|
241
|
+
|
|
242
|
+
uint16_be: BigEndian::UINT16,
|
|
243
|
+
uint32_be: BigEndian::UINT32,
|
|
244
|
+
uint64_be: BigEndian::UINT64,
|
|
245
|
+
|
|
246
|
+
ushort_be: BigEndian::UINT16,
|
|
247
|
+
uint_be: BigEndian::UINT32,
|
|
248
|
+
ulong_be: BigEndian::ULONG,
|
|
249
|
+
ulong_long_be: BigEndian::UINT64,
|
|
250
|
+
|
|
251
|
+
word_be: WORD_BE,
|
|
252
|
+
dword_be: DWORD_BE,
|
|
253
|
+
qword_be: QWORD_BE,
|
|
254
|
+
|
|
255
|
+
machine_word_be: BigEndian::MACHINE_WORD,
|
|
256
|
+
pointer_be: BigEndian::POINTER,
|
|
257
|
+
|
|
258
|
+
float32_be: BigEndian::FLOAT32,
|
|
259
|
+
float64_be: BigEndian::FLOAT64,
|
|
260
|
+
|
|
261
|
+
float_be: BigEndian::FLOAT,
|
|
262
|
+
double_be: BigEndian::DOUBLE,
|
|
263
|
+
|
|
264
|
+
# network byte-order types
|
|
265
|
+
int16_ne: Network::INT16,
|
|
266
|
+
int32_ne: Network::INT32,
|
|
267
|
+
int64_ne: Network::INT64,
|
|
268
|
+
|
|
269
|
+
short_ne: Network::INT16,
|
|
270
|
+
int_ne: Network::INT32,
|
|
271
|
+
long_ne: Network::LONG,
|
|
272
|
+
long_long_ne: Network::INT64,
|
|
273
|
+
|
|
274
|
+
uint16_ne: Network::UINT16,
|
|
275
|
+
uint32_ne: Network::UINT32,
|
|
276
|
+
uint64_ne: Network::UINT64,
|
|
277
|
+
|
|
278
|
+
ushort_ne: Network::UINT16,
|
|
279
|
+
uint_ne: Network::UINT32,
|
|
280
|
+
ulong_ne: Network::ULONG,
|
|
281
|
+
ulong_long_ne: Network::UINT64,
|
|
282
|
+
|
|
283
|
+
word_ne: WORD_NE,
|
|
284
|
+
dword_ne: DWORD_NE,
|
|
285
|
+
qword_ne: QWORD_NE,
|
|
286
|
+
|
|
287
|
+
machine_word_ne: Network::MACHINE_WORD,
|
|
288
|
+
pointer_ne: Network::POINTER,
|
|
289
|
+
|
|
290
|
+
float32_ne: Network::FLOAT32,
|
|
291
|
+
float64_ne: Network::FLOAT64,
|
|
292
|
+
|
|
293
|
+
float_ne: Network::FLOAT,
|
|
294
|
+
double_ne: Network::DOUBLE,
|
|
295
|
+
|
|
296
|
+
# `_net` -> `_ne` aliases
|
|
297
|
+
int16_net: Network::INT16,
|
|
298
|
+
int32_net: Network::INT32,
|
|
299
|
+
int64_net: Network::INT64,
|
|
300
|
+
|
|
301
|
+
short_net: Network::INT16,
|
|
302
|
+
int_net: Network::INT32,
|
|
303
|
+
long_net: Network::LONG,
|
|
304
|
+
long_long_net: Network::INT64,
|
|
305
|
+
|
|
306
|
+
uint16_net: Network::UINT16,
|
|
307
|
+
uint32_net: Network::UINT32,
|
|
308
|
+
uint64_net: Network::UINT64,
|
|
309
|
+
|
|
310
|
+
ushort_net: Network::UINT16,
|
|
311
|
+
uint_net: Network::UINT32,
|
|
312
|
+
ulong_net: Network::ULONG,
|
|
313
|
+
ulong_long_net: Network::UINT64,
|
|
314
|
+
|
|
315
|
+
word_net: WORD_NET,
|
|
316
|
+
dword_net: DWORD_NET,
|
|
317
|
+
qword_net: QWORD_NET,
|
|
318
|
+
|
|
319
|
+
machine_word_net: Network::MACHINE_WORD,
|
|
320
|
+
pointer_net: Network::POINTER,
|
|
321
|
+
|
|
322
|
+
float32_net: Network::FLOAT32,
|
|
323
|
+
float64_net: Network::FLOAT64,
|
|
324
|
+
|
|
325
|
+
float_net: Network::FLOAT,
|
|
326
|
+
double_net: Network::DOUBLE
|
|
327
|
+
)
|
|
328
|
+
|
|
329
|
+
#
|
|
330
|
+
# Fetches the type from {TYPES}.
|
|
331
|
+
#
|
|
332
|
+
# @param [Symbol] name
|
|
333
|
+
# The type name to lookup.
|
|
334
|
+
#
|
|
335
|
+
# @return [Type]
|
|
336
|
+
# The type object from {TYPES}.
|
|
337
|
+
#
|
|
338
|
+
# @raise [ArgumentError]
|
|
339
|
+
# The type name was unknown.
|
|
340
|
+
#
|
|
341
|
+
def self.[](name)
|
|
342
|
+
TYPES.fetch(name) do
|
|
343
|
+
raise(ArgumentError,"unknown type: #{name.inspect}")
|
|
344
|
+
end
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
# Represents the different endian type systems.
|
|
348
|
+
ENDIAN = {
|
|
349
|
+
little: LittleEndian,
|
|
350
|
+
big: BigEndian,
|
|
351
|
+
net: Network,
|
|
352
|
+
|
|
353
|
+
nil => self
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
# The supported architectures.
|
|
357
|
+
ARCHES = {
|
|
358
|
+
x86: Arch::X86,
|
|
359
|
+
|
|
360
|
+
x86_64: Arch::X86_64,
|
|
361
|
+
ia64: Arch::X86_64,
|
|
362
|
+
amd64: Arch::X86_64,
|
|
363
|
+
|
|
364
|
+
ppc: Arch::PPC,
|
|
365
|
+
ppc64: Arch::PPC64,
|
|
366
|
+
|
|
367
|
+
mips: Arch::MIPS,
|
|
368
|
+
mips_le: Arch::MIPS::LittleEndian,
|
|
369
|
+
mips_be: Arch::MIPS, # MIPS is big-endian by default
|
|
370
|
+
|
|
371
|
+
mips64: Arch::MIPS64,
|
|
372
|
+
mips64_le: Arch::MIPS64::LittleEndian,
|
|
373
|
+
mips64_be: Arch::MIPS64, # MIPS is big-endian by default
|
|
374
|
+
|
|
375
|
+
arm: Arch::ARM,
|
|
376
|
+
arm_le: Arch::ARM,
|
|
377
|
+
arm_be: Arch::ARM::BigEndian,
|
|
378
|
+
|
|
379
|
+
arm64: Arch::ARM64,
|
|
380
|
+
arm64_le: Arch::ARM64, # ARM is little-endian by default
|
|
381
|
+
arm64_be: Arch::ARM64::BigEndian
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
# The supported Operating Systems.
|
|
385
|
+
OSES = {
|
|
386
|
+
unix: OS::UNIX,
|
|
387
|
+
|
|
388
|
+
bsd: OS::BSD,
|
|
389
|
+
freebsd: OS::FreeBSD,
|
|
390
|
+
openbsd: OS::OpenBSD,
|
|
391
|
+
netbsd: OS::NetBSD,
|
|
392
|
+
|
|
393
|
+
linux: OS:: Linux,
|
|
394
|
+
macos: OS::MacOS,
|
|
395
|
+
windows: OS::Windows
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
#
|
|
399
|
+
# Returns the types module/object for the given endianness,
|
|
400
|
+
# architecture, and/or Operating System (OS).
|
|
401
|
+
#
|
|
402
|
+
# @param [:little, :big, :net, nil] endian
|
|
403
|
+
# The endianness.
|
|
404
|
+
#
|
|
405
|
+
# @param [:x86, :x86_64,
|
|
406
|
+
# :ppc, :ppc64,
|
|
407
|
+
# :mips, :mips_le, :mips_be,
|
|
408
|
+
# :mips64, :mips64_le, :mips64_be,
|
|
409
|
+
# :arm, :arm_le, :arm_be,
|
|
410
|
+
# :arm64, :arm64_le, :arm64_be] arch
|
|
411
|
+
# The architecture name to lookup.
|
|
412
|
+
#
|
|
413
|
+
# @param [:linux, :macos, :windows,
|
|
414
|
+
# :bsd, :freebsd, :openbsd, :netbsd] os
|
|
415
|
+
# The Operating System name to lookup.
|
|
416
|
+
#
|
|
417
|
+
# @return [CTypes,
|
|
418
|
+
# CTypes::LittleEndian,
|
|
419
|
+
# CTypes::BigEndian,
|
|
420
|
+
# CTypes::Network,
|
|
421
|
+
# CTypes::Arch::ARM,
|
|
422
|
+
# CTypes::Arch::ARM::BigEndian,
|
|
423
|
+
# CTypes::Arch::ARM64,
|
|
424
|
+
# CTypes::Arch::ARM64::BigEndian,
|
|
425
|
+
# CTypes::Arch::MIPS,
|
|
426
|
+
# CTypes::Arch::MIPS::LittleEndian,
|
|
427
|
+
# CTypes::Arch::MIPS64,
|
|
428
|
+
# CTypes::Arch::MIPS64::LittleEndian,
|
|
429
|
+
# CTypes::Arch::PPC,
|
|
430
|
+
# CTypes::Arch::PPC64,
|
|
431
|
+
# CTypes::Arch::X86,
|
|
432
|
+
# CTypes::Arch::X86_64,
|
|
433
|
+
# CTypes::OS]
|
|
434
|
+
# The types module.
|
|
435
|
+
#
|
|
436
|
+
# @raise [ArgumentError]
|
|
437
|
+
# The endian was unknown, the architecture name was unknown,
|
|
438
|
+
# or the os name was unknown.
|
|
439
|
+
#
|
|
440
|
+
def self.platform(arch: nil, endian: nil, os: nil)
|
|
441
|
+
types = if arch
|
|
442
|
+
ARCHES.fetch(arch) do
|
|
443
|
+
raise(ArgumentError,"unknown architecture: #{arch.inspect}")
|
|
444
|
+
end
|
|
445
|
+
else
|
|
446
|
+
ENDIAN.fetch(endian) do
|
|
447
|
+
raise(ArgumentError,"unknown endian: #{endian.inspect}")
|
|
448
|
+
end
|
|
449
|
+
end
|
|
450
|
+
|
|
451
|
+
if os
|
|
452
|
+
types = OSES.fetch(os) {
|
|
453
|
+
raise(ArgumentError,"unknown OS: #{os.inspect}")
|
|
454
|
+
}.new(types)
|
|
455
|
+
end
|
|
456
|
+
|
|
457
|
+
return types
|
|
458
|
+
end
|
|
459
|
+
end
|
|
460
|
+
end
|
|
461
|
+
end
|
|
462
|
+
end
|
|
@@ -0,0 +1,118 @@
|
|
|
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/hexdump/parser'
|
|
20
|
+
|
|
21
|
+
class File
|
|
22
|
+
|
|
23
|
+
#
|
|
24
|
+
# Converts a hexdump file to it's original binary data.
|
|
25
|
+
#
|
|
26
|
+
# @param [Pathname, String] path
|
|
27
|
+
# The path of the hexdump file.
|
|
28
|
+
#
|
|
29
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
30
|
+
# Additional keyword arguments for
|
|
31
|
+
# {Ronin::Support::Binary::Hexdump::Parser#initialize}.
|
|
32
|
+
#
|
|
33
|
+
# @option kwargs [:od, :hexdump] :format (:hexdump)
|
|
34
|
+
# The expected format of the hexdump. Must be either `:od` or
|
|
35
|
+
# `:hexdump`.
|
|
36
|
+
#
|
|
37
|
+
# @option kwargs [Symbol] :type (:byte)
|
|
38
|
+
# Denotes the encoding used for the bytes within the hexdump.
|
|
39
|
+
# Must be one of the following:
|
|
40
|
+
# * `:byte`
|
|
41
|
+
# * `:char`
|
|
42
|
+
# * `:uint8`
|
|
43
|
+
# * `:uint16`
|
|
44
|
+
# * `:uint32`
|
|
45
|
+
# * `:uint64`
|
|
46
|
+
# * `:int8`
|
|
47
|
+
# * `:int16`
|
|
48
|
+
# * `:int32`
|
|
49
|
+
# * `:int64`
|
|
50
|
+
# * `:uchar`
|
|
51
|
+
# * `:ushort`
|
|
52
|
+
# * `:uint`
|
|
53
|
+
# * `:ulong`
|
|
54
|
+
# * `:ulong_long`
|
|
55
|
+
# * `:short`
|
|
56
|
+
# * `:int`
|
|
57
|
+
# * `:long`
|
|
58
|
+
# * `:long_long`
|
|
59
|
+
# * `:float`
|
|
60
|
+
# * `:double`
|
|
61
|
+
# * `:float_le`
|
|
62
|
+
# * `:double_le`
|
|
63
|
+
# * `:float_be`
|
|
64
|
+
# * `:double_be`
|
|
65
|
+
# * `:uint16_le`
|
|
66
|
+
# * `:uint32_le`
|
|
67
|
+
# * `:uint64_le`
|
|
68
|
+
# * `:int16_le`
|
|
69
|
+
# * `:int32_le`
|
|
70
|
+
# * `:int64_le`
|
|
71
|
+
# * `:uint16_be`
|
|
72
|
+
# * `:uint32_be`
|
|
73
|
+
# * `:uint64_be`
|
|
74
|
+
# * `:int16_be`
|
|
75
|
+
# * `:int32_be`
|
|
76
|
+
# * `:int64_be`
|
|
77
|
+
# * `:ushort_le`
|
|
78
|
+
# * `:uint_le`
|
|
79
|
+
# * `:ulong_le`
|
|
80
|
+
# * `:ulong_long_le`
|
|
81
|
+
# * `:short_le`
|
|
82
|
+
# * `:int_le`
|
|
83
|
+
# * `:long_le`
|
|
84
|
+
# * `:long_long_le`
|
|
85
|
+
# * `:ushort_be`
|
|
86
|
+
# * `:uint_be`
|
|
87
|
+
# * `:ulong_be`
|
|
88
|
+
# * `:ulong_long_be`
|
|
89
|
+
# * `:short_be`
|
|
90
|
+
# * `:int_be`
|
|
91
|
+
# * `:long_be`
|
|
92
|
+
# * `:long_long_be`
|
|
93
|
+
#
|
|
94
|
+
# @option kwargs [2, 8, 10, 16, nil] :address_base
|
|
95
|
+
# The numerical base that the offset addresses are encoded in.
|
|
96
|
+
#
|
|
97
|
+
# @option kwargs [2, 8, 10, 16, nil] base
|
|
98
|
+
# The numerical base that the hexdumped numbers are encoded in.
|
|
99
|
+
#
|
|
100
|
+
# @option kwargs [Boolean] named_chars
|
|
101
|
+
# Indicates to parse `od`-style named characters (ex: `nul`,
|
|
102
|
+
# `del`, etc).
|
|
103
|
+
#
|
|
104
|
+
# @return [String]
|
|
105
|
+
# The raw-data from the hexdump.
|
|
106
|
+
#
|
|
107
|
+
# @raise [ArgumentError]
|
|
108
|
+
# Unsupported `type:` value, or the `format:` was not `:hexdump` or
|
|
109
|
+
# `:od`.
|
|
110
|
+
#
|
|
111
|
+
# @api public
|
|
112
|
+
#
|
|
113
|
+
def self.unhexdump(path,**kwargs)
|
|
114
|
+
parser = Ronin::Support::Binary::Hexdump::Parser.new(**kwargs)
|
|
115
|
+
parser.unhexdump(new(path))
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
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/hexdump/parser'
|
|
20
|
+
|
|
21
|
+
class String
|
|
22
|
+
|
|
23
|
+
#
|
|
24
|
+
# Converts a multitude of hexdump formats back into raw-data.
|
|
25
|
+
#
|
|
26
|
+
# @param [Hash{Symbol => Object}] kwargs
|
|
27
|
+
# Additional keyword arguments for
|
|
28
|
+
# {Ronin::Support::Binary::Hexdump::Parser#initialize}.
|
|
29
|
+
#
|
|
30
|
+
# @option kwargs [:od, :hexdump] :format (:hexdump)
|
|
31
|
+
# The expected format of the hexdump. Must be either `:od` or
|
|
32
|
+
# `:hexdump`.
|
|
33
|
+
#
|
|
34
|
+
# @option kwargs [Symbol] :type (:byte)
|
|
35
|
+
# Denotes the encoding used for the bytes within the hexdump.
|
|
36
|
+
# Must be one of the following:
|
|
37
|
+
# * `:byte`
|
|
38
|
+
# * `:char`
|
|
39
|
+
# * `:uint8`
|
|
40
|
+
# * `:uint16`
|
|
41
|
+
# * `:uint32`
|
|
42
|
+
# * `:uint64`
|
|
43
|
+
# * `:int8`
|
|
44
|
+
# * `:int16`
|
|
45
|
+
# * `:int32`
|
|
46
|
+
# * `:int64`
|
|
47
|
+
# * `:uchar`
|
|
48
|
+
# * `:ushort`
|
|
49
|
+
# * `:uint`
|
|
50
|
+
# * `:ulong`
|
|
51
|
+
# * `:ulong_long`
|
|
52
|
+
# * `:short`
|
|
53
|
+
# * `:int`
|
|
54
|
+
# * `:long`
|
|
55
|
+
# * `:long_long`
|
|
56
|
+
# * `:float`
|
|
57
|
+
# * `:double`
|
|
58
|
+
# * `:float_le`
|
|
59
|
+
# * `:double_le`
|
|
60
|
+
# * `:float_be`
|
|
61
|
+
# * `:double_be`
|
|
62
|
+
# * `:uint16_le`
|
|
63
|
+
# * `:uint32_le`
|
|
64
|
+
# * `:uint64_le`
|
|
65
|
+
# * `:int16_le`
|
|
66
|
+
# * `:int32_le`
|
|
67
|
+
# * `:int64_le`
|
|
68
|
+
# * `:uint16_be`
|
|
69
|
+
# * `:uint32_be`
|
|
70
|
+
# * `:uint64_be`
|
|
71
|
+
# * `:int16_be`
|
|
72
|
+
# * `:int32_be`
|
|
73
|
+
# * `:int64_be`
|
|
74
|
+
# * `:ushort_le`
|
|
75
|
+
# * `:uint_le`
|
|
76
|
+
# * `:ulong_le`
|
|
77
|
+
# * `:ulong_long_le`
|
|
78
|
+
# * `:short_le`
|
|
79
|
+
# * `:int_le`
|
|
80
|
+
# * `:long_le`
|
|
81
|
+
# * `:long_long_le`
|
|
82
|
+
# * `:ushort_be`
|
|
83
|
+
# * `:uint_be`
|
|
84
|
+
# * `:ulong_be`
|
|
85
|
+
# * `:ulong_long_be`
|
|
86
|
+
# * `:short_be`
|
|
87
|
+
# * `:int_be`
|
|
88
|
+
# * `:long_be`
|
|
89
|
+
# * `:long_long_be`
|
|
90
|
+
#
|
|
91
|
+
# @option kwargs [2, 8, 10, 16, nil] :address_base
|
|
92
|
+
# The numerical base that the offset addresses are encoded in.
|
|
93
|
+
#
|
|
94
|
+
# @option kwargs [2, 8, 10, 16, nil] base
|
|
95
|
+
# The numerical base that the hexdumped numbers are encoded in.
|
|
96
|
+
#
|
|
97
|
+
# @option kwargs [Boolean] named_chars
|
|
98
|
+
# Indicates to parse `od`-style named characters (ex: `nul`,
|
|
99
|
+
# `del`, etc).
|
|
100
|
+
#
|
|
101
|
+
# @return [String]
|
|
102
|
+
# The raw-data from the hexdump.
|
|
103
|
+
#
|
|
104
|
+
# @raise [ArgumentError]
|
|
105
|
+
# Unsupported `type:` value, or the `format:` was not `:hexdump` or
|
|
106
|
+
# `:od`.
|
|
107
|
+
#
|
|
108
|
+
# @api public
|
|
109
|
+
#
|
|
110
|
+
def unhexdump(**kwargs)
|
|
111
|
+
parser = Ronin::Support::Binary::Hexdump::Parser.new(**kwargs)
|
|
112
|
+
parser.unhexdump(self)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
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/hexdump/core_ext/string'
|
|
20
|
+
require 'ronin/support/binary/hexdump/core_ext/file'
|