librex 0.0.17 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (435) hide show
  1. data/README.markdown +1 -1
  2. metadata +3 -436
  3. data/lib/rex/LICENSE +0 -29
  4. data/lib/rex/arch.rb +0 -103
  5. data/lib/rex/arch/sparc.rb +0 -75
  6. data/lib/rex/arch/sparc.rb.ut.rb +0 -18
  7. data/lib/rex/arch/x86.rb +0 -513
  8. data/lib/rex/arch/x86.rb.ut.rb +0 -93
  9. data/lib/rex/assembly/nasm.rb +0 -104
  10. data/lib/rex/assembly/nasm.rb.ut.rb +0 -22
  11. data/lib/rex/codepage.map +0 -104
  12. data/lib/rex/compat.rb +0 -311
  13. data/lib/rex/constants.rb +0 -113
  14. data/lib/rex/elfparsey.rb +0 -11
  15. data/lib/rex/elfparsey/elf.rb +0 -123
  16. data/lib/rex/elfparsey/elfbase.rb +0 -258
  17. data/lib/rex/elfparsey/exceptions.rb +0 -27
  18. data/lib/rex/elfscan.rb +0 -12
  19. data/lib/rex/elfscan/scanner.rb +0 -207
  20. data/lib/rex/elfscan/search.rb +0 -46
  21. data/lib/rex/encoder/alpha2.rb +0 -31
  22. data/lib/rex/encoder/alpha2/alpha_mixed.rb +0 -68
  23. data/lib/rex/encoder/alpha2/alpha_upper.rb +0 -79
  24. data/lib/rex/encoder/alpha2/generic.rb +0 -114
  25. data/lib/rex/encoder/alpha2/unicode_mixed.rb +0 -117
  26. data/lib/rex/encoder/alpha2/unicode_upper.rb +0 -129
  27. data/lib/rex/encoder/ndr.rb +0 -89
  28. data/lib/rex/encoder/ndr.rb.ut.rb +0 -44
  29. data/lib/rex/encoder/nonalpha.rb +0 -61
  30. data/lib/rex/encoder/nonupper.rb +0 -64
  31. data/lib/rex/encoder/xdr.rb +0 -106
  32. data/lib/rex/encoder/xdr.rb.ut.rb +0 -29
  33. data/lib/rex/encoder/xor.rb +0 -69
  34. data/lib/rex/encoder/xor/dword.rb +0 -13
  35. data/lib/rex/encoder/xor/dword_additive.rb +0 -13
  36. data/lib/rex/encoders/xor_dword.rb +0 -35
  37. data/lib/rex/encoders/xor_dword_additive.rb +0 -53
  38. data/lib/rex/encoders/xor_dword_additive.rb.ut.rb +0 -12
  39. data/lib/rex/encoding/xor.rb +0 -20
  40. data/lib/rex/encoding/xor.rb.ts.rb +0 -14
  41. data/lib/rex/encoding/xor/byte.rb +0 -15
  42. data/lib/rex/encoding/xor/byte.rb.ut.rb +0 -21
  43. data/lib/rex/encoding/xor/dword.rb +0 -21
  44. data/lib/rex/encoding/xor/dword.rb.ut.rb +0 -15
  45. data/lib/rex/encoding/xor/dword_additive.rb +0 -92
  46. data/lib/rex/encoding/xor/dword_additive.rb.ut.rb +0 -15
  47. data/lib/rex/encoding/xor/exceptions.rb +0 -17
  48. data/lib/rex/encoding/xor/generic.rb +0 -146
  49. data/lib/rex/encoding/xor/generic.rb.ut.rb +0 -120
  50. data/lib/rex/encoding/xor/qword.rb +0 -15
  51. data/lib/rex/encoding/xor/word.rb +0 -21
  52. data/lib/rex/encoding/xor/word.rb.ut.rb +0 -13
  53. data/lib/rex/exceptions.rb +0 -275
  54. data/lib/rex/exceptions.rb.ut.rb +0 -44
  55. data/lib/rex/exploitation/cmdstager.rb +0 -9
  56. data/lib/rex/exploitation/cmdstager/base.rb +0 -175
  57. data/lib/rex/exploitation/cmdstager/debug_asm.rb +0 -142
  58. data/lib/rex/exploitation/cmdstager/debug_write.rb +0 -136
  59. data/lib/rex/exploitation/cmdstager/tftp.rb +0 -63
  60. data/lib/rex/exploitation/cmdstager/vbs.rb +0 -128
  61. data/lib/rex/exploitation/egghunter.rb +0 -277
  62. data/lib/rex/exploitation/egghunter.rb.ut.rb +0 -25
  63. data/lib/rex/exploitation/encryptjs.rb +0 -77
  64. data/lib/rex/exploitation/heaplib.js.b64 +0 -331
  65. data/lib/rex/exploitation/heaplib.rb +0 -94
  66. data/lib/rex/exploitation/javascriptosdetect.rb +0 -897
  67. data/lib/rex/exploitation/obfuscatejs.rb +0 -335
  68. data/lib/rex/exploitation/omelet.rb +0 -320
  69. data/lib/rex/exploitation/omelet.rb.ut.rb +0 -13
  70. data/lib/rex/exploitation/opcodedb.rb +0 -818
  71. data/lib/rex/exploitation/opcodedb.rb.ut.rb +0 -279
  72. data/lib/rex/exploitation/seh.rb +0 -92
  73. data/lib/rex/exploitation/seh.rb.ut.rb +0 -19
  74. data/lib/rex/file.rb +0 -112
  75. data/lib/rex/file.rb.ut.rb +0 -16
  76. data/lib/rex/image_source.rb +0 -12
  77. data/lib/rex/image_source/disk.rb +0 -60
  78. data/lib/rex/image_source/image_source.rb +0 -46
  79. data/lib/rex/image_source/memory.rb +0 -37
  80. data/lib/rex/io/bidirectional_pipe.rb +0 -157
  81. data/lib/rex/io/datagram_abstraction.rb +0 -35
  82. data/lib/rex/io/ring_buffer.rb +0 -364
  83. data/lib/rex/io/stream.rb +0 -319
  84. data/lib/rex/io/stream_abstraction.rb +0 -197
  85. data/lib/rex/io/stream_server.rb +0 -211
  86. data/lib/rex/job_container.rb +0 -187
  87. data/lib/rex/logging.rb +0 -4
  88. data/lib/rex/logging/log_dispatcher.rb +0 -179
  89. data/lib/rex/logging/log_sink.rb +0 -42
  90. data/lib/rex/logging/sinks/flatfile.rb +0 -55
  91. data/lib/rex/logging/sinks/stderr.rb +0 -43
  92. data/lib/rex/machparsey.rb +0 -9
  93. data/lib/rex/machparsey/exceptions.rb +0 -34
  94. data/lib/rex/machparsey/mach.rb +0 -209
  95. data/lib/rex/machparsey/machbase.rb +0 -408
  96. data/lib/rex/machscan.rb +0 -9
  97. data/lib/rex/machscan/scanner.rb +0 -217
  98. data/lib/rex/mime.rb +0 -9
  99. data/lib/rex/mime/header.rb +0 -77
  100. data/lib/rex/mime/message.rb +0 -144
  101. data/lib/rex/mime/part.rb +0 -20
  102. data/lib/rex/nop/opty2.rb +0 -108
  103. data/lib/rex/nop/opty2.rb.ut.rb +0 -23
  104. data/lib/rex/nop/opty2_tables.rb +0 -300
  105. data/lib/rex/ole.rb +0 -205
  106. data/lib/rex/ole/clsid.rb +0 -47
  107. data/lib/rex/ole/difat.rb +0 -141
  108. data/lib/rex/ole/directory.rb +0 -231
  109. data/lib/rex/ole/direntry.rb +0 -240
  110. data/lib/rex/ole/docs/dependencies.txt +0 -8
  111. data/lib/rex/ole/docs/references.txt +0 -1
  112. data/lib/rex/ole/fat.rb +0 -99
  113. data/lib/rex/ole/header.rb +0 -204
  114. data/lib/rex/ole/minifat.rb +0 -77
  115. data/lib/rex/ole/propset.rb +0 -144
  116. data/lib/rex/ole/samples/create_ole.rb +0 -27
  117. data/lib/rex/ole/samples/dir.rb +0 -35
  118. data/lib/rex/ole/samples/dump_stream.rb +0 -34
  119. data/lib/rex/ole/samples/ole_info.rb +0 -23
  120. data/lib/rex/ole/storage.rb +0 -395
  121. data/lib/rex/ole/stream.rb +0 -53
  122. data/lib/rex/ole/substorage.rb +0 -49
  123. data/lib/rex/ole/util.rb +0 -157
  124. data/lib/rex/parser/arguments.rb +0 -97
  125. data/lib/rex/parser/arguments.rb.ut.rb +0 -67
  126. data/lib/rex/parser/ini.rb +0 -185
  127. data/lib/rex/parser/ini.rb.ut.rb +0 -29
  128. data/lib/rex/parser/ip360_aspl_xml.rb +0 -102
  129. data/lib/rex/parser/ip360_xml.rb +0 -97
  130. data/lib/rex/parser/nessus_xml.rb +0 -118
  131. data/lib/rex/parser/netsparker_xml.rb +0 -94
  132. data/lib/rex/parser/nexpose_xml.rb +0 -136
  133. data/lib/rex/parser/nmap_xml.rb +0 -137
  134. data/lib/rex/parser/retina_xml.rb +0 -109
  135. data/lib/rex/payloads.rb +0 -1
  136. data/lib/rex/payloads/win32.rb +0 -2
  137. data/lib/rex/payloads/win32/common.rb +0 -26
  138. data/lib/rex/payloads/win32/kernel.rb +0 -53
  139. data/lib/rex/payloads/win32/kernel/common.rb +0 -54
  140. data/lib/rex/payloads/win32/kernel/migration.rb +0 -12
  141. data/lib/rex/payloads/win32/kernel/recovery.rb +0 -50
  142. data/lib/rex/payloads/win32/kernel/stager.rb +0 -194
  143. data/lib/rex/peparsey.rb +0 -12
  144. data/lib/rex/peparsey/exceptions.rb +0 -32
  145. data/lib/rex/peparsey/pe.rb +0 -212
  146. data/lib/rex/peparsey/pe_memdump.rb +0 -63
  147. data/lib/rex/peparsey/pebase.rb +0 -1680
  148. data/lib/rex/peparsey/section.rb +0 -136
  149. data/lib/rex/pescan.rb +0 -13
  150. data/lib/rex/pescan/analyze.rb +0 -309
  151. data/lib/rex/pescan/scanner.rb +0 -206
  152. data/lib/rex/pescan/search.rb +0 -56
  153. data/lib/rex/platforms.rb +0 -1
  154. data/lib/rex/platforms/windows.rb +0 -51
  155. data/lib/rex/poly.rb +0 -132
  156. data/lib/rex/poly/block.rb +0 -477
  157. data/lib/rex/poly/register.rb +0 -100
  158. data/lib/rex/poly/register/x86.rb +0 -40
  159. data/lib/rex/post.rb +0 -8
  160. data/lib/rex/post/dir.rb +0 -51
  161. data/lib/rex/post/file.rb +0 -172
  162. data/lib/rex/post/file_stat.rb +0 -220
  163. data/lib/rex/post/gen.pl +0 -13
  164. data/lib/rex/post/io.rb +0 -182
  165. data/lib/rex/post/meterpreter.rb +0 -4
  166. data/lib/rex/post/meterpreter/channel.rb +0 -445
  167. data/lib/rex/post/meterpreter/channel_container.rb +0 -54
  168. data/lib/rex/post/meterpreter/channels/pool.rb +0 -160
  169. data/lib/rex/post/meterpreter/channels/pools/file.rb +0 -62
  170. data/lib/rex/post/meterpreter/channels/pools/stream_pool.rb +0 -103
  171. data/lib/rex/post/meterpreter/channels/stream.rb +0 -87
  172. data/lib/rex/post/meterpreter/client.rb +0 -364
  173. data/lib/rex/post/meterpreter/client_core.rb +0 -274
  174. data/lib/rex/post/meterpreter/dependencies.rb +0 -3
  175. data/lib/rex/post/meterpreter/extension.rb +0 -32
  176. data/lib/rex/post/meterpreter/extensions/espia/espia.rb +0 -58
  177. data/lib/rex/post/meterpreter/extensions/espia/tlv.rb +0 -16
  178. data/lib/rex/post/meterpreter/extensions/incognito/incognito.rb +0 -94
  179. data/lib/rex/post/meterpreter/extensions/incognito/tlv.rb +0 -21
  180. data/lib/rex/post/meterpreter/extensions/networkpug/networkpug.rb +0 -57
  181. data/lib/rex/post/meterpreter/extensions/networkpug/tlv.rb +0 -15
  182. data/lib/rex/post/meterpreter/extensions/priv/fs.rb +0 -118
  183. data/lib/rex/post/meterpreter/extensions/priv/passwd.rb +0 -61
  184. data/lib/rex/post/meterpreter/extensions/priv/priv.rb +0 -111
  185. data/lib/rex/post/meterpreter/extensions/priv/tlv.rb +0 -28
  186. data/lib/rex/post/meterpreter/extensions/sniffer/sniffer.rb +0 -101
  187. data/lib/rex/post/meterpreter/extensions/sniffer/tlv.rb +0 -26
  188. data/lib/rex/post/meterpreter/extensions/stdapi/constants.rb +0 -333
  189. data/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb +0 -282
  190. data/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +0 -266
  191. data/lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb +0 -103
  192. data/lib/rex/post/meterpreter/extensions/stdapi/fs/io.rb +0 -48
  193. data/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb +0 -144
  194. data/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb +0 -73
  195. data/lib/rex/post/meterpreter/extensions/stdapi/net/route.rb +0 -56
  196. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb +0 -137
  197. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb +0 -180
  198. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb +0 -167
  199. data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/udp_channel.rb +0 -208
  200. data/lib/rex/post/meterpreter/extensions/stdapi/railgun.rb.ts.rb +0 -6
  201. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb +0 -38106
  202. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb.ut.rb +0 -31
  203. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb +0 -47
  204. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb.ut.rb +0 -36
  205. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_advapi32.rb +0 -1818
  206. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_iphlpapi.rb +0 -96
  207. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_kernel32.rb +0 -3848
  208. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_netapi32.rb +0 -26
  209. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ntdll.rb +0 -153
  210. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_shell32.rb +0 -21
  211. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_user32.rb +0 -3169
  212. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ws2_32.rb +0 -599
  213. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb +0 -318
  214. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb +0 -100
  215. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb.ut.rb +0 -42
  216. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb +0 -148
  217. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb.ut.rb +0 -127
  218. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/multicall.rb +0 -309
  219. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb +0 -204
  220. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/tlv.rb +0 -51
  221. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/util.rb +0 -630
  222. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb +0 -75
  223. data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb +0 -103
  224. data/lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb +0 -149
  225. data/lib/rex/post/meterpreter/extensions/stdapi/sys/config.rb +0 -97
  226. data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log.rb +0 -192
  227. data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log_subsystem/event_record.rb +0 -41
  228. data/lib/rex/post/meterpreter/extensions/stdapi/sys/power.rb +0 -61
  229. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process.rb +0 -370
  230. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/image.rb +0 -129
  231. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/io.rb +0 -55
  232. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/memory.rb +0 -336
  233. data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/thread.rb +0 -141
  234. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry.rb +0 -279
  235. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb +0 -193
  236. data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_value.rb +0 -102
  237. data/lib/rex/post/meterpreter/extensions/stdapi/sys/thread.rb +0 -180
  238. data/lib/rex/post/meterpreter/extensions/stdapi/tlv.rb +0 -211
  239. data/lib/rex/post/meterpreter/extensions/stdapi/ui.rb +0 -227
  240. data/lib/rex/post/meterpreter/extensions/stdapi/webcam/webcam.rb +0 -63
  241. data/lib/rex/post/meterpreter/inbound_packet_handler.rb +0 -30
  242. data/lib/rex/post/meterpreter/object_aliases.rb +0 -83
  243. data/lib/rex/post/meterpreter/packet.rb +0 -688
  244. data/lib/rex/post/meterpreter/packet_dispatcher.rb +0 -431
  245. data/lib/rex/post/meterpreter/packet_parser.rb +0 -94
  246. data/lib/rex/post/meterpreter/packet_response_waiter.rb +0 -83
  247. data/lib/rex/post/meterpreter/ui/console.rb +0 -137
  248. data/lib/rex/post/meterpreter/ui/console/command_dispatcher.rb +0 -62
  249. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +0 -730
  250. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/espia.rb +0 -108
  251. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/incognito.rb +0 -241
  252. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/networkpug.rb +0 -231
  253. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv.rb +0 -61
  254. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/elevate.rb +0 -98
  255. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/passwd.rb +0 -51
  256. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/timestomp.rb +0 -132
  257. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/sniffer.rb +0 -187
  258. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi.rb +0 -65
  259. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/fs.rb +0 -442
  260. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb +0 -298
  261. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb +0 -486
  262. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/ui.rb +0 -315
  263. data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/webcam.rb +0 -157
  264. data/lib/rex/post/meterpreter/ui/console/interactive_channel.rb +0 -95
  265. data/lib/rex/post/permission.rb +0 -26
  266. data/lib/rex/post/process.rb +0 -57
  267. data/lib/rex/post/thread.rb +0 -57
  268. data/lib/rex/post/ui.rb +0 -52
  269. data/lib/rex/proto.rb +0 -13
  270. data/lib/rex/proto.rb.ts.rb +0 -8
  271. data/lib/rex/proto/dcerpc.rb +0 -6
  272. data/lib/rex/proto/dcerpc.rb.ts.rb +0 -9
  273. data/lib/rex/proto/dcerpc/client.rb +0 -361
  274. data/lib/rex/proto/dcerpc/client.rb.ut.rb +0 -491
  275. data/lib/rex/proto/dcerpc/exceptions.rb +0 -150
  276. data/lib/rex/proto/dcerpc/handle.rb +0 -47
  277. data/lib/rex/proto/dcerpc/handle.rb.ut.rb +0 -85
  278. data/lib/rex/proto/dcerpc/ndr.rb +0 -72
  279. data/lib/rex/proto/dcerpc/ndr.rb.ut.rb +0 -41
  280. data/lib/rex/proto/dcerpc/packet.rb +0 -253
  281. data/lib/rex/proto/dcerpc/packet.rb.ut.rb +0 -56
  282. data/lib/rex/proto/dcerpc/response.rb +0 -187
  283. data/lib/rex/proto/dcerpc/response.rb.ut.rb +0 -15
  284. data/lib/rex/proto/dcerpc/uuid.rb +0 -84
  285. data/lib/rex/proto/dcerpc/uuid.rb.ut.rb +0 -46
  286. data/lib/rex/proto/dhcp.rb +0 -7
  287. data/lib/rex/proto/dhcp/constants.rb +0 -33
  288. data/lib/rex/proto/dhcp/server.rb +0 -292
  289. data/lib/rex/proto/drda.rb +0 -5
  290. data/lib/rex/proto/drda.rb.ts.rb +0 -17
  291. data/lib/rex/proto/drda/constants.rb +0 -49
  292. data/lib/rex/proto/drda/constants.rb.ut.rb +0 -23
  293. data/lib/rex/proto/drda/packet.rb +0 -252
  294. data/lib/rex/proto/drda/packet.rb.ut.rb +0 -109
  295. data/lib/rex/proto/drda/utils.rb +0 -123
  296. data/lib/rex/proto/drda/utils.rb.ut.rb +0 -84
  297. data/lib/rex/proto/http.rb +0 -5
  298. data/lib/rex/proto/http.rb.ts.rb +0 -12
  299. data/lib/rex/proto/http/client.rb +0 -821
  300. data/lib/rex/proto/http/client.rb.ut.rb +0 -95
  301. data/lib/rex/proto/http/handler.rb +0 -46
  302. data/lib/rex/proto/http/handler/erb.rb +0 -128
  303. data/lib/rex/proto/http/handler/erb.rb.ut.rb +0 -21
  304. data/lib/rex/proto/http/handler/erb.rb.ut.rb.rhtml +0 -1
  305. data/lib/rex/proto/http/handler/proc.rb +0 -60
  306. data/lib/rex/proto/http/handler/proc.rb.ut.rb +0 -24
  307. data/lib/rex/proto/http/header.rb +0 -161
  308. data/lib/rex/proto/http/header.rb.ut.rb +0 -46
  309. data/lib/rex/proto/http/packet.rb +0 -407
  310. data/lib/rex/proto/http/packet.rb.ut.rb +0 -165
  311. data/lib/rex/proto/http/request.rb +0 -356
  312. data/lib/rex/proto/http/request.rb.ut.rb +0 -214
  313. data/lib/rex/proto/http/response.rb +0 -90
  314. data/lib/rex/proto/http/response.rb.ut.rb +0 -149
  315. data/lib/rex/proto/http/server.rb +0 -369
  316. data/lib/rex/proto/http/server.rb.ut.rb +0 -79
  317. data/lib/rex/proto/ntlm.rb +0 -7
  318. data/lib/rex/proto/ntlm.rb.ut.rb +0 -177
  319. data/lib/rex/proto/ntlm/base.rb +0 -326
  320. data/lib/rex/proto/ntlm/constants.rb +0 -74
  321. data/lib/rex/proto/ntlm/crypt.rb +0 -415
  322. data/lib/rex/proto/ntlm/exceptions.rb +0 -16
  323. data/lib/rex/proto/ntlm/message.rb +0 -536
  324. data/lib/rex/proto/ntlm/utils.rb +0 -764
  325. data/lib/rex/proto/proxy/socks4a.rb +0 -440
  326. data/lib/rex/proto/rfb.rb +0 -19
  327. data/lib/rex/proto/rfb.rb.ut.rb +0 -37
  328. data/lib/rex/proto/rfb/cipher.rb +0 -84
  329. data/lib/rex/proto/rfb/client.rb +0 -207
  330. data/lib/rex/proto/rfb/constants.rb +0 -52
  331. data/lib/rex/proto/smb.rb +0 -7
  332. data/lib/rex/proto/smb.rb.ts.rb +0 -8
  333. data/lib/rex/proto/smb/client.rb +0 -1952
  334. data/lib/rex/proto/smb/client.rb.ut.rb +0 -223
  335. data/lib/rex/proto/smb/constants.rb +0 -1047
  336. data/lib/rex/proto/smb/constants.rb.ut.rb +0 -18
  337. data/lib/rex/proto/smb/crypt.rb +0 -36
  338. data/lib/rex/proto/smb/evasions.rb +0 -66
  339. data/lib/rex/proto/smb/exceptions.rb +0 -858
  340. data/lib/rex/proto/smb/simpleclient.rb +0 -306
  341. data/lib/rex/proto/smb/simpleclient.rb.ut.rb +0 -128
  342. data/lib/rex/proto/smb/utils.rb +0 -103
  343. data/lib/rex/proto/smb/utils.rb.ut.rb +0 -20
  344. data/lib/rex/proto/sunrpc.rb +0 -1
  345. data/lib/rex/proto/sunrpc/client.rb +0 -195
  346. data/lib/rex/proto/tftp.rb +0 -12
  347. data/lib/rex/proto/tftp/constants.rb +0 -39
  348. data/lib/rex/proto/tftp/server.rb +0 -497
  349. data/lib/rex/proto/tftp/server.rb.ut.rb +0 -28
  350. data/lib/rex/script.rb +0 -42
  351. data/lib/rex/script/base.rb +0 -59
  352. data/lib/rex/script/meterpreter.rb +0 -15
  353. data/lib/rex/script/shell.rb +0 -9
  354. data/lib/rex/service.rb +0 -48
  355. data/lib/rex/service_manager.rb +0 -141
  356. data/lib/rex/service_manager.rb.ut.rb +0 -32
  357. data/lib/rex/services/local_relay.rb +0 -423
  358. data/lib/rex/socket.rb +0 -684
  359. data/lib/rex/socket.rb.ut.rb +0 -107
  360. data/lib/rex/socket/comm.rb +0 -119
  361. data/lib/rex/socket/comm/local.rb +0 -412
  362. data/lib/rex/socket/comm/local.rb.ut.rb +0 -75
  363. data/lib/rex/socket/ip.rb +0 -130
  364. data/lib/rex/socket/parameters.rb +0 -345
  365. data/lib/rex/socket/parameters.rb.ut.rb +0 -51
  366. data/lib/rex/socket/range_walker.rb +0 -346
  367. data/lib/rex/socket/range_walker.rb.ut.rb +0 -55
  368. data/lib/rex/socket/ssl_tcp.rb +0 -184
  369. data/lib/rex/socket/ssl_tcp.rb.ut.rb +0 -39
  370. data/lib/rex/socket/ssl_tcp_server.rb +0 -122
  371. data/lib/rex/socket/ssl_tcp_server.rb.ut.rb +0 -61
  372. data/lib/rex/socket/subnet_walker.rb +0 -75
  373. data/lib/rex/socket/subnet_walker.rb.ut.rb +0 -28
  374. data/lib/rex/socket/switch_board.rb +0 -278
  375. data/lib/rex/socket/switch_board.rb.ut.rb +0 -52
  376. data/lib/rex/socket/tcp.rb +0 -76
  377. data/lib/rex/socket/tcp.rb.ut.rb +0 -64
  378. data/lib/rex/socket/tcp_server.rb +0 -66
  379. data/lib/rex/socket/tcp_server.rb.ut.rb +0 -44
  380. data/lib/rex/socket/udp.rb +0 -164
  381. data/lib/rex/socket/udp.rb.ut.rb +0 -44
  382. data/lib/rex/struct2.rb +0 -5
  383. data/lib/rex/struct2/c_struct.rb +0 -181
  384. data/lib/rex/struct2/c_struct_template.rb +0 -39
  385. data/lib/rex/struct2/constant.rb +0 -26
  386. data/lib/rex/struct2/element.rb +0 -44
  387. data/lib/rex/struct2/generic.rb +0 -73
  388. data/lib/rex/struct2/restraint.rb +0 -54
  389. data/lib/rex/struct2/s_string.rb +0 -72
  390. data/lib/rex/struct2/s_struct.rb +0 -111
  391. data/lib/rex/sync.rb +0 -6
  392. data/lib/rex/sync/event.rb +0 -94
  393. data/lib/rex/sync/read_write_lock.rb +0 -176
  394. data/lib/rex/sync/ref.rb +0 -57
  395. data/lib/rex/sync/thread_safe.rb +0 -82
  396. data/lib/rex/test.rb +0 -35
  397. data/lib/rex/text.rb +0 -1163
  398. data/lib/rex/text.rb.ut.rb +0 -190
  399. data/lib/rex/thread_factory.rb +0 -42
  400. data/lib/rex/time.rb +0 -65
  401. data/lib/rex/transformer.rb +0 -115
  402. data/lib/rex/transformer.rb.ut.rb +0 -38
  403. data/lib/rex/ui.rb +0 -21
  404. data/lib/rex/ui/interactive.rb +0 -298
  405. data/lib/rex/ui/output.rb +0 -78
  406. data/lib/rex/ui/output/none.rb +0 -18
  407. data/lib/rex/ui/progress_tracker.rb +0 -96
  408. data/lib/rex/ui/subscriber.rb +0 -149
  409. data/lib/rex/ui/text/color.rb +0 -97
  410. data/lib/rex/ui/text/color.rb.ut.rb +0 -18
  411. data/lib/rex/ui/text/dispatcher_shell.rb +0 -467
  412. data/lib/rex/ui/text/input.rb +0 -117
  413. data/lib/rex/ui/text/input/buffer.rb +0 -75
  414. data/lib/rex/ui/text/input/readline.rb +0 -129
  415. data/lib/rex/ui/text/input/socket.rb +0 -95
  416. data/lib/rex/ui/text/input/stdio.rb +0 -45
  417. data/lib/rex/ui/text/irb_shell.rb +0 -57
  418. data/lib/rex/ui/text/output.rb +0 -80
  419. data/lib/rex/ui/text/output/buffer.rb +0 -61
  420. data/lib/rex/ui/text/output/file.rb +0 -43
  421. data/lib/rex/ui/text/output/socket.rb +0 -43
  422. data/lib/rex/ui/text/output/stdio.rb +0 -40
  423. data/lib/rex/ui/text/progress_tracker.rb +0 -56
  424. data/lib/rex/ui/text/progress_tracker.rb.ut.rb +0 -34
  425. data/lib/rex/ui/text/shell.rb +0 -328
  426. data/lib/rex/ui/text/table.rb +0 -279
  427. data/lib/rex/ui/text/table.rb.ut.rb +0 -55
  428. data/lib/rex/zip.rb +0 -93
  429. data/lib/rex/zip/archive.rb +0 -184
  430. data/lib/rex/zip/blocks.rb +0 -182
  431. data/lib/rex/zip/entry.rb +0 -104
  432. data/lib/rex/zip/samples/comment.rb +0 -32
  433. data/lib/rex/zip/samples/mkwar.rb +0 -138
  434. data/lib/rex/zip/samples/mkzip.rb +0 -19
  435. data/lib/rex/zip/samples/recursive.rb +0 -58
@@ -1,150 +0,0 @@
1
- module Rex
2
- module Proto
3
- module DCERPC
4
- module Exceptions
5
-
6
- class Error < ::RuntimeError
7
-
8
- @@errors = {
9
- 0x00000000 => "stub-defined",
10
- 0x00000001 => "nca_s_fault_other",
11
- 0x00000005 => "nca_s_fault_access_denied",
12
- 0x000006d8 => "nca_s_fault_cant_perform",
13
- 0x000006f7 => "nca_s_fault_ndr",
14
- 0x16c9a001 => "rpc_s_op_rng_error",
15
- 0x16c9a006 => "rpc_s_wrong_boot_time",
16
- 0x16c9a012 => "rpc_s_no_memory",
17
- 0x16c9a016 => "rpc_s_comm_failure",
18
- 0x16c9a01b => "rpc_s_fault_object_not_found",
19
- 0x16c9a02c => "rpc_s_unknown_if",
20
- 0x16c9a02d => "rpc_s_unsupported_type",
21
- 0x16c9a030 => "rpc_s_cancel_timeout",
22
- 0x16c9a031 => "rpc_s_call_cancelled",
23
- 0x16c9a036 => "rpc_s_connection_closed",
24
- 0x16c9a041 => "rpc_s_connect_timed_out",
25
- 0x16c9a042 => "rpc_s_connect_rejected",
26
- 0x16c9a043 => "rpc_s_network_unreachable",
27
- 0x16c9a044 => "rpc_s_connect_no_resources",
28
- 0x16c9a045 => "rpc_s_rem_network_shutdown",
29
- 0x16c9a046 => "rpc_s_too_many_rem_connects",
30
- 0x16c9a047 => "rpc_s_no_rem_endpoint",
31
- 0x16c9a048 => "rpc_s_rem_host_down",
32
- 0x16c9a049 => "rpc_s_host_unreachable",
33
- 0x16c9a04a => "rpc_s_access_control_info_inv",
34
- 0x16c9a04b => "rpc_s_loc_connect_aborted",
35
- 0x16c9a04c => "rpc_s_connect_closed_by_rem",
36
- 0x16c9a04d => "rpc_s_rem_host_crashed",
37
- 0x16c9a074 => "rpc_s_fault_addr_error",
38
- 0x16c9a075 => "rpc_s_fault_context_mismatch",
39
- 0x16c9a076 => "rpc_s_fault_fp_div_by_zero",
40
- 0x16c9a077 => "rpc_s_fault_fp_error",
41
- 0x16c9a078 => "rpc_s_fault_fp_overflow",
42
- 0x16c9a079 => "rpc_s_fault_fp_underflow",
43
- 0x16c9a07a => "rpc_s_fault_ill_inst",
44
- 0x16c9a07b => "rpc_s_fault_int_div_by_zero",
45
- 0x16c9a07c => "rpc_s_fault_int_overflow",
46
- 0x16c9a07d => "rpc_s_fault_invalid_bound",
47
- 0x16c9a07e => "rpc_s_fault_invalid_tag",
48
- 0x16c9a07f => "rpc_s_fault_pipe_closed",
49
- 0x16c9a080 => "rpc_s_fault_pipe_comm_error",
50
- 0x16c9a081 => "rpc_s_fault_pipe_discipline",
51
- 0x16c9a082 => "rpc_s_fault_pipe_empty",
52
- 0x16c9a083 => "rpc_s_fault_pipe_memory",
53
- 0x16c9a084 => "rpc_s_fault_pipe_order",
54
- 0x16c9a085 => "rpc_s_fault_remote_comm_failure",
55
- 0x16c9a086 => "rpc_s_fault_remote_no_memory",
56
- 0x16c9a087 => "rpc_s_fault_unspec",
57
- 0x16c9a0a8 => "rpc_s_no_ns_permission",
58
- 0x16c9a0b5 => "rpc_s_no_more_bindings",
59
- 0x16c9a113 => "rpc_s_fault_user_defined",
60
- 0x16c9a116 => "rpc_s_fault_tx_open_failed",
61
- 0x16c9a16e => "rpc_s_fault_codeset_conv_error",
62
- 0x16c9a170 => "rpc_s_fault_no_client_stub",
63
- 0x1c000001 => "nca_s_fault_int_div_by_zero",
64
- 0x1c000002 => "nca_s_fault_addr_error",
65
- 0x1c000003 => "nca_s_fault_fp_div_zero",
66
- 0x1c000004 => "nca_s_fault_fp_underflow",
67
- 0x1c000005 => "nca_s_fault_fp_overflow",
68
- 0x1c000006 => "nca_s_fault_invalid_tag",
69
- 0x1c000007 => "nca_s_fault_invalid_bound",
70
- 0x1c000008 => "nca_rpc_version_mismatch",
71
- 0x1c000009 => "nca_unspec_reject",
72
- 0x1c00000a => "nca_s_bad_actid",
73
- 0x1c00000b => "nca_who_are_you_failed",
74
- 0x1c00000c => "nca_manager_not_entered",
75
- 0x1c00000d => "nca_s_fault_cancel",
76
- 0x1c00000e => "nca_s_fault_ill_inst",
77
- 0x1c00000f => "nca_s_fault_fp_error",
78
- 0x1c000010 => "nca_s_fault_int_overflow",
79
- 0x1c000014 => "nca_s_fault_pipe_empty",
80
- 0x1c000015 => "nca_s_fault_pipe_closed",
81
- 0x1c000016 => "nca_s_fault_pipe_order",
82
- 0x1c000017 => "nca_s_fault_pipe_discipline",
83
- 0x1c000018 => "nca_s_fault_pipe_comm_error",
84
- 0x1c000019 => "nca_s_fault_pipe_memory",
85
- 0x1c00001a => "nca_s_fault_context_mismatch",
86
- 0x1c00001b => "nca_s_fault_remote_no_memory",
87
- 0x1c00001c => "nca_invalid_pres_context_id",
88
- 0x1c00001d => "nca_unsupported_authn_level",
89
- 0x1c00001f => "nca_invalid_checksum",
90
- 0x1c000020 => "nca_invalid_crc",
91
- 0x1c000021 => "ncs_s_fault_user_defined",
92
- 0x1c000022 => "nca_s_fault_tx_open_failed",
93
- 0x1c000023 => "nca_s_fault_codeset_conv_error",
94
- 0x1c000024 => "nca_s_fault_object_not_found",
95
- 0x1c000025 => "nca_s_fault_no_client_stub",
96
- 0x1c010002 => "nca_op_rng_error",
97
- 0x1c010003 => "nca_unk_if",
98
- 0x1c010006 => "nca_wrong_boot_time",
99
- 0x1c010009 => "nca_s_you_crashed",
100
- 0x1c01000b => "nca_proto_error",
101
- 0x1c010013 => "nca_out_args_too_big",
102
- 0x1c010014 => "nca_server_too_busy",
103
- 0x1c010017 => "nca_unsupported_type"
104
- }
105
-
106
- def initialize(*args)
107
- super(*args)
108
- end
109
-
110
- # returns an error string if it exists, otherwise just the error code
111
- def get_error(error)
112
- string = ''
113
- if @@errors[error]
114
- string = @@errors[error]
115
- else
116
- string = sprintf('0x%.8x',error)
117
- end
118
- end
119
- end
120
-
121
- class Fault < Error
122
- attr_accessor :fault
123
- def to_s
124
- 'DCERPC FAULT => ' + get_error(self.fault)
125
- end
126
- end
127
-
128
- class NoResponse < Error
129
- def to_s
130
- 'no response from dcerpc service'
131
- end
132
- end
133
-
134
- class InvalidPacket < Error
135
- def initialize(message = nil)
136
- @message = message
137
- end
138
-
139
- def to_s
140
- str = 'Invalid packet.'
141
- if (@message)
142
- str += " #{@message}"
143
- end
144
- end
145
- end
146
-
147
- end
148
- end
149
- end
150
- end
@@ -1,47 +0,0 @@
1
- module Rex
2
- module Proto
3
- module DCERPC
4
- class Handle
5
-
6
- require 'rex/proto/dcerpc/uuid'
7
-
8
- @@protocols = ['ncacn_ip_tcp', 'ncacn_ip_udp', 'ncacn_np', 'ncacn_http']
9
- attr_accessor :uuid, :protocol, :address, :options
10
-
11
- # instantiate a handle object, akin to Microsoft's string binding handle by values
12
- def initialize(uuid, protocol, address, options)
13
- raise ArgumentError if !Rex::Proto
14
- raise ArgumentError if !Rex::Proto::DCERPC::UUID.is?(uuid[0])
15
- raise ArgumentError if !@@protocols.include?(protocol)
16
- self.uuid = uuid
17
- self.protocol = protocol
18
- self.address = address
19
- self.options = options
20
- end
21
-
22
- # instantiate a handle object, by parsing a string binding handle
23
- def self.parse (handle)
24
- uuid_re = '[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}'
25
- rev_re = '\d+.\d+'
26
- proto_re = '(?:' + @@protocols.join('|') + ')'
27
- re = Regexp.new("(#{uuid_re}):(#{rev_re})\@(#{proto_re}):(.*?)\\[(.*)\\]$", true, 'n')
28
- match = re.match(handle)
29
- raise ArgumentError if !match
30
-
31
- uuid = [match[1], match[2]]
32
- protocol = match[3]
33
- address = match[4]
34
- options = match[5].split(',')
35
- i = Rex::Proto::DCERPC::Handle.new(uuid, protocol, address, options)
36
- return i
37
- end
38
-
39
- # stringify a handle
40
- def to_s
41
- self.uuid.join(':') + '@' + self.protocol + ':' + self.address + '[' + self.options.join(', ') + ']'
42
- end
43
-
44
- end
45
- end
46
- end
47
- end
@@ -1,85 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $:.unshift(File.join(File.dirname(__FILE__), '..', '..', '..'))
4
-
5
- require 'rex/test'
6
- require 'rex/exceptions'
7
- require 'rex/proto/dcerpc/handle'
8
-
9
- class Rex::Proto::DCERPC::Handle::UnitTest < Test::Unit::TestCase
10
- Klass = Rex::Proto::DCERPC::Handle
11
-
12
- def test_ncacn_np
13
- uuid = ['6bffd098-a112-3610-9833-46c3f87e345a', '1.0']
14
- protocol = 'ncacn_np'
15
- host = '1.2.3.4'
16
- options = ['\wkssvc']
17
- i = Klass.new(uuid, protocol, host, options)
18
- assert(i, 'new')
19
- assert_equal('6bffd098-a112-3610-9833-46c3f87e345a:1.0@ncacn_np:1.2.3.4[\wkssvc]', i.to_s, 'as string')
20
- assert_equal(uuid, i.uuid, 'uuid')
21
- assert_equal(protocol, i.protocol, 'protocol')
22
- assert_equal(options, i.options, 'options')
23
- end
24
-
25
- def test_ncacn_ip_tcp
26
- uuid = ['6bffd098-a112-3610-9833-46c3f87e345a', '1.0']
27
- protocol = 'ncacn_ip_tcp'
28
- host = '1.2.3.4'
29
- options = [80]
30
- i = Klass.new(uuid, protocol, host, options)
31
- assert(i, 'new')
32
- assert_equal('6bffd098-a112-3610-9833-46c3f87e345a:1.0@ncacn_ip_tcp:1.2.3.4[80]', i.to_s, 'as string')
33
- assert_equal(uuid, i.uuid, 'uuid')
34
- assert_equal(protocol, i.protocol, 'protocol')
35
- assert_equal(options, i.options, 'options')
36
- end
37
-
38
- def test_ncacn_ip_udp
39
- uuid = ['6bffd098-a112-3610-9833-46c3f87e345a', '1.0']
40
- protocol = 'ncacn_ip_udp'
41
- host = '1.2.3.4'
42
- options = [80]
43
- i = Klass.new(uuid, protocol, host, options)
44
- assert(i, 'new')
45
- assert_equal('6bffd098-a112-3610-9833-46c3f87e345a:1.0@ncacn_ip_udp:1.2.3.4[80]', i.to_s, 'as string')
46
- assert_equal(uuid, i.uuid, 'uuid')
47
- assert_equal(protocol, i.protocol, 'protocol')
48
- assert_equal(options, i.options, 'options')
49
- end
50
-
51
- def test_ncacn_http
52
- uuid = ['6bffd098-a112-3610-9833-46c3f87e345a', '1.0']
53
- protocol = 'ncacn_http'
54
- host = '1.2.3.4'
55
- options = [80]
56
- i = Klass.new(uuid, protocol, host, options)
57
- assert(i, 'new')
58
- assert_equal(i.to_s, '6bffd098-a112-3610-9833-46c3f87e345a:1.0@ncacn_http:1.2.3.4[80]', 'as string')
59
- assert_equal(uuid, i.uuid, 'uuid')
60
- assert_equal(protocol, i.protocol, 'protocol')
61
- assert_equal(options, i.options, 'options')
62
- end
63
-
64
- def test_invalid
65
- assert_raise(Rex::ArgumentError, 'invalid uuid') { Klass.new(['a', '1.0'], 'ncacn_ip_tcp', '1.2.3.4', [80]) }
66
- assert_raise(Rex::ArgumentError, 'invalid uuid version') { Klass.new(['6bffnd098-a112-3610-9833-46c3f87e345a', 'b'], 'ncacn_ip_tcp', '1.2.3.4', [80]) }
67
- assert_raise(Rex::ArgumentError, 'invalid proto') { Klass.new(['6bffnd098-a112-3610-9833-46c3f87e345a', '1.0'], 'ncacn_ip_bmc', '1.2.3.4', [80]) }
68
- assert_raise(Rex::ArgumentError, 'invalid empty uuid') { Klass.new([nil, '1.0'], 'ncacn_ip_tcp', '1.2.3.4', [80]) }
69
- end
70
-
71
- def test_parser
72
- handle = '6bffd098-a112-3610-9833-46c3f87e345a:1.0@ncacn_ip_tcp:10.4.10.10[80]'
73
- i = Klass.parse( handle )
74
- assert(i)
75
- assert_equal(['6bffd098-a112-3610-9833-46c3f87e345a', '1.0'], i.uuid, 'uuid')
76
- assert_equal('ncacn_ip_tcp', i.protocol, 'protocol')
77
- assert_equal('10.4.10.10', i.address, 'address')
78
- assert_equal(['80'], i.options, 'options')
79
- end
80
-
81
- def test_parser_invalid
82
- handle = '6bffd098-a112-3610-9833-46c3f87e345a:1.0@ncacn_ip_tcp:10.4.10.10[80'
83
- assert_raise(Rex::ArgumentError, 'invalid handle (parser)') { Klass.parse(handle) }
84
- end
85
- end
@@ -1,72 +0,0 @@
1
- require "rex/text"
2
-
3
- module Rex
4
- module Proto
5
- module DCERPC
6
- class NDR
7
-
8
-
9
- # Provide padding to align the string to the 32bit boundary
10
- def self.align(string)
11
- warn 'should be using Rex::Encoder::NDR'
12
- return "\x00" * ((4 - (string.length & 3)) & 3)
13
- end
14
-
15
- # Encode a 4 byte long
16
- # use to encode:
17
- # long element_1;
18
- def self.long(string)
19
- warn 'should be using Rex::Encoder::NDR'
20
- return [string].pack('V')
21
- end
22
-
23
- # Encode a 2 byte short
24
- # use to encode:
25
- # short element_1;
26
- def self.short(string)
27
- warn 'should be using Rex::Encoder::NDR'
28
- return [string].pack('v')
29
- end
30
-
31
- # Encode a single byte
32
- # use to encode:
33
- # byte element_1;
34
- def self.byte(string)
35
- warn 'should be using Rex::Encoder::NDR'
36
- return [string].pack('c')
37
- end
38
-
39
- # Encode a byte array
40
- # use to encode:
41
- # char element_1
42
- def self.UniConformantArray(string)
43
- warn 'should be using Rex::Encoder::NDR'
44
- return long(string.length) + string + align(string)
45
- end
46
-
47
- # Encode a string
48
- # use to encode:
49
- # w_char *element_1;
50
- def self.UnicodeConformantVaryingString(string)
51
- warn 'should be using Rex::Encoder::NDR'
52
- string += "\x00" # null pad
53
- return long(string.length) + long(0) + long(string.length) + Rex::Text.to_unicode(string) + align(Rex::Text.to_unicode(string))
54
- end
55
-
56
- # Encode a string that is already unicode encoded
57
- # use to encode:
58
- # w_char *element_1;
59
- def self.UnicodeConformantVaryingStringPreBuilt(string)
60
- warn 'should be using Rex::Encoder::NDR'
61
- # if the string len is odd, thats bad!
62
- if string.length % 2 > 0
63
- string += "\x00"
64
- end
65
- len = string.length / 2;
66
- return long(len) + long(0) + long(len) + string + align(string)
67
- end
68
-
69
- end
70
- end
71
- end
72
- end
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $:.unshift(File.join(File.dirname(__FILE__), '..', '..', '..'))
4
-
5
- require 'rex/test'
6
- require 'rex/exceptions'
7
- require 'rex/proto/dcerpc/ndr'
8
-
9
- class Rex::Proto::DCERPC::NDR::UnitTest < Test::Unit::TestCase
10
-
11
- Klass = Rex::Proto::DCERPC::NDR
12
-
13
- def test_align
14
- assert_equal(0, Klass.align('').length, 'align 0')
15
- assert_equal(3, Klass.align('f').length, 'align 1')
16
- assert_equal(2, Klass.align('fo').length, 'align 2')
17
- assert_equal(1, Klass.align('foo').length, 'align 3')
18
- assert_equal(0, Klass.align('fooo').length, 'align 4')
19
- assert_equal(3, Klass.align('foooo').length, 'align 5')
20
- end
21
-
22
- def test_numbers
23
- assert_equal("\x0a\x00\x00\x00", Klass.long(10), 'long')
24
- assert_equal("\x0a\x00", Klass.short(10), 'short')
25
- assert_equal("\x0a", Klass.byte(10), 'byte')
26
- end
27
-
28
- def test_conformant_array
29
- assert_equal("\x05\x00\x00\x00aaaaa", Klass.UniConformantArray('aaaaa').slice(0,9), 'UniConformantArray')
30
- assert_equal(12, Klass.UniConformantArray('aaaaa').length, 'UniConformantArray length')
31
- end
32
-
33
- def test_conformant_string
34
- assert_equal("\x06\x00\x00\x00" + "\x00\x00\x00\x00" + "\x06\x00\x00\x00" "a\x00a\x00a\x00a\x00a\x00\x00\x00", Klass.UnicodeConformantVaryingString('aaaaa').slice(0,4+4+4+12), 'UniConformantVaryingString')
35
- assert_equal(24, Klass.UnicodeConformantVaryingString('aaaaa').length, 'UniConformantVaryingString length')
36
-
37
- assert_equal("\x02\x00\x00\x00" + "\x00\x00\x00\x00" + "\x02\x00\x00\x00" "aa\x00\x00", Klass.UnicodeConformantVaryingStringPreBuilt('aa' + "\x00\x00"), 'UniConformantVaryingStringPreBuilt')
38
- assert_equal(16, Klass.UnicodeConformantVaryingStringPreBuilt('aa' + "\x00\x00").length, 'UniConformantVaryingStringPreBuilt length')
39
- end
40
-
41
- end
@@ -1,253 +0,0 @@
1
- module Rex
2
- module Proto
3
- module DCERPC
4
- class Packet
5
-
6
- require 'rex/proto/dcerpc/uuid'
7
- require 'rex/proto/dcerpc/response'
8
- require 'rex/text'
9
-
10
- UUID = Rex::Proto::DCERPC::UUID
11
-
12
- # Create a standard DCERPC BIND request packet
13
- def self.make_bind(uuid, vers)
14
-
15
- # Process the version strings ("1.0", 1.0, "1", 1)
16
- bind_vers_maj, bind_vers_min = UUID.vers_to_nums(vers)
17
- xfer_vers_maj, xfer_vers_min = UUID.vers_to_nums(UUID.xfer_syntax_vers)
18
-
19
- # Create the bind request packet
20
- buff =
21
- [
22
- 5, # major version 5
23
- 0, # minor version 0
24
- 11, # bind type
25
- 3, # flags
26
- 0x10000000, # data representation
27
- 72, # frag length
28
- 0, # auth length
29
- 0, # call id
30
- 5840, # max xmit frag
31
- 5840, # max recv frag
32
- 0, # assoc group
33
- 1, # num ctx items
34
- 0, # context id
35
- 1, # num trans items
36
- UUID.uuid_pack(uuid), # interface uuid
37
- bind_vers_maj, # interface major version
38
- bind_vers_min, # interface minor version
39
- UUID.xfer_syntax_uuid, # transfer syntax
40
- xfer_vers_maj, # syntax major version
41
- xfer_vers_min, # syntax minor version
42
- ].pack('CCCCNvvVvvVVvvA16vvA16vv')
43
-
44
- return buff, 0
45
- end
46
-
47
- # Create an obfuscated DCERPC BIND request packet
48
- def self.make_bind_fake_multi(uuid, vers, bind_head=0, bind_tail=0)
49
-
50
- bind_head = rand(6)+10 if bind_head == 0
51
- bind_tail = rand(4)+1 if bind_head == 0
52
-
53
- u = Rex::Proto::DCERPC::UUID
54
-
55
- # Process the version strings ("1.0", 1.0, "1", 1)
56
- bind_vers_maj, bind_vers_min = UUID.vers_to_nums(vers)
57
- xfer_vers_maj, xfer_vers_min = UUID.vers_to_nums(UUID.xfer_syntax_vers)
58
-
59
- bind_total = bind_head + bind_tail + 1
60
- bind_size = (bind_total * 44) + 28
61
- real_ctx, ctx = 0, 0
62
-
63
- # Create the header of the bind request
64
- data =
65
- [
66
- 5, # major version 5
67
- 0, # minor version 0
68
- 11, # bind type
69
- 3, # flags
70
- 0x10000000, # data representation
71
- bind_size, # frag length
72
- 0, # auth length
73
- 0, # call id
74
- 5840, # max xmit frag
75
- 5840, # max recv frag
76
- 0, # assoc group
77
- bind_total, # num ctx items
78
- ].pack('CCCCNvvVvvVV')
79
-
80
- # Generate the fake UUIDs prior to the real one
81
- 1.upto(bind_head) do ||
82
- # Generate some random UUID and versions
83
- rand_uuid = Rex::Text.rand_text(16)
84
- rand_imaj = rand(6)
85
- rand_imin = rand(4)
86
-
87
- data +=
88
- [
89
- ctx, # context id
90
- 1, # num trans items
91
- rand_uuid, # interface uuid
92
- rand_imaj, # interface major version
93
- rand_imin, # interface minor version
94
- UUID.xfer_syntax_uuid, # transfer syntax
95
- xfer_vers_maj, # syntax major version
96
- xfer_vers_min, # syntax minor version
97
- ].pack('vvA16vvA16vv')
98
- ctx += 1
99
- end
100
-
101
- # Stuff the real UUID onto the end of the buffer
102
- real_ctx = ctx;
103
- data +=
104
- [
105
- ctx, # context id
106
- 1, # num trans items
107
- UUID.uuid_pack(uuid), # interface uuid
108
- bind_vers_maj, # interface major version
109
- bind_vers_min, # interface minor version
110
- UUID.xfer_syntax_uuid, # transfer syntax
111
- xfer_vers_maj, # syntax major version
112
- xfer_vers_min, # syntax minor version
113
- ].pack('vvA16vvA16vv')
114
- ctx += 1
115
-
116
-
117
- # Generate the fake UUIDs after the real one
118
- 1.upto(bind_tail) do ||
119
- # Generate some random UUID and versions
120
- rand_uuid = Rex::Text.rand_text(16)
121
- rand_imaj = rand(6)
122
- rand_imin = rand(4)
123
-
124
- data +=
125
- [
126
- ctx, # context id
127
- 1, # num trans items
128
- rand_uuid, # interface uuid
129
- rand_imaj, # interface major version
130
- rand_imin, # interface minor version
131
- UUID.xfer_syntax_uuid, # transfer syntax
132
- xfer_vers_maj, # syntax major version
133
- xfer_vers_min, # syntax minor version
134
- ].pack('vvA16vvA16vv')
135
- ctx += 1
136
- end
137
-
138
- # Return both the bind packet and the real context_id
139
- return data, real_ctx
140
- end
141
-
142
- # Create a standard DCERPC ALTER_CONTEXT request packet
143
- def self.make_alter_context(uuid, vers)
144
- u = Rex::Proto::DCERPC::UUID
145
-
146
- # Process the version strings ("1.0", 1.0, "1", 1)
147
- bind_vers_maj, bind_vers_min = UUID.vers_to_nums(vers)
148
- xfer_vers_maj, xfer_vers_min = UUID.vers_to_nums(UUID.xfer_syntax_vers)
149
-
150
- buff =
151
- [
152
- 5, # major version 5
153
- 0, # minor version 0
154
- 14, # alter context
155
- 3, # flags
156
- 0x10000000, # data representation
157
- 72, # frag length
158
- 0, # auth length
159
- 0, # call id
160
- 5840, # max xmit frag
161
- 5840, # max recv frag
162
- 0, # assoc group
163
- 1, # num ctx items
164
- 0, # context id
165
- 1, # num trans items
166
- UUID.uuid_pack(uuid), # interface uuid
167
- bind_vers_maj, # interface major version
168
- bind_vers_min, # interface minor version
169
- UUID.xfer_syntax_uuid, # transfer syntax
170
- xfer_vers_maj, # syntax major version
171
- xfer_vers_min, # syntax minor version
172
- ].pack('CCCCNvvVvvVVvvA16vvA16vv')
173
- end
174
-
175
-
176
- # Used to create a piece of a DCERPC REQUEST packet
177
- def self.make_request_chunk(flags=3, opnum=0, data="", ctx=0, object_id = '')
178
-
179
- dlen = data.length
180
- flen = dlen + 24
181
-
182
- use_object = 0
183
-
184
- object_str = ''
185
-
186
- if object_id.size > 0
187
- flags |= 0x80
188
- flen = flen + 16
189
- object_str = UUID.uuid_pack(object_id)
190
- end
191
-
192
- buff =
193
- [
194
- 5, # major version 5
195
- 0, # minor version 0
196
- 0, # request type
197
- flags, # flags
198
- 0x10000000, # data representation
199
- flen, # frag length
200
- 0, # auth length
201
- 0, # call id
202
- dlen, # alloc hint
203
- ctx, # context id
204
- opnum, # operation number
205
- ].pack('CCCCNvvVVvv') + object_str + data
206
- end
207
-
208
- # Used to create standard DCERPC REQUEST packet(s)
209
- def self.make_request(opnum=0, data="", size=data.length, ctx=0, object_id = '')
210
-
211
- if size > 4000
212
- size = 4000
213
- end
214
-
215
- chunks, frags = [], []
216
- ptr = 0
217
-
218
- # Break the request into fragments of 'size' bytes
219
- while ptr < data.length
220
- chunks.push( data[ ptr, size ] )
221
- ptr += size
222
- end
223
-
224
- # Process requests with no stub data
225
- if chunks.length == 0
226
- frags.push( make_request_chunk(3, opnum, '', ctx, object_id) )
227
- return frags
228
- end
229
-
230
- # Process requests with only one fragment
231
- if chunks.length == 1
232
- frags.push( make_request_chunk(3, opnum, chunks[0], ctx, object_id) )
233
- return frags
234
- end
235
-
236
- # Create the first fragment of the request
237
- frags.push( make_request_chunk(1, opnum, chunks.shift, ctx, object_id) )
238
-
239
- # Create all of the middle fragments
240
- while chunks.length != 1
241
- frags.push( make_request_chunk(0, opnum, chunks.shift, ctx, object_id) )
242
- end
243
-
244
- # Create the last fragment of the request
245
- frags.push( make_request_chunk(2, opnum, chunks.shift, ctx, object_id) )
246
-
247
- return frags
248
- end
249
-
250
- end
251
- end
252
- end
253
- end