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,215 @@
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 FreeBSD.
28
+ #
29
+ # @api semipublic
30
+ #
31
+ # @since 1.0.0
32
+ #
33
+ class FreeBSD < BSD
34
+
35
+ #
36
+ # Initializes the FreeBSD 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 :uint, :__fixpt_t
47
+ typedef :uint, :__gid_t
48
+ typedef :uint, :__ino_t
49
+ typedef :uint, :ino_t
50
+ typedef :int, :__int_fast16_t
51
+ typedef :int, :__int_fast32_t
52
+ typedef :long_long, :__int_fast64_t
53
+ typedef :int, :__int_fast8_t
54
+ typedef :short, :__int_least16_t
55
+ typedef :int, :__int_least32_t
56
+ typedef :long_long, :__int_least64_t
57
+ typedef :char, :__int_least8_t
58
+ typedef :long_long, :__intmax_t
59
+ typedef :long, :__key_t
60
+ typedef :long, :key_t
61
+ typedef :long_long, :__off_t
62
+ typedef :int, :__pid_t
63
+ typedef :int, :__rune_t
64
+ typedef :uchar, :__sa_family_t
65
+ typedef :int, :__segsz_t
66
+ typedef :uint, :__socklen_t
67
+ typedef :long, :__suseconds_t
68
+ typedef :long, :suseconds_t
69
+ typedef :long, :__time_t
70
+ typedef :long, :time_t
71
+ typedef :uint, :__uid_t
72
+ typedef :ushort, :uint16_t
73
+ typedef :uint, :uint32_t
74
+ typedef :ulong_long, :uint64_t
75
+ typedef :uchar, :uint8_t
76
+ typedef :uint, :__uint_fast16_t
77
+ typedef :uint, :__uint_fast32_t
78
+ typedef :ulong_long, :__uint_fast64_t
79
+ typedef :uint, :__uint_fast8_t
80
+ typedef :ushort, :__uint_least16_t
81
+ typedef :uint, :__uint_least32_t
82
+ typedef :ulong_long, :__uint_least64_t
83
+ typedef :uchar, :__uint_least8_t
84
+ typedef :ulong_long, :__uintmax_t
85
+ typedef :uint, :__useconds_t
86
+ typedef :int, :__wchar_t
87
+ typedef :int, :__wint_t
88
+
89
+ if types::ADDRESS_SIZE == 8
90
+ typedef :int, :__clock_t
91
+ typedef :int, :clock_t
92
+ typedef :ulong, :__cpuid_t
93
+ typedef :ulong, :cpuid_t
94
+ typedef :int, :daddr32_t
95
+ typedef :long_long, :daddr64_t
96
+ typedef :int, :daddr_t
97
+ typedef :int, :__dev_t
98
+ typedef :int, :dev_t
99
+ typedef :int, :__fd_mask
100
+ typedef :uint, :__id_t
101
+ typedef :uint, :id_t
102
+ typedef :uint, :__in_addr_t
103
+ typedef :ushort, :__in_port_t
104
+ typedef :long, :__intptr_t
105
+ typedef :long, :intptr_t
106
+ typedef :uint, :__mode_t
107
+ typedef :uint, :mode_t
108
+ typedef :uint, :__nlink_t
109
+ typedef :uint, :nlink_t
110
+ typedef :ulong, :__paddr_t
111
+ typedef :ulong, :paddr_t
112
+ typedef :ulong, :__psize_t
113
+ typedef :ulong, :psize_t
114
+ typedef :long, :__ptrdiff_t
115
+ typedef :long_long, :__register_t
116
+ typedef :long_long, :register_t
117
+ typedef :ulong_long, :__rlim_t
118
+ typedef :ulong_long, :rlim_t
119
+ typedef :ulong, :__size_t
120
+ typedef :ulong, :size_t
121
+ typedef :long, :__ssize_t
122
+ typedef :long, :ssize_t
123
+ typedef :int, :__swblk_t
124
+ typedef :int, :swblk_t
125
+ typedef :int, :__timer_t
126
+ typedef :int, :timer_t
127
+ typedef :ulong, :__uintptr_t
128
+ typedef :ulong, :uintptr_t
129
+ typedef :ulong, :ulong
130
+ typedef :uchar, :unchar
131
+ typedef :ulong, :__vaddr_t
132
+ typedef :ulong, :vaddr_t
133
+ typedef :ulong, :__vsize_t
134
+ typedef :ulong, :vsize_t
135
+ typedef :pointer, :__wctrans_t
136
+ typedef :pointer, :__wctype_t
137
+ else
138
+ typedef :int, :__accmode_t
139
+ typedef :int, :accmode_t
140
+ typedef :long_long, :__blkcnt_t
141
+ typedef :long_long, :blkcnt_t
142
+ typedef :uint, :__blksize_t
143
+ typedef :uint, :blksize_t
144
+ typedef :pointer, :c_caddr_t
145
+ typedef :ulong, :__clock_t
146
+ typedef :ulong, :clock_t
147
+ typedef :int, :__cpulevel_t
148
+ typedef :int, :cpulevel_t
149
+ typedef :uint, :__cpumask_t
150
+ typedef :uint, :cpumask_t
151
+ typedef :int, :__cpusetid_t
152
+ typedef :int, :cpusetid_t
153
+ typedef :int, :__cpuwhich_t
154
+ typedef :int, :cpuwhich_t
155
+ typedef :int, :__critical_t
156
+ typedef :int, :critical_t
157
+ typedef :int, :__ct_rune_t
158
+ typedef :long_long, :daddr_t
159
+ typedef :uint, :__dev_t
160
+ typedef :uint, :dev_t
161
+ typedef :ulong, :__fd_mask
162
+ typedef :ulong, :fd_mask
163
+ typedef :uint, :__fflags_t
164
+ typedef :uint, :fflags_t
165
+ typedef :ulong_long, :__fsblkcnt_t
166
+ typedef :ulong_long, :fsblkcnt_t
167
+ typedef :ulong_long, :__fsfilcnt_t
168
+ typedef :ulong_long, :fsfilcnt_t
169
+ typedef :long_long, :__id_t
170
+ typedef :long_long, :id_t
171
+ typedef :int, :__intfptr_t
172
+ typedef :int, :__intptr_t
173
+ typedef :int, :intptr_t
174
+ typedef :int, :__lwpid_t
175
+ typedef :int, :lwpid_t
176
+ typedef :ushort, :__mode_t
177
+ typedef :ushort, :mode_t
178
+ typedef :ushort, :__nlink_t
179
+ typedef :ushort, :nlink_t
180
+ typedef :int, :__nl_item
181
+ typedef :int, :pthread_key_t
182
+ typedef :int, :__ptrdiff_t
183
+ typedef :int, :__register_t
184
+ typedef :int, :register_t
185
+ typedef :long_long, :__rlim_t
186
+ typedef :long_long, :rlim_t
187
+ typedef :uint, :__size_t
188
+ typedef :uint, :size_t
189
+ typedef :int, :__ssize_t
190
+ typedef :int, :ssize_t
191
+ typedef :uint, :__uintfptr_t
192
+ typedef :uint, :__uintptr_t
193
+ typedef :uint, :uintptr_t
194
+ typedef :uint, :__u_register_t
195
+ typedef :uint, :u_register_t
196
+ typedef :uint, :__vm_offset_t
197
+ typedef :uint, :vm_offset_t
198
+ typedef :long_long, :__vm_ooffset_t
199
+ typedef :long_long, :vm_ooffset_t
200
+ typedef :uint, :__vm_paddr_t
201
+ typedef :uint, :vm_paddr_t
202
+ typedef :ulong_long, :__vm_pindex_t
203
+ typedef :ulong_long, :vm_pindex_t
204
+ typedef :uint, :__vm_size_t
205
+ typedef :uint, :vm_size_t
206
+ typedef :int, :__wint_t
207
+ end
208
+ end
209
+
210
+ end
211
+ end
212
+ end
213
+ end
214
+ end
215
+ end
@@ -0,0 +1,193 @@
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/unix'
20
+
21
+ module Ronin
22
+ module Support
23
+ module Binary
24
+ module CTypes
25
+ class OS
26
+ #
27
+ # Contains additional types available on GNU/Linux.
28
+ #
29
+ # @api semipublic
30
+ #
31
+ # @since 1.0.0
32
+ #
33
+ class Linux < UNIX
34
+
35
+ #
36
+ # Initializes the GNU/Linux types object.
37
+ #
38
+ # @param [#[]] types
39
+ # The base types module.
40
+ #
41
+ def initialize(types)
42
+ super(types)
43
+
44
+ typedef :long, :__blkcnt_t
45
+ typedef :long, :__blksize_t
46
+ typedef :long, :blksize_t
47
+ typedef types::POINTER, :__caddr_t
48
+ typedef :int, :__clockid_t
49
+ typedef :int, :clockid_t
50
+ typedef :long, :__clock_t
51
+ typedef :int, :__daddr_t
52
+ typedef :int, :daddr_t
53
+ typedef :long, :__fd_mask
54
+ typedef :long, :fd_mask
55
+ typedef :ulong, :__fsblkcnt_t
56
+ typedef :ulong, :__fsfilcnt_t
57
+ typedef :uint, :__gid_t
58
+ typedef :uint, :__id_t
59
+ typedef :uint, :id_t
60
+ typedef :ulong, :__ino_t
61
+ typedef :int, :__key_t
62
+ typedef :int, :key_t
63
+ typedef :uint, :__mode_t
64
+ typedef :uint, :mode_t
65
+ typedef :long, :__off_t
66
+ typedef :int, :__pid_t
67
+ typedef :int, :__priority_which_t
68
+ typedef :uint, :pthread_key_t
69
+ typedef :int, :pthread_once_t
70
+ typedef :ulong, :pthread_t
71
+ typedef :long, :register_t
72
+ typedef :int, :__rlimit_resource_t
73
+ typedef :ulong, :__rlim_t
74
+ typedef :int, :__rusage_who_t
75
+ typedef :ushort, :sa_family_t
76
+ typedef :int, :__sig_atomic_t
77
+ typedef :uint, :__socklen_t
78
+ typedef :long, :__suseconds_t
79
+ typedef :long, :suseconds_t
80
+ typedef :pointer, :__timer_t
81
+ typedef :pointer, :timer_t
82
+ typedef :long, :__time_t
83
+ typedef :long, :time_t
84
+ typedef :uchar, :__u_char
85
+ typedef :uint, :__uid_t
86
+ typedef :uint, :uid_t
87
+ typedef :uint, :__u_int
88
+ typedef :ulong, :__u_long
89
+ typedef :uint, :__useconds_t
90
+ typedef :ushort, :__u_short
91
+
92
+ if types::ADDRESS_SIZE == 8
93
+ typedef :long, :__blkcnt64_t
94
+ typedef :long, :blkcnt_t
95
+ typedef :long, :clock_t
96
+ typedef :ulong, :__dev_t
97
+ typedef :ulong, :dev_t
98
+ typedef :ulong, :__fsblkcnt64_t
99
+ typedef :ulong, :fsblkcnt_t
100
+ typedef :ulong, :__fsfilcnt64_t
101
+ typedef :ulong, :fsfilcnt_t
102
+ typedef :long, :__fsword_t
103
+ typedef :ulong, :__ino64_t
104
+ typedef :ulong, :ino_t
105
+ typedef :long, :__int64_t
106
+ typedef :long, :int64_t
107
+ typedef :long, :int_fast16_t
108
+ typedef :long, :int_fast32_t
109
+ typedef :long, :int_fast64_t
110
+ typedef :char, :int_fast8_t
111
+ typedef :int, :int_least32_t
112
+ typedef :long, :int_least64_t
113
+ typedef :char, :int_least8_t
114
+ typedef :long, :__intmax_t
115
+ typedef :long, :intmax_t
116
+ typedef :long, :__intptr_t
117
+ typedef :long, :intptr_t
118
+ typedef :long, :__loff_t
119
+ typedef :long, :loff_t
120
+ typedef :ulong, :__nlink_t
121
+ typedef :ulong, :nlink_t
122
+ typedef :long, :__off64_t
123
+ typedef :long, :off_t
124
+ typedef :long, :ptrdiff_t
125
+ typedef :long, :__quad_t
126
+ typedef :long, :quad_t
127
+ typedef :ulong, :__rlim64_t
128
+ typedef :ulong, :rlim_t
129
+ typedef :ulong, :size_t
130
+ typedef :long, :__ssize_t
131
+ typedef :long, :ssize_t
132
+ typedef :long, :__syscall_slong_t
133
+ typedef :ulong, :__syscall_ulong_t
134
+ typedef :ushort, :uint16_t
135
+ typedef :uint, :uint32_t
136
+ typedef :ulong, :__uint64_t
137
+ typedef :ulong, :uint64_t
138
+ typedef :uchar, :uint8_t
139
+ typedef :ulong, :uint_fast16_t
140
+ typedef :ulong, :uint_fast32_t
141
+ typedef :ulong, :uint_fast64_t
142
+ typedef :uchar, :uint_fast8_t
143
+ typedef :ushort, :uint_least16_t
144
+ typedef :uint, :uint_least32_t
145
+ typedef :ulong, :uint_least64_t
146
+ typedef :uchar, :uint_least8_t
147
+ typedef :ulong, :__uintmax_t
148
+ typedef :ulong, :uintmax_t
149
+ typedef :ulong, :uintptr_t
150
+ typedef :ulong, :__u_quad_t
151
+ typedef :ulong, :u_quad_t
152
+ typedef :int, :wchar_t
153
+ else
154
+ typedef :long_long, :__blkcnt64_t
155
+ typedef :long_long, :blkcnt_t
156
+ typedef :ulong_long, :__dev_t
157
+ typedef :ulong_long, :dev_t
158
+ typedef :ulong_long, :__fsblkcnt64_t
159
+ typedef :ulong_long, :fsblkcnt_t
160
+ typedef :ulong_long, :__fsfilcnt64_t
161
+ typedef :ulong_long, :fsfilcnt_t
162
+ typedef :ulong_long, :__ino64_t
163
+ typedef :ulong_long, :ino_t
164
+ typedef :long_long, :__int64_t
165
+ typedef :long_long, :int64_t
166
+ typedef :int, :__intptr_t
167
+ typedef :long_long, :__loff_t
168
+ typedef :long_long, :loff_t
169
+ typedef :uint, :__nlink_t
170
+ typedef :uint, :nlink_t
171
+ typedef :long_long, :__off64_t
172
+ typedef :long_long, :off_t
173
+ typedef types::POINTER, :__qaddr_t
174
+ typedef :long_long, :__quad_t
175
+ typedef :long_long, :quad_t
176
+ typedef :ulong_long, :__rlim64_t
177
+ typedef :ulong_long, :rlim_t
178
+ typedef :uint, :size_t
179
+ typedef :int, :__ssize_t
180
+ typedef :int, :ssize_t
181
+ typedef :long, :__swblk_t
182
+ typedef :ulong_long, :__uint64_t
183
+ typedef :ulong_long, :__u_quad_t
184
+ typedef :ulong_long, :u_quad_t
185
+ end
186
+ end
187
+
188
+ end
189
+ end
190
+ end
191
+ end
192
+ end
193
+ end
@@ -0,0 +1,151 @@
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
+ require 'ronin/support/binary/ctypes/array_type'
21
+
22
+ module Ronin
23
+ module Support
24
+ module Binary
25
+ module CTypes
26
+ class OS
27
+ #
28
+ # Contains additional types available on macOS (aka Darwin).
29
+ #
30
+ # @api semipublic
31
+ #
32
+ # @since 1.0.0
33
+ #
34
+ class MacOS < BSD
35
+
36
+ #
37
+ # Initializes the macOS types object.
38
+ #
39
+ # @param [#[]] types
40
+ # The base types module.
41
+ #
42
+ def initialize(types)
43
+ super(types)
44
+
45
+ typedef :long_long, :blkcnt_t
46
+ typedef :int, :blksize_t
47
+ typedef :ulong, :clock_t
48
+ typedef :int, :daddr_t
49
+ typedef :long_long, :__darwin_blkcnt_t
50
+ typedef :int, :__darwin_blksize_t
51
+ typedef :ulong, :__darwin_clock_t
52
+ typedef :int, :__darwin_ct_rune_t
53
+ typedef :int, :__darwin_dev_t
54
+ typedef :uint, :__darwin_fsblkcnt_t
55
+ typedef :uint, :__darwin_fsfilcnt_t
56
+ typedef :uint, :__darwin_gid_t
57
+ typedef :uint, :__darwin_id_t
58
+ typedef :ulong_long, :__darwin_ino64_t
59
+ typedef :ulong_long, :__darwin_ino_t
60
+ typedef :long, :__darwin_intptr_t
61
+ typedef :uint, :__darwin_mach_port_name_t
62
+ typedef :uint, :__darwin_mach_port_t
63
+ typedef :ushort, :__darwin_mode_t
64
+ typedef :uint, :__darwin_natural_t
65
+ typedef :long_long, :__darwin_off_t
66
+ typedef :int, :__darwin_pid_t
67
+ typedef :ulong, :__darwin_pthread_key_t
68
+ typedef :int, :__darwin_rune_t
69
+ typedef :uint, :__darwin_sigset_t
70
+ typedef :ulong, :__darwin_size_t
71
+ typedef :uint, :__darwin_socklen_t
72
+ typedef :long, :__darwin_ssize_t
73
+ typedef :int, :__darwin_suseconds_t
74
+ typedef :long, :__darwin_time_t
75
+ typedef :uint, :__darwin_uid_t
76
+ typedef :uint, :__darwin_useconds_t
77
+ typedef ArrayType.new(types::UCHAR,16), :__darwin_uuid_t
78
+ typedef :int, :__darwin_wchar_t
79
+ typedef :int, :__darwin_wint_t
80
+ typedef :int, :dev_t
81
+ typedef :int, :fd_mask
82
+ typedef :uint, :fsblkcnt_t
83
+ typedef :uint, :fsfilcnt_t
84
+ typedef :uint, :id_t
85
+ typedef :ulong_long, :ino64_t
86
+ typedef :ulong_long, :ino_t
87
+ typedef :long, :intptr_t
88
+ typedef :int, :key_t
89
+ typedef :ushort, :mode_t
90
+ typedef :ushort, :nlink_t
91
+ typedef :ulong, :pthread_key_t
92
+ typedef :ulong_long, :rlim_t
93
+ typedef :ulong, :size_t
94
+ typedef :long, :ssize_t
95
+ typedef :int, :suseconds_t
96
+ typedef :int, :swblk_t
97
+ typedef :ulong_long, :syscall_arg_t
98
+ typedef :long, :time_t
99
+ typedef :ulong, :uintptr_t
100
+ typedef :ulong_long, :user_addr_t
101
+ typedef :long_long, :user_long_t
102
+ typedef :ulong_long, :user_size_t
103
+ typedef :long_long, :user_ssize_t
104
+ typedef :long_long, :user_time_t
105
+ typedef :ulong_long, :user_ulong_t
106
+
107
+ if types::ADDRESS_SIZE == 8
108
+ typedef :long, :__darwin_ptrdiff_t
109
+ typedef ArrayType.new(types::CHAR,37), :__darwin_uuid_string_t
110
+ typedef :int, :errno_t
111
+ typedef :short, :int_fast16_t
112
+ typedef :int, :int_fast32_t
113
+ typedef :long_long, :int_fast64_t
114
+ typedef :char, :int_fast8_t
115
+ typedef :short, :int_least16_t
116
+ typedef :int, :int_least32_t
117
+ typedef :long_long, :int_least64_t
118
+ typedef :char, :int_least8_t
119
+ typedef :long, :intmax_t
120
+ typedef :long, :ptrdiff_t
121
+ typedef :long_long, :register_t
122
+ typedef :ulong, :rsize_t
123
+ typedef :uint, :sae_associd_t
124
+ typedef :uint, :sae_connid_t
125
+ typedef :ushort, :uint16_t
126
+ typedef :uint, :uint32_t
127
+ typedef :ulong_long, :uint64_t
128
+ typedef :uchar, :uint8_t
129
+ typedef :ushort, :uint_fast16_t
130
+ typedef :uint, :uint_fast32_t
131
+ typedef :ulong_long, :uint_fast64_t
132
+ typedef :uchar, :uint_fast8_t
133
+ typedef :ushort, :uint_least16_t
134
+ typedef :uint, :uint_least32_t
135
+ typedef :ulong_long, :uint_least64_t
136
+ typedef :uchar, :uint_least8_t
137
+ typedef :ulong, :uintmax_t
138
+ typedef :long_long, :user_off_t
139
+ typedef :int, :wchar_t
140
+ else
141
+ typedef :int, :__darwin_ptrdiff_t
142
+ typedef :int, :register_t
143
+ end
144
+ end
145
+
146
+ end
147
+ end
148
+ end
149
+ end
150
+ end
151
+ end