librex 0.0.13 → 0.0.15

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 (435) hide show
  1. data/README.markdown +1 -1
  2. data/Rakefile +1 -0
  3. metadata +3 -435
  4. data/lib/rex/LICENSE +0 -29
  5. data/lib/rex/arch.rb +0 -103
  6. data/lib/rex/arch/sparc.rb +0 -75
  7. data/lib/rex/arch/sparc.rb.ut.rb +0 -18
  8. data/lib/rex/arch/x86.rb +0 -513
  9. data/lib/rex/arch/x86.rb.ut.rb +0 -93
  10. data/lib/rex/assembly/nasm.rb +0 -104
  11. data/lib/rex/assembly/nasm.rb.ut.rb +0 -22
  12. data/lib/rex/codepage.map +0 -104
  13. data/lib/rex/compat.rb +0 -311
  14. data/lib/rex/constants.rb +0 -113
  15. data/lib/rex/elfparsey.rb +0 -11
  16. data/lib/rex/elfparsey/elf.rb +0 -123
  17. data/lib/rex/elfparsey/elfbase.rb +0 -258
  18. data/lib/rex/elfparsey/exceptions.rb +0 -27
  19. data/lib/rex/elfscan.rb +0 -12
  20. data/lib/rex/elfscan/scanner.rb +0 -207
  21. data/lib/rex/elfscan/search.rb +0 -46
  22. data/lib/rex/encoder/alpha2.rb +0 -31
  23. data/lib/rex/encoder/alpha2/alpha_mixed.rb +0 -68
  24. data/lib/rex/encoder/alpha2/alpha_upper.rb +0 -79
  25. data/lib/rex/encoder/alpha2/generic.rb +0 -114
  26. data/lib/rex/encoder/alpha2/unicode_mixed.rb +0 -117
  27. data/lib/rex/encoder/alpha2/unicode_upper.rb +0 -129
  28. data/lib/rex/encoder/ndr.rb +0 -89
  29. data/lib/rex/encoder/ndr.rb.ut.rb +0 -44
  30. data/lib/rex/encoder/nonalpha.rb +0 -61
  31. data/lib/rex/encoder/nonupper.rb +0 -64
  32. data/lib/rex/encoder/xdr.rb +0 -106
  33. data/lib/rex/encoder/xdr.rb.ut.rb +0 -29
  34. data/lib/rex/encoder/xor.rb +0 -69
  35. data/lib/rex/encoder/xor/dword.rb +0 -13
  36. data/lib/rex/encoder/xor/dword_additive.rb +0 -13
  37. data/lib/rex/encoders/xor_dword.rb +0 -35
  38. data/lib/rex/encoders/xor_dword_additive.rb +0 -53
  39. data/lib/rex/encoders/xor_dword_additive.rb.ut.rb +0 -12
  40. data/lib/rex/encoding/xor.rb +0 -20
  41. data/lib/rex/encoding/xor.rb.ts.rb +0 -14
  42. data/lib/rex/encoding/xor/byte.rb +0 -15
  43. data/lib/rex/encoding/xor/byte.rb.ut.rb +0 -21
  44. data/lib/rex/encoding/xor/dword.rb +0 -21
  45. data/lib/rex/encoding/xor/dword.rb.ut.rb +0 -15
  46. data/lib/rex/encoding/xor/dword_additive.rb +0 -92
  47. data/lib/rex/encoding/xor/dword_additive.rb.ut.rb +0 -15
  48. data/lib/rex/encoding/xor/exceptions.rb +0 -17
  49. data/lib/rex/encoding/xor/generic.rb +0 -146
  50. data/lib/rex/encoding/xor/generic.rb.ut.rb +0 -120
  51. data/lib/rex/encoding/xor/qword.rb +0 -15
  52. data/lib/rex/encoding/xor/word.rb +0 -21
  53. data/lib/rex/encoding/xor/word.rb.ut.rb +0 -13
  54. data/lib/rex/exceptions.rb +0 -275
  55. data/lib/rex/exceptions.rb.ut.rb +0 -44
  56. data/lib/rex/exploitation/cmdstager.rb +0 -9
  57. data/lib/rex/exploitation/cmdstager/base.rb +0 -175
  58. data/lib/rex/exploitation/cmdstager/debug_asm.rb +0 -142
  59. data/lib/rex/exploitation/cmdstager/debug_write.rb +0 -136
  60. data/lib/rex/exploitation/cmdstager/tftp.rb +0 -63
  61. data/lib/rex/exploitation/cmdstager/vbs.rb +0 -128
  62. data/lib/rex/exploitation/egghunter.rb +0 -277
  63. data/lib/rex/exploitation/egghunter.rb.ut.rb +0 -25
  64. data/lib/rex/exploitation/encryptjs.rb +0 -77
  65. data/lib/rex/exploitation/heaplib.js.b64 +0 -331
  66. data/lib/rex/exploitation/heaplib.rb +0 -94
  67. data/lib/rex/exploitation/javascriptosdetect.rb +0 -897
  68. data/lib/rex/exploitation/obfuscatejs.rb +0 -335
  69. data/lib/rex/exploitation/omelet.rb +0 -320
  70. data/lib/rex/exploitation/omelet.rb.ut.rb +0 -13
  71. data/lib/rex/exploitation/opcodedb.rb +0 -818
  72. data/lib/rex/exploitation/opcodedb.rb.ut.rb +0 -279
  73. data/lib/rex/exploitation/seh.rb +0 -92
  74. data/lib/rex/exploitation/seh.rb.ut.rb +0 -19
  75. data/lib/rex/file.rb +0 -112
  76. data/lib/rex/file.rb.ut.rb +0 -16
  77. data/lib/rex/image_source.rb +0 -12
  78. data/lib/rex/image_source/disk.rb +0 -60
  79. data/lib/rex/image_source/image_source.rb +0 -46
  80. data/lib/rex/image_source/memory.rb +0 -37
  81. data/lib/rex/io/bidirectional_pipe.rb +0 -157
  82. data/lib/rex/io/datagram_abstraction.rb +0 -35
  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 -93
  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 -131
  133. data/lib/rex/parser/nmap_xml.rb +0 -121
  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 -9
  323. data/lib/rex/proto/ntlm/message.rb +0 -533
  324. data/lib/rex/proto/ntlm/utils.rb +0 -763
  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 -67
  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 -1149
  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 -254
  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,75 +0,0 @@
1
- # Copyright (c) 2010, patrickHVE@googlemail.com
2
- # All rights reserved.
3
- #
4
- # Redistribution and use in source and binary forms, with or without
5
- # modification, are permitted provided that the following conditions are met:
6
- # * Redistributions of source code must retain the above copyright
7
- # notice, this list of conditions and the following disclaimer.
8
- # * Redistributions in binary form must reproduce the above copyright
9
- # notice, this list of conditions and the following disclaimer in the
10
- # documentation and/or other materials provided with the distribution.
11
- # * The names of the author may not be used to endorse or promote products
12
- # derived from this software without specific prior written permission.
13
- #
14
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15
- # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16
- # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17
- # DISCLAIMED. IN NO EVENT SHALL patrickHVE@googlemail.com BE LIABLE FOR ANY
18
- # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19
- # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21
- # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23
- # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
-
25
- module Rex
26
- module Post
27
- module Meterpreter
28
- module Extensions
29
- module Stdapi
30
- module Railgun
31
-
32
- #
33
- # Manages our library of windows constants
34
- #
35
- class WinConstManager
36
-
37
- def initialize(initial_consts = {})
38
- @consts = {}
39
-
40
- initial_consts.each_pair do |name, value|
41
- add_const(name, value)
42
- end
43
-
44
- # Load utility
45
- end
46
-
47
- def add_const(name, value)
48
- @consts[name] = value
49
- end
50
-
51
- # parses a string constaining constants and returns an integer
52
- # the string can be either "CONST" or "CONST1 | CONST2"
53
- #
54
- # this function will NOT throw an exception but return "nil" if it can't parse a string
55
- def parse(s)
56
- if s.class != String
57
- return nil # it's not even a string'
58
- end
59
- return_value = 0
60
- for one_const in s.split('|')
61
- one_const = one_const.strip()
62
- if not @consts.has_key? one_const
63
- return nil # at least one "Constant" is unknown to us
64
- end
65
- return_value |= @consts[one_const]
66
- end
67
- return return_value
68
- end
69
-
70
- def is_parseable(s)
71
- return parse(s) != nil
72
- end
73
- end
74
-
75
- end; end; end; end; end; end
@@ -1,103 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $:.unshift(File.join(File.dirname(__FILE__), '..', '..', '..','..','..','..','..', 'lib'))
4
-
5
- require 'rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager'
6
- require 'test/unit'
7
-
8
- module Rex
9
- module Post
10
- module Meterpreter
11
- module Extensions
12
- module Stdapi
13
- module Railgun
14
- class WinConstManager::UnitTest < Test::Unit::TestCase
15
- def test_is_parseable
16
- const_manager = WinConstManager.new
17
-
18
- first_key = 'SOME_NUMBER'
19
- second_key = 'SOME_OTHER_NUMBER'
20
- boolean_logic = first_key + ' | ' + second_key
21
-
22
- # XXX: Should check (un)parseability before adding constants too?
23
-
24
- const_manager.add_const(first_key, 43123)
25
- const_manager.add_const(second_key, 234)
26
-
27
- assert(const_manager.is_parseable(boolean_logic),
28
- "is_parseable should consider boolean logic statements parseable")
29
-
30
- assert(const_manager.is_parseable(first_key),
31
- "is_parseable should consider constants parseable")
32
-
33
- assert(! const_manager.is_parseable(5),
34
- "is_parseable should not consider non-string keys as parseable")
35
-
36
- assert(! const_manager.is_parseable('| FOO |'),
37
- "is_parseable should not consider malformed boolean expressions parseable")
38
- end
39
-
40
- def test_add_const
41
- target_key = 'VALID_KEY'
42
- target_value = 23
43
-
44
- const_manager = WinConstManager.new
45
-
46
- const_manager.add_const(target_key, target_value)
47
-
48
- assert_equal(target_value, const_manager.parse(target_key),
49
- "add_const should add a constant/value pair that can be trieved with parse")
50
-
51
- end
52
-
53
- def test_initialization
54
- target_key = 'VALID_KEY'
55
- target_value = 23
56
-
57
- const_manager = WinConstManager.new(target_key => target_value)
58
-
59
- assert_equal(target_value, const_manager.parse(target_key),
60
- "upon initialization, should add any provided constants.")
61
- end
62
-
63
- def test_parse
64
- target_key = 'VALID_KEY'
65
- target_value = 23
66
- invalid_key = 8
67
-
68
- const_manager = WinConstManager.new
69
-
70
- const_manager.add_const(target_key, target_value)
71
-
72
- assert_equal(target_value, const_manager.parse(target_key),
73
- "parse should retrieve the corresponding value when a key is provided")
74
-
75
- # From API: "should not throw an exception given an invalid key"
76
- assert_nothing_thrown do
77
- const_manager.parse(invalid_key)
78
- end
79
-
80
- assert_equal(nil, const_manager.parse(invalid_key),
81
- "parse should return nil when an invalid key is provided")
82
-
83
- x_key = 'X'
84
- x_value = 228
85
- y_key = 'Y'
86
- y_value = 15
87
-
88
- boolean_logic = x_key + ' | ' + y_key
89
- target_boolean_logic_result = x_value | y_value
90
-
91
- const_manager.add_const(x_key, x_value)
92
- const_manager.add_const(y_key, y_value)
93
-
94
- assert_equal(target_boolean_logic_result, const_manager.parse(boolean_logic),
95
- "parse should evaluate boolean expressions consisting of OR")
96
- end
97
- end
98
- end
99
- end
100
- end
101
- end
102
- end
103
- end
@@ -1,149 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rex/post/meterpreter/object_aliases'
4
- require 'rex/post/meterpreter/extension'
5
- require 'rex/post/meterpreter/extensions/stdapi/constants'
6
- require 'rex/post/meterpreter/extensions/stdapi/tlv'
7
- require 'rex/post/meterpreter/extensions/stdapi/fs/dir'
8
- require 'rex/post/meterpreter/extensions/stdapi/fs/file'
9
- require 'rex/post/meterpreter/extensions/stdapi/fs/file_stat'
10
- require 'rex/post/meterpreter/extensions/stdapi/net/config'
11
- require 'rex/post/meterpreter/extensions/stdapi/net/socket'
12
- require 'rex/post/meterpreter/extensions/stdapi/sys/config'
13
- require 'rex/post/meterpreter/extensions/stdapi/sys/process'
14
- require 'rex/post/meterpreter/extensions/stdapi/sys/registry'
15
- require 'rex/post/meterpreter/extensions/stdapi/sys/event_log'
16
- require 'rex/post/meterpreter/extensions/stdapi/sys/power'
17
- require 'rex/post/meterpreter/extensions/stdapi/railgun/railgun'
18
- require 'rex/post/meterpreter/extensions/stdapi/ui'
19
- require 'rex/post/meterpreter/extensions/stdapi/webcam/webcam'
20
-
21
- module Rex
22
- module Post
23
- module Meterpreter
24
- module Extensions
25
- module Stdapi
26
-
27
- ###
28
- #
29
- # Standard ruby interface to remote entities for meterpreter. It provides
30
- # basic access to files, network, system, and other properties of the remote
31
- # machine that are fairly universal.
32
- #
33
- ###
34
- class Stdapi < Extension
35
-
36
- #
37
- # Initializes an instance of the standard API extension.
38
- #
39
- def initialize(client)
40
- super(client, 'stdapi')
41
-
42
- # Alias the following things on the client object so that they
43
- # can be directly referenced
44
- client.register_extension_aliases(
45
- [
46
- {
47
- 'name' => 'fs',
48
- 'ext' => ObjectAliases.new(
49
- {
50
- 'dir' => self.dir,
51
- 'file' => self.file,
52
- 'filestat' => self.filestat
53
- })
54
- },
55
- {
56
- 'name' => 'sys',
57
- 'ext' => ObjectAliases.new(
58
- {
59
- 'config' => Sys::Config.new(client),
60
- 'process' => self.process,
61
- 'registry' => self.registry,
62
- 'eventlog' => self.eventlog,
63
- 'power' => self.power
64
- })
65
- },
66
- {
67
- 'name' => 'net',
68
- 'ext' => ObjectAliases.new(
69
- {
70
- 'config' => Rex::Post::Meterpreter::Extensions::Stdapi::Net::Config.new(client),
71
- 'socket' => Rex::Post::Meterpreter::Extensions::Stdapi::Net::Socket.new(client)
72
- })
73
- },
74
- {
75
- 'name' => 'railgun',
76
- 'ext' => Rex::Post::Meterpreter::Extensions::Stdapi::Railgun::Railgun.new(client)
77
- },
78
- {
79
- 'name' => 'webcam',
80
- 'ext' => Rex::Post::Meterpreter::Extensions::Stdapi::Webcam::Webcam.new(client)
81
- },
82
- {
83
- 'name' => 'ui',
84
- 'ext' => UI.new(client)
85
- }
86
-
87
- ])
88
- end
89
-
90
- #
91
- # Sets the client instance on a duplicated copy of the supplied class.
92
- #
93
- def brand(klass)
94
- klass = klass.dup
95
- klass.client = self.client
96
- return klass
97
- end
98
-
99
- #
100
- # Returns a copy of the Dir class.
101
- #
102
- def dir
103
- brand(Rex::Post::Meterpreter::Extensions::Stdapi::Fs::Dir)
104
- end
105
-
106
- #
107
- # Returns a copy of the File class.
108
- #
109
- def file
110
- brand(Rex::Post::Meterpreter::Extensions::Stdapi::Fs::File)
111
- end
112
-
113
- #
114
- # Returns a copy of the FileStat class.
115
- #
116
- def filestat
117
- brand(Rex::Post::Meterpreter::Extensions::Stdapi::Fs::FileStat)
118
- end
119
-
120
- #
121
- # Returns a copy of the Process class.
122
- #
123
- def process
124
- brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::Process)
125
- end
126
-
127
- #
128
- # Returns a copy of the Registry class.
129
- #
130
- def registry
131
- brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::Registry)
132
- end
133
-
134
- #
135
- # Returns a copy of the EventLog class.
136
- #
137
- def eventlog
138
- brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::EventLog)
139
- end
140
-
141
- #
142
- # Returns a copy of the Power class.
143
- #
144
- def power
145
- brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::Power)
146
- end
147
- end
148
-
149
- end; end; end; end; end
@@ -1,97 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rex/post/process'
4
- require 'rex/post/meterpreter/packet'
5
- require 'rex/post/meterpreter/client'
6
- require 'rex/post/meterpreter/extensions/stdapi/constants'
7
- require 'rex/post/meterpreter/extensions/stdapi/stdapi'
8
-
9
- module Rex
10
- module Post
11
- module Meterpreter
12
- module Extensions
13
- module Stdapi
14
- module Sys
15
-
16
- ###
17
- #
18
- # This class provides access to remote system configuration and information.
19
- #
20
- ###
21
- class Config
22
-
23
- def initialize(client)
24
- self.client = client
25
- end
26
-
27
- #
28
- # Returns the username that the remote side is running as.
29
- #
30
- def getuid
31
- request = Packet.create_request('stdapi_sys_config_getuid')
32
- response = client.send_request(request)
33
- return response.get_tlv_value(TLV_TYPE_USER_NAME)
34
- end
35
-
36
- #
37
- # Returns a hash of information about the remote computer.
38
- #
39
- def sysinfo
40
- request = Packet.create_request('stdapi_sys_config_sysinfo')
41
- response = client.send_request(request)
42
-
43
- {
44
- 'Computer' => response.get_tlv_value(TLV_TYPE_COMPUTER_NAME),
45
- 'OS' => response.get_tlv_value(TLV_TYPE_OS_NAME),
46
- 'Architecture' => response.get_tlv_value(TLV_TYPE_ARCHITECTURE),
47
- 'System Language' => response.get_tlv_value(TLV_TYPE_LANG_SYSTEM),
48
- }
49
- end
50
-
51
- #
52
- # Calls RevertToSelf on the remote machine.
53
- #
54
- def revert_to_self
55
- client.send_request(Packet.create_request('stdapi_sys_config_rev2self'))
56
- end
57
-
58
- #
59
- # Steals the primary token from a target process
60
- #
61
- def steal_token(pid)
62
- req = Packet.create_request('stdapi_sys_config_steal_token')
63
- req.add_tlv(TLV_TYPE_PID, pid.to_i)
64
- res = client.send_request(req)
65
- return res.get_tlv_value(TLV_TYPE_USER_NAME)
66
- end
67
-
68
- #
69
- # Drops any assumed token
70
- #
71
- def drop_token
72
- req = Packet.create_request('stdapi_sys_config_drop_token')
73
- res = client.send_request(req)
74
- return res.get_tlv_value(TLV_TYPE_USER_NAME)
75
- end
76
-
77
- #
78
- # Enables all possible privileges
79
- #
80
- def getprivs
81
- req = Packet.create_request('stdapi_sys_config_getprivs')
82
- ret = []
83
- res = client.send_request(req)
84
- res.each(TLV_TYPE_PRIVILEGE) do |p|
85
- ret << p.value
86
- end
87
- return ret
88
- end
89
-
90
- protected
91
-
92
- attr_accessor :client
93
-
94
- end
95
-
96
- end; end; end; end; end; end
97
-
@@ -1,192 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rex/post/process'
4
- require 'rex/post/meterpreter/packet'
5
- require 'rex/post/meterpreter/client'
6
- require 'rex/post/meterpreter/extensions/stdapi/constants'
7
- require 'rex/post/meterpreter/extensions/stdapi/stdapi'
8
- require 'rex/post/meterpreter/extensions/stdapi/sys/event_log_subsystem/event_record'
9
-
10
- module Rex
11
- module Post
12
- module Meterpreter
13
- module Extensions
14
- module Stdapi
15
- module Sys
16
-
17
- ###
18
- #
19
- # This class provides access to the Windows event log on the remote
20
- # machine.
21
- #
22
- ###
23
- class EventLog
24
-
25
- class << self
26
- attr_accessor :client
27
- end
28
-
29
- #
30
- # Opens the supplied event log.
31
- #
32
- #--
33
- # NOTE: should support UNCServerName sometime
34
- #++
35
- #
36
- def EventLog.open(name)
37
- request = Packet.create_request('stdapi_sys_eventlog_open')
38
-
39
- request.add_tlv(TLV_TYPE_EVENT_SOURCENAME, name);
40
-
41
- response = client.send_request(request)
42
-
43
- return self.new(response.get_tlv_value(TLV_TYPE_EVENT_HANDLE))
44
- end
45
-
46
- ##
47
- #
48
- # Event Log Instance Stuffs!
49
- #
50
- ##
51
-
52
- attr_accessor :handle # :nodoc:
53
- attr_accessor :client # :nodoc:
54
-
55
- public
56
-
57
- #
58
- # Initializes an instance of the eventlog manipulator.
59
- #
60
- def initialize(hand)
61
- self.client = self.class.client
62
- self.handle = hand
63
- ObjectSpace.define_finalizer( self, self.class.finalize(self.client, self.handle) )
64
- end
65
-
66
- def self.finalize(client,handle)
67
- proc { self.close(client,handle) }
68
- end
69
-
70
- #
71
- # Return the number of records in the event log.
72
- #
73
- def length
74
- request = Packet.create_request('stdapi_sys_eventlog_numrecords')
75
-
76
- request.add_tlv(TLV_TYPE_EVENT_HANDLE, self.handle);
77
-
78
- response = client.send_request(request)
79
-
80
- return response.get_tlv_value(TLV_TYPE_EVENT_NUMRECORDS)
81
- end
82
-
83
- #
84
- # the low level read function (takes flags, not hash, etc).
85
- #
86
- def _read(flags, offset = 0)
87
- request = Packet.create_request('stdapi_sys_eventlog_read')
88
-
89
- request.add_tlv(TLV_TYPE_EVENT_HANDLE, self.handle)
90
- request.add_tlv(TLV_TYPE_EVENT_READFLAGS, flags)
91
- request.add_tlv(TLV_TYPE_EVENT_RECORDOFFSET, offset)
92
-
93
- response = client.send_request(request)
94
-
95
- EventLogSubsystem::EventRecord.new(
96
- response.get_tlv_value(TLV_TYPE_EVENT_RECORDNUMBER),
97
- response.get_tlv_value(TLV_TYPE_EVENT_TIMEGENERATED),
98
- response.get_tlv_value(TLV_TYPE_EVENT_TIMEWRITTEN),
99
- response.get_tlv_value(TLV_TYPE_EVENT_ID),
100
- response.get_tlv_value(TLV_TYPE_EVENT_TYPE),
101
- response.get_tlv_value(TLV_TYPE_EVENT_CATEGORY),
102
- response.get_tlv_values(TLV_TYPE_EVENT_STRING),
103
- response.get_tlv_value(TLV_TYPE_EVENT_DATA)
104
- )
105
- end
106
-
107
- #
108
- # Read the eventlog forwards, meaning from oldest to newest.
109
- # Returns a EventRecord, and throws an exception after no more records.
110
- #
111
- def read_forwards
112
- _read(EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ)
113
- end
114
-
115
- #
116
- # Iterator for read_forwards.
117
- #
118
- def each_forwards
119
- begin
120
- loop do
121
- yield(read_forwards)
122
- end
123
- rescue ::Exception
124
- end
125
- end
126
-
127
- #
128
- # Read the eventlog backwards, meaning from newest to oldest.
129
- # Returns a EventRecord, and throws an exception after no more records.
130
- #
131
- def read_backwards
132
- _read(EVENTLOG_SEQUENTIAL_READ | EVENTLOG_BACKWARDS_READ)
133
- end
134
-
135
- #
136
- # Iterator for read_backwards.
137
- #
138
- def each_backwards
139
- begin
140
- loop do
141
- yield(read_backwards)
142
- end
143
- rescue ::Exception
144
- end
145
- end
146
-
147
- #
148
- # Return the record number of the oldest event (not necessarily 1).
149
- #
150
- def oldest
151
- request = Packet.create_request('stdapi_sys_eventlog_oldest')
152
-
153
- request.add_tlv(TLV_TYPE_EVENT_HANDLE, self.handle);
154
-
155
- response = client.send_request(request)
156
-
157
- return response.get_tlv_value(TLV_TYPE_EVENT_RECORDNUMBER)
158
- end
159
-
160
- #
161
- # Clear the specified event log (and return nil).
162
- #
163
- #--
164
- # I should eventually support BackupFile
165
- #++
166
- #
167
- def clear
168
- request = Packet.create_request('stdapi_sys_eventlog_clear')
169
-
170
- request.add_tlv(TLV_TYPE_EVENT_HANDLE, self.handle);
171
-
172
- response = client.send_request(request)
173
- return self
174
- end
175
-
176
- #
177
- # Close the event log
178
- #
179
- def self.close(client, handle)
180
- request = Packet.create_request('stdapi_sys_eventlog_close')
181
- request.add_tlv(TLV_TYPE_EVENT_HANDLE, handle);
182
- response = client.send_request(request, nil)
183
- return nil
184
- end
185
-
186
- # Instance method
187
- def close
188
- self.class.close(self.client, self.handle)
189
- end
190
- end
191
-
192
- end end end end end end