librex 0.0.3 → 0.0.4

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 (376) hide show
  1. data/README +0 -0
  2. data/lib/rex.rb +0 -0
  3. data/lib/rex.rb.ts.rb +0 -0
  4. data/lib/rex/LICENSE +0 -0
  5. data/lib/rex/arch.rb +0 -0
  6. data/lib/rex/arch/sparc.rb +0 -0
  7. data/lib/rex/arch/sparc.rb.ut.rb +0 -0
  8. data/lib/rex/arch/x86.rb +0 -0
  9. data/lib/rex/arch/x86.rb.ut.rb +0 -0
  10. data/lib/rex/assembly/nasm.rb +0 -0
  11. data/lib/rex/assembly/nasm.rb.ut.rb +0 -0
  12. data/lib/rex/codepage.map +0 -0
  13. data/lib/rex/compat.rb +0 -0
  14. data/lib/rex/constants.rb +0 -0
  15. data/lib/rex/elfparsey.rb +0 -0
  16. data/lib/rex/elfparsey/elf.rb +0 -0
  17. data/lib/rex/elfparsey/elfbase.rb +0 -0
  18. data/lib/rex/elfparsey/exceptions.rb +0 -0
  19. data/lib/rex/elfscan.rb +0 -0
  20. data/lib/rex/elfscan/scanner.rb +0 -0
  21. data/lib/rex/elfscan/search.rb +0 -0
  22. data/lib/rex/encoder/alpha2.rb +0 -0
  23. data/lib/rex/encoder/alpha2/alpha_mixed.rb +0 -0
  24. data/lib/rex/encoder/alpha2/alpha_upper.rb +0 -0
  25. data/lib/rex/encoder/alpha2/generic.rb +0 -0
  26. data/lib/rex/encoder/alpha2/unicode_mixed.rb +0 -0
  27. data/lib/rex/encoder/alpha2/unicode_upper.rb +0 -0
  28. data/lib/rex/encoder/ndr.rb +0 -0
  29. data/lib/rex/encoder/ndr.rb.ut.rb +0 -0
  30. data/lib/rex/encoder/nonalpha.rb +0 -0
  31. data/lib/rex/encoder/nonupper.rb +0 -0
  32. data/lib/rex/encoder/xdr.rb +0 -0
  33. data/lib/rex/encoder/xdr.rb.ut.rb +0 -0
  34. data/lib/rex/encoder/xor.rb +0 -0
  35. data/lib/rex/encoder/xor/dword.rb +0 -0
  36. data/lib/rex/encoder/xor/dword_additive.rb +0 -0
  37. data/lib/rex/encoders/xor_dword.rb +0 -0
  38. data/lib/rex/encoders/xor_dword_additive.rb +0 -0
  39. data/lib/rex/encoders/xor_dword_additive.rb.ut.rb +0 -0
  40. data/lib/rex/encoding/xor.rb +0 -0
  41. data/lib/rex/encoding/xor.rb.ts.rb +0 -0
  42. data/lib/rex/encoding/xor/byte.rb +0 -0
  43. data/lib/rex/encoding/xor/byte.rb.ut.rb +0 -0
  44. data/lib/rex/encoding/xor/dword.rb +0 -0
  45. data/lib/rex/encoding/xor/dword.rb.ut.rb +0 -0
  46. data/lib/rex/encoding/xor/dword_additive.rb +0 -0
  47. data/lib/rex/encoding/xor/dword_additive.rb.ut.rb +0 -0
  48. data/lib/rex/encoding/xor/exceptions.rb +0 -0
  49. data/lib/rex/encoding/xor/generic.rb +0 -0
  50. data/lib/rex/encoding/xor/generic.rb.ut.rb +0 -0
  51. data/lib/rex/encoding/xor/qword.rb +0 -0
  52. data/lib/rex/encoding/xor/word.rb +0 -0
  53. data/lib/rex/encoding/xor/word.rb.ut.rb +0 -0
  54. data/lib/rex/exceptions.rb +0 -0
  55. data/lib/rex/exceptions.rb.ut.rb +0 -0
  56. data/lib/rex/exploitation/cmdstager.rb +0 -0
  57. data/lib/rex/exploitation/cmdstager/base.rb +0 -0
  58. data/lib/rex/exploitation/cmdstager/debug_asm.rb +0 -0
  59. data/lib/rex/exploitation/cmdstager/debug_write.rb +0 -0
  60. data/lib/rex/exploitation/cmdstager/tftp.rb +0 -0
  61. data/lib/rex/exploitation/cmdstager/vbs.rb +0 -0
  62. data/lib/rex/exploitation/egghunter.rb +0 -0
  63. data/lib/rex/exploitation/egghunter.rb.ut.rb +0 -0
  64. data/lib/rex/exploitation/encryptjs.rb +0 -0
  65. data/lib/rex/exploitation/heaplib.js.b64 +0 -0
  66. data/lib/rex/exploitation/heaplib.rb +0 -0
  67. data/lib/rex/exploitation/javascriptosdetect.rb +2 -2
  68. data/lib/rex/exploitation/obfuscatejs.rb +0 -0
  69. data/lib/rex/exploitation/opcodedb.rb +0 -0
  70. data/lib/rex/exploitation/opcodedb.rb.ut.rb +0 -0
  71. data/lib/rex/exploitation/seh.rb +0 -0
  72. data/lib/rex/exploitation/seh.rb.ut.rb +0 -0
  73. data/lib/rex/file.rb +0 -0
  74. data/lib/rex/file.rb.ut.rb +0 -0
  75. data/lib/rex/image_source.rb +0 -0
  76. data/lib/rex/image_source/disk.rb +0 -0
  77. data/lib/rex/image_source/image_source.rb +0 -0
  78. data/lib/rex/image_source/memory.rb +0 -0
  79. data/lib/rex/io/bidirectional_pipe.rb +0 -0
  80. data/lib/rex/io/datagram_abstraction.rb +0 -0
  81. data/lib/rex/io/stream.rb +13 -15
  82. data/lib/rex/io/stream_abstraction.rb +0 -0
  83. data/lib/rex/io/stream_server.rb +0 -0
  84. data/lib/rex/job_container.rb +10 -25
  85. data/lib/rex/logging.rb +0 -0
  86. data/lib/rex/logging/log_dispatcher.rb +0 -0
  87. data/lib/rex/logging/log_sink.rb +0 -0
  88. data/lib/rex/logging/sinks/flatfile.rb +0 -0
  89. data/lib/rex/logging/sinks/stderr.rb +0 -0
  90. data/lib/rex/machparsey.rb +0 -0
  91. data/lib/rex/machparsey/exceptions.rb +0 -0
  92. data/lib/rex/machparsey/mach.rb +1 -1
  93. data/lib/rex/machparsey/machbase.rb +0 -0
  94. data/lib/rex/machscan.rb +0 -0
  95. data/lib/rex/machscan/scanner.rb +0 -0
  96. data/lib/rex/mime.rb +0 -0
  97. data/lib/rex/mime/header.rb +0 -0
  98. data/lib/rex/mime/message.rb +0 -0
  99. data/lib/rex/mime/part.rb +0 -0
  100. data/lib/rex/nop/opty2.rb +0 -0
  101. data/lib/rex/nop/opty2.rb.ut.rb +0 -0
  102. data/lib/rex/nop/opty2_tables.rb +0 -0
  103. data/lib/rex/ole.rb +0 -0
  104. data/lib/rex/ole/clsid.rb +0 -0
  105. data/lib/rex/ole/difat.rb +0 -0
  106. data/lib/rex/ole/directory.rb +0 -0
  107. data/lib/rex/ole/direntry.rb +0 -0
  108. data/lib/rex/ole/fat.rb +0 -0
  109. data/lib/rex/ole/header.rb +0 -0
  110. data/lib/rex/ole/minifat.rb +0 -0
  111. data/lib/rex/ole/storage.rb +0 -0
  112. data/lib/rex/ole/stream.rb +0 -0
  113. data/lib/rex/ole/substorage.rb +0 -0
  114. data/lib/rex/ole/util.rb +0 -0
  115. data/lib/rex/parser/arguments.rb +0 -0
  116. data/lib/rex/parser/arguments.rb.ut.rb +0 -0
  117. data/lib/rex/parser/ini.rb +0 -0
  118. data/lib/rex/parser/ini.rb.ut.rb +0 -0
  119. data/lib/rex/parser/nexpose_xml.rb +0 -0
  120. data/lib/rex/parser/nmap_xml.rb +0 -0
  121. data/lib/rex/payloads.rb +0 -0
  122. data/lib/rex/payloads/win32.rb +0 -0
  123. data/lib/rex/payloads/win32/common.rb +0 -0
  124. data/lib/rex/payloads/win32/kernel.rb +0 -0
  125. data/lib/rex/payloads/win32/kernel/common.rb +0 -0
  126. data/lib/rex/payloads/win32/kernel/migration.rb +0 -0
  127. data/lib/rex/payloads/win32/kernel/recovery.rb +0 -0
  128. data/lib/rex/payloads/win32/kernel/stager.rb +26 -3
  129. data/lib/rex/peparsey.rb +0 -0
  130. data/lib/rex/peparsey/exceptions.rb +0 -0
  131. data/lib/rex/peparsey/pe.rb +0 -0
  132. data/lib/rex/peparsey/pe_memdump.rb +0 -0
  133. data/lib/rex/peparsey/pebase.rb +0 -0
  134. data/lib/rex/peparsey/section.rb +0 -0
  135. data/lib/rex/pescan.rb +0 -0
  136. data/lib/rex/pescan/analyze.rb +0 -0
  137. data/lib/rex/pescan/scanner.rb +0 -0
  138. data/lib/rex/pescan/search.rb +0 -0
  139. data/lib/rex/platforms.rb +0 -0
  140. data/lib/rex/platforms/windows.rb +0 -0
  141. data/lib/rex/poly.rb +0 -0
  142. data/lib/rex/poly/block.rb +0 -0
  143. data/lib/rex/poly/register.rb +0 -0
  144. data/lib/rex/poly/register/x86.rb +0 -0
  145. data/lib/rex/post.rb +0 -0
  146. data/lib/rex/post/dir.rb +0 -0
  147. data/lib/rex/post/file.rb +0 -0
  148. data/lib/rex/post/file_stat.rb +0 -0
  149. data/lib/rex/post/gen.pl +0 -0
  150. data/lib/rex/post/io.rb +0 -0
  151. data/lib/rex/post/meterpreter.rb +0 -0
  152. data/lib/rex/post/meterpreter/channel.rb +0 -0
  153. data/lib/rex/post/meterpreter/channel_container.rb +0 -0
  154. data/lib/rex/post/meterpreter/channels/pool.rb +0 -0
  155. data/lib/rex/post/meterpreter/channels/pools/file.rb +0 -0
  156. data/lib/rex/post/meterpreter/channels/pools/stream_pool.rb +0 -0
  157. data/lib/rex/post/meterpreter/channels/stream.rb +0 -0
  158. data/lib/rex/post/meterpreter/client.rb +0 -0
  159. data/lib/rex/post/meterpreter/client_core.rb +0 -0
  160. data/lib/rex/post/meterpreter/dependencies.rb +0 -0
  161. data/lib/rex/post/meterpreter/extension.rb +0 -0
  162. data/lib/rex/post/meterpreter/extensions/espia/espia.rb +0 -0
  163. data/lib/rex/post/meterpreter/extensions/espia/tlv.rb +0 -0
  164. data/lib/rex/post/meterpreter/extensions/incognito/incognito.rb +0 -0
  165. data/lib/rex/post/meterpreter/extensions/incognito/tlv.rb +0 -0
  166. data/lib/rex/post/meterpreter/extensions/priv/fs.rb +0 -0
  167. data/lib/rex/post/meterpreter/extensions/priv/passwd.rb +0 -0
  168. data/lib/rex/post/meterpreter/extensions/priv/priv.rb +0 -0
  169. data/lib/rex/post/meterpreter/extensions/priv/tlv.rb +0 -0
  170. data/lib/rex/post/meterpreter/extensions/railgun/api.rb +9303 -0
  171. data/lib/rex/post/meterpreter/extensions/railgun/api_constants.rb +38105 -0
  172. data/lib/rex/post/meterpreter/extensions/railgun/def_kernel32.rb +3678 -0
  173. data/lib/rex/post/meterpreter/extensions/railgun/railgun.rb +815 -0
  174. data/lib/rex/post/meterpreter/extensions/railgun/tlv.rb +54 -0
  175. data/lib/rex/post/meterpreter/extensions/sniffer/sniffer.rb +0 -0
  176. data/lib/rex/post/meterpreter/extensions/sniffer/tlv.rb +0 -0
  177. data/lib/rex/post/meterpreter/extensions/stdapi/constants.rb +0 -0
  178. data/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb +0 -0
  179. data/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +0 -0
  180. data/lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb +0 -0
  181. data/lib/rex/post/meterpreter/extensions/stdapi/fs/io.rb +0 -0
  182. data/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb +0 -0
  183. data/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb +0 -0
  184. data/lib/rex/post/meterpreter/extensions/stdapi/net/route.rb +0 -0
  185. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb +7 -7
  186. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb +21 -8
  187. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb +0 -0
  188. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/udp_channel.rb +33 -17
  189. data/lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb +0 -0
  190. data/lib/rex/post/meterpreter/extensions/stdapi/sys/config.rb +0 -0
  191. data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log.rb +0 -0
  192. data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log_subsystem/event_record.rb +0 -0
  193. data/lib/rex/post/meterpreter/extensions/stdapi/sys/power.rb +0 -0
  194. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process.rb +0 -0
  195. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/image.rb +0 -0
  196. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/io.rb +0 -0
  197. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/memory.rb +0 -0
  198. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/thread.rb +0 -0
  199. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry.rb +0 -0
  200. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb +0 -0
  201. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_value.rb +0 -0
  202. data/lib/rex/post/meterpreter/extensions/stdapi/sys/thread.rb +0 -0
  203. data/lib/rex/post/meterpreter/extensions/stdapi/tlv.rb +0 -0
  204. data/lib/rex/post/meterpreter/extensions/stdapi/ui.rb +0 -0
  205. data/lib/rex/post/meterpreter/inbound_packet_handler.rb +0 -0
  206. data/lib/rex/post/meterpreter/object_aliases.rb +0 -0
  207. data/lib/rex/post/meterpreter/packet.rb +0 -0
  208. data/lib/rex/post/meterpreter/packet_dispatcher.rb +0 -0
  209. data/lib/rex/post/meterpreter/packet_parser.rb +0 -0
  210. data/lib/rex/post/meterpreter/packet_response_waiter.rb +0 -0
  211. data/lib/rex/post/meterpreter/ui/console.rb +0 -0
  212. data/lib/rex/post/meterpreter/ui/console/command_dispatcher.rb +0 -0
  213. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +0 -0
  214. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/espia.rb +0 -0
  215. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/incognito.rb +0 -0
  216. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv.rb +0 -0
  217. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/elevate.rb +0 -0
  218. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/passwd.rb +0 -0
  219. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/timestomp.rb +0 -0
  220. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/railgun.rb +57 -0
  221. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/sniffer.rb +0 -0
  222. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi.rb +0 -0
  223. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/fs.rb +0 -0
  224. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb +0 -0
  225. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb +0 -0
  226. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/ui.rb +0 -0
  227. data/lib/rex/post/meterpreter/ui/console/interactive_channel.rb +0 -0
  228. data/lib/rex/post/permission.rb +0 -0
  229. data/lib/rex/post/process.rb +0 -0
  230. data/lib/rex/post/thread.rb +0 -0
  231. data/lib/rex/post/ui.rb +0 -0
  232. data/lib/rex/proto.rb +0 -0
  233. data/lib/rex/proto.rb.ts.rb +0 -0
  234. data/lib/rex/proto/dcerpc.rb +0 -0
  235. data/lib/rex/proto/dcerpc.rb.ts.rb +0 -0
  236. data/lib/rex/proto/dcerpc/client.rb +45 -44
  237. data/lib/rex/proto/dcerpc/exceptions.rb +0 -0
  238. data/lib/rex/proto/dcerpc/handle.rb +0 -0
  239. data/lib/rex/proto/dcerpc/handle.rb.ut.rb +0 -0
  240. data/lib/rex/proto/dcerpc/ndr.rb +0 -0
  241. data/lib/rex/proto/dcerpc/ndr.rb.ut.rb +0 -0
  242. data/lib/rex/proto/dcerpc/packet.rb +0 -0
  243. data/lib/rex/proto/dcerpc/packet.rb.ut.rb +0 -0
  244. data/lib/rex/proto/dcerpc/response.rb +32 -31
  245. data/lib/rex/proto/dcerpc/response.rb.ut.rb +0 -0
  246. data/lib/rex/proto/dcerpc/uuid.rb +0 -0
  247. data/lib/rex/proto/dcerpc/uuid.rb.ut.rb +0 -0
  248. data/lib/rex/proto/drda.rb +0 -0
  249. data/lib/rex/proto/drda.rb.ts.rb +0 -0
  250. data/lib/rex/proto/drda/constants.rb +0 -0
  251. data/lib/rex/proto/drda/constants.rb.ut.rb +0 -0
  252. data/lib/rex/proto/drda/packet.rb +0 -0
  253. data/lib/rex/proto/drda/packet.rb.ut.rb +0 -0
  254. data/lib/rex/proto/drda/utils.rb +0 -0
  255. data/lib/rex/proto/drda/utils.rb.ut.rb +0 -0
  256. data/lib/rex/proto/http.rb +0 -0
  257. data/lib/rex/proto/http.rb.ts.rb +0 -0
  258. data/lib/rex/proto/http/client.rb +1 -1
  259. data/lib/rex/proto/http/client.rb.ut.rb +0 -0
  260. data/lib/rex/proto/http/handler.rb +0 -0
  261. data/lib/rex/proto/http/handler/erb.rb +0 -0
  262. data/lib/rex/proto/http/handler/erb.rb.ut.rb +0 -0
  263. data/lib/rex/proto/http/handler/erb.rb.ut.rb.rhtml +0 -0
  264. data/lib/rex/proto/http/handler/proc.rb +0 -0
  265. data/lib/rex/proto/http/handler/proc.rb.ut.rb +0 -0
  266. data/lib/rex/proto/http/header.rb +0 -0
  267. data/lib/rex/proto/http/header.rb.ut.rb +0 -0
  268. data/lib/rex/proto/http/packet.rb +0 -0
  269. data/lib/rex/proto/http/packet.rb.ut.rb +0 -0
  270. data/lib/rex/proto/http/request.rb +0 -0
  271. data/lib/rex/proto/http/request.rb.ut.rb +0 -0
  272. data/lib/rex/proto/http/response.rb +0 -0
  273. data/lib/rex/proto/http/response.rb.ut.rb +0 -0
  274. data/lib/rex/proto/http/server.rb +0 -0
  275. data/lib/rex/proto/http/server.rb.ut.rb +0 -0
  276. data/lib/rex/proto/smb.rb +0 -0
  277. data/lib/rex/proto/smb.rb.ts.rb +0 -0
  278. data/lib/rex/proto/smb/client.rb +1 -1
  279. data/lib/rex/proto/smb/client.rb.ut.rb +0 -0
  280. data/lib/rex/proto/smb/constants.rb +0 -0
  281. data/lib/rex/proto/smb/constants.rb.ut.rb +0 -0
  282. data/lib/rex/proto/smb/crypt.rb +0 -0
  283. data/lib/rex/proto/smb/crypt.rb.ut.rb +0 -0
  284. data/lib/rex/proto/smb/evasions.rb +18 -17
  285. data/lib/rex/proto/smb/exceptions.rb +0 -0
  286. data/lib/rex/proto/smb/simpleclient.rb +0 -0
  287. data/lib/rex/proto/smb/simpleclient.rb.ut.rb +0 -0
  288. data/lib/rex/proto/smb/utils.rb +0 -0
  289. data/lib/rex/proto/smb/utils.rb.ut.rb +0 -0
  290. data/lib/rex/proto/sunrpc.rb +0 -0
  291. data/lib/rex/proto/sunrpc/client.rb +0 -0
  292. data/lib/rex/proto/tftp.rb +0 -0
  293. data/lib/rex/proto/tftp/constants.rb +0 -0
  294. data/lib/rex/proto/tftp/server.rb +212 -37
  295. data/lib/rex/script.rb +0 -0
  296. data/lib/rex/script/base.rb +0 -0
  297. data/lib/rex/script/meterpreter.rb +0 -0
  298. data/lib/rex/script/shell.rb +0 -0
  299. data/lib/rex/service.rb +0 -0
  300. data/lib/rex/service_manager.rb +0 -0
  301. data/lib/rex/service_manager.rb.ut.rb +0 -0
  302. data/lib/rex/services/local_relay.rb +0 -0
  303. data/lib/rex/socket.rb +25 -0
  304. data/lib/rex/socket.rb.ut.rb +0 -0
  305. data/lib/rex/socket/comm.rb +0 -0
  306. data/lib/rex/socket/comm/local.rb +0 -0
  307. data/lib/rex/socket/comm/local.rb.ut.rb +0 -0
  308. data/lib/rex/socket/ip.rb +0 -0
  309. data/lib/rex/socket/parameters.rb +0 -0
  310. data/lib/rex/socket/parameters.rb.ut.rb +0 -0
  311. data/lib/rex/socket/range_walker.rb +0 -0
  312. data/lib/rex/socket/range_walker.rb.ut.rb +0 -0
  313. data/lib/rex/socket/ssl_tcp.rb +0 -0
  314. data/lib/rex/socket/ssl_tcp.rb.ut.rb +0 -0
  315. data/lib/rex/socket/ssl_tcp_server.rb +0 -0
  316. data/lib/rex/socket/ssl_tcp_server.rb.ut.rb +0 -0
  317. data/lib/rex/socket/subnet_walker.rb +0 -0
  318. data/lib/rex/socket/subnet_walker.rb.ut.rb +0 -0
  319. data/lib/rex/socket/switch_board.rb +11 -5
  320. data/lib/rex/socket/switch_board.rb.ut.rb +0 -0
  321. data/lib/rex/socket/tcp.rb +0 -0
  322. data/lib/rex/socket/tcp.rb.ut.rb +0 -0
  323. data/lib/rex/socket/tcp_server.rb +0 -0
  324. data/lib/rex/socket/tcp_server.rb.ut.rb +0 -0
  325. data/lib/rex/socket/udp.rb +0 -0
  326. data/lib/rex/socket/udp.rb.ut.rb +0 -0
  327. data/lib/rex/struct2.rb +0 -0
  328. data/lib/rex/struct2/c_struct.rb +0 -0
  329. data/lib/rex/struct2/c_struct_template.rb +0 -0
  330. data/lib/rex/struct2/constant.rb +0 -0
  331. data/lib/rex/struct2/element.rb +0 -0
  332. data/lib/rex/struct2/generic.rb +0 -0
  333. data/lib/rex/struct2/restraint.rb +0 -0
  334. data/lib/rex/struct2/s_string.rb +0 -0
  335. data/lib/rex/struct2/s_struct.rb +0 -0
  336. data/lib/rex/sync.rb +0 -0
  337. data/lib/rex/sync/event.rb +0 -0
  338. data/lib/rex/sync/read_write_lock.rb +0 -0
  339. data/lib/rex/sync/ref.rb +0 -0
  340. data/lib/rex/sync/thread_safe.rb +0 -0
  341. data/lib/rex/test.rb +0 -0
  342. data/lib/rex/text.rb +15 -4
  343. data/lib/rex/text.rb.ut.rb +3 -0
  344. data/lib/rex/time.rb +0 -0
  345. data/lib/rex/transformer.rb +0 -0
  346. data/lib/rex/transformer.rb.ut.rb +0 -0
  347. data/lib/rex/ui.rb +0 -0
  348. data/lib/rex/ui/interactive.rb +0 -0
  349. data/lib/rex/ui/output.rb +0 -0
  350. data/lib/rex/ui/output/none.rb +0 -0
  351. data/lib/rex/ui/progress_tracker.rb +0 -0
  352. data/lib/rex/ui/subscriber.rb +0 -0
  353. data/lib/rex/ui/text/color.rb +0 -0
  354. data/lib/rex/ui/text/color.rb.ut.rb +0 -0
  355. data/lib/rex/ui/text/dispatcher_shell.rb +0 -0
  356. data/lib/rex/ui/text/input.rb +0 -0
  357. data/lib/rex/ui/text/input/buffer.rb +0 -0
  358. data/lib/rex/ui/text/input/readline.rb +0 -0
  359. data/lib/rex/ui/text/input/socket.rb +0 -0
  360. data/lib/rex/ui/text/input/stdio.rb +0 -0
  361. data/lib/rex/ui/text/irb_shell.rb +0 -0
  362. data/lib/rex/ui/text/output.rb +0 -0
  363. data/lib/rex/ui/text/output/buffer.rb +0 -0
  364. data/lib/rex/ui/text/output/file.rb +0 -0
  365. data/lib/rex/ui/text/output/socket.rb +0 -0
  366. data/lib/rex/ui/text/output/stdio.rb +0 -0
  367. data/lib/rex/ui/text/progress_tracker.rb +0 -0
  368. data/lib/rex/ui/text/progress_tracker.rb.ut.rb +0 -0
  369. data/lib/rex/ui/text/shell.rb +0 -0
  370. data/lib/rex/ui/text/table.rb +0 -0
  371. data/lib/rex/ui/text/table.rb.ut.rb +0 -0
  372. data/lib/rex/zip.rb +0 -0
  373. data/lib/rex/zip/archive.rb +0 -0
  374. data/lib/rex/zip/blocks.rb +0 -0
  375. data/lib/rex/zip/entry.rb +0 -0
  376. metadata +414 -347
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -23,15 +23,15 @@ require 'rex/proto/smb/exceptions'
23
23
  'read_timeout' => 10,
24
24
  'connect_timeout' => 5
25
25
  }
26
-
26
+
27
27
  self.options.merge!(useroptions)
28
-
28
+
29
29
  # If the caller passed us a smb_client object, use it and
30
30
  # and skip the connect/login/ipc$ stages of the setup
31
31
  if (self.options['smb_client'])
32
32
  self.smb = self.options['smb_client']
33
33
  end
34
-
34
+
35
35
  # we must have a valid handle, regardless of everything else
36
36
  raise ArgumentError, 'handle is not a Rex::Proto::DCERPC::Handle' if !self.handle.is_a?(Rex::Proto::DCERPC::Handle)
37
37
 
@@ -39,7 +39,7 @@ require 'rex/proto/smb/exceptions'
39
39
  if !self.options['no_socketsetup']
40
40
  self.socket_check()
41
41
  end
42
-
42
+
43
43
  raise ArgumentError, 'socket can not read' if !self.socket.respond_to?(:read)
44
44
  raise ArgumentError, 'socket can not write' if !self.socket.respond_to?(:write)
45
45
 
@@ -76,27 +76,27 @@ require 'rex/proto/smb/exceptions'
76
76
  def socket_setup()
77
77
  ctx = { 'Msf' => self.options['Msf'], 'MsfExploit' => self.options['MsfExploit'] }
78
78
  self.socket = case self.handle.protocol
79
-
79
+
80
80
  when 'ncacn_ip_tcp'
81
81
  Rex::Socket.create_tcp(
82
- 'PeerHost' => self.handle.address,
83
- 'PeerPort' => self.handle.options[0],
82
+ 'PeerHost' => self.handle.address,
83
+ 'PeerPort' => self.handle.options[0],
84
84
  'Context' => ctx,
85
85
  'Timeout' => self.options['connect_timeout']
86
86
  )
87
-
87
+
88
88
  when 'ncacn_np'
89
89
  begin
90
90
  socket = Rex::Socket.create_tcp(
91
- 'PeerHost' => self.handle.address,
92
- 'PeerPort' => 445,
93
- 'Context' => ctx,
91
+ 'PeerHost' => self.handle.address,
92
+ 'PeerPort' => 445,
93
+ 'Context' => ctx,
94
94
  'Timeout' => self.options['connect_timeout']
95
95
  )
96
- rescue Timeout::Error, Rex::ConnectionRefused
96
+ rescue ::Timeout::Error, Rex::ConnectionRefused
97
97
  socket = Rex::Socket.create_tcp(
98
- 'PeerHost' => self.handle.address,
99
- 'PeerPort' => 139,
98
+ 'PeerHost' => self.handle.address,
99
+ 'PeerPort' => 139,
100
100
  'Context' => ctx,
101
101
  'Timeout' => self.options['connect_timeout']
102
102
  )
@@ -124,27 +124,27 @@ require 'rex/proto/smb/exceptions'
124
124
  self.smb = smb
125
125
  self.smb.read_timeout = self.options['read_timeout']
126
126
  end
127
-
127
+
128
128
  f = self.smb.create_pipe(self.handle.options[0])
129
129
  f.mode = self.options['smb_pipeio']
130
130
  self.socket = f
131
131
  end
132
132
 
133
133
  def read()
134
-
134
+
135
135
  max_read = self.options['pipe_read_max_size'] || 1024*1024
136
136
  min_read = self.options['pipe_read_min_size'] || max_read
137
-
137
+
138
138
  raw_response = ''
139
-
140
- # Are we reading from a remote pipe over SMB?
139
+
140
+ # Are we reading from a remote pipe over SMB?
141
141
  if (self.socket.class == Rex::Proto::SMB::SimpleClient::OpenPipe)
142
142
  begin
143
-
143
+
144
144
  # Max SMB read is 65535, cap it at 64000
145
145
  max_read = [64000, max_read].min
146
146
  min_read = [64000, min_read].min
147
-
147
+
148
148
  read_limit = nil
149
149
 
150
150
  while(true)
@@ -156,7 +156,7 @@ require 'rex/proto/smb/exceptions'
156
156
  read_cnt = raw_response.length - read_limit
157
157
  end
158
158
  end
159
-
159
+
160
160
  data = self.socket.read( read_cnt, rand(1024)+1)
161
161
  break if !(data and data.length > 0)
162
162
  raw_response += data
@@ -168,25 +168,24 @@ require 'rex/proto/smb/exceptions'
168
168
  # if we have read enough data. Once we have the length value, we need to make sure
169
169
  # that we don't read beyond this amount, or it can screw up the SMB state
170
170
  if (not read_limit)
171
- begin
171
+ begin
172
172
  check = Rex::Proto::DCERPC::Response.new(raw_response)
173
173
  read_limit = check.frag_len
174
174
  rescue ::Rex::Proto::DCERPC::Exceptions::InvalidPacket
175
175
  end
176
176
  end
177
-
178
- break if (read_limit and read_limit == raw_response.length)
177
+ break if (read_limit and read_limit <= raw_response.length)
179
178
  end
180
-
179
+
181
180
  rescue Rex::Proto::SMB::Exceptions::NoReply
182
181
  # I don't care if I didn't get a reply...
183
182
  rescue Rex::Proto::SMB::Exceptions::ErrorCode => exception
184
- if exception.error_code != 0xC000014B
183
+ if exception.error_code != 0xC000014B
185
184
  raise exception
186
185
  end
187
186
  end
188
187
  # This must be a regular TCP or UDP socket
189
- else
188
+ else
190
189
  if (self.socket.type? == 'tcp')
191
190
  if (false and max_read)
192
191
  while (true)
@@ -195,7 +194,7 @@ require 'rex/proto/smb/exceptions'
195
194
  break if not data.length
196
195
  raw_response << data
197
196
  end
198
- else
197
+ else
199
198
  # Just read the entire response in one go
200
199
  raw_response = self.socket.get_once(-1, self.options['read_timeout'])
201
200
  end
@@ -211,14 +210,14 @@ require 'rex/proto/smb/exceptions'
211
210
  # Write data to the underlying socket, limiting the sizes of the writes based on
212
211
  # the pipe_write_min / pipe_write_max options.
213
212
  def write(data)
214
-
213
+
215
214
  max_write = self.options['pipe_write_max_size'] || data.length
216
215
  min_write = self.options['pipe_write_min_size'] || max_write
217
-
216
+
218
217
  if(min_write > max_write)
219
218
  max_write = min_write
220
219
  end
221
-
220
+
222
221
  idx = 0
223
222
 
224
223
  if (self.socket.class == Rex::Proto::SMB::SimpleClient::OpenPipe)
@@ -239,16 +238,16 @@ require 'rex/proto/smb/exceptions'
239
238
  bind = ''
240
239
  context = ''
241
240
  if self.options['fake_multi_bind']
242
-
241
+
243
242
  args = [ self.handle.uuid[0], self.handle.uuid[1] ]
244
-
243
+
245
244
  if (self.options['fake_multi_bind_prepend'])
246
245
  args << self.options['fake_multi_bind_prepend']
247
246
  end
248
-
247
+
249
248
  if (self.options['fake_multi_bind_append'])
250
249
  args << self.options['fake_multi_bind_append']
251
- end
250
+ end
252
251
 
253
252
  bind, context = Rex::Proto::DCERPC::Packet.make_bind_fake_multi(*args)
254
253
  else
@@ -259,6 +258,7 @@ require 'rex/proto/smb/exceptions'
259
258
 
260
259
  self.write(bind)
261
260
  raw_response = self.read()
261
+
262
262
  response = Rex::Proto::DCERPC::Response.new(raw_response)
263
263
  self.last_response = response
264
264
  if response.type == 12 or response.type == 15
@@ -266,7 +266,7 @@ require 'rex/proto/smb/exceptions'
266
266
  raise "Could not bind to #{self.handle}"
267
267
  end
268
268
  self.context = context
269
- else
269
+ else
270
270
  raise "Could not bind to #{self.handle}"
271
271
  end
272
272
  end
@@ -294,15 +294,15 @@ require 'rex/proto/smb/exceptions'
294
294
  raw_response = ''
295
295
 
296
296
  begin
297
- raw_response = self.read()
297
+ raw_response = self.read()
298
298
  rescue ::EOFError
299
299
  raise Rex::Proto::DCERPC::Exceptions::NoResponse
300
300
  end
301
301
 
302
302
  if (raw_response == nil or raw_response.length == 0)
303
303
  raise Rex::Proto::DCERPC::Exceptions::NoResponse
304
- end
305
-
304
+ end
305
+
306
306
 
307
307
  self.last_response = Rex::Proto::DCERPC::Response.new(raw_response)
308
308
 
@@ -311,7 +311,7 @@ require 'rex/proto/smb/exceptions'
311
311
  e.fault = self.last_response.status
312
312
  raise e
313
313
  end
314
-
314
+
315
315
  self.last_response.stub_data
316
316
  end
317
317
 
@@ -324,10 +324,10 @@ require 'rex/proto/smb/exceptions'
324
324
  if (! data or data.length() < 10)
325
325
  return
326
326
  end
327
-
327
+
328
328
  # Pass the first 10 bytes to the constructor
329
329
  resp = Rex::Proto::DCERPC::Response.new(data.slice!(0, 10))
330
-
330
+
331
331
  # Something went wrong in the parser...
332
332
  if (! resp.frag_len)
333
333
  return resp
@@ -351,8 +351,9 @@ require 'rex/proto/smb/exceptions'
351
351
  resp.parse(data)
352
352
  return resp
353
353
  end
354
-
354
+
355
355
  end
356
356
  end
357
357
  end
358
358
  end
359
+
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -10,10 +10,10 @@ class Response
10
10
  attr_accessor :flags, :data_rep, :call_id, :max_frag_xmit, :max_frag_recv
11
11
  attr_accessor :assoc_group, :sec_addr_len, :sec_addr, :num_results
12
12
  attr_accessor :nack_reason, :xfer_syntax_uuid, :xfer_syntax_vers
13
- attr_accessor :ack_reason, :ack_result, :ack_xfer_syntax_uuid, :ack_xfer_syntax_vers
13
+ attr_accessor :ack_reason, :ack_result, :ack_xfer_syntax_uuid, :ack_xfer_syntax_vers
14
14
  attr_accessor :alloc_hint, :context_id, :cancel_cnt, :status, :stub_data
15
15
  attr_accessor :raw
16
-
16
+
17
17
  # Create a new DCERPC::Response object
18
18
  # This can be initialized in two ways:
19
19
  # 1) Call .new() with the first 10 bytes of packet, then call parse on the rest
@@ -23,39 +23,39 @@ class Response
23
23
  self.ack_result = []
24
24
  self.ack_reason = []
25
25
  self.ack_xfer_syntax_uuid = []
26
- self.ack_xfer_syntax_vers = []
27
-
26
+ self.ack_xfer_syntax_vers = []
27
+
28
28
  if (! data or data.length < 10)
29
29
  raise Rex::Proto::DCERPC::Exceptions::InvalidPacket, 'DCERPC response packet is incomplete'
30
30
  end
31
-
31
+
32
32
  if (data.length == 10)
33
33
  self.frag_len = data[8,2].unpack('v')[0]
34
34
  self.raw = data
35
35
  end
36
-
36
+
37
37
  if (data.length > 10)
38
38
  self.raw = data
39
39
  self.parse
40
40
  end
41
41
  end
42
-
42
+
43
43
  # Parse the contents of a DCERPC response packet and fill out all the fields
44
44
  def parse(body = '')
45
45
  self.raw = self.raw + body
46
46
  self.type = self.raw[2,1].unpack('C')[0]
47
-
47
+
48
48
  uuid = Rex::Proto::DCERPC::UUID
49
49
  data = self.raw
50
-
51
-
50
+
51
+
52
52
  if(not data)
53
53
  raise Rex::Proto::DCERPC::Exceptions::InvalidPacket, 'DCERPC response packet is incomplete'
54
54
  end
55
-
55
+
56
56
  # BIND_ACK == 12, ALTER_CONTEXT_RESP == 15
57
57
  if (self.type == 12 or self.type == 15)
58
-
58
+
59
59
  # Decode most of the DCERPC header
60
60
  self.vers_major,
61
61
  self.vers_minor,
@@ -74,16 +74,16 @@ class Response
74
74
  if(not self.frag_len or data.length < self.frag_len)
75
75
  raise Rex::Proto::DCERPC::Exceptions::InvalidPacket, 'DCERPC response packet is incomplete'
76
76
  end
77
-
77
+
78
78
  # Keep an offset into the packet handy
79
79
  x = 0
80
-
80
+
81
81
  # XXX This is still somewhat broken (4 digit ports)
82
82
  self.sec_addr = data[26, self.sec_addr_len]
83
-
83
+
84
84
  # Move the pointer into the packet forward
85
85
  x += 26 + self.sec_addr_len
86
-
86
+
87
87
  # Align the pointer on a dword boundary
88
88
  while (x % 4 != 0)
89
89
  x += 1
@@ -91,13 +91,13 @@ class Response
91
91
 
92
92
  # Figure out how many results we have (multiple-context binds)
93
93
  self.num_results = data[ x, 4 ].unpack('V')[0]
94
-
94
+
95
95
  # Move the pointer to the ack_result[0] offset
96
96
  x += 4
97
97
 
98
98
  # Initialize the ack_result index
99
99
  ack = 0
100
-
100
+
101
101
  # Scan through all results and add them to the result arrays
102
102
  while ack < self.num_results
103
103
  self.ack_result[ack] = data[ x + 0, 2 ].unpack('v')[0]
@@ -107,13 +107,13 @@ class Response
107
107
  x += 24
108
108
  ack += 1
109
109
  end
110
-
110
+
111
111
  # End of BIND_ACK || ALTER_CONTEXT_RESP
112
112
  end
113
113
 
114
114
  # BIND_NACK == 13
115
115
  if (self.type == 13)
116
-
116
+
117
117
  # Decode most of the DCERPC header
118
118
  self.vers_major,
119
119
  self.vers_minor,
@@ -124,11 +124,11 @@ class Response
124
124
  self.auth_len,
125
125
  self.call_id,
126
126
  self.nack_reason = data.unpack('CCCCNvvVv')
127
- end
128
-
127
+ end
128
+
129
129
  # RESPONSE == 2
130
130
  if (self.type == 2)
131
-
131
+
132
132
  # Decode the DCERPC response header
133
133
  self.vers_major,
134
134
  self.vers_minor,
@@ -141,7 +141,7 @@ class Response
141
141
  self.alloc_hint,
142
142
  self.context_id,
143
143
  self.cancel_cnt = data.unpack('CCCCNvvVVvC')
144
-
144
+
145
145
  # Error out if the whole header was not read
146
146
  if !(self.alloc_hint and self.context_id and self.cancel_cnt)
147
147
  raise Rex::Proto::DCERPC::Exceptions::InvalidPacket, 'DCERPC response packet is incomplete'
@@ -150,11 +150,11 @@ class Response
150
150
  # Put the application data into self.stub_data
151
151
  self.stub_data = data[data.length - self.alloc_hint, 0xffff]
152
152
  # End of RESPONSE
153
- end
153
+ end
154
154
 
155
155
  # FAULT == 3
156
156
  if (self.type == 3)
157
-
157
+
158
158
  # Decode the DCERPC response header
159
159
  self.vers_major,
160
160
  self.vers_minor,
@@ -169,14 +169,14 @@ class Response
169
169
  self.cancel_cnt,
170
170
  trash,
171
171
  self.status = data.unpack('CCCCNvvVVvCCV')
172
-
172
+
173
173
  # Put the application data into self.stub_data
174
- self.stub_data = data[data.length - self.alloc_hint, 0xffff]
174
+ self.stub_data = data[data.length - self.alloc_hint, 0xffff]
175
175
  # End of FAULT
176
- end
177
-
176
+ end
177
+
178
178
  end
179
-
179
+
180
180
  protected
181
181
  # attr_accessor :raw
182
182
 
@@ -184,3 +184,4 @@ end
184
184
  end
185
185
  end
186
186
  end
187
+