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
data/Gemfile CHANGED
@@ -2,29 +2,29 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'jruby-openssl', '~> 0.7.0', :platforms => :jruby
5
+ gem 'jruby-openssl', '~> 0.7', platforms: :jruby
6
+
7
+ gem 'net-telnet', '~> 0.1', group: :net
8
+ if RUBY_VERSION >= '3.1.0'
9
+ gem 'net-ftp', '~> 0.1', group: :net, platform: :mri
10
+ gem 'net-smtp', '~> 0.1', group: :net, platform: :mri
11
+ gem 'net-pop', '~> 0.1', group: :net, platform: :mri
12
+ gem 'net-imap', '~> 0.1', group: :net, platform: :mri
13
+ end
6
14
 
7
15
  group :development do
8
- gem 'rake', '~> 0.8'
16
+ gem 'rake'
9
17
  gem 'rubygems-tasks', '~> 0.1'
10
- gem 'rspec', '~> 2.8'
18
+ gem 'rspec', '~> 3.0'
19
+ gem 'webmock', '~> 3.0'
20
+ gem 'simplecov', '~> 0.18'
11
21
 
12
- gem 'ripl', '~> 0.3'
13
- gem 'ripl-multi_line', '~> 0.2'
14
- gem 'ripl-auto_indent', '~> 0.1'
15
- gem 'ripl-color_result', '~> 0.3'
16
- gem 'rspec', '~> 2.8'
17
-
18
- gem 'kramdown', '~> 0.12'
19
- end
22
+ gem 'kramdown', '~> 2.0'
23
+ gem 'redcarpet', platform: :mri
24
+ gem 'yard', '~> 0.9'
25
+ gem 'yard-spellcheck', require: false
20
26
 
21
- group :test do
22
- case ENV['INFLECTOR']
23
- when 'activesupport'
24
- gem 'i18n', '~> 0.4'
25
- gem 'tzinfo', '~> 0.3.0'
26
- gem 'activesupport', '~> 3.0.0'
27
- else
28
- gem 'dm-core', '~> 1.0'
29
- end
27
+ gem 'dead_end', require: false
28
+ gem 'sord', require: false
29
+ gem 'stackprof', require: false
30
30
  end
data/README.md CHANGED
@@ -1,107 +1,183 @@
1
- # Ronin Support
1
+ # ronin-support
2
2
 
3
- * [Source](https://github.com/ronin-ruby/ronin-support)
4
- * [Issues](https://github.com/ronin-ruby/ronin-support/issues)
5
- * [Documentation](http://ronin-ruby.github.com/docs/ronin-support/frames)
6
- * [Mailing List](https://groups.google.com/group/ronin-ruby)
7
- * [irc.freenode.net #ronin](http://ronin-ruby.github.com/irc/)
3
+ [![CI](https://github.com/ronin-rb/ronin-support/actions/workflows/ruby.yml/badge.svg)](https://github.com/ronin-rb/ronin-support/actions/workflows/ruby.yml)
4
+ [![Code Climate](https://codeclimate.com/github/ronin-rb/ronin-support.svg)](https://codeclimate.com/github/ronin-rb/ronin-support)
5
+
6
+ * [Source](https://github.com/ronin-rb/ronin-support)
7
+ * [Issues](https://github.com/ronin-rb/ronin-support/issues)
8
+ * [Documentation](https://ronin-rb.dev/docs/ronin-support/frames)
9
+ * [Discord](https://discord.gg/6WAb3PsVX9) |
10
+ [Twitter](https://twitter.com/ronin_rb) |
11
+ [Mastodon](https://infosec.exchange/@ronin_rb)
8
12
 
9
13
  ## Description
10
14
 
11
- Ronin Support is a support library for Ronin. Ronin Support contains many of
12
- the convenience methods used by Ronin and additional libraries.
15
+ ronin-support is a support library for [Ronin][ronin-rb]. ronin-support provides
16
+ many Core Extensions to Ruby's built-in classes as well as it's own
17
+ Classes/Modules. ronin-support can be used by other Ruby libraries, tools, or
18
+ scripts.
19
+
20
+ It's like [pwntools] combined with [activesupport].
13
21
 
14
- Ronin is a Ruby platform for exploit development and security research.
15
- Ronin allows for the rapid development and distribution of code, exploits
16
- or payloads over many common Source-Code-Management (SCM) systems.
22
+ [Ronin][ronin-rb] is a [Ruby] toolkit for security research and development.
17
23
 
18
24
  ## Features
19
25
 
20
- * Provides convenience methods for:
21
- * Formatting data:
22
- * Binary
23
- * Text
24
- * URIs
25
- * HTTP
26
+ * Provides user-friendly APIs for:
27
+ * Bit-flipping.
28
+ * Hexdump/unhexdump data.
29
+ * Packing/unpacking binary data:
30
+ * C types
31
+ * Buffers
32
+ * IO streams
33
+ * Stacks
34
+ * Strings
35
+ * Arrays
36
+ * Structs
37
+ * Unions
38
+ * Encoding data:
39
+ * Base16
40
+ * Base32
41
+ * Base64
42
+ * C strings
43
+ * Hex
26
44
  * HTML
45
+ * HTTP
27
46
  * JavaScript
47
+ * PowerShell
48
+ * Punycode
49
+ * Quoted-printable
50
+ * Ruby strings
51
+ * Shell
28
52
  * SQL
29
- * Fuzzing
53
+ * URI
54
+ * UUencoding
55
+ * XML
56
+ * Reading/writing compressed data:
57
+ * Zlib
58
+ * GZip
59
+ * Reading/writing archive files:
60
+ * Tar
61
+ * Zip
62
+ * Cryptography:
63
+ * RSA
64
+ * DSA
65
+ * DH
66
+ * EC
67
+ * HMAC
68
+ * Ciphers
69
+ * X509 certificates
30
70
  * Networking:
31
71
  * DNS
32
72
  * UNIX
33
73
  * TCP
34
74
  * UDP
35
- * SSL
75
+ * SSL / TLS
36
76
  * FTP
37
77
  * SMTP / ESMTP
38
78
  * POP3
39
- * Imap
79
+ * IMAP
40
80
  * Telnet
41
81
  * HTTP / HTTPS
42
- * Enumerating IP ranges:
43
- * IPv4 / IPv6 addresses.
44
- * CIDR / globbed ranges.
45
- * (Un-)Hexdumping data.
46
- * Handling exceptions.
47
- * Provides Modules/Classes for:
48
- * Paths
49
- * Fuzzing
50
- * Wordlists
51
- * Erb Templates
52
- * UI:
53
- * Terminal Output
54
- * Custom Shells
82
+ * Raw packets
83
+ * ASNs
84
+ * IP addresses
85
+ * IP ranges
86
+ * TLDs
87
+ * Public Suffix List
88
+ * Host names
89
+ * Domain names
90
+ * Working with text:
91
+ * Generating typos.
92
+ * Generating homoglyphs.
93
+ * Regexs for matching/extracting common types of data.
94
+ * Has 95% documentation coverage.
95
+ * Has 93% test coverage.
96
+
97
+ ## Synopsis
98
+
99
+ ```shell
100
+ $ irb -r ronin/support
101
+ irb(main):001:0> "hello world".base64_encode
102
+ => "aGVsbG8gd29ybGQ=\n"
103
+ irb(main):002:0> "aGVsbG8gd29ybGQ=\n".base64_decode
104
+ => "hello world"
105
+ ```
55
106
 
56
107
  ## Examples
57
108
 
58
- For examples of the convenience methods provided by ronin-support,
59
- please see [Everyday Ronin](http://ronin-ruby.github.com/guides/everyday_ronin.html).
109
+ ```ruby
110
+ require 'ronin/support'
111
+ include Ronin::Support
112
+
113
+ string = "hello world"
114
+ puts string.base64_encode
115
+
116
+ data = "aGVsbG8gd29ybGQ=\n"
117
+ puts data.base64_decode
118
+ ```
119
+
120
+ For more examples of the convenience methods provided by ronin-support,
121
+ please see [Everyday Ronin].
60
122
 
61
123
  ## Requirements
62
124
 
63
- * [Ruby](http://www.ruby-lang.org/) >= 1.8.7
64
- * [chars](https://github.com/postmodern/chars#readme)
65
- ~> 0.2
66
- * [hexdump](https://github.com/postmodern/hexdump#readme)
67
- ~> 0.1
68
- * [combinatorics](https://github.com/postmodern/combinatorics#readme)
69
- ~> 0.4
70
- * [uri-query_params](https://github.com/postmodern/uri-query_params#readme)
71
- ~> 0.6
72
- * [data_paths](https://github.com/postmodern/data_paths#readme)
73
- ~> 0.3
74
- * [parameters](https://github.com/postmodern/parameters#readme)
75
- ~> 0.4
125
+ * [Ruby] >= 1.9.1
126
+ * [chars] ~> 0.3, >= 0.3.2
127
+ * [hexdump] ~> 1.0
128
+ * [combinatorics] ~> 0.4
129
+ * [addressable] ~> 2.0
130
+ * [uri-query_params] ~> 0.8
76
131
 
77
132
  ## Install
78
133
 
79
- ### Stable
134
+ ```shell
135
+ $ gem install ronin-support
136
+ ```
80
137
 
81
- $ gem install ronin-support
138
+ ### Gemfile
82
139
 
83
- ### Edge
140
+ ```ruby
141
+ gem 'ronin-support', '~> 0.5'
142
+ ```
84
143
 
85
- $ git clone git://github.com/ronin-ruby/ronin-support.git
86
- $ cd ronin-support/
87
- $ bundle install
88
- $ rake console
144
+ ## Development
89
145
 
90
- ## License
146
+ 1. [Fork It!](https://github.com/ronin-rb/ronin-support/fork)
147
+ 2. Clone It!
148
+ 3. `cd ronin-support`
149
+ 4. `bundle install`
150
+ 5. `git checkout -b my_feature`
151
+ 6. Code It!
152
+ 7. `bundle exec rake spec`
153
+ 8. `git push origin my_feature`
91
154
 
92
- Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
155
+ ## License
93
156
 
94
- This file is part of Ronin Support.
157
+ Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
95
158
 
96
- Ronin Support is free software: you can redistribute it and/or modify
159
+ ronin-support is free software: you can redistribute it and/or modify
97
160
  it under the terms of the GNU Lesser General Public License as published
98
161
  by the Free Software Foundation, either version 3 of the License, or
99
162
  (at your option) any later version.
100
163
 
101
- Ronin Support is distributed in the hope that it will be useful,
164
+ ronin-support is distributed in the hope that it will be useful,
102
165
  but WITHOUT ANY WARRANTY; without even the implied warranty of
103
166
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
104
167
  GNU Lesser General Public License for more details.
105
168
 
106
169
  You should have received a copy of the GNU Lesser General Public License
107
- along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
170
+ along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
171
+
172
+ [ronin-rb]: https://ronin-rb.dev
173
+ [Everyday Ronin]: https://ronin-rb.dev/guides/everyday_ronin.html
174
+ [Ruby]: https://www.ruby-lang.org/
175
+
176
+ [pwntools]: https://github.com/Gallopsled/pwntools
177
+ [activesupport]: https://github.com/rails/rails/tree/main/activesupport#readme
178
+
179
+ [chars]: https://github.com/postmodern/chars#readme
180
+ [hexdump]: https://github.com/postmodern/hexdump#readme
181
+ [combinatorics]: https://github.com/postmodern/combinatorics#readme
182
+ [addressable]: https://github.com/sporkmonger/addressable#readme
183
+ [uri-query_params]: https://github.com/postmodern/uri-query_params#readme
data/Rakefile CHANGED
@@ -19,15 +19,7 @@ end
19
19
  require 'rake'
20
20
 
21
21
  require 'rubygems/tasks'
22
- Gem::Tasks.new(:sign => {:checksum => true, :pgp => true}) do |tasks|
23
- tasks.scm.tag.format = 'v%s'
24
- tasks.console.command = 'ripl'
25
- tasks.console.options = %w[
26
- -rripl/multi_line
27
- -rripl/auto_indent
28
- -rripl/color_result
29
- ]
30
- end
22
+ Gem::Tasks.new(sign: {checksum: true, pgp: true})
31
23
 
32
24
  require 'rspec/core/rake_task'
33
25
  RSpec::Core::RakeTask.new
@@ -39,9 +31,36 @@ namespace :spec do
39
31
  end
40
32
  end
41
33
 
42
- task :test => :spec
34
+ task :test => :spec
43
35
  task :default => :spec
44
36
 
45
37
  require 'yard'
46
38
  YARD::Rake::YardocTask.new
47
39
  task :docs => :yard
40
+
41
+ namespace :public_suffix do
42
+ desc 'Downloads the public_suffix_list.dat file'
43
+ task :download do
44
+ require 'ronin/support/network/public_suffix/list'
45
+ Ronin::Support::Network::PublicSuffix::List.download(
46
+ path: 'public_suffix_list.dat'
47
+ )
48
+ end
49
+
50
+ desc 'Builds a regex for every public suffix'
51
+ task :build_regex => :download do
52
+ require 'ronin/support/network/public_suffix/list'
53
+ list = Ronin::Support::Network::PublicSuffix::List.load_file(
54
+ 'public_suffix_list.dat'
55
+ )
56
+
57
+ regex = list.to_regexp
58
+
59
+ template = 'data/text/patterns/network/public_suffix.rb.erb'
60
+ output = 'lib/ronin/support/text/patterns/network/public_suffix.rb'
61
+
62
+ require 'erb'
63
+ erb = ERB.new(File.read(template))
64
+ File.write(output,erb.result(binding))
65
+ end
66
+ end
@@ -0,0 +1,8 @@
1
+ l I
2
+ I l
3
+ m rr
4
+ O 0
5
+ 0 O
6
+ w vv
7
+ g q
8
+ q g
@@ -0,0 +1,33 @@
1
+ A А
2
+ C С
3
+ E Е
4
+ H Н
5
+ I І
6
+ J Ј
7
+ K К
8
+ M М
9
+ O О
10
+ P Р
11
+ S Ѕ
12
+ T Т
13
+ V Ѵ
14
+ X Х
15
+ Y Ү
16
+ a а
17
+ b Ь
18
+ c с
19
+ e е
20
+ h һ
21
+ i і
22
+ j ј
23
+ o о
24
+ p р
25
+ s ѕ
26
+ v ѵ
27
+ w ѡ
28
+ x х
29
+ y у
30
+ Ä Ӓ
31
+ Ö Ӧ
32
+ ä ӓ
33
+ ö ӧ
@@ -0,0 +1,81 @@
1
+ ! !
2
+ " "
3
+ , ,
4
+ - -
5
+ / /
6
+ ; ;
7
+ < <
8
+ > >
9
+ ? ?
10
+ A A
11
+ B B
12
+ C C
13
+ D D
14
+ E E
15
+ F F
16
+ G G
17
+ H H
18
+ I I
19
+ J J
20
+ K K
21
+ L L
22
+ M M
23
+ N N
24
+ O O
25
+ P P
26
+ Q Q
27
+ R R
28
+ S S
29
+ T T
30
+ U U
31
+ V V
32
+ W W
33
+ X X
34
+ Y Y
35
+ Z Z
36
+ [ [
37
+ \ \
38
+ ] ]
39
+ ^ ^
40
+ _ _
41
+ ` `
42
+ a a
43
+ b b
44
+ c c
45
+ d d
46
+ e e
47
+ f f
48
+ g g
49
+ h h
50
+ i i
51
+ j j
52
+ k k
53
+ l l
54
+ m m
55
+ n n
56
+ o o
57
+ p p
58
+ q q
59
+ r r
60
+ s s
61
+ t t
62
+ u u
63
+ v v
64
+ w w
65
+ x x
66
+ y y
67
+ z z
68
+ 0 0
69
+ 1 1
70
+ 2 2
71
+ 3 3
72
+ 4 4
73
+ 5 5
74
+ 6 6
75
+ 7 7
76
+ 8 8
77
+ 9 9
78
+ { {
79
+ | |
80
+ } }
81
+ ~ ~
@@ -0,0 +1,21 @@
1
+ ; ;
2
+ A Α
3
+ B Β
4
+ C Ϲ
5
+ E Ε
6
+ F Ϝ
7
+ H Η
8
+ I Ι
9
+ K Κ
10
+ M Μ
11
+ N Ν
12
+ O Ο
13
+ P Ρ
14
+ T Τ
15
+ X Χ
16
+ Y Υ
17
+ Z Ζ
18
+ c ϲ
19
+ o ο
20
+ v ν
21
+ ß β
@@ -0,0 +1,14 @@
1
+ C Ⅽ
2
+ D Ⅾ
3
+ I Ⅰ
4
+ L Ⅼ
5
+ M Ⅿ
6
+ V Ⅴ
7
+ X Ⅹ
8
+ c ⅽ
9
+ d ⅾ
10
+ i ⅰ
11
+ l ⅼ
12
+ m ⅿ
13
+ v ⅴ
14
+ x ⅹ
@@ -0,0 +1,7 @@
1
+ " ″
2
+ * ⁎
3
+ , ‚
4
+ - ‐
5
+ / ⁄
6
+ > ›
7
+ ~ ⁓
@@ -0,0 +1,44 @@
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
+ module Ronin
20
+ module Support
21
+ module Text
22
+ #
23
+ # @since 0.3.0
24
+ #
25
+ module Patterns
26
+ #
27
+ # @group Networking Patterns
28
+ #
29
+
30
+ # Regular expression to match all domain public suffixes.
31
+ #
32
+ # @note
33
+ # This regex may be out of date since the [public suffix list] is
34
+ # updated on a monthly basis, but should still match the majority of
35
+ # valid TLDs.
36
+ #
37
+ # [public suffix list]: https://publicsuffix.org/
38
+ #
39
+ # @since 1.0.0
40
+ PUBLIC_SUFFIX = <%= regex.inspect %>
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'ronin/support/network/ssl/proxy'
5
+
6
+ Ronin::Support::Network::SSL::Proxy.start(port: 1337, server: ['example.com', 443]) do |proxy|
7
+ address = lambda { |socket|
8
+ addrinfo = socket.peeraddr
9
+
10
+ "#{addrinfo[3]}:#{addrinfo[1]}"
11
+ }
12
+
13
+ proxy.on_client_data do |client,server,data|
14
+ puts "#{address[client]} -> #{proxy}"
15
+ puts data
16
+ end
17
+
18
+ proxy.on_client_connect do |client|
19
+ puts "#{address[client]} -> #{proxy} [connected]"
20
+ end
21
+
22
+ proxy.on_client_disconnect do |client,server|
23
+ puts "#{address[client]} <- #{proxy} [disconnected]"
24
+ end
25
+
26
+ proxy.on_server_data do |client,server,data|
27
+ puts "#{address[client]} <- #{proxy}"
28
+ puts data
29
+ end
30
+
31
+ proxy.on_server_connect do |client,server|
32
+ puts "#{address[client]} <- #{proxy} [connected]"
33
+ end
34
+
35
+ proxy.on_server_disconnect do |client,server|
36
+ puts "#{address[client]} <- #{proxy} [disconnected]"
37
+ end
38
+ end
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+
5
+ require 'ronin/support/network/tcp/proxy'
6
+ require 'hexdump'
7
+
8
+ Ronin::Support::Network::TCP::Proxy.start(port: 1337, server: ['www.wired.com', 80]) do |proxy|
9
+ address = lambda { |socket|
10
+ addrinfo = socket.peeraddr
11
+
12
+ "#{addrinfo[3]}:#{addrinfo[1]}"
13
+ }
14
+ hex = Hexdump::Dumper.new
15
+
16
+ proxy.on_client_data do |client,server,data|
17
+ puts "#{address[client]} -> #{proxy}"
18
+ hex.dump(data)
19
+ end
20
+
21
+ proxy.on_client_connect do |client|
22
+ puts "#{address[client]} -> #{proxy} [connected]"
23
+ end
24
+
25
+ proxy.on_client_disconnect do |client,server|
26
+ puts "#{address[client]} <- #{proxy} [disconnected]"
27
+ end
28
+
29
+ proxy.on_server_data do |client,server,data|
30
+ puts "#{address[client]} <- #{proxy}"
31
+ hex.dump(data)
32
+ end
33
+
34
+ proxy.on_server_connect do |client,server|
35
+ puts "#{address[client]} <- #{proxy} [connected]"
36
+ end
37
+
38
+ proxy.on_server_disconnect do |client,server|
39
+ puts "#{address[client]} <- #{proxy} [disconnected]"
40
+ end
41
+ end