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.
Files changed (517) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +11 -0
  3. data/.github/workflows/ruby.yml +27 -0
  4. data/.gitignore +7 -6
  5. data/.mailmap +1 -0
  6. data/.ruby-version +1 -0
  7. data/.yardopts +1 -2
  8. data/ChangeLog.md +533 -137
  9. data/Gemfile +20 -20
  10. data/README.md +137 -61
  11. data/Rakefile +29 -10
  12. data/data/text/homoglyphs/ascii.txt +8 -0
  13. data/data/text/homoglyphs/cyrillic.txt +33 -0
  14. data/data/text/homoglyphs/full_width.txt +81 -0
  15. data/data/text/homoglyphs/greek.txt +21 -0
  16. data/data/text/homoglyphs/latin_numbers.txt +14 -0
  17. data/data/text/homoglyphs/punctuation.txt +7 -0
  18. data/data/text/patterns/network/public_suffix.rb.erb +44 -0
  19. data/examples/ssl_proxy.rb +38 -0
  20. data/examples/tcp_proxy.rb +41 -0
  21. data/gemspec.yml +25 -15
  22. data/lib/ronin/support/archive/core_ext/file.rb +118 -0
  23. data/lib/ronin/{formatting/sql.rb → support/archive/core_ext.rb} +6 -7
  24. data/lib/ronin/support/archive/mixin.rb +213 -0
  25. data/lib/ronin/support/archive/tar/reader.rb +135 -0
  26. data/lib/ronin/support/archive/tar/writer.rb +197 -0
  27. data/lib/ronin/support/archive/tar.rb +155 -0
  28. data/lib/ronin/support/archive/zip/reader/entry.rb +134 -0
  29. data/lib/ronin/support/archive/zip/reader/statistics.rb +76 -0
  30. data/lib/ronin/support/archive/zip/reader.rb +273 -0
  31. data/lib/ronin/support/archive/zip/writer.rb +175 -0
  32. data/lib/ronin/support/archive/zip.rb +105 -0
  33. data/lib/ronin/support/archive.rb +211 -0
  34. data/lib/ronin/support/binary/array.rb +255 -0
  35. data/lib/ronin/support/binary/bit_flip.rb +147 -0
  36. data/lib/ronin/support/binary/buffer.rb +2027 -0
  37. data/lib/ronin/support/binary/byte_slice.rb +324 -0
  38. data/lib/ronin/support/binary/core_ext/array.rb +75 -0
  39. data/lib/ronin/support/binary/core_ext/float.rb +80 -0
  40. data/lib/ronin/support/binary/core_ext/integer.rb +305 -0
  41. data/lib/ronin/support/binary/core_ext/io.rb +38 -0
  42. data/lib/ronin/support/binary/core_ext/string.rb +115 -0
  43. data/lib/ronin/{formatting/extensions/text.rb → support/binary/core_ext.rb} +9 -9
  44. data/lib/ronin/support/binary/cstring.rb +259 -0
  45. data/lib/ronin/support/binary/ctypes/aggregate_type.rb +98 -0
  46. data/lib/ronin/support/binary/ctypes/arch/arm/big_endian.rb +77 -0
  47. data/lib/ronin/support/binary/ctypes/arch/arm.rb +75 -0
  48. data/lib/ronin/support/binary/ctypes/arch/arm64/big_endian.rb +77 -0
  49. data/lib/ronin/support/binary/ctypes/arch/arm64.rb +75 -0
  50. data/lib/ronin/support/binary/ctypes/arch/mips/little_endian.rb +77 -0
  51. data/lib/ronin/support/binary/ctypes/arch/mips.rb +75 -0
  52. data/lib/ronin/support/binary/ctypes/arch/mips64/little_endian.rb +77 -0
  53. data/lib/ronin/support/binary/ctypes/arch/mips64.rb +75 -0
  54. data/lib/ronin/support/binary/ctypes/arch/ppc.rb +75 -0
  55. data/lib/ronin/support/binary/ctypes/arch/ppc64.rb +75 -0
  56. data/lib/ronin/support/binary/ctypes/arch/x86.rb +75 -0
  57. data/lib/ronin/support/binary/ctypes/arch/x86_64.rb +75 -0
  58. data/lib/ronin/support/binary/ctypes/arch.rb +30 -0
  59. data/lib/ronin/support/binary/ctypes/array_object_type.rb +164 -0
  60. data/lib/ronin/support/binary/ctypes/array_type.rb +232 -0
  61. data/lib/ronin/support/binary/ctypes/big_endian.rb +195 -0
  62. data/lib/ronin/support/binary/ctypes/char_type.rb +59 -0
  63. data/lib/ronin/support/binary/ctypes/char_types.rb +39 -0
  64. data/lib/ronin/support/binary/ctypes/enum_type.rb +181 -0
  65. data/lib/ronin/support/binary/ctypes/float32_type.rb +50 -0
  66. data/lib/ronin/support/binary/ctypes/float64_type.rb +50 -0
  67. data/lib/ronin/support/binary/ctypes/float_type.rb +62 -0
  68. data/lib/ronin/support/binary/ctypes/int16_type.rb +50 -0
  69. data/lib/ronin/support/binary/ctypes/int32_type.rb +50 -0
  70. data/lib/ronin/support/binary/ctypes/int64_type.rb +50 -0
  71. data/lib/ronin/support/binary/ctypes/int8_type.rb +41 -0
  72. data/lib/ronin/support/binary/ctypes/int_type.rb +62 -0
  73. data/lib/ronin/support/binary/ctypes/little_endian.rb +195 -0
  74. data/lib/ronin/support/binary/ctypes/mixin.rb +135 -0
  75. data/lib/ronin/support/binary/ctypes/native.rb +205 -0
  76. data/lib/ronin/support/binary/ctypes/network.rb +29 -0
  77. data/lib/ronin/support/binary/ctypes/object_type.rb +55 -0
  78. data/lib/ronin/support/binary/ctypes/os/bsd.rb +65 -0
  79. data/lib/ronin/support/binary/ctypes/os/freebsd.rb +215 -0
  80. data/lib/ronin/support/binary/ctypes/os/linux.rb +193 -0
  81. data/lib/ronin/support/binary/ctypes/os/macos.rb +151 -0
  82. data/lib/ronin/support/binary/ctypes/os/netbsd.rb +147 -0
  83. data/lib/ronin/support/binary/ctypes/os/openbsd.rb +168 -0
  84. data/lib/ronin/support/binary/ctypes/os/unix.rb +78 -0
  85. data/lib/ronin/support/binary/ctypes/os/windows.rb +125 -0
  86. data/lib/ronin/support/binary/ctypes/os.rb +125 -0
  87. data/lib/ronin/support/binary/ctypes/scalar_type.rb +200 -0
  88. data/lib/ronin/support/binary/ctypes/string_type.rb +143 -0
  89. data/lib/ronin/support/binary/ctypes/struct_object_type.rb +173 -0
  90. data/lib/ronin/support/binary/ctypes/struct_type.rb +359 -0
  91. data/lib/ronin/support/binary/ctypes/type.rb +193 -0
  92. data/lib/ronin/support/binary/ctypes/type_resolver.rb +206 -0
  93. data/lib/ronin/support/binary/ctypes/uint16_type.rb +50 -0
  94. data/lib/ronin/support/binary/ctypes/uint32_type.rb +50 -0
  95. data/lib/ronin/support/binary/ctypes/uint64_type.rb +50 -0
  96. data/lib/ronin/support/binary/ctypes/uint8_type.rb +41 -0
  97. data/lib/ronin/support/binary/ctypes/uint_type.rb +59 -0
  98. data/lib/ronin/support/binary/ctypes/unbounded_array_type.rb +258 -0
  99. data/lib/ronin/support/binary/ctypes/union_object_type.rb +173 -0
  100. data/lib/ronin/support/binary/ctypes/union_type.rb +261 -0
  101. data/lib/ronin/support/binary/ctypes.rb +462 -0
  102. data/lib/ronin/support/binary/hexdump/core_ext/file.rb +118 -0
  103. data/lib/ronin/support/binary/hexdump/core_ext/string.rb +115 -0
  104. data/lib/ronin/support/binary/hexdump/core_ext.rb +20 -0
  105. data/lib/ronin/support/binary/hexdump/parser.rb +492 -0
  106. data/lib/ronin/support/binary/hexdump.rb +20 -0
  107. data/lib/ronin/support/binary/memory.rb +268 -0
  108. data/lib/ronin/support/binary/packet.rb +33 -0
  109. data/lib/ronin/support/binary/stack.rb +256 -0
  110. data/lib/ronin/support/binary/stream/methods.rb +1755 -0
  111. data/lib/ronin/support/binary/stream.rb +151 -0
  112. data/lib/ronin/support/binary/struct/member.rb +86 -0
  113. data/lib/ronin/support/binary/struct.rb +830 -0
  114. data/lib/ronin/support/binary/template.rb +284 -0
  115. data/lib/ronin/support/binary/union.rb +162 -0
  116. data/lib/ronin/support/binary.rb +26 -0
  117. data/lib/ronin/support/cli/ansi.rb +330 -0
  118. data/lib/ronin/support/cli/io_shell/core_ext/io.rb +67 -0
  119. data/lib/ronin/{fuzzing/extensions.rb → support/cli/io_shell/core_ext.rb} +6 -7
  120. data/lib/ronin/support/cli/io_shell.rb +161 -0
  121. data/lib/ronin/support/cli/printing.rb +216 -0
  122. data/lib/ronin/support/cli.rb +20 -0
  123. data/lib/ronin/support/compression/core_ext/file.rb +70 -0
  124. data/lib/ronin/support/compression/core_ext/string.rb +101 -0
  125. data/lib/ronin/{formatting/html.rb → support/compression/core_ext.rb} +6 -7
  126. data/lib/ronin/support/compression/gzip/reader.rb +70 -0
  127. data/lib/ronin/support/compression/gzip/writer.rb +74 -0
  128. data/lib/ronin/support/compression/gzip.rb +105 -0
  129. data/lib/ronin/support/compression/mixin.rb +180 -0
  130. data/lib/ronin/{network/extensions/esmtp/net.rb → support/compression/zlib.rb} +9 -10
  131. data/lib/ronin/support/compression.rb +174 -0
  132. data/lib/ronin/{extensions → support/core_ext}/enumerable.rb +5 -6
  133. data/lib/ronin/{extensions → support/core_ext}/file.rb +11 -34
  134. data/lib/ronin/support/core_ext/integer.rb +37 -0
  135. data/lib/ronin/support/core_ext/ipaddr.rb +65 -0
  136. data/lib/ronin/{extensions → support/core_ext}/kernel.rb +10 -9
  137. data/lib/ronin/{extensions → support/core_ext}/resolv.rb +5 -28
  138. data/lib/ronin/{extensions → support/core_ext}/string.rb +117 -57
  139. data/lib/ronin/support/core_ext.rb +33 -0
  140. data/lib/ronin/support/crypto/cert.rb +522 -0
  141. data/lib/ronin/support/crypto/cert_chain.rb +204 -0
  142. data/lib/ronin/support/crypto/cipher/aes.rb +71 -0
  143. data/lib/ronin/support/crypto/cipher/aes128.rb +54 -0
  144. data/lib/ronin/support/crypto/cipher/aes256.rb +54 -0
  145. data/lib/ronin/support/crypto/cipher.rb +194 -0
  146. data/lib/ronin/support/crypto/core_ext/file.rb +660 -0
  147. data/lib/ronin/support/crypto/core_ext/string.rb +548 -0
  148. data/lib/ronin/{binary.rb → support/crypto/core_ext.rb} +7 -8
  149. data/lib/ronin/support/crypto/hmac.rb +48 -0
  150. data/lib/ronin/support/crypto/key/dh.rb +122 -0
  151. data/lib/ronin/support/crypto/key/dsa.rb +103 -0
  152. data/lib/ronin/support/crypto/key/ec.rb +99 -0
  153. data/lib/ronin/support/crypto/key/methods.rb +163 -0
  154. data/lib/ronin/support/crypto/key/rsa.rb +169 -0
  155. data/lib/ronin/support/crypto/key.rb +105 -0
  156. data/lib/ronin/support/crypto/mixin.rb +620 -0
  157. data/lib/ronin/{network/extensions/http/net.rb → support/crypto/openssl.rb} +9 -10
  158. data/lib/ronin/support/crypto.rb +779 -0
  159. data/lib/ronin/support/encoding/base16/core_ext/string.rb +63 -0
  160. data/lib/ronin/support/encoding/base16/core_ext.rb +19 -0
  161. data/lib/ronin/support/encoding/base16.rb +82 -0
  162. data/lib/ronin/support/encoding/base32/core_ext/string.rb +63 -0
  163. data/lib/ronin/support/encoding/base32/core_ext.rb +19 -0
  164. data/lib/ronin/support/encoding/base32.rb +164 -0
  165. data/lib/ronin/support/encoding/base64/core_ext/string.rb +76 -0
  166. data/lib/ronin/support/encoding/base64/core_ext.rb +19 -0
  167. data/lib/ronin/support/encoding/base64.rb +78 -0
  168. data/lib/ronin/support/encoding/c/core_ext/integer.rb +82 -0
  169. data/lib/ronin/support/encoding/c/core_ext/string.rb +125 -0
  170. data/lib/ronin/support/encoding/c/core_ext.rb +20 -0
  171. data/lib/ronin/support/encoding/c.rb +277 -0
  172. data/lib/ronin/support/encoding/core_ext/string.rb +107 -0
  173. data/lib/ronin/support/encoding/core_ext.rb +33 -0
  174. data/lib/ronin/support/encoding/hex/core_ext/integer.rb +82 -0
  175. data/lib/ronin/support/encoding/hex/core_ext/string.rb +133 -0
  176. data/lib/ronin/support/encoding/hex/core_ext.rb +22 -0
  177. data/lib/ronin/support/encoding/hex.rb +248 -0
  178. data/lib/ronin/support/encoding/html/core_ext/integer.rb +106 -0
  179. data/lib/ronin/support/encoding/html/core_ext/string.rb +130 -0
  180. data/lib/ronin/support/encoding/html/core_ext.rb +20 -0
  181. data/lib/ronin/support/encoding/html.rb +233 -0
  182. data/lib/ronin/support/encoding/http/core_ext/integer.rb +95 -0
  183. data/lib/ronin/support/encoding/http/core_ext/string.rb +129 -0
  184. data/lib/ronin/support/encoding/http/core_ext.rb +20 -0
  185. data/lib/ronin/support/encoding/http.rb +241 -0
  186. data/lib/ronin/support/encoding/js/core_ext/integer.rb +67 -0
  187. data/lib/ronin/support/encoding/js/core_ext/string.rb +125 -0
  188. data/lib/ronin/support/encoding/js/core_ext.rb +20 -0
  189. data/lib/ronin/support/encoding/js.rb +279 -0
  190. data/lib/ronin/support/encoding/powershell/core_ext/integer.rb +87 -0
  191. data/lib/ronin/support/encoding/powershell/core_ext/string.rb +145 -0
  192. data/lib/ronin/support/encoding/powershell/core_ext.rb +20 -0
  193. data/lib/ronin/support/encoding/powershell.rb +297 -0
  194. data/lib/ronin/support/encoding/punycode/core_ext/string.rb +63 -0
  195. data/lib/ronin/support/encoding/punycode/core_ext.rb +19 -0
  196. data/lib/ronin/support/encoding/punycode.rb +76 -0
  197. data/lib/ronin/support/encoding/quoted_printable/core_ext/string.rb +75 -0
  198. data/lib/ronin/support/encoding/quoted_printable/core_ext.rb +19 -0
  199. data/lib/ronin/support/encoding/quoted_printable.rb +102 -0
  200. data/lib/ronin/support/encoding/ruby/core_ext/string.rb +129 -0
  201. data/lib/ronin/{formatting/binary.rb → support/encoding/ruby/core_ext.rb} +6 -7
  202. data/lib/ronin/support/encoding/ruby.rb +235 -0
  203. data/lib/ronin/support/encoding/shell/core_ext/integer.rb +89 -0
  204. data/lib/ronin/support/encoding/shell/core_ext/string.rb +134 -0
  205. data/lib/ronin/support/encoding/shell/core_ext.rb +20 -0
  206. data/lib/ronin/support/encoding/shell.rb +293 -0
  207. data/lib/ronin/{network/extensions → support/encoding}/smtp.rb +7 -7
  208. data/lib/ronin/support/encoding/sql/core_ext/string.rb +114 -0
  209. data/lib/ronin/{formatting/http.rb → support/encoding/sql/core_ext.rb} +6 -7
  210. data/lib/ronin/support/encoding/sql.rb +124 -0
  211. data/lib/ronin/support/encoding/uri/core_ext/integer.rb +149 -0
  212. data/lib/ronin/support/encoding/uri/core_ext/string.rb +195 -0
  213. data/lib/ronin/support/encoding/uri/core_ext.rb +20 -0
  214. data/lib/ronin/support/encoding/uri.rb +424 -0
  215. data/lib/ronin/support/encoding/uuencoding/core_ext/string.rb +73 -0
  216. data/lib/ronin/support/encoding/uuencoding/core_ext.rb +19 -0
  217. data/lib/ronin/support/encoding/uuencoding.rb +70 -0
  218. data/lib/ronin/support/encoding/xml/core_ext/integer.rb +100 -0
  219. data/lib/ronin/support/encoding/xml/core_ext/string.rb +124 -0
  220. data/lib/ronin/support/encoding/xml/core_ext.rb +20 -0
  221. data/lib/ronin/support/encoding/xml.rb +328 -0
  222. data/lib/ronin/support/encoding.rb +46 -0
  223. data/lib/ronin/support/home.rb +88 -0
  224. data/lib/ronin/support/mixin.rb +42 -0
  225. data/lib/ronin/support/network/asn/dns_record.rb +112 -0
  226. data/lib/ronin/support/network/asn/list.rb +269 -0
  227. data/lib/ronin/support/network/asn/record.rb +164 -0
  228. data/lib/ronin/support/network/asn/record_set.rb +226 -0
  229. data/lib/ronin/support/network/asn.rb +88 -0
  230. data/lib/ronin/{binary/hexdump.rb → support/network/core_ext.rb} +6 -7
  231. data/lib/ronin/support/network/dns/idn.rb +38 -0
  232. data/lib/ronin/support/network/dns/mixin.rb +941 -0
  233. data/lib/ronin/support/network/dns/resolver.rb +707 -0
  234. data/lib/ronin/support/network/dns.rb +1109 -0
  235. data/lib/ronin/support/network/domain.rb +70 -0
  236. data/lib/ronin/support/network/email_address.rb +574 -0
  237. data/lib/ronin/support/network/esmtp/mixin.rb +115 -0
  238. data/lib/ronin/support/network/exceptions.rb +43 -0
  239. data/lib/ronin/support/network/ftp/mixin.rb +106 -0
  240. data/lib/ronin/support/network/host.rb +1473 -0
  241. data/lib/ronin/support/network/http/cookie.rb +245 -0
  242. data/lib/ronin/support/network/http/core_ext/uri/http.rb +63 -0
  243. data/lib/ronin/support/network/http/core_ext.rb +19 -0
  244. data/lib/ronin/support/network/http/mixin.rb +890 -0
  245. data/lib/ronin/support/network/http/request.rb +215 -0
  246. data/lib/ronin/support/network/http/set_cookie.rb +210 -0
  247. data/lib/ronin/support/network/http/user_agents.rb +115 -0
  248. data/lib/ronin/support/network/http.rb +2582 -0
  249. data/lib/ronin/support/network/imap/mixin.rb +133 -0
  250. data/lib/ronin/support/network/ip/mixin.rb +114 -0
  251. data/lib/ronin/support/network/ip.rb +540 -0
  252. data/lib/ronin/support/network/ip_range/cidr.rb +252 -0
  253. data/lib/ronin/support/network/ip_range/glob.rb +309 -0
  254. data/lib/ronin/support/network/ip_range/range.rb +249 -0
  255. data/lib/ronin/support/network/ip_range.rb +284 -0
  256. data/lib/ronin/support/network/mixin.rb +58 -0
  257. data/lib/ronin/support/network/packet.rb +27 -0
  258. data/lib/ronin/support/network/pop3/mixin.rb +113 -0
  259. data/lib/ronin/support/network/proxy.rb +602 -0
  260. data/lib/ronin/support/network/public_suffix/list.rb +339 -0
  261. data/lib/ronin/support/network/public_suffix/suffix.rb +118 -0
  262. data/lib/ronin/support/network/public_suffix/suffix_set.rb +150 -0
  263. data/lib/ronin/support/network/public_suffix.rb +41 -0
  264. data/lib/ronin/support/network/smtp/email.rb +190 -0
  265. data/lib/ronin/support/network/smtp/mixin.rb +290 -0
  266. data/lib/ronin/{extensions/meta.rb → support/network/smtp.rb} +6 -7
  267. data/lib/ronin/support/network/ssl/local_cert.rb +114 -0
  268. data/lib/ronin/support/network/ssl/local_key.rb +84 -0
  269. data/lib/ronin/support/network/ssl/mixin.rb +740 -0
  270. data/lib/ronin/{network/extensions/imap/net.rb → support/network/ssl/openssl.rb} +9 -10
  271. data/lib/ronin/support/network/ssl/proxy.rb +296 -0
  272. data/lib/ronin/support/network/ssl.rb +173 -0
  273. data/lib/ronin/support/network/tcp/mixin.rb +400 -0
  274. data/lib/ronin/support/network/tcp/proxy.rb +435 -0
  275. data/lib/ronin/support/network/tcp.rb +443 -0
  276. data/lib/ronin/support/network/telnet/mixin.rb +150 -0
  277. data/lib/ronin/support/network/telnet.rb +90 -0
  278. data/lib/ronin/support/network/tld/list.rb +266 -0
  279. data/lib/ronin/support/network/tld.rb +41 -0
  280. data/lib/ronin/support/network/tls/mixin.rb +670 -0
  281. data/lib/ronin/support/network/tls/proxy.rb +135 -0
  282. data/lib/ronin/support/network/tls.rb +53 -0
  283. data/lib/ronin/support/network/udp/mixin.rb +389 -0
  284. data/lib/ronin/support/network/udp/proxy.rb +192 -0
  285. data/lib/ronin/support/network/udp.rb +435 -0
  286. data/lib/ronin/support/network/unix/mixin.rb +273 -0
  287. data/lib/ronin/support/network.rb +37 -0
  288. data/lib/ronin/support/path.rb +136 -0
  289. data/lib/ronin/{network/extensions/dns/net.rb → support/text/core_ext/regexp.rb} +8 -9
  290. data/lib/ronin/support/text/core_ext/string.rb +46 -0
  291. data/lib/ronin/support/text/core_ext.rb +23 -0
  292. data/lib/ronin/support/text/entropy/core_ext/string.rb +45 -0
  293. data/lib/ronin/support/text/entropy/core_ext.rb +19 -0
  294. data/lib/ronin/support/text/entropy.rb +66 -0
  295. data/lib/ronin/support/text/erb/mixin.rb +44 -0
  296. data/lib/ronin/support/text/erb.rb +19 -0
  297. data/lib/ronin/support/text/homoglyph/core_ext/string.rb +108 -0
  298. data/lib/ronin/{formatting/digest.rb → support/text/homoglyph/core_ext.rb} +6 -7
  299. data/lib/ronin/{network/http/exceptions/unknown_request.rb → support/text/homoglyph/exceptions.rb} +10 -9
  300. data/lib/ronin/support/text/homoglyph/table.rb +228 -0
  301. data/lib/ronin/support/text/homoglyph.rb +142 -0
  302. data/lib/ronin/support/text/mixin.rb +31 -0
  303. data/lib/ronin/support/text/patterns/credentials.rb +75 -0
  304. data/lib/ronin/support/text/patterns/crypto.rb +67 -0
  305. data/lib/ronin/support/text/patterns/file_system.rb +93 -0
  306. data/lib/ronin/support/text/patterns/language.rb +37 -0
  307. data/lib/ronin/support/text/patterns/network/public_suffix.rb +44 -0
  308. data/lib/ronin/support/text/patterns/network.rb +140 -0
  309. data/lib/ronin/support/text/patterns/numeric.rb +52 -0
  310. data/lib/ronin/support/text/patterns/pii.rb +105 -0
  311. data/lib/ronin/support/text/patterns/source_code.rb +148 -0
  312. data/lib/ronin/support/text/patterns.rb +25 -0
  313. data/lib/ronin/support/text/random/mixin.rb +437 -0
  314. data/lib/ronin/support/text/random.rb +419 -0
  315. data/lib/ronin/support/text/typo/core_ext/string.rb +123 -0
  316. data/lib/ronin/support/text/typo/core_ext.rb +19 -0
  317. data/lib/ronin/support/text/typo/exceptions.rb +28 -0
  318. data/lib/ronin/support/text/typo/generator.rb +161 -0
  319. data/lib/ronin/support/text/typo.rb +260 -0
  320. data/lib/ronin/support/text.rb +26 -0
  321. data/lib/ronin/support/version.rb +6 -7
  322. data/lib/ronin/support.rb +20 -15
  323. data/ronin-support.gemspec +3 -1
  324. metadata +462 -369
  325. data/.gemtest +0 -0
  326. data/lib/ronin/binary/hexdump/parser.rb +0 -403
  327. data/lib/ronin/binary/struct.rb +0 -567
  328. data/lib/ronin/binary/template.rb +0 -454
  329. data/lib/ronin/extensions/ip_addr.rb +0 -217
  330. data/lib/ronin/extensions/meta/object.rb +0 -24
  331. data/lib/ronin/extensions/regexp.rb +0 -157
  332. data/lib/ronin/extensions.rb +0 -29
  333. data/lib/ronin/formatting/extensions/binary/array.rb +0 -61
  334. data/lib/ronin/formatting/extensions/binary/base64.rb +0 -106
  335. data/lib/ronin/formatting/extensions/binary/file.rb +0 -77
  336. data/lib/ronin/formatting/extensions/binary/float.rb +0 -65
  337. data/lib/ronin/formatting/extensions/binary/integer.rb +0 -180
  338. data/lib/ronin/formatting/extensions/binary/string.rb +0 -345
  339. data/lib/ronin/formatting/extensions/binary.rb +0 -26
  340. data/lib/ronin/formatting/extensions/digest/file.rb +0 -129
  341. data/lib/ronin/formatting/extensions/digest/string.rb +0 -86
  342. data/lib/ronin/formatting/extensions/digest.rb +0 -21
  343. data/lib/ronin/formatting/extensions/html/integer.rb +0 -142
  344. data/lib/ronin/formatting/extensions/html/string.rb +0 -194
  345. data/lib/ronin/formatting/extensions/html.rb +0 -21
  346. data/lib/ronin/formatting/extensions/http/integer.rb +0 -69
  347. data/lib/ronin/formatting/extensions/http/string.rb +0 -110
  348. data/lib/ronin/formatting/extensions/http.rb +0 -21
  349. data/lib/ronin/formatting/extensions/sql/string.rb +0 -128
  350. data/lib/ronin/formatting/extensions/sql.rb +0 -20
  351. data/lib/ronin/formatting/extensions/text/array.rb +0 -137
  352. data/lib/ronin/formatting/extensions/text/string.rb +0 -297
  353. data/lib/ronin/formatting/extensions.rb +0 -24
  354. data/lib/ronin/formatting/text.rb +0 -20
  355. data/lib/ronin/formatting.rb +0 -25
  356. data/lib/ronin/fuzzing/extensions/string.rb +0 -209
  357. data/lib/ronin/fuzzing/fuzzer.rb +0 -110
  358. data/lib/ronin/fuzzing/fuzzing.rb +0 -360
  359. data/lib/ronin/fuzzing/mutator.rb +0 -161
  360. data/lib/ronin/fuzzing/repeater.rb +0 -81
  361. data/lib/ronin/fuzzing/template.rb +0 -133
  362. data/lib/ronin/fuzzing.rb +0 -21
  363. data/lib/ronin/mixin.rb +0 -89
  364. data/lib/ronin/network/dns.rb +0 -201
  365. data/lib/ronin/network/esmtp.rb +0 -113
  366. data/lib/ronin/network/extensions/dns.rb +0 -20
  367. data/lib/ronin/network/extensions/esmtp.rb +0 -20
  368. data/lib/ronin/network/extensions/http/uri/http.rb +0 -228
  369. data/lib/ronin/network/extensions/http.rb +0 -21
  370. data/lib/ronin/network/extensions/imap.rb +0 -20
  371. data/lib/ronin/network/extensions/pop3/net.rb +0 -24
  372. data/lib/ronin/network/extensions/pop3.rb +0 -20
  373. data/lib/ronin/network/extensions/smtp/net.rb +0 -24
  374. data/lib/ronin/network/extensions/ssl/net.rb +0 -24
  375. data/lib/ronin/network/extensions/ssl.rb +0 -20
  376. data/lib/ronin/network/extensions/tcp/net.rb +0 -24
  377. data/lib/ronin/network/extensions/tcp.rb +0 -20
  378. data/lib/ronin/network/extensions/telnet/net.rb +0 -24
  379. data/lib/ronin/network/extensions/telnet.rb +0 -20
  380. data/lib/ronin/network/extensions/udp/net.rb +0 -24
  381. data/lib/ronin/network/extensions/udp.rb +0 -20
  382. data/lib/ronin/network/extensions.rb +0 -29
  383. data/lib/ronin/network/ftp.rb +0 -149
  384. data/lib/ronin/network/http/exceptions.rb +0 -20
  385. data/lib/ronin/network/http/http.rb +0 -1127
  386. data/lib/ronin/network/http/proxy.rb +0 -330
  387. data/lib/ronin/network/http.rb +0 -22
  388. data/lib/ronin/network/imap.rb +0 -158
  389. data/lib/ronin/network/mixins/dns.rb +0 -55
  390. data/lib/ronin/network/mixins/esmtp.rb +0 -164
  391. data/lib/ronin/network/mixins/ftp.rb +0 -155
  392. data/lib/ronin/network/mixins/http.rb +0 -227
  393. data/lib/ronin/network/mixins/imap.rb +0 -156
  394. data/lib/ronin/network/mixins/mixin.rb +0 -58
  395. data/lib/ronin/network/mixins/pop3.rb +0 -149
  396. data/lib/ronin/network/mixins/smtp.rb +0 -159
  397. data/lib/ronin/network/mixins/ssl.rb +0 -148
  398. data/lib/ronin/network/mixins/tcp.rb +0 -368
  399. data/lib/ronin/network/mixins/telnet.rb +0 -208
  400. data/lib/ronin/network/mixins/udp.rb +0 -381
  401. data/lib/ronin/network/mixins/unix.rb +0 -279
  402. data/lib/ronin/network/mixins.rb +0 -29
  403. data/lib/ronin/network/network.rb +0 -45
  404. data/lib/ronin/network/pop3.rb +0 -124
  405. data/lib/ronin/network/proxy.rb +0 -578
  406. data/lib/ronin/network/smtp/email.rb +0 -174
  407. data/lib/ronin/network/smtp/smtp.rb +0 -230
  408. data/lib/ronin/network/smtp.rb +0 -22
  409. data/lib/ronin/network/ssl.rb +0 -186
  410. data/lib/ronin/network/tcp/proxy.rb +0 -417
  411. data/lib/ronin/network/tcp/tcp.rb +0 -443
  412. data/lib/ronin/network/tcp.rb +0 -21
  413. data/lib/ronin/network/telnet.rb +0 -264
  414. data/lib/ronin/network/udp/proxy.rb +0 -191
  415. data/lib/ronin/network/udp/udp.rb +0 -450
  416. data/lib/ronin/network/udp.rb +0 -21
  417. data/lib/ronin/network/unix.rb +0 -286
  418. data/lib/ronin/network.rb +0 -31
  419. data/lib/ronin/path.rb +0 -137
  420. data/lib/ronin/spec/ui/output.rb +0 -22
  421. data/lib/ronin/support/inflector.rb +0 -92
  422. data/lib/ronin/support/support.rb +0 -42
  423. data/lib/ronin/templates/erb.rb +0 -78
  424. data/lib/ronin/templates/template.rb +0 -169
  425. data/lib/ronin/templates.rb +0 -21
  426. data/lib/ronin/ui/output/helpers.rb +0 -296
  427. data/lib/ronin/ui/output/output.rb +0 -146
  428. data/lib/ronin/ui/output/terminal/color.rb +0 -124
  429. data/lib/ronin/ui/output/terminal/raw.rb +0 -103
  430. data/lib/ronin/ui/output/terminal.rb +0 -21
  431. data/lib/ronin/ui/output.rb +0 -21
  432. data/lib/ronin/ui/shell.rb +0 -286
  433. data/lib/ronin/wordlist.rb +0 -287
  434. data/spec/binary/hexdump/helpers/hexdumps/ascii.bin +0 -0
  435. data/spec/binary/hexdump/helpers/hexdumps/hexdump_decimal_shorts.txt +0 -17
  436. data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_bytes.txt +0 -17
  437. data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_shorts.txt +0 -17
  438. data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_bytes.txt +0 -17
  439. data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_shorts.txt +0 -17
  440. data/spec/binary/hexdump/helpers/hexdumps/hexdump_repeated.txt +0 -6
  441. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_bytes.txt +0 -17
  442. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_ints.txt +0 -17
  443. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_quads.txt +0 -17
  444. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_shorts.txt +0 -17
  445. data/spec/binary/hexdump/helpers/hexdumps/od_doubles.txt +0 -17
  446. data/spec/binary/hexdump/helpers/hexdumps/od_floats.txt +0 -17
  447. data/spec/binary/hexdump/helpers/hexdumps/od_hex_bytes.txt +0 -17
  448. data/spec/binary/hexdump/helpers/hexdumps/od_hex_ints.txt +0 -17
  449. data/spec/binary/hexdump/helpers/hexdumps/od_hex_quads.txt +0 -17
  450. data/spec/binary/hexdump/helpers/hexdumps/od_hex_shorts.txt +0 -17
  451. data/spec/binary/hexdump/helpers/hexdumps/od_named_chars.txt +0 -17
  452. data/spec/binary/hexdump/helpers/hexdumps/od_octal_bytes.txt +0 -17
  453. data/spec/binary/hexdump/helpers/hexdumps/od_octal_ints.txt +0 -17
  454. data/spec/binary/hexdump/helpers/hexdumps/od_octal_quads.txt +0 -17
  455. data/spec/binary/hexdump/helpers/hexdumps/od_octal_shorts.txt +0 -17
  456. data/spec/binary/hexdump/helpers/hexdumps/od_repeated.txt +0 -6
  457. data/spec/binary/hexdump/helpers/hexdumps/repeated.bin +0 -1
  458. data/spec/binary/hexdump/helpers/hexdumps.rb +0 -13
  459. data/spec/binary/hexdump/parser_spec.rb +0 -302
  460. data/spec/binary/struct_spec.rb +0 -496
  461. data/spec/binary/template_spec.rb +0 -414
  462. data/spec/extensions/enumerable_spec.rb +0 -24
  463. data/spec/extensions/file_spec.rb +0 -63
  464. data/spec/extensions/ip_addr_spec.rb +0 -203
  465. data/spec/extensions/kernel_spec.rb +0 -30
  466. data/spec/extensions/regexp_spec.rb +0 -482
  467. data/spec/extensions/resolv_spec.rb +0 -18
  468. data/spec/extensions/string_spec.rb +0 -179
  469. data/spec/formatting/binary/array_spec.rb +0 -26
  470. data/spec/formatting/binary/base64_spec.rb +0 -50
  471. data/spec/formatting/binary/float_spec.rb +0 -34
  472. data/spec/formatting/binary/integer_spec.rb +0 -166
  473. data/spec/formatting/binary/string_spec.rb +0 -197
  474. data/spec/formatting/digest/string_spec.rb +0 -82
  475. data/spec/formatting/html/integer_spec.rb +0 -66
  476. data/spec/formatting/html/string_spec.rb +0 -103
  477. data/spec/formatting/http/integer_spec.rb +0 -42
  478. data/spec/formatting/http/string_spec.rb +0 -76
  479. data/spec/formatting/sql/string_spec.rb +0 -75
  480. data/spec/formatting/text/array_spec.rb +0 -105
  481. data/spec/formatting/text/string_spec.rb +0 -162
  482. data/spec/fuzzing/extensions/string_spec.rb +0 -87
  483. data/spec/fuzzing/fuzzer_spec.rb +0 -109
  484. data/spec/fuzzing/fuzzing_spec.rb +0 -24
  485. data/spec/fuzzing/mutator_spec.rb +0 -112
  486. data/spec/fuzzing/repeater_spec.rb +0 -57
  487. data/spec/fuzzing/template_spec.rb +0 -54
  488. data/spec/mixin_spec.rb +0 -53
  489. data/spec/network/dns_spec.rb +0 -201
  490. data/spec/network/ftp_spec.rb +0 -81
  491. data/spec/network/http/http_spec.rb +0 -466
  492. data/spec/network/http/proxy_spec.rb +0 -148
  493. data/spec/network/network_spec.rb +0 -8
  494. data/spec/network/proxy_spec.rb +0 -121
  495. data/spec/network/shared/unix_server.rb +0 -31
  496. data/spec/network/smtp/email_spec.rb +0 -100
  497. data/spec/network/ssl_spec.rb +0 -70
  498. data/spec/network/tcp/proxy_spec.rb +0 -116
  499. data/spec/network/tcp/tcp_spec.rb +0 -273
  500. data/spec/network/telnet_spec.rb +0 -67
  501. data/spec/network/udp/udp_spec.rb +0 -271
  502. data/spec/network/unix_spec.rb +0 -183
  503. data/spec/path_spec.rb +0 -86
  504. data/spec/spec_helper.rb +0 -9
  505. data/spec/support/inflector_spec.rb +0 -22
  506. data/spec/support_spec.rb +0 -8
  507. data/spec/templates/classes/example_erb.rb +0 -11
  508. data/spec/templates/classes/example_template.rb +0 -35
  509. data/spec/templates/erb_spec.rb +0 -21
  510. data/spec/templates/helpers/data/includes/_relative.erb +0 -1
  511. data/spec/templates/helpers/data/templates/example.erb +0 -1
  512. data/spec/templates/helpers/data.rb +0 -9
  513. data/spec/templates/template_spec.rb +0 -54
  514. data/spec/ui/classes/test_shell.rb +0 -22
  515. data/spec/ui/output_spec.rb +0 -32
  516. data/spec/ui/shell_spec.rb +0 -83
  517. data/spec/wordlist_spec.rb +0 -151
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/formatting/extensions/binary/array'
3
-
4
- describe Array do
5
- subject { [0x1234, "hello"] }
6
-
7
- it "should provide Array#pack" do
8
- should respond_to(:pack)
9
- end
10
-
11
- describe "#pack" do
12
- let(:packed) { "\x34\x12hello\0" }
13
-
14
- context "when only given a String" do
15
- it "should pack elements using Array#pack codes" do
16
- subject.pack('vZ*').should == packed
17
- end
18
- end
19
-
20
- context "otherwise" do
21
- it "should pack fields using Binary::Template" do
22
- subject.pack(:uint16_le, :string).should == packed
23
- end
24
- end
25
- end
26
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/formatting/extensions/binary/base64'
3
-
4
- describe Base64 do
5
- subject { described_class }
6
-
7
- if RUBY_VERSION < '1.9.'
8
- let(:string) { '>' * 64 }
9
-
10
- let(:base64) { "Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+\nPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pg==\n" }
11
- let(:strict_base64) { "Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pg==" }
12
- let(:urlsafe_base64) { "Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pj4-Pg==" }
13
-
14
- describe "strict_encode64" do
15
- it "should strictly encode a String" do
16
- subject.strict_encode64(string).should == strict_base64
17
- end
18
- end
19
-
20
- describe "strict_decode64" do
21
- it "should strict decode an encoded Base64 String" do
22
- subject.strict_decode64(strict_base64).should == string
23
- end
24
-
25
- it "should raise an ArgumentError for non-strictly encoded Base64" do
26
- lambda {
27
- subject.strict_decode64(base64)
28
- }.should raise_error(ArgumentError)
29
- end
30
- end
31
-
32
- describe "urlsafe_encode64" do
33
- it "should encode URL-safe Base64 Strings" do
34
- subject.urlsafe_encode64(string).should == urlsafe_base64
35
- end
36
- end
37
-
38
- describe "urlsafe_decode64" do
39
- it "should decode URL-safe Base64 String" do
40
- subject.urlsafe_decode64(urlsafe_base64).should == string
41
- end
42
-
43
- it "should raise an ArgumentError for non-strictly encoded Base64" do
44
- lambda {
45
- subject.urlsafe_decode64(base64)
46
- }.should raise_error(ArgumentError)
47
- end
48
- end
49
- end
50
- end
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/formatting/extensions/binary/float'
3
-
4
- describe Float do
5
- subject { 0.42 }
6
-
7
- it "should provide Float#pack" do
8
- should respond_to(:pack)
9
- end
10
-
11
- describe "#pack" do
12
- let(:packed) { "\xE1z\x14\xAEG\xE1\xDA?" }
13
-
14
- context "when only given a String" do
15
- it "should unpack Strings using String#unpack template Strings" do
16
- subject.pack('E').should == packed
17
- end
18
- end
19
-
20
- context "when given a Binary::Template Float type" do
21
- it "should unpack Strings using Binary::Template" do
22
- subject.pack(:double_le).should == packed
23
- end
24
- end
25
-
26
- context "when given non-Float Binary::Template types" do
27
- it "should raise an ArgumentError" do
28
- lambda {
29
- subject.pack(:int)
30
- }.should raise_error(ArgumentError)
31
- end
32
- end
33
- end
34
- end
@@ -1,166 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/formatting/extensions/binary/integer'
3
-
4
- require 'ostruct'
5
-
6
- describe Integer do
7
- subject { 0x41 }
8
-
9
- it "should provide Integer#bytes" do
10
- should respond_to(:bytes)
11
- end
12
-
13
- it "should provide Integer#pack" do
14
- should respond_to(:pack)
15
- end
16
-
17
- it "should provide Integer#hex_escape" do
18
- should respond_to(:hex_escape)
19
- end
20
-
21
- it "should alias char to the #chr method" do
22
- subject.char.should == subject.chr
23
- end
24
-
25
- describe "#hex_escape" do
26
- subject { 42 }
27
-
28
- it "should hex escape an Integer" do
29
- subject.hex_escape.should == "\\x2a"
30
- end
31
- end
32
-
33
- describe "#bytes" do
34
- let(:little_endian_char) { [0x37] }
35
- let(:little_endian_short) { [0x37, 0x13] }
36
- let(:little_endian_long) { [0x37, 0x13, 0x0, 0x0] }
37
- let(:little_endian_quad) { [0x37, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] }
38
-
39
- let(:big_endian_char) { [0x37] }
40
- let(:big_endian_short) { [0x13, 0x37] }
41
- let(:big_endian_long) { [0, 0, 0x13, 0x37] }
42
- let(:big_endian_quad) { [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x37] }
43
-
44
- subject { 0x1337 }
45
-
46
- it "should return the bytes in little endian ordering by default" do
47
- subject.bytes(4).should == little_endian_long
48
- end
49
-
50
- it "should return the bytes for a char in little endian ordering" do
51
- subject.bytes(1, :little).should == little_endian_char
52
- end
53
-
54
- it "should return the bytes for a short in little endian ordering" do
55
- subject.bytes(2, :little).should == little_endian_short
56
- end
57
-
58
- it "should return the bytes for a long in little endian ordering" do
59
- subject.bytes(4, :little).should == little_endian_long
60
- end
61
-
62
- it "should return the bytes for a quad in little endian ordering" do
63
- subject.bytes(8, :little).should == little_endian_quad
64
- end
65
-
66
- it "should return the bytes for a char in big endian ordering" do
67
- subject.bytes(1, :big).should == big_endian_char
68
- end
69
-
70
- it "should return the bytes for a short in big endian ordering" do
71
- subject.bytes(2, :big).should == big_endian_short
72
- end
73
-
74
- it "should return the bytes for a long in big endian ordering" do
75
- subject.bytes(4, :big).should == big_endian_long
76
- end
77
-
78
- it "should return the bytes for a quad in big endian ordering" do
79
- subject.bytes(8, :big).should == big_endian_quad
80
- end
81
- end
82
-
83
- describe "#pack" do
84
- subject { 0x1337 }
85
-
86
- let(:packed) { "7\023\000\000" }
87
-
88
- context "when only given a String" do
89
- it "should pack Integers using Array#pack codes" do
90
- subject.pack('V').should == packed
91
- end
92
- end
93
-
94
- context "when given a Binary::Template Integer type" do
95
- it "should pack Integers using Binary::Template" do
96
- subject.pack(:uint32_le).should == packed
97
- end
98
- end
99
-
100
- context "when given non-Integer Binary::Template types" do
101
- it "should raise an ArgumentError" do
102
- lambda {
103
- subject.pack(:float)
104
- }.should raise_error(ArgumentError)
105
- end
106
- end
107
-
108
- context "deprecated" do
109
- let(:uint16_le) { "7\023" }
110
- let(:uint32_le) { "7\023\000\000" }
111
- let(:uint64_le) { "7\023\000\000\000\000\000\000" }
112
-
113
- let(:uint16_be) { "\0237" }
114
- let(:uint32_be) { "\000\000\0237" }
115
- let(:uint64_be) { "\000\000\000\000\000\000\0237" }
116
-
117
- let(:i386) do
118
- OpenStruct.new(:endian => :little, :address_length => 4)
119
- end
120
-
121
- let(:ppc) do
122
- OpenStruct.new(:endian => :big, :address_length => 4)
123
- end
124
-
125
- it "should pack itself for a little-endian architecture by default" do
126
- subject.pack(i386).should == uint32_le
127
- end
128
-
129
- it "should pack itself as a short for a little-endian architecture" do
130
- subject.pack(i386,2).should == uint16_le
131
- end
132
-
133
- it "should pack itself as a long for a little-endian architecture" do
134
- subject.pack(i386,4).should == uint32_le
135
- end
136
-
137
- it "should pack itself as a quad for a little-endian architecture" do
138
- subject.pack(i386,8).should == uint64_le
139
- end
140
-
141
- it "should pack itself for a big-endian architecture" do
142
- subject.pack(ppc).should == uint32_be
143
- end
144
-
145
- it "should pack itself as a short for a big-endian architecture" do
146
- subject.pack(ppc,2).should == uint16_be
147
- end
148
-
149
- it "should pack itself as a long for a big-endian architecture" do
150
- subject.pack(ppc,4).should == uint32_be
151
- end
152
-
153
- it "should pack itself as a quad for a big-endian architecture" do
154
- subject.pack(ppc,8).should == uint64_be
155
- end
156
- end
157
-
158
- context "when given more than 1 or 2 arguments" do
159
- it "should raise an ArgumentError" do
160
- lambda {
161
- subject.pack(1,2,3)
162
- }.should raise_error(ArgumentError)
163
- end
164
- end
165
- end
166
- end
@@ -1,197 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/formatting/extensions/binary/string'
3
-
4
- require 'ostruct'
5
-
6
- describe String do
7
- subject { "hello" }
8
-
9
- it "should provide String#unpack_original" do
10
- should respond_to(:unpack_original)
11
- end
12
-
13
- it "should provide String#unpack" do
14
- should respond_to(:unpack)
15
- end
16
-
17
- it "should provide String#depack" do
18
- should respond_to(:depack)
19
- end
20
-
21
- it "should provide String#zlib_inflate" do
22
- should respond_to(:zlib_inflate)
23
- end
24
-
25
- it "should provide String#zlib_deflate" do
26
- should respond_to(:zlib_deflate)
27
- end
28
-
29
- it "should provide String#hex_unescape" do
30
- should respond_to(:hex_unescape)
31
- end
32
-
33
- it "should provide String#xor" do
34
- should respond_to(:xor)
35
- end
36
-
37
- it "should provide String#unhexdump" do
38
- should respond_to(:unhexdump)
39
- end
40
-
41
- describe "#unpack" do
42
- subject { "\x34\x12\x00\x00hello\0" }
43
-
44
- let(:data) { [0x1234, "hello"] }
45
-
46
- context "when given only a String" do
47
- it "should unpack Strings using String#unpack template Strings" do
48
- subject.unpack('VZ*').should == data
49
- end
50
- end
51
-
52
- context "otherwise" do
53
- it "should unpack Strings using Binary::Template" do
54
- subject.unpack(:uint32_le, :string).should == data
55
- end
56
- end
57
- end
58
-
59
- context "deprecated" do
60
- describe "#depack" do
61
- subject { 0x1337 }
62
-
63
- let(:i386) do
64
- OpenStruct.new(:endian => :little, :address_length => 4)
65
- end
66
-
67
- let(:ppc) do
68
- OpenStruct.new(:endian => :big, :address_length => 4)
69
- end
70
-
71
- let(:i386_packed_int) { "7\023\000\000" }
72
- let(:i386_packed_short) { "7\023" }
73
- let(:i386_packed_long) { "7\023\000\000" }
74
- let(:i386_packed_quad) { "7\023\000\000\000\000\000\000" }
75
-
76
- let(:ppc_packed_int) { "\000\000\0237" }
77
- let(:ppc_packed_short) { "\0237" }
78
- let(:ppc_packed_long) { "\000\000\0237" }
79
- let(:ppc_packed_quad) { "\000\000\000\000\000\000\0237" }
80
-
81
- it "should depack itself for a little-endian architecture" do
82
- i386_packed_int.depack(i386).should == subject
83
- end
84
-
85
- it "should depack itself as a short for a little-endian architecture" do
86
- i386_packed_short.depack(i386,2).should == subject
87
- end
88
-
89
- it "should depack itself as a long for a little-endian architecture" do
90
- i386_packed_long.depack(i386,4).should == subject
91
- end
92
-
93
- it "should depack itself as a quad for a little-endian architecture" do
94
- i386_packed_quad.depack(i386,8).should == subject
95
- end
96
-
97
- it "should depack itself for a big-endian architecture" do
98
- ppc_packed_int.depack(ppc).should == subject
99
- end
100
-
101
- it "should depack itself as a short for a big-endian architecture" do
102
- ppc_packed_short.depack(ppc,2).should == subject
103
- end
104
-
105
- it "should depack itself as a long for a big-endian architecture" do
106
- ppc_packed_long.depack(ppc,4).should == subject
107
- end
108
-
109
- it "should depack itself as a quad for a big-endian architecture" do
110
- ppc_packed_quad.depack(ppc,8).should == subject
111
- end
112
-
113
- it "should accept String#unpack template strings" do
114
- i386_packed_long.depack('V').should == [subject]
115
- end
116
- end
117
- end
118
-
119
- describe "#base64_encode" do
120
- subject { "hello\0" }
121
-
122
- it "should base64 encode a String" do
123
- subject.base64_encode.should == "aGVsbG8A\n"
124
- end
125
- end
126
-
127
- describe "#base64_decode" do
128
- subject { "aGVsbG8A\n" }
129
-
130
- it "should base64 decode a String" do
131
- subject.base64_decode.should == "hello\0"
132
- end
133
- end
134
-
135
- describe "#zlib_inflate" do
136
- subject do
137
- "x\xda3H\xb3H3MM6\xd354II\xd651K5\xd7M43N\xd4M\xb3\xb0L2O14423Mb\0\0\xc02\t\xae"
138
- end
139
-
140
- it "should inflate a zlib deflated String" do
141
- subject.zlib_inflate.should == "0f8f5ec6-14dc-46e7-a63a-f89b7d11265b\0"
142
- end
143
- end
144
-
145
- describe "#zlib_deflate" do
146
- subject { "hello" }
147
-
148
- it "should zlib deflate a String" do
149
- subject.zlib_deflate.should == "x\x9c\xcbH\xcd\xc9\xc9\a\0\x06,\x02\x15"
150
- end
151
- end
152
-
153
- describe "#hex_escape" do
154
- subject { "hello\x4e" }
155
-
156
- it "should hex escape a String" do
157
- subject.hex_escape.should == "\\x68\\x65\\x6c\\x6c\\x6f\\x4e"
158
- end
159
- end
160
-
161
- describe "#xor" do
162
- subject { 'hello' }
163
-
164
- let(:key) { 0x50 }
165
- let(:keys) { [0x50, 0x55] }
166
-
167
- it "should not contain the key used in the xor" do
168
- should_not include(key.chr)
169
- end
170
-
171
- it "should not equal the original string" do
172
- subject.xor(key).should_not == subject
173
- end
174
-
175
- it "should be able to be decoded with another xor" do
176
- subject.xor(key).xor(key).should == subject
177
- end
178
-
179
- it "should allow xoring against a single key" do
180
- subject.xor(key).should == "85<<?"
181
- end
182
-
183
- it "should allow xoring against multiple keys" do
184
- subject.xor(keys).should == "80<9?"
185
- end
186
- end
187
-
188
- describe "#unhexdump" do
189
- subject { "00000000 23 20 52 6f 6e 69 6e 20 53 75 70 70 6f 72 74 0a |# Ronin Support.|\n00000010\n" }
190
-
191
- let(:raw) { "# Ronin Support\n" }
192
-
193
- it "should unhexdump a String" do
194
- subject.unhexdump.should == raw
195
- end
196
- end
197
- end
@@ -1,82 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/formatting/digest'
3
-
4
- describe String do
5
- subject { "hello" }
6
-
7
- it "should provide String#md5" do
8
- should respond_to(:md5)
9
- end
10
-
11
- it "should provide String#sha1" do
12
- should respond_to(:sha1)
13
- end
14
-
15
- it "should provide String#sha2" do
16
- should respond_to(:sha2)
17
- end
18
-
19
- it "should provide String#sha256" do
20
- should respond_to(:sha256)
21
- end
22
-
23
- it "should provide String#sha512" do
24
- should respond_to(:sha512)
25
- end
26
-
27
- describe "#md5" do
28
- subject { "test" }
29
-
30
- let(:digest_md5) { "098f6bcd4621d373cade4e832627b4f6" }
31
-
32
- it "should return the MD5 digest of itself" do
33
- subject.md5.should == digest_md5
34
- end
35
- end
36
-
37
- describe "#sha1" do
38
- subject { "test" }
39
-
40
- let(:digest_sha1) { "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3" }
41
-
42
- it "should return the SHA1 digest of itself" do
43
- subject.sha1.should == digest_sha1
44
- end
45
- end
46
-
47
- describe "#sha2" do
48
- subject { "test" }
49
-
50
- let(:digest_sha2) do
51
- "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
52
- end
53
-
54
- it "should return the SHA2 digest of itself" do
55
- subject.sha2.should == digest_sha2
56
- end
57
- end
58
-
59
- describe "#sha256" do
60
- subject { "test" }
61
-
62
- let(:digest_sha256) do
63
- "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
64
- end
65
-
66
- it "should return the SHA256 digest of itself" do
67
- subject.sha256.should == digest_sha256
68
- end
69
- end
70
-
71
- describe "#sha512" do
72
- subject { "test" }
73
-
74
- let(:digest_sha512) do
75
- "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff"
76
- end
77
-
78
- it "should return the SHA512 digest of itself" do
79
- subject.sha512.should == digest_sha512
80
- end
81
- end
82
- end
@@ -1,66 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/formatting/extensions/html/integer'
3
-
4
- describe Integer do
5
- subject { 0x26 }
6
-
7
- it "should provide String#html_escape" do
8
- should respond_to(:html_escape)
9
- end
10
-
11
- it "should provide String#format_html" do
12
- should respond_to(:format_html)
13
- end
14
-
15
- it "should provide String#js_escape" do
16
- should respond_to(:js_escape)
17
- end
18
-
19
- it "should provide String#format_js" do
20
- should respond_to(:format_js)
21
- end
22
-
23
- describe "#html_escape" do
24
- let(:html_escaped) { "&amp;" }
25
-
26
- it "should HTML escape itself" do
27
- subject.html_escape.should == html_escaped
28
- end
29
- end
30
-
31
- describe "#format_html" do
32
- let(:formatted_html) { "&#38;" }
33
-
34
- it "should HTML format all chars" do
35
- subject.format_html.should == formatted_html
36
- end
37
- end
38
-
39
- describe "#js_escape" do
40
- let(:special_byte) { 0x0a }
41
- let(:escaped_special_byte) { '\n' }
42
-
43
- let(:normal_byte) { 0x41 }
44
- let(:normal_char) { 'A' }
45
-
46
- it "should escape special JavaScript characters" do
47
- special_byte.js_escape.should == escaped_special_byte
48
- end
49
-
50
- it "should ignore normal characters" do
51
- normal_byte.js_escape.should == normal_char
52
- end
53
- end
54
-
55
- describe "#format_js" do
56
- let(:js_escaped) { '\x26' }
57
-
58
- it "should JavaScript format ascii bytes" do
59
- subject.format_js.should == js_escaped
60
- end
61
-
62
- it "should JavaScript format unicode bytes" do
63
- 0xd556.format_js.should == '\uD556'
64
- end
65
- end
66
- end