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
@@ -0,0 +1,147 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
4
+ #
5
+ # ronin-support is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU Lesser General Public License as published
7
+ # by the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # ronin-support is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public License
16
+ # along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
17
+ #
18
+
19
+ require 'ronin/support/binary/ctypes/os/bsd'
20
+
21
+ module Ronin
22
+ module Support
23
+ module Binary
24
+ module CTypes
25
+ class OS
26
+ #
27
+ # Contains additional types available on NetBSD.
28
+ #
29
+ # @api semipublic
30
+ #
31
+ # @since 1.0.0
32
+ #
33
+ class NetBSD < BSD
34
+
35
+ #
36
+ # Initializes the NetBSD types object.
37
+ #
38
+ # @param [#[]] types
39
+ # The base types module.
40
+ #
41
+ def initialize(types)
42
+ super(types)
43
+
44
+ typedef :int, :__clockid_t
45
+ typedef :int, :clockid_t
46
+ typedef :int, :__clock_t
47
+ typedef :int, :clock_t
48
+ typedef :ulong, :__cpuid_t
49
+ typedef :ulong, :cpuid_t
50
+ typedef :int, :daddr32_t
51
+ typedef :long_long, :daddr64_t
52
+ typedef :int, :daddr_t
53
+ typedef :int, :__dev_t
54
+ typedef :int, :dev_t
55
+ typedef :int, :__fd_mask
56
+ typedef :uint, :__fixpt_t
57
+ typedef :uint, :__gid_t
58
+ typedef :uint, :__id_t
59
+ typedef :uint, :id_t
60
+ typedef :uint, :__in_addr_t
61
+ typedef :uint, :__ino_t
62
+ typedef :uint, :ino_t
63
+ typedef :ushort, :__in_port_t
64
+ typedef :int, :__int_fast16_t
65
+ typedef :int, :__int_fast32_t
66
+ typedef :long_long, :__int_fast64_t
67
+ typedef :int, :__int_fast8_t
68
+ typedef :short, :__int_least16_t
69
+ typedef :int, :__int_least32_t
70
+ typedef :long_long, :__int_least64_t
71
+ typedef :char, :__int_least8_t
72
+ typedef :long_long, :__intmax_t
73
+ typedef :long, :__intptr_t
74
+ typedef :long, :__key_t
75
+ typedef :long, :key_t
76
+ typedef :uint, :__mode_t
77
+ typedef :uint, :mode_t
78
+ typedef :uint, :__nlink_t
79
+ typedef :uint, :nlink_t
80
+ typedef :long_long, :__off_t
81
+ typedef :ulong, :__paddr_t
82
+ typedef :ulong, :paddr_t
83
+ typedef :int, :__pid_t
84
+ typedef :ulong, :__psize_t
85
+ typedef :ulong, :psize_t
86
+ typedef :long, :__ptrdiff_t
87
+ typedef :int, :__register_t
88
+ typedef :int, :register_t
89
+ typedef :ulong_long, :__rlim_t
90
+ typedef :ulong_long, :rlim_t
91
+ typedef :int, :__rune_t
92
+ typedef :uchar, :__sa_family_t
93
+ typedef :int, :__segsz_t
94
+ typedef :ulong, :__size_t
95
+ typedef :ulong, :size_t
96
+ typedef :uint, :__socklen_t
97
+ typedef :long, :__ssize_t
98
+ typedef :long, :ssize_t
99
+ typedef :int, :__suseconds_t
100
+ typedef :int, :suseconds_t
101
+ typedef :int, :__swblk_t
102
+ typedef :int, :swblk_t
103
+ typedef :int, :__timer_t
104
+ typedef :int, :timer_t
105
+ typedef :int, :__time_t
106
+ typedef :int, :time_t
107
+ typedef :uint, :__uid_t
108
+ typedef :ushort, :uint16_t
109
+ typedef :uint, :uint32_t
110
+ typedef :ulong_long, :uint64_t
111
+ typedef :uchar, :uint8_t
112
+ typedef :uint, :__uint_fast16_t
113
+ typedef :uint, :__uint_fast32_t
114
+ typedef :ulong_long, :__uint_fast64_t
115
+ typedef :uint, :__uint_fast8_t
116
+ typedef :ushort, :__uint_least16_t
117
+ typedef :uint, :__uint_least32_t
118
+ typedef :ulong_long, :__uint_least64_t
119
+ typedef :uchar, :__uint_least8_t
120
+ typedef :ulong_long, :__uintmax_t
121
+ typedef :ulong, :__uintptr_t
122
+ typedef :uint, :uint
123
+ typedef :ulong, :ulong
124
+ typedef :uchar, :unchar
125
+ typedef :uint, :__useconds_t
126
+ typedef :ushort, :ushort
127
+ typedef :ulong, :__vaddr_t
128
+ typedef :ulong, :vaddr_t
129
+ typedef :ulong, :__vsize_t
130
+ typedef :ulong, :vsize_t
131
+ typedef :int, :__wchar_t
132
+ typedef :pointer, :__wctrans_t
133
+ typedef :pointer, :__wctype_t
134
+ typedef :int, :__wint_t
135
+
136
+ if types::ADDRESS_SIZE == 8
137
+ typedef :long, :intptr_t
138
+ typedef :ulong, :uintptr_t
139
+ end
140
+ end
141
+
142
+ end
143
+ end
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,168 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
4
+ #
5
+ # ronin-support is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU Lesser General Public License as published
7
+ # by the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # ronin-support is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public License
16
+ # along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
17
+ #
18
+
19
+ require 'ronin/support/binary/ctypes/os/bsd'
20
+
21
+ module Ronin
22
+ module Support
23
+ module Binary
24
+ module CTypes
25
+ class OS
26
+ #
27
+ # Contains additional types available on OpenBSD.
28
+ #
29
+ # @api semipublic
30
+ #
31
+ # @since 1.0.0
32
+ #
33
+ class OpenBSD < BSD
34
+
35
+ #
36
+ # Initializes the OpenBSD types object.
37
+ #
38
+ # @param [#[]] types
39
+ # The base types module.
40
+ #
41
+ def initialize(types)
42
+ super(types)
43
+
44
+ typedef :int, :__clockid_t
45
+ typedef :int, :clockid_t
46
+ typedef :ulong, :__cpuid_t
47
+ typedef :ulong, :cpuid_t
48
+ typedef :int, :daddr32_t
49
+ typedef :int, :__dev_t
50
+ typedef :int, :dev_t
51
+ typedef :uint, :__fixpt_t
52
+ typedef :uint, :__gid_t
53
+ typedef :uint, :__id_t
54
+ typedef :uint, :id_t
55
+ typedef :uint, :__in_addr_t
56
+ typedef :ushort, :__in_port_t
57
+ typedef :ushort, :in_port_t
58
+ typedef :int, :__int_fast16_t
59
+ typedef :int, :__int_fast32_t
60
+ typedef :long_long, :__int_fast64_t
61
+ typedef :int, :__int_fast8_t
62
+ typedef :short, :__int_least16_t
63
+ typedef :int, :__int_least32_t
64
+ typedef :long_long, :__int_least64_t
65
+ typedef :char, :__int_least8_t
66
+ typedef :long_long, :__intmax_t
67
+ typedef :long, :__intptr_t
68
+ typedef :long, :__key_t
69
+ typedef :long, :key_t
70
+ typedef :uint, :__mode_t
71
+ typedef :uint, :mode_t
72
+ typedef :uint, :__nlink_t
73
+ typedef :uint, :nlink_t
74
+ typedef :long_long, :__off_t
75
+ typedef :ulong, :__paddr_t
76
+ typedef :ulong, :paddr_t
77
+ typedef :int, :__pid_t
78
+ typedef :ulong, :__psize_t
79
+ typedef :ulong, :psize_t
80
+ typedef :long, :__ptrdiff_t
81
+ typedef :ulong_long, :__rlim_t
82
+ typedef :ulong_long, :rlim_t
83
+ typedef :int, :__rune_t
84
+ typedef :uchar, :__sa_family_t
85
+ typedef :int, :__segsz_t
86
+ typedef :ulong, :__size_t
87
+ typedef :ulong, :size_t
88
+ typedef :uint, :__socklen_t
89
+ typedef :long, :__ssize_t
90
+ typedef :long, :ssize_t
91
+ typedef :int, :__swblk_t
92
+ typedef :int, :swblk_t
93
+ typedef :int, :__timer_t
94
+ typedef :int, :timer_t
95
+ typedef :uint, :__uid_t
96
+ typedef :ushort, :uint16_t
97
+ typedef :uint, :uint32_t
98
+ typedef :ulong_long, :uint64_t
99
+ typedef :uchar, :uint8_t
100
+ typedef :uint, :__uint_fast16_t
101
+ typedef :uint, :__uint_fast32_t
102
+ typedef :ulong_long, :__uint_fast64_t
103
+ typedef :uint, :__uint_fast8_t
104
+ typedef :ushort, :__uint_least16_t
105
+ typedef :uint, :__uint_least32_t
106
+ typedef :ulong_long, :__uint_least64_t
107
+ typedef :uchar, :__uint_least8_t
108
+ typedef :ulong_long, :__uintmax_t
109
+ typedef :ulong, :__uintptr_t
110
+ typedef :ulong, :ulong
111
+ typedef :uchar, :unchar
112
+ typedef :uint, :__useconds_t
113
+ typedef :ulong, :__vaddr_t
114
+ typedef :ulong, :vaddr_t
115
+ typedef :ulong, :__vsize_t
116
+ typedef :ulong, :vsize_t
117
+ typedef :int, :__wchar_t
118
+ typedef :pointer, :__wctrans_t
119
+ typedef :pointer, :__wctype_t
120
+ typedef :int, :__wint_t
121
+
122
+ if types::ADDRESS_SIZE == 8
123
+ typedef :long_long, :__blkcnt_t
124
+ typedef :long_long, :blkcnt_t
125
+ typedef :int, :__blksize_t
126
+ typedef :int, :blksize_t
127
+ typedef :long_long, :__clock_t
128
+ typedef :long_long, :clock_t
129
+ typedef :long_long, :daddr_t
130
+ typedef :uint, :__fd_mask
131
+ typedef :ulong_long, :__fsblkcnt_t
132
+ typedef :ulong_long, :fsblkcnt_t
133
+ typedef :ulong_long, :__fsfilcnt_t
134
+ typedef :ulong_long, :fsfilcnt_t
135
+ typedef :ulong_long, :__ino_t
136
+ typedef :ulong_long, :ino_t
137
+ typedef :long, :__register_t
138
+ typedef :long, :register_t
139
+ typedef :uint, :sigset_t
140
+ typedef :long, :__suseconds_t
141
+ typedef :long, :suseconds_t
142
+ typedef :long_long, :__time_t
143
+ typedef :long_long, :time_t
144
+ else
145
+ typedef :int, :__clock_t
146
+ typedef :int, :clock_t
147
+ typedef :long_long, :daddr64_t
148
+ typedef :int, :daddr_t
149
+ typedef :int, :__fd_mask
150
+ typedef :uint, :__ino_t
151
+ typedef :uint, :ino_t
152
+ typedef :long, :intptr_t
153
+ typedef :int, :__register_t
154
+ typedef :int, :register_t
155
+ typedef :int, :__suseconds_t
156
+ typedef :int, :suseconds_t
157
+ typedef :int, :__time_t
158
+ typedef :int, :time_t
159
+ typedef :ulong, :uintptr_t
160
+ end
161
+ end
162
+
163
+ end
164
+ end
165
+ end
166
+ end
167
+ end
168
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
4
+ #
5
+ # ronin-support is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU Lesser General Public License as published
7
+ # by the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # ronin-support is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public License
16
+ # along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
17
+ #
18
+
19
+ require 'ronin/support/binary/ctypes/os'
20
+
21
+ module Ronin
22
+ module Support
23
+ module Binary
24
+ module CTypes
25
+ class OS
26
+ #
27
+ # Common types shared by all UNIX `libc` implementations.
28
+ #
29
+ # @api private
30
+ #
31
+ # @since 1.0.0
32
+ #
33
+ class UNIX < OS
34
+ #
35
+ # Initializes the common UNIX `libc` typedefs.
36
+ #
37
+ # @param [#[]] types
38
+ # The base types module.
39
+ #
40
+ def initialize(types)
41
+ super(types)
42
+
43
+ typedef :char, :__int8_t
44
+ typedef :short, :__int16_t
45
+ typedef :int, :__int32_t
46
+
47
+ typedef :uchar, :__uint8_t
48
+ typedef :ushort, :__uint16_t
49
+ typedef :uint, :__uint32_t
50
+
51
+ typedef :char, :int8_t
52
+ typedef :short, :int16_t
53
+ typedef :int, :int32_t
54
+
55
+ typedef :uchar, :u_int8_t
56
+ typedef :ushort, :u_int16_t
57
+ typedef :uint, :u_int32_t
58
+ typedef :ulong_long, :u_int64_t
59
+
60
+ typedef :uchar, :u_char
61
+ typedef :uint, :u_int
62
+ typedef :ulong, :u_long
63
+ typedef :ushort, :u_short
64
+
65
+ typedef :uint, :uid_t
66
+ typedef :uint, :gid_t
67
+ typedef :int, :pid_t
68
+
69
+ typedef :uint, :in_addr_t
70
+ typedef :ushort, :in_port_t
71
+ typedef :uint, :socklen_t
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,125 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
4
+ #
5
+ # ronin-support is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU Lesser General Public License as published
7
+ # by the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # ronin-support is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public License
16
+ # along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
17
+ #
18
+
19
+ require 'ronin/support/binary/ctypes/os'
20
+
21
+ module Ronin
22
+ module Support
23
+ module Binary
24
+ module CTypes
25
+ class OS
26
+ #
27
+ # Contains additional types available on Windows.
28
+ #
29
+ # @api semipublic
30
+ #
31
+ # @since 1.0.0
32
+ #
33
+ class Windows < OS
34
+
35
+ #
36
+ # Initializes the Windows types object.
37
+ #
38
+ # @param [#[]] types
39
+ # The base types module.
40
+ #
41
+ def initialize(types)
42
+ super(types)
43
+
44
+ if types::ADDRESS_SIZE == 8
45
+ # NOTE: `long` and `unsigne long` are actually 4 bytes on
46
+ # 64bit Windows systems.
47
+ #
48
+ # https://www.intel.com/content/www/us/en/developer/articles/technical/size-of-long-integer-type-on-different-architecture-and-os.html
49
+ typedef types::INT32, :long
50
+ typedef types::UINT32, :ulong
51
+ end
52
+
53
+ typedef :uint, :_dev_t
54
+ typedef :uint, :dev_t
55
+ typedef :int, :errno_t
56
+ typedef :ushort, :_ino_t
57
+ typedef :ushort, :ino_t
58
+ typedef :short, :int16_t
59
+ typedef :int, :int32_t
60
+ typedef :long_long, :int64_t
61
+ typedef :char, :int8_t
62
+ typedef :short, :int_fast16_t
63
+ typedef :int, :int_fast32_t
64
+ typedef :long_long, :int_fast64_t
65
+ typedef :char, :int_fast8_t
66
+ typedef :short, :int_least16_t
67
+ typedef :int, :int_least32_t
68
+ typedef :long_long, :int_least64_t
69
+ typedef :char, :int_least8_t
70
+ typedef :long_long, :intmax_t
71
+ typedef :ushort, :_mode_t
72
+ typedef :ushort, :mode_t
73
+ typedef :long, :off32_t
74
+ typedef :long_long, :_off64_t
75
+ typedef :long_long, :off64_t
76
+ typedef :long, :_off_t
77
+ typedef :long_long, :off_t
78
+ typedef :long, :__time32_t
79
+ typedef :long_long, :__time64_t
80
+ typedef :ushort, :uint16_t
81
+ typedef :ulong_long, :uint64_t
82
+ typedef :uchar, :uint8_t
83
+ typedef :ushort, :uint_fast16_t
84
+ typedef :uint, :uint_fast32_t
85
+ typedef :ulong_long, :uint_fast64_t
86
+ typedef :uchar, :uint_fast8_t
87
+ typedef :ushort, :uint_least16_t
88
+ typedef :ulong_long, :uint_least64_t
89
+ typedef :uchar, :uint_least8_t
90
+ typedef :ulong_long, :uintmax_t
91
+ typedef :uint, :useconds_t
92
+ typedef :ushort, :wchar_t
93
+ typedef :ushort, :wctype_t
94
+ typedef :ushort, :wint_t
95
+
96
+ if types::ADDRESS_SIZE == 8
97
+ typedef :long_long, :intptr_t
98
+ typedef :long_long, :_pid_t
99
+ typedef :long_long, :pid_t
100
+ typedef :long_long, :ptrdiff_t
101
+ typedef :ulong_long, :rsize_t
102
+ typedef :ulong_long, :_sigset_t
103
+ typedef :ulong_long, :size_t
104
+ typedef :long_long, :ssize_t
105
+ typedef :long_long, :time_t
106
+ typedef :ulong_long, :uintptr_t
107
+ else
108
+ typedef :int, :intptr_t
109
+ typedef :int, :_pid_t
110
+ typedef :int, :pid_t
111
+ typedef :int, :ptrdiff_t
112
+ typedef :uint, :rsize_t
113
+ typedef :ulong, :_sigset_t
114
+ typedef :uint, :size_t
115
+ typedef :int, :ssize_t
116
+ typedef :long, :time_t
117
+ typedef :uint, :uintptr_t
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,125 @@
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 Binary
22
+ module CTypes
23
+ #
24
+ # Represents additional typedefs defined by an Operating System (OS).
25
+ #
26
+ # @api private
27
+ #
28
+ # @since 1.0.0
29
+ #
30
+ class OS
31
+
32
+ # The base types that the OS inherits.
33
+ #
34
+ # @return [Native, LittleEndian, BigEndian, Network,
35
+ # Arch::ARM, Arch::ARM::BigEndian,
36
+ # Arch::ARM64, Arch::ARM64::BigEndian,
37
+ # Arch::MIPS, Arch::MIPS::LittleEndian,
38
+ # Arch::MIPS64, Arch::MIPS64::LittleEndian,
39
+ # Arch::PPC64, Arch::PPC, Arch::X86_64, Arch::X86,
40
+ # OS::FreeBSD,
41
+ # OS::NetBSD,
42
+ # OS::OpenBSD,
43
+ # OS::Linux,
44
+ # OS::MacOS,
45
+ # OS::Windows]
46
+ attr_reader :types
47
+
48
+ # The defined typedefs for the OS.
49
+ #
50
+ # @return [Hash{Symbol => Type}]
51
+ attr_reader :typedefs
52
+
53
+ #
54
+ # Initializes the OS with the given base types.
55
+ #
56
+ # @param [Native, LittleEndian, BigEndian, Network,
57
+ # Arch::ARM, Arch::ARM::BigEndian,
58
+ # Arch::ARM64, Arch::ARM64::BigEndian,
59
+ # Arch::MIPS, Arch::MIPS::LittleEndian,
60
+ # Arch::MIPS64, Arch::MIPS64::LittleEndian,
61
+ # Arch::PPC64, Arch::PPC, Arch::X86_64, Arch::X86,
62
+ # OS::FreeBSD,
63
+ # OS::NetBSD,
64
+ # OS::OpenBSD,
65
+ # OS::Linux,
66
+ # OS::MacOS,
67
+ # OS::Windows] types
68
+ # The base types that the OS builds upon.
69
+ #
70
+ def initialize(types)
71
+ @types = types
72
+ @typedefs = {}
73
+ end
74
+
75
+ #
76
+ # Retrieves the type with the given name.
77
+ #
78
+ # @param [Symbol] name
79
+ #
80
+ # @return [Type]
81
+ #
82
+ # @api public
83
+ #
84
+ def [](name)
85
+ @typedefs.fetch(name) { @types[name] }
86
+ end
87
+
88
+ #
89
+ # Defines a typedef within the type system.
90
+ #
91
+ # @param [Symbol, Type] type
92
+ # The original type to point to.
93
+ #
94
+ # @param [Symbol] new_name
95
+ # The new type name.
96
+ #
97
+ # @raise [ArgumentError]
98
+ # The given type was not a Symbol or a {Type}.
99
+ #
100
+ # @example
101
+ # os.typedef :uint, :foo_t
102
+ #
103
+ def typedef(type,new_name)
104
+ case type
105
+ when Type then @typedefs[new_name] = type
106
+ when Symbol then @typedefs[new_name] = self[type]
107
+ else
108
+ raise(ArgumentError,"type must be either a Symbol or a #{Type}: #{type.inspect}")
109
+ end
110
+ end
111
+
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
117
+
118
+ require 'ronin/support/binary/ctypes/os/unix'
119
+ require 'ronin/support/binary/ctypes/os/linux'
120
+ require 'ronin/support/binary/ctypes/os/bsd'
121
+ require 'ronin/support/binary/ctypes/os/freebsd'
122
+ require 'ronin/support/binary/ctypes/os/openbsd'
123
+ require 'ronin/support/binary/ctypes/os/netbsd'
124
+ require 'ronin/support/binary/ctypes/os/macos'
125
+ require 'ronin/support/binary/ctypes/os/windows'