librex 0.0.1
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.
- data/README +4 -0
- data/lib/rex.rb +101 -0
- data/lib/rex.rb.ts.rb +70 -0
- data/lib/rex/LICENSE +29 -0
- data/lib/rex/arch.rb +103 -0
- data/lib/rex/arch/sparc.rb +75 -0
- data/lib/rex/arch/sparc.rb.ut.rb +18 -0
- data/lib/rex/arch/x86.rb +513 -0
- data/lib/rex/arch/x86.rb.ut.rb +93 -0
- data/lib/rex/assembly/nasm.rb +100 -0
- data/lib/rex/assembly/nasm.rb.ut.rb +22 -0
- data/lib/rex/codepage.map +104 -0
- data/lib/rex/compat.rb +281 -0
- data/lib/rex/constants.rb +113 -0
- data/lib/rex/elfparsey.rb +11 -0
- data/lib/rex/elfparsey/elf.rb +123 -0
- data/lib/rex/elfparsey/elfbase.rb +260 -0
- data/lib/rex/elfparsey/exceptions.rb +27 -0
- data/lib/rex/elfscan.rb +12 -0
- data/lib/rex/elfscan/scanner.rb +207 -0
- data/lib/rex/elfscan/search.rb +46 -0
- data/lib/rex/encoder/alpha2.rb +31 -0
- data/lib/rex/encoder/alpha2/alpha_mixed.rb +68 -0
- data/lib/rex/encoder/alpha2/alpha_upper.rb +79 -0
- data/lib/rex/encoder/alpha2/generic.rb +113 -0
- data/lib/rex/encoder/alpha2/unicode_mixed.rb +117 -0
- data/lib/rex/encoder/alpha2/unicode_upper.rb +129 -0
- data/lib/rex/encoder/ndr.rb +89 -0
- data/lib/rex/encoder/ndr.rb.ut.rb +44 -0
- data/lib/rex/encoder/nonalpha.rb +61 -0
- data/lib/rex/encoder/nonupper.rb +64 -0
- data/lib/rex/encoder/xdr.rb +106 -0
- data/lib/rex/encoder/xdr.rb.ut.rb +29 -0
- data/lib/rex/encoder/xor.rb +69 -0
- data/lib/rex/encoder/xor/dword.rb +13 -0
- data/lib/rex/encoder/xor/dword_additive.rb +13 -0
- data/lib/rex/encoders/xor_dword.rb +35 -0
- data/lib/rex/encoders/xor_dword_additive.rb +53 -0
- data/lib/rex/encoders/xor_dword_additive.rb.ut.rb +12 -0
- data/lib/rex/encoding/xor.rb +20 -0
- data/lib/rex/encoding/xor.rb.ts.rb +14 -0
- data/lib/rex/encoding/xor/byte.rb +15 -0
- data/lib/rex/encoding/xor/byte.rb.ut.rb +21 -0
- data/lib/rex/encoding/xor/dword.rb +21 -0
- data/lib/rex/encoding/xor/dword.rb.ut.rb +15 -0
- data/lib/rex/encoding/xor/dword_additive.rb +92 -0
- data/lib/rex/encoding/xor/dword_additive.rb.ut.rb +15 -0
- data/lib/rex/encoding/xor/exceptions.rb +17 -0
- data/lib/rex/encoding/xor/generic.rb +146 -0
- data/lib/rex/encoding/xor/generic.rb.ut.rb +120 -0
- data/lib/rex/encoding/xor/qword.rb +15 -0
- data/lib/rex/encoding/xor/word.rb +21 -0
- data/lib/rex/encoding/xor/word.rb.ut.rb +13 -0
- data/lib/rex/exceptions.rb +275 -0
- data/lib/rex/exceptions.rb.ut.rb +44 -0
- data/lib/rex/exploitation/cmdstager.rb +133 -0
- data/lib/rex/exploitation/egghunter.rb +143 -0
- data/lib/rex/exploitation/egghunter.rb.ut.rb +25 -0
- data/lib/rex/exploitation/encryptjs.rb +77 -0
- data/lib/rex/exploitation/heaplib.js.b64 +331 -0
- data/lib/rex/exploitation/heaplib.rb +94 -0
- data/lib/rex/exploitation/javascriptosdetect.rb +735 -0
- data/lib/rex/exploitation/obfuscatejs.rb +335 -0
- data/lib/rex/exploitation/opcodedb.rb +818 -0
- data/lib/rex/exploitation/opcodedb.rb.ut.rb +279 -0
- data/lib/rex/exploitation/seh.rb +92 -0
- data/lib/rex/exploitation/seh.rb.ut.rb +19 -0
- data/lib/rex/file.rb +84 -0
- data/lib/rex/file.rb.ut.rb +16 -0
- data/lib/rex/image_source.rb +12 -0
- data/lib/rex/image_source/disk.rb +60 -0
- data/lib/rex/image_source/image_source.rb +46 -0
- data/lib/rex/image_source/memory.rb +37 -0
- data/lib/rex/io/bidirectional_pipe.rb +157 -0
- data/lib/rex/io/datagram_abstraction.rb +35 -0
- data/lib/rex/io/stream.rb +313 -0
- data/lib/rex/io/stream_abstraction.rb +186 -0
- data/lib/rex/io/stream_server.rb +211 -0
- data/lib/rex/job_container.rb +202 -0
- data/lib/rex/logging.rb +4 -0
- data/lib/rex/logging/log_dispatcher.rb +179 -0
- data/lib/rex/logging/log_sink.rb +42 -0
- data/lib/rex/logging/sinks/flatfile.rb +55 -0
- data/lib/rex/logging/sinks/stderr.rb +43 -0
- data/lib/rex/machparsey.rb +9 -0
- data/lib/rex/machparsey/exceptions.rb +34 -0
- data/lib/rex/machparsey/mach.rb +209 -0
- data/lib/rex/machparsey/machbase.rb +408 -0
- data/lib/rex/machscan.rb +9 -0
- data/lib/rex/machscan/scanner.rb +217 -0
- data/lib/rex/mime.rb +9 -0
- data/lib/rex/mime/header.rb +75 -0
- data/lib/rex/mime/message.rb +112 -0
- data/lib/rex/mime/part.rb +20 -0
- data/lib/rex/nop/opty2.rb +108 -0
- data/lib/rex/nop/opty2.rb.ut.rb +23 -0
- data/lib/rex/nop/opty2_tables.rb +300 -0
- data/lib/rex/ole.rb +128 -0
- data/lib/rex/ole/clsid.rb +47 -0
- data/lib/rex/ole/difat.rb +141 -0
- data/lib/rex/ole/directory.rb +230 -0
- data/lib/rex/ole/direntry.rb +240 -0
- data/lib/rex/ole/fat.rb +99 -0
- data/lib/rex/ole/header.rb +204 -0
- data/lib/rex/ole/minifat.rb +77 -0
- data/lib/rex/ole/samples/create_ole.rb +27 -0
- data/lib/rex/ole/samples/dir.rb +35 -0
- data/lib/rex/ole/samples/dump_stream.rb +34 -0
- data/lib/rex/ole/samples/ole_info.rb +23 -0
- data/lib/rex/ole/storage.rb +395 -0
- data/lib/rex/ole/stream.rb +53 -0
- data/lib/rex/ole/substorage.rb +49 -0
- data/lib/rex/ole/util.rb +157 -0
- data/lib/rex/parser/arguments.rb +97 -0
- data/lib/rex/parser/arguments.rb.ut.rb +67 -0
- data/lib/rex/parser/ini.rb +185 -0
- data/lib/rex/parser/ini.rb.ut.rb +29 -0
- data/lib/rex/parser/nmap_xml.rb +111 -0
- data/lib/rex/payloads.rb +1 -0
- data/lib/rex/payloads/win32.rb +2 -0
- data/lib/rex/payloads/win32/common.rb +26 -0
- data/lib/rex/payloads/win32/kernel.rb +53 -0
- data/lib/rex/payloads/win32/kernel/common.rb +54 -0
- data/lib/rex/payloads/win32/kernel/migration.rb +12 -0
- data/lib/rex/payloads/win32/kernel/recovery.rb +50 -0
- data/lib/rex/payloads/win32/kernel/stager.rb +171 -0
- data/lib/rex/peparsey.rb +12 -0
- data/lib/rex/peparsey/exceptions.rb +32 -0
- data/lib/rex/peparsey/pe.rb +188 -0
- data/lib/rex/peparsey/pe_memdump.rb +63 -0
- data/lib/rex/peparsey/pebase.rb +1655 -0
- data/lib/rex/peparsey/section.rb +136 -0
- data/lib/rex/pescan.rb +13 -0
- data/lib/rex/pescan/analyze.rb +309 -0
- data/lib/rex/pescan/scanner.rb +206 -0
- data/lib/rex/pescan/search.rb +56 -0
- data/lib/rex/platforms.rb +1 -0
- data/lib/rex/platforms/windows.rb +51 -0
- data/lib/rex/poly.rb +132 -0
- data/lib/rex/poly/block.rb +468 -0
- data/lib/rex/poly/register.rb +100 -0
- data/lib/rex/poly/register/x86.rb +40 -0
- data/lib/rex/post.rb +8 -0
- data/lib/rex/post/dir.rb +51 -0
- data/lib/rex/post/file.rb +172 -0
- data/lib/rex/post/file_stat.rb +220 -0
- data/lib/rex/post/gen.pl +13 -0
- data/lib/rex/post/io.rb +182 -0
- data/lib/rex/post/meterpreter.rb +4 -0
- data/lib/rex/post/meterpreter/channel.rb +438 -0
- data/lib/rex/post/meterpreter/channel_container.rb +54 -0
- data/lib/rex/post/meterpreter/channels/pool.rb +160 -0
- data/lib/rex/post/meterpreter/channels/pools/file.rb +62 -0
- data/lib/rex/post/meterpreter/channels/pools/stream_pool.rb +103 -0
- data/lib/rex/post/meterpreter/channels/stream.rb +87 -0
- data/lib/rex/post/meterpreter/client.rb +335 -0
- data/lib/rex/post/meterpreter/client_core.rb +274 -0
- data/lib/rex/post/meterpreter/dependencies.rb +3 -0
- data/lib/rex/post/meterpreter/extension.rb +32 -0
- data/lib/rex/post/meterpreter/extensions/espia/espia.rb +58 -0
- data/lib/rex/post/meterpreter/extensions/espia/tlv.rb +16 -0
- data/lib/rex/post/meterpreter/extensions/incognito/incognito.rb +94 -0
- data/lib/rex/post/meterpreter/extensions/incognito/tlv.rb +21 -0
- data/lib/rex/post/meterpreter/extensions/priv/fs.rb +118 -0
- data/lib/rex/post/meterpreter/extensions/priv/passwd.rb +61 -0
- data/lib/rex/post/meterpreter/extensions/priv/priv.rb +104 -0
- data/lib/rex/post/meterpreter/extensions/priv/tlv.rb +28 -0
- data/lib/rex/post/meterpreter/extensions/sniffer/sniffer.rb +100 -0
- data/lib/rex/post/meterpreter/extensions/sniffer/tlv.rb +24 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/constants.rb +333 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb +273 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +235 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb +103 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/io.rb +48 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb +144 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb +73 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/route.rb +56 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb +137 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb +167 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb +167 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/udp_channel.rb +192 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb +139 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/config.rb +97 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log.rb +184 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log_subsystem/event_record.rb +41 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/power.rb +61 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process.rb +361 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/image.rb +129 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/io.rb +55 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/memory.rb +336 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/thread.rb +141 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry.rb +279 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb +182 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_value.rb +102 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/thread.rb +174 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/tlv.rb +185 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/ui.rb +227 -0
- data/lib/rex/post/meterpreter/inbound_packet_handler.rb +30 -0
- data/lib/rex/post/meterpreter/object_aliases.rb +83 -0
- data/lib/rex/post/meterpreter/packet.rb +596 -0
- data/lib/rex/post/meterpreter/packet_dispatcher.rb +409 -0
- data/lib/rex/post/meterpreter/packet_parser.rb +94 -0
- data/lib/rex/post/meterpreter/packet_response_waiter.rb +83 -0
- data/lib/rex/post/meterpreter/ui/console.rb +135 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher.rb +62 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +595 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/espia.rb +108 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/incognito.rb +241 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv.rb +61 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/elevate.rb +98 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/passwd.rb +51 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/timestomp.rb +132 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/sniffer.rb +187 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi.rb +63 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/fs.rb +376 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb +270 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb +484 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/ui.rb +315 -0
- data/lib/rex/post/meterpreter/ui/console/interactive_channel.rb +95 -0
- data/lib/rex/post/permission.rb +26 -0
- data/lib/rex/post/process.rb +57 -0
- data/lib/rex/post/thread.rb +57 -0
- data/lib/rex/post/ui.rb +52 -0
- data/lib/rex/proto.rb +12 -0
- data/lib/rex/proto.rb.ts.rb +8 -0
- data/lib/rex/proto/dcerpc.rb +6 -0
- data/lib/rex/proto/dcerpc.rb.ts.rb +9 -0
- data/lib/rex/proto/dcerpc/client.rb +358 -0
- data/lib/rex/proto/dcerpc/client.rb.ut.rb +491 -0
- data/lib/rex/proto/dcerpc/exceptions.rb +150 -0
- data/lib/rex/proto/dcerpc/handle.rb +47 -0
- data/lib/rex/proto/dcerpc/handle.rb.ut.rb +85 -0
- data/lib/rex/proto/dcerpc/ndr.rb +72 -0
- data/lib/rex/proto/dcerpc/ndr.rb.ut.rb +41 -0
- data/lib/rex/proto/dcerpc/packet.rb +253 -0
- data/lib/rex/proto/dcerpc/packet.rb.ut.rb +56 -0
- data/lib/rex/proto/dcerpc/response.rb +186 -0
- data/lib/rex/proto/dcerpc/response.rb.ut.rb +15 -0
- data/lib/rex/proto/dcerpc/uuid.rb +84 -0
- data/lib/rex/proto/dcerpc/uuid.rb.ut.rb +46 -0
- data/lib/rex/proto/drda.rb +5 -0
- data/lib/rex/proto/drda.rb.ts.rb +17 -0
- data/lib/rex/proto/drda/constants.rb +49 -0
- data/lib/rex/proto/drda/constants.rb.ut.rb +23 -0
- data/lib/rex/proto/drda/packet.rb +252 -0
- data/lib/rex/proto/drda/packet.rb.ut.rb +109 -0
- data/lib/rex/proto/drda/utils.rb +123 -0
- data/lib/rex/proto/drda/utils.rb.ut.rb +84 -0
- data/lib/rex/proto/http.rb +5 -0
- data/lib/rex/proto/http.rb.ts.rb +12 -0
- data/lib/rex/proto/http/client.rb +817 -0
- data/lib/rex/proto/http/client.rb.ut.rb +93 -0
- data/lib/rex/proto/http/handler.rb +46 -0
- data/lib/rex/proto/http/handler/erb.rb +128 -0
- data/lib/rex/proto/http/handler/erb.rb.ut.rb +21 -0
- data/lib/rex/proto/http/handler/erb.rb.ut.rb.rhtml +1 -0
- data/lib/rex/proto/http/handler/proc.rb +54 -0
- data/lib/rex/proto/http/handler/proc.rb.ut.rb +24 -0
- data/lib/rex/proto/http/header.rb +161 -0
- data/lib/rex/proto/http/header.rb.ut.rb +46 -0
- data/lib/rex/proto/http/packet.rb +394 -0
- data/lib/rex/proto/http/packet.rb.ut.rb +165 -0
- data/lib/rex/proto/http/request.rb +356 -0
- data/lib/rex/proto/http/request.rb.ut.rb +214 -0
- data/lib/rex/proto/http/response.rb +85 -0
- data/lib/rex/proto/http/response.rb.ut.rb +149 -0
- data/lib/rex/proto/http/server.rb +367 -0
- data/lib/rex/proto/http/server.rb.ut.rb +79 -0
- data/lib/rex/proto/smb.rb +7 -0
- data/lib/rex/proto/smb.rb.ts.rb +8 -0
- data/lib/rex/proto/smb/client.rb +1733 -0
- data/lib/rex/proto/smb/client.rb.ut.rb +223 -0
- data/lib/rex/proto/smb/constants.rb +1062 -0
- data/lib/rex/proto/smb/constants.rb.ut.rb +18 -0
- data/lib/rex/proto/smb/crypt.rb +95 -0
- data/lib/rex/proto/smb/crypt.rb.ut.rb +20 -0
- data/lib/rex/proto/smb/evasions.rb +65 -0
- data/lib/rex/proto/smb/exceptions.rb +846 -0
- data/lib/rex/proto/smb/simpleclient.rb +292 -0
- data/lib/rex/proto/smb/simpleclient.rb.ut.rb +128 -0
- data/lib/rex/proto/smb/utils.rb +514 -0
- data/lib/rex/proto/smb/utils.rb.ut.rb +20 -0
- data/lib/rex/proto/sunrpc.rb +1 -0
- data/lib/rex/proto/sunrpc/client.rb +195 -0
- data/lib/rex/script.rb +42 -0
- data/lib/rex/script/base.rb +59 -0
- data/lib/rex/script/meterpreter.rb +9 -0
- data/lib/rex/script/shell.rb +9 -0
- data/lib/rex/service.rb +48 -0
- data/lib/rex/service_manager.rb +141 -0
- data/lib/rex/service_manager.rb.ut.rb +32 -0
- data/lib/rex/services/local_relay.rb +423 -0
- data/lib/rex/socket.rb +586 -0
- data/lib/rex/socket.rb.ut.rb +86 -0
- data/lib/rex/socket/comm.rb +119 -0
- data/lib/rex/socket/comm/local.rb +409 -0
- data/lib/rex/socket/comm/local.rb.ut.rb +75 -0
- data/lib/rex/socket/ip.rb +129 -0
- data/lib/rex/socket/parameters.rb +345 -0
- data/lib/rex/socket/parameters.rb.ut.rb +51 -0
- data/lib/rex/socket/range_walker.rb +295 -0
- data/lib/rex/socket/range_walker.rb.ut.rb +55 -0
- data/lib/rex/socket/ssl_tcp.rb +184 -0
- data/lib/rex/socket/ssl_tcp.rb.ut.rb +39 -0
- data/lib/rex/socket/ssl_tcp_server.rb +122 -0
- data/lib/rex/socket/ssl_tcp_server.rb.ut.rb +51 -0
- data/lib/rex/socket/subnet_walker.rb +75 -0
- data/lib/rex/socket/subnet_walker.rb.ut.rb +28 -0
- data/lib/rex/socket/switch_board.rb +272 -0
- data/lib/rex/socket/switch_board.rb.ut.rb +52 -0
- data/lib/rex/socket/tcp.rb +76 -0
- data/lib/rex/socket/tcp.rb.ut.rb +64 -0
- data/lib/rex/socket/tcp_server.rb +67 -0
- data/lib/rex/socket/tcp_server.rb.ut.rb +44 -0
- data/lib/rex/socket/udp.rb +157 -0
- data/lib/rex/socket/udp.rb.ut.rb +44 -0
- data/lib/rex/struct2.rb +5 -0
- data/lib/rex/struct2/c_struct.rb +181 -0
- data/lib/rex/struct2/c_struct_template.rb +39 -0
- data/lib/rex/struct2/constant.rb +26 -0
- data/lib/rex/struct2/element.rb +44 -0
- data/lib/rex/struct2/generic.rb +73 -0
- data/lib/rex/struct2/restraint.rb +54 -0
- data/lib/rex/struct2/s_string.rb +72 -0
- data/lib/rex/struct2/s_struct.rb +111 -0
- data/lib/rex/sync.rb +6 -0
- data/lib/rex/sync/event.rb +94 -0
- data/lib/rex/sync/read_write_lock.rb +176 -0
- data/lib/rex/sync/ref.rb +57 -0
- data/lib/rex/sync/thread_safe.rb +82 -0
- data/lib/rex/test.rb +35 -0
- data/lib/rex/text.rb +1029 -0
- data/lib/rex/text.rb.ut.rb +168 -0
- data/lib/rex/time.rb +65 -0
- data/lib/rex/transformer.rb +115 -0
- data/lib/rex/transformer.rb.ut.rb +38 -0
- data/lib/rex/ui.rb +21 -0
- data/lib/rex/ui/interactive.rb +252 -0
- data/lib/rex/ui/output.rb +80 -0
- data/lib/rex/ui/output/none.rb +18 -0
- data/lib/rex/ui/progress_tracker.rb +96 -0
- data/lib/rex/ui/subscriber.rb +149 -0
- data/lib/rex/ui/text/color.rb +97 -0
- data/lib/rex/ui/text/color.rb.ut.rb +18 -0
- data/lib/rex/ui/text/dispatcher_shell.rb +382 -0
- data/lib/rex/ui/text/input.rb +117 -0
- data/lib/rex/ui/text/input/buffer.rb +75 -0
- data/lib/rex/ui/text/input/readline.rb +129 -0
- data/lib/rex/ui/text/input/socket.rb +95 -0
- data/lib/rex/ui/text/input/stdio.rb +45 -0
- data/lib/rex/ui/text/irb_shell.rb +55 -0
- data/lib/rex/ui/text/output.rb +80 -0
- data/lib/rex/ui/text/output/buffer.rb +65 -0
- data/lib/rex/ui/text/output/file.rb +37 -0
- data/lib/rex/ui/text/output/socket.rb +43 -0
- data/lib/rex/ui/text/output/stdio.rb +40 -0
- data/lib/rex/ui/text/progress_tracker.rb +56 -0
- data/lib/rex/ui/text/progress_tracker.rb.ut.rb +34 -0
- data/lib/rex/ui/text/shell.rb +321 -0
- data/lib/rex/ui/text/table.rb +254 -0
- data/lib/rex/ui/text/table.rb.ut.rb +55 -0
- data/lib/rex/zip.rb +93 -0
- data/lib/rex/zip/archive.rb +91 -0
- data/lib/rex/zip/blocks.rb +182 -0
- data/lib/rex/zip/entry.rb +95 -0
- data/lib/rex/zip/samples/comment.rb +32 -0
- data/lib/rex/zip/samples/mkwar.rb +138 -0
- data/lib/rex/zip/samples/mkzip.rb +19 -0
- data/lib/rex/zip/samples/recursive.rb +58 -0
- metadata +435 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'rex/post/file_stat'
|
|
4
|
+
require 'rex/post/meterpreter/extensions/stdapi/stdapi'
|
|
5
|
+
|
|
6
|
+
module Rex
|
|
7
|
+
module Post
|
|
8
|
+
module Meterpreter
|
|
9
|
+
module Extensions
|
|
10
|
+
module Stdapi
|
|
11
|
+
module Fs
|
|
12
|
+
|
|
13
|
+
###
|
|
14
|
+
#
|
|
15
|
+
# This class wrappers gathering information about a given file and implements
|
|
16
|
+
# the Rex::Post::FileStat interface in terms of data acquisition.
|
|
17
|
+
#
|
|
18
|
+
###
|
|
19
|
+
class FileStat < Rex::Post::FileStat
|
|
20
|
+
|
|
21
|
+
class <<self
|
|
22
|
+
attr_accessor :client
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
@@struct_stat = [
|
|
26
|
+
'st_dev', 4, # 0
|
|
27
|
+
'st_ino', 2, # 4
|
|
28
|
+
'st_mode', 2, # 6
|
|
29
|
+
'st_nlink', 2, # 8
|
|
30
|
+
'st_uid', 2, # 10
|
|
31
|
+
'st_gid', 2, # 12
|
|
32
|
+
'pad1', 2, # 14
|
|
33
|
+
'st_rdev', 4, # 16
|
|
34
|
+
'st_size', 4, # 20
|
|
35
|
+
'st_atime', 8, # 24
|
|
36
|
+
'st_mtime', 8, # 32
|
|
37
|
+
'st_ctime', 8, # 40
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
##
|
|
41
|
+
#
|
|
42
|
+
# Constructor
|
|
43
|
+
#
|
|
44
|
+
##
|
|
45
|
+
|
|
46
|
+
#
|
|
47
|
+
# Returns an instance of a FileStat object.
|
|
48
|
+
#
|
|
49
|
+
def initialize(file)
|
|
50
|
+
self.stathash = stat(file) if (file)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
#
|
|
54
|
+
# Swaps in a new stat hash.
|
|
55
|
+
#
|
|
56
|
+
def update(stat_buf)
|
|
57
|
+
elem = @@struct_stat
|
|
58
|
+
hash = {}
|
|
59
|
+
offset = 0
|
|
60
|
+
index = 0
|
|
61
|
+
|
|
62
|
+
while (index < elem.length)
|
|
63
|
+
size = elem[index + 1]
|
|
64
|
+
|
|
65
|
+
value = stat_buf[offset, size].unpack(size == 2 ? 'v' : 'V')[0]
|
|
66
|
+
offset += size
|
|
67
|
+
|
|
68
|
+
hash[elem[index]] = value
|
|
69
|
+
|
|
70
|
+
index += 2
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
return (self.stathash = hash)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
protected
|
|
77
|
+
|
|
78
|
+
##
|
|
79
|
+
#
|
|
80
|
+
# Initializer
|
|
81
|
+
#
|
|
82
|
+
##
|
|
83
|
+
|
|
84
|
+
#
|
|
85
|
+
# Gets information about the supplied file and returns a populated
|
|
86
|
+
# hash to the requestor.
|
|
87
|
+
#
|
|
88
|
+
def stat(file)
|
|
89
|
+
request = Packet.create_request('stdapi_fs_stat')
|
|
90
|
+
|
|
91
|
+
request.add_tlv(TLV_TYPE_FILE_PATH, file)
|
|
92
|
+
|
|
93
|
+
response = self.class.client.send_request(request)
|
|
94
|
+
stat_buf = response.get_tlv(TLV_TYPE_STAT_BUF).value
|
|
95
|
+
|
|
96
|
+
# Next, we go through the returned stat_buf and fix up the values
|
|
97
|
+
# and insert them into a hash
|
|
98
|
+
return update(stat_buf)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
end; end; end; end; end; end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'rex/post/io'
|
|
4
|
+
|
|
5
|
+
module Rex
|
|
6
|
+
module Post
|
|
7
|
+
module Meterpreter
|
|
8
|
+
module Extensions
|
|
9
|
+
module Stdapi
|
|
10
|
+
module Fs
|
|
11
|
+
|
|
12
|
+
##
|
|
13
|
+
#
|
|
14
|
+
# The IO class acts as a base class for things that would normally implement
|
|
15
|
+
# the IO interface. The methods it implements are for general operations that
|
|
16
|
+
# are common to all channels, such as read, write, and close.
|
|
17
|
+
#
|
|
18
|
+
##
|
|
19
|
+
class IO < Rex::Post::IO
|
|
20
|
+
|
|
21
|
+
#
|
|
22
|
+
# Read the specified number of bytes from the channel.
|
|
23
|
+
#
|
|
24
|
+
def sysread(length = nil)
|
|
25
|
+
self.filed.read(length)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
alias read sysread
|
|
29
|
+
|
|
30
|
+
#
|
|
31
|
+
# Writes the supplied buffer to the channel.
|
|
32
|
+
#
|
|
33
|
+
def syswrite(buf)
|
|
34
|
+
self.filed.write(buf)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
alias write syswrite
|
|
38
|
+
|
|
39
|
+
#
|
|
40
|
+
# Closes the channel.
|
|
41
|
+
#
|
|
42
|
+
def close
|
|
43
|
+
self.filed.close
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end; end; end; end; end; end
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'rex/post/meterpreter/extensions/stdapi/tlv'
|
|
4
|
+
require 'rex/post/meterpreter/extensions/stdapi/net/route'
|
|
5
|
+
require 'rex/post/meterpreter/extensions/stdapi/net/interface'
|
|
6
|
+
|
|
7
|
+
module Rex
|
|
8
|
+
module Post
|
|
9
|
+
module Meterpreter
|
|
10
|
+
module Extensions
|
|
11
|
+
module Stdapi
|
|
12
|
+
module Net
|
|
13
|
+
|
|
14
|
+
###
|
|
15
|
+
#
|
|
16
|
+
# This class provides an interface to the network configuration
|
|
17
|
+
# that exists on the remote machine, such as interfaces, and
|
|
18
|
+
# routes.
|
|
19
|
+
#
|
|
20
|
+
###
|
|
21
|
+
class Config
|
|
22
|
+
|
|
23
|
+
##
|
|
24
|
+
#
|
|
25
|
+
# Constructor
|
|
26
|
+
#
|
|
27
|
+
##
|
|
28
|
+
|
|
29
|
+
#
|
|
30
|
+
# Initializes a Config instance that is used to get information about the
|
|
31
|
+
# network configuration of the remote machine.
|
|
32
|
+
#
|
|
33
|
+
def initialize(client)
|
|
34
|
+
self.client = client
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
##
|
|
38
|
+
#
|
|
39
|
+
# Interfaces
|
|
40
|
+
#
|
|
41
|
+
##
|
|
42
|
+
|
|
43
|
+
#
|
|
44
|
+
# Enumerates each interface.
|
|
45
|
+
#
|
|
46
|
+
def each_interface(&block)
|
|
47
|
+
get_interfaces().each(&block)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
#
|
|
51
|
+
# Returns an array of network interfaces with each element.
|
|
52
|
+
#
|
|
53
|
+
# being an Interface
|
|
54
|
+
def get_interfaces
|
|
55
|
+
request = Packet.create_request('stdapi_net_config_get_interfaces')
|
|
56
|
+
ifaces = []
|
|
57
|
+
|
|
58
|
+
response = client.send_request(request)
|
|
59
|
+
|
|
60
|
+
response.each(TLV_TYPE_NETWORK_INTERFACE) { |iface|
|
|
61
|
+
ifaces << Interface.new(
|
|
62
|
+
iface.get_tlv_value(TLV_TYPE_IP),
|
|
63
|
+
iface.get_tlv_value(TLV_TYPE_NETMASK),
|
|
64
|
+
iface.get_tlv_value(TLV_TYPE_MAC_ADDRESS),
|
|
65
|
+
iface.get_tlv_value(TLV_TYPE_MAC_NAME))
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return ifaces
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
alias interfaces get_interfaces
|
|
72
|
+
|
|
73
|
+
##
|
|
74
|
+
#
|
|
75
|
+
# Routing
|
|
76
|
+
#
|
|
77
|
+
##
|
|
78
|
+
|
|
79
|
+
#
|
|
80
|
+
# Enumerates each route.
|
|
81
|
+
#
|
|
82
|
+
def each_route(&block)
|
|
83
|
+
get_routes().each(&block)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
#
|
|
87
|
+
# Returns an array of routes with each element being a Route.
|
|
88
|
+
#
|
|
89
|
+
def get_routes
|
|
90
|
+
request = Packet.create_request('stdapi_net_config_get_routes')
|
|
91
|
+
routes = []
|
|
92
|
+
|
|
93
|
+
response = client.send_request(request)
|
|
94
|
+
|
|
95
|
+
# Build out the array of routes
|
|
96
|
+
response.each(TLV_TYPE_NETWORK_ROUTE) { |route|
|
|
97
|
+
routes << Route.new(
|
|
98
|
+
route.get_tlv_value(TLV_TYPE_SUBNET),
|
|
99
|
+
route.get_tlv_value(TLV_TYPE_NETMASK),
|
|
100
|
+
route.get_tlv_value(TLV_TYPE_GATEWAY))
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return routes
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
alias routes get_routes
|
|
107
|
+
|
|
108
|
+
#
|
|
109
|
+
# Adds a route to the target machine.
|
|
110
|
+
#
|
|
111
|
+
def add_route(subnet, netmask, gateway)
|
|
112
|
+
request = Packet.create_request('stdapi_net_config_add_route')
|
|
113
|
+
|
|
114
|
+
request.add_tlv(TLV_TYPE_SUBNET_STRING, subnet)
|
|
115
|
+
request.add_tlv(TLV_TYPE_NETMASK_STRING, netmask)
|
|
116
|
+
request.add_tlv(TLV_TYPE_GATEWAY_STRING, gateway)
|
|
117
|
+
|
|
118
|
+
response = client.send_request(request)
|
|
119
|
+
|
|
120
|
+
return true
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
#
|
|
124
|
+
# Removes a route from the target machine.
|
|
125
|
+
#
|
|
126
|
+
def remove_route(subnet, netmask, gateway)
|
|
127
|
+
request = Packet.create_request('stdapi_net_config_remove_route')
|
|
128
|
+
|
|
129
|
+
request.add_tlv(TLV_TYPE_SUBNET_STRING, subnet)
|
|
130
|
+
request.add_tlv(TLV_TYPE_NETMASK_STRING, netmask)
|
|
131
|
+
request.add_tlv(TLV_TYPE_GATEWAY_STRING, gateway)
|
|
132
|
+
|
|
133
|
+
response = client.send_request(request)
|
|
134
|
+
|
|
135
|
+
return true
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
protected
|
|
139
|
+
|
|
140
|
+
attr_accessor :client # :nodoc:
|
|
141
|
+
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
end; end; end; end; end; end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'ipaddr'
|
|
4
|
+
|
|
5
|
+
module Rex
|
|
6
|
+
module Post
|
|
7
|
+
module Meterpreter
|
|
8
|
+
module Extensions
|
|
9
|
+
module Stdapi
|
|
10
|
+
module Net
|
|
11
|
+
|
|
12
|
+
###
|
|
13
|
+
#
|
|
14
|
+
# This class represents a logical physical interface
|
|
15
|
+
# on the remote machine.
|
|
16
|
+
#
|
|
17
|
+
###
|
|
18
|
+
class Interface
|
|
19
|
+
|
|
20
|
+
##
|
|
21
|
+
#
|
|
22
|
+
# Constructor
|
|
23
|
+
#
|
|
24
|
+
##
|
|
25
|
+
|
|
26
|
+
#
|
|
27
|
+
# Returns a logical interface and initializes it to the supplied
|
|
28
|
+
# parameters.
|
|
29
|
+
#
|
|
30
|
+
def initialize(ip, netmask, mac_addr, mac_name)
|
|
31
|
+
self.ip = IPAddr.ntop(ip)
|
|
32
|
+
self.netmask = IPAddr.ntop(netmask)
|
|
33
|
+
self.mac_addr = mac_addr
|
|
34
|
+
self.mac_name = mac_name
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
#
|
|
38
|
+
# Returns a pretty string representation of the interface's properties.
|
|
39
|
+
#
|
|
40
|
+
def pretty
|
|
41
|
+
macocts = []
|
|
42
|
+
mac_addr.each_byte { |o| macocts << o }
|
|
43
|
+
macocts += [0] * (6 - macocts.size) if macocts.size < 6
|
|
44
|
+
return sprintf(
|
|
45
|
+
"#{mac_name}\n" +
|
|
46
|
+
"Hardware MAC: %02x:%02x:%02x:%02x:%02x:%02x\n" +
|
|
47
|
+
"IP Address : %s\n" +
|
|
48
|
+
"Netmask : %s\n" +
|
|
49
|
+
"\n",
|
|
50
|
+
macocts[0], macocts[1], macocts[2], macocts[3],
|
|
51
|
+
macocts[4], macocts[5], ip, netmask)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
#
|
|
55
|
+
# The IP address bound to the interface.
|
|
56
|
+
#
|
|
57
|
+
attr_accessor :ip
|
|
58
|
+
#
|
|
59
|
+
# The subnet mask associated with the interface.
|
|
60
|
+
#
|
|
61
|
+
attr_accessor :netmask
|
|
62
|
+
#
|
|
63
|
+
# The physical (MAC) address of the NIC.
|
|
64
|
+
#
|
|
65
|
+
attr_accessor :mac_addr
|
|
66
|
+
#
|
|
67
|
+
# The name of the interface.
|
|
68
|
+
#
|
|
69
|
+
attr_accessor :mac_name
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end; end; end; end; end; end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'ipaddr'
|
|
4
|
+
|
|
5
|
+
module Rex
|
|
6
|
+
module Post
|
|
7
|
+
module Meterpreter
|
|
8
|
+
module Extensions
|
|
9
|
+
module Stdapi
|
|
10
|
+
module Net
|
|
11
|
+
|
|
12
|
+
###
|
|
13
|
+
#
|
|
14
|
+
# Represents a logical network route.
|
|
15
|
+
#
|
|
16
|
+
###
|
|
17
|
+
class Route
|
|
18
|
+
|
|
19
|
+
##
|
|
20
|
+
#
|
|
21
|
+
# Constructor
|
|
22
|
+
#
|
|
23
|
+
##
|
|
24
|
+
|
|
25
|
+
#
|
|
26
|
+
# Initializes a route instance.
|
|
27
|
+
#
|
|
28
|
+
def initialize(subnet, netmask, gateway)
|
|
29
|
+
self.subnet = IPAddr.ntop(subnet)
|
|
30
|
+
self.netmask = IPAddr.ntop(netmask)
|
|
31
|
+
self.gateway = IPAddr.ntop(gateway)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
#
|
|
35
|
+
# Provides a pretty version of the route.
|
|
36
|
+
#
|
|
37
|
+
def pretty
|
|
38
|
+
return sprintf("%16s %16s %16s", subnet, netmask, gateway)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
#
|
|
42
|
+
# The subnet mask associated with the route.
|
|
43
|
+
#
|
|
44
|
+
attr_accessor :subnet
|
|
45
|
+
#
|
|
46
|
+
# The netmask of the subnet route.
|
|
47
|
+
#
|
|
48
|
+
attr_accessor :netmask
|
|
49
|
+
#
|
|
50
|
+
# The gateway to take for the subnet route.
|
|
51
|
+
#
|
|
52
|
+
attr_accessor :gateway
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end; end; end; end; end; end
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'thread'
|
|
4
|
+
require 'rex/socket'
|
|
5
|
+
require 'rex/post/meterpreter/extensions/stdapi/tlv'
|
|
6
|
+
require 'rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel'
|
|
7
|
+
require 'rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel'
|
|
8
|
+
require 'rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/udp_channel'
|
|
9
|
+
require 'rex/logging'
|
|
10
|
+
|
|
11
|
+
module Rex
|
|
12
|
+
module Post
|
|
13
|
+
module Meterpreter
|
|
14
|
+
module Extensions
|
|
15
|
+
module Stdapi
|
|
16
|
+
module Net
|
|
17
|
+
|
|
18
|
+
###
|
|
19
|
+
#
|
|
20
|
+
# This class provides an interface to interacting with sockets
|
|
21
|
+
# on the remote machine. It allows callers to open TCP, UDP,
|
|
22
|
+
# and other arbitrary socket-based connections as channels that
|
|
23
|
+
# can then be interacted with through the established
|
|
24
|
+
# meterpreter connection.
|
|
25
|
+
#
|
|
26
|
+
###
|
|
27
|
+
class Socket
|
|
28
|
+
|
|
29
|
+
##
|
|
30
|
+
#
|
|
31
|
+
# Constructor
|
|
32
|
+
#
|
|
33
|
+
##
|
|
34
|
+
|
|
35
|
+
#
|
|
36
|
+
# Initialize the socket subsystem and start monitoring sockets as they come in.
|
|
37
|
+
#
|
|
38
|
+
def initialize(client)
|
|
39
|
+
self.client = client
|
|
40
|
+
|
|
41
|
+
# register the inbound handler for the tcp server channel (allowing us to receive new client connections to a tcp server channel)
|
|
42
|
+
client.register_inbound_handler( Rex::Post::Meterpreter::Extensions::Stdapi::Net::SocketSubsystem::TcpServerChannel )
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
#
|
|
47
|
+
# Deregister the inbound handler for the tcp server channel
|
|
48
|
+
#
|
|
49
|
+
def shutdown
|
|
50
|
+
client.deregister_inbound_handler( Rex::Post::Meterpreter::Extensions::Stdapi::Net::SocketSubsystem::TcpServerChannel )
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
##
|
|
54
|
+
#
|
|
55
|
+
# Factory
|
|
56
|
+
#
|
|
57
|
+
##
|
|
58
|
+
|
|
59
|
+
#
|
|
60
|
+
# Creates an arbitrary client socket channel using the information
|
|
61
|
+
# supplied in the socket parameters instance. The 'params' argument
|
|
62
|
+
# is expected to be of type Rex::Socket::Parameters.
|
|
63
|
+
#
|
|
64
|
+
def create( params )
|
|
65
|
+
res = nil
|
|
66
|
+
|
|
67
|
+
if( params.tcp? )
|
|
68
|
+
if( params.server? )
|
|
69
|
+
res = create_tcp_server_channel( params )
|
|
70
|
+
else
|
|
71
|
+
res = create_tcp_client_channel( params )
|
|
72
|
+
end
|
|
73
|
+
elsif( params.udp? )
|
|
74
|
+
res = create_udp_channel( params )
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
return res
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
#
|
|
81
|
+
# Create a TCP server channel.
|
|
82
|
+
#
|
|
83
|
+
def create_tcp_server_channel(params)
|
|
84
|
+
begin
|
|
85
|
+
return SocketSubsystem::TcpServerChannel.open(client, params)
|
|
86
|
+
rescue ::Rex::Post::Meterpreter::RequestError => e
|
|
87
|
+
case e.result
|
|
88
|
+
when 10000 .. 10100
|
|
89
|
+
raise ::Rex::ConnectionError.new
|
|
90
|
+
end
|
|
91
|
+
raise e
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
#
|
|
96
|
+
# Creates a TCP client channel.
|
|
97
|
+
#
|
|
98
|
+
def create_tcp_client_channel(params)
|
|
99
|
+
begin
|
|
100
|
+
channel = SocketSubsystem::TcpClientChannel.open(client, params)
|
|
101
|
+
if( channel != nil )
|
|
102
|
+
return channel.lsock
|
|
103
|
+
end
|
|
104
|
+
return nil
|
|
105
|
+
rescue ::Rex::Post::Meterpreter::RequestError => e
|
|
106
|
+
case e.result
|
|
107
|
+
when 10000 .. 10100
|
|
108
|
+
raise ::Rex::ConnectionError.new
|
|
109
|
+
end
|
|
110
|
+
raise e
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
#
|
|
115
|
+
# Creates a UDP channel.
|
|
116
|
+
#
|
|
117
|
+
def create_udp_channel(params)
|
|
118
|
+
begin
|
|
119
|
+
return SocketSubsystem::UdpChannel.open(client, params)
|
|
120
|
+
rescue ::Rex::Post::Meterpreter::RequestError => e
|
|
121
|
+
case e.result
|
|
122
|
+
when 10000 .. 10100
|
|
123
|
+
raise ::Rex::ConnectionError.new
|
|
124
|
+
end
|
|
125
|
+
raise e
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
protected
|
|
131
|
+
|
|
132
|
+
attr_accessor :client # :nodoc:
|
|
133
|
+
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
end; end; end; end; end; end
|
|
137
|
+
|