librex 0.0.65 → 0.0.66
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +1 -1
- data/lib/rex/arch.rb +1 -0
- data/lib/rex/arch/sparc.rb +16 -15
- data/lib/rex/arch/sparc.rb.ut.rb +2 -1
- data/lib/rex/arch/x86.rb +1 -0
- data/lib/rex/arch/x86.rb.ut.rb +2 -1
- data/lib/rex/assembly/nasm.rb +1 -0
- data/lib/rex/assembly/nasm.rb.ut.rb +2 -1
- data/lib/rex/compat.rb +13 -0
- data/lib/rex/constants.rb +5 -4
- data/lib/rex/elfparsey.rb +3 -2
- data/lib/rex/elfparsey/elf.rb +2 -1
- data/lib/rex/elfparsey/elfbase.rb +8 -7
- data/lib/rex/elfparsey/exceptions.rb +3 -2
- data/lib/rex/elfscan.rb +3 -2
- data/lib/rex/elfscan/scanner.rb +2 -1
- data/lib/rex/elfscan/search.rb +2 -1
- data/lib/rex/encoder/alpha2.rb +2 -1
- data/lib/rex/encoder/alpha2/alpha_mixed.rb +3 -2
- data/lib/rex/encoder/alpha2/alpha_upper.rb +5 -4
- data/lib/rex/encoder/alpha2/generic.rb +37 -60
- data/lib/rex/encoder/alpha2/unicode_mixed.rb +4 -9
- data/lib/rex/encoder/alpha2/unicode_upper.rb +4 -9
- data/lib/rex/encoder/ndr.rb +1 -0
- data/lib/rex/encoder/ndr.rb.ut.rb +2 -1
- data/lib/rex/encoder/nonalpha.rb +1 -0
- data/lib/rex/encoder/nonupper.rb +1 -0
- data/lib/rex/encoder/xdr.rb +9 -8
- data/lib/rex/encoder/xdr.rb.ut.rb +2 -1
- data/lib/rex/encoder/xor.rb +1 -0
- data/lib/rex/encoder/xor/dword.rb +2 -1
- data/lib/rex/encoder/xor/dword_additive.rb +2 -1
- data/lib/rex/encoders/xor_dword.rb +1 -0
- data/lib/rex/encoders/xor_dword_additive.rb +2 -1
- data/lib/rex/encoders/xor_dword_additive.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor.rb +2 -1
- data/lib/rex/encoding/xor.rb.ts.rb +2 -1
- data/lib/rex/encoding/xor/byte.rb +2 -1
- data/lib/rex/encoding/xor/byte.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/dword.rb +2 -1
- data/lib/rex/encoding/xor/dword.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/dword_additive.rb +1 -0
- data/lib/rex/encoding/xor/dword_additive.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/exceptions.rb +1 -0
- data/lib/rex/encoding/xor/generic.rb +1 -0
- data/lib/rex/encoding/xor/generic.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/qword.rb +2 -1
- data/lib/rex/encoding/xor/word.rb +2 -1
- data/lib/rex/encoding/xor/word.rb.ut.rb +2 -1
- data/lib/rex/exceptions.rb +1 -0
- data/lib/rex/exceptions.rb.ut.rb +2 -1
- data/lib/rex/exploitation/cmdstager.rb +2 -1
- data/lib/rex/exploitation/cmdstager/base.rb +1 -0
- data/lib/rex/exploitation/cmdstager/debug_asm.rb +2 -1
- data/lib/rex/exploitation/cmdstager/debug_write.rb +2 -1
- data/lib/rex/exploitation/cmdstager/tftp.rb +2 -1
- data/lib/rex/exploitation/cmdstager/vbs.rb +2 -1
- data/lib/rex/exploitation/egghunter.rb +12 -11
- data/lib/rex/exploitation/egghunter.rb.ut.rb +2 -1
- data/lib/rex/exploitation/encryptjs.rb +1 -0
- data/lib/rex/exploitation/heaplib.rb +1 -0
- data/lib/rex/exploitation/javascriptosdetect.js +1014 -0
- data/lib/rex/exploitation/javascriptosdetect.rb +4 -857
- data/lib/rex/exploitation/jsobfu.rb +2 -1
- data/lib/rex/exploitation/obfuscatejs.rb +1 -0
- data/lib/rex/exploitation/omelet.rb +1 -0
- data/lib/rex/exploitation/omelet.rb.ut.rb +1 -0
- data/lib/rex/exploitation/opcodedb.rb +12 -11
- data/lib/rex/exploitation/opcodedb.rb.ut.rb +2 -1
- data/lib/rex/exploitation/seh.rb +3 -2
- data/lib/rex/exploitation/seh.rb.ut.rb +2 -1
- data/lib/rex/file.rb +4 -3
- data/lib/rex/file.rb.ut.rb +2 -1
- data/lib/rex/image_source.rb +3 -2
- data/lib/rex/image_source/disk.rb +3 -2
- data/lib/rex/image_source/image_source.rb +3 -2
- data/lib/rex/image_source/memory.rb +3 -2
- data/lib/rex/io/bidirectional_pipe.rb +1 -0
- data/lib/rex/io/datagram_abstraction.rb +2 -1
- data/lib/rex/io/ring_buffer.rb +49 -44
- data/lib/rex/io/ring_buffer.rb.ut.rb +4 -3
- data/lib/rex/io/stream.rb +1 -0
- data/lib/rex/io/stream_abstraction.rb +1 -0
- data/lib/rex/io/stream_server.rb +1 -0
- data/lib/rex/job_container.rb +1 -0
- data/lib/rex/logging.rb +2 -1
- data/lib/rex/logging/log_dispatcher.rb +5 -4
- data/lib/rex/logging/log_sink.rb +2 -1
- data/lib/rex/logging/sinks/flatfile.rb +4 -3
- data/lib/rex/logging/sinks/stderr.rb +2 -1
- data/lib/rex/machparsey.rb +2 -1
- data/lib/rex/machparsey/exceptions.rb +2 -1
- data/lib/rex/machparsey/mach.rb +20 -19
- data/lib/rex/machparsey/machbase.rb +27 -26
- data/lib/rex/machscan.rb +2 -1
- data/lib/rex/machscan/scanner.rb +1 -0
- data/lib/rex/mime.rb +2 -1
- data/lib/rex/mime/header.rb +1 -0
- data/lib/rex/mime/message.rb +4 -1
- data/lib/rex/mime/part.rb +2 -1
- data/lib/rex/nop/opty2.rb +2 -1
- data/lib/rex/nop/opty2.rb.ut.rb +2 -1
- data/lib/rex/nop/opty2_tables.rb +1 -0
- data/lib/rex/ole.rb +3 -2
- data/lib/rex/ole/clsid.rb +3 -2
- data/lib/rex/ole/difat.rb +3 -2
- data/lib/rex/ole/directory.rb +3 -2
- data/lib/rex/ole/direntry.rb +3 -2
- data/lib/rex/ole/fat.rb +3 -2
- data/lib/rex/ole/header.rb +3 -2
- data/lib/rex/ole/minifat.rb +3 -2
- data/lib/rex/ole/propset.rb +4 -3
- data/lib/rex/ole/samples/create_ole.rb +1 -0
- data/lib/rex/ole/samples/dir.rb +1 -0
- data/lib/rex/ole/samples/dump_stream.rb +1 -0
- data/lib/rex/ole/samples/ole_info.rb +1 -0
- data/lib/rex/ole/storage.rb +3 -2
- data/lib/rex/ole/stream.rb +3 -2
- data/lib/rex/ole/substorage.rb +3 -2
- data/lib/rex/ole/util.rb +3 -2
- data/lib/rex/parser/acunetix_nokogiri.rb +13 -12
- data/lib/rex/parser/apple_backup_manifestdb.rb +20 -19
- data/lib/rex/parser/appscan_nokogiri.rb +17 -16
- data/lib/rex/parser/arguments.rb +2 -1
- data/lib/rex/parser/arguments.rb.ut.rb +2 -1
- data/lib/rex/parser/burp_session_nokogiri.rb +8 -7
- data/lib/rex/parser/ci_nokogiri.rb +4 -3
- data/lib/rex/parser/foundstone_nokogiri.rb +18 -17
- data/lib/rex/parser/fusionvm_nokogiri.rb +109 -0
- data/lib/rex/parser/ini.rb +1 -0
- data/lib/rex/parser/ini.rb.ut.rb +2 -1
- data/lib/rex/parser/ip360_aspl_xml.rb +1 -0
- data/lib/rex/parser/ip360_xml.rb +4 -3
- data/lib/rex/parser/mbsa_nokogiri.rb +8 -7
- data/lib/rex/parser/nessus_xml.rb +3 -2
- data/lib/rex/parser/netsparker_xml.rb +10 -9
- data/lib/rex/parser/nexpose_raw_nokogiri.rb +372 -52
- data/lib/rex/parser/nexpose_simple_nokogiri.rb +8 -7
- data/lib/rex/parser/nexpose_xml.rb +1 -0
- data/lib/rex/parser/nmap_nokogiri.rb +63 -33
- data/lib/rex/parser/nmap_xml.rb +1 -0
- data/lib/rex/parser/nokogiri_doc_mixin.rb +35 -15
- data/lib/rex/parser/openvas_nokogiri.rb +172 -0
- data/lib/rex/parser/retina_xml.rb +1 -0
- data/lib/rex/parser/wapiti_nokogiri.rb +105 -0
- data/lib/rex/payloads.rb +2 -1
- data/lib/rex/payloads/win32.rb +2 -1
- data/lib/rex/payloads/win32/common.rb +2 -1
- data/lib/rex/payloads/win32/kernel.rb +2 -1
- data/lib/rex/payloads/win32/kernel/common.rb +4 -3
- data/lib/rex/payloads/win32/kernel/migration.rb +2 -1
- data/lib/rex/payloads/win32/kernel/recovery.rb +2 -1
- data/lib/rex/payloads/win32/kernel/stager.rb +21 -20
- data/lib/rex/peparsey.rb +3 -2
- data/lib/rex/peparsey/exceptions.rb +2 -1
- data/lib/rex/peparsey/pe.rb +3 -2
- data/lib/rex/peparsey/pe_memdump.rb +2 -1
- data/lib/rex/peparsey/pebase.rb +2 -1
- data/lib/rex/peparsey/section.rb +2 -1
- data/lib/rex/pescan.rb +3 -2
- data/lib/rex/pescan/analyze.rb +1 -0
- data/lib/rex/pescan/scanner.rb +1 -0
- data/lib/rex/pescan/search.rb +1 -0
- data/lib/rex/platforms.rb +2 -1
- data/lib/rex/platforms/windows.rb +2 -1
- data/lib/rex/poly.rb +2 -1
- data/lib/rex/poly/block.rb +16 -15
- data/lib/rex/poly/register.rb +2 -1
- data/lib/rex/poly/register/x86.rb +2 -1
- data/lib/rex/post.rb +2 -2
- data/lib/rex/post/dir.rb +2 -1
- data/lib/rex/post/file.rb +1 -0
- data/lib/rex/post/file_stat.rb +1 -0
- data/lib/rex/post/io.rb +2 -1
- data/lib/rex/post/meterpreter.rb +2 -1
- data/lib/rex/post/meterpreter/channel.rb +1 -0
- data/lib/rex/post/meterpreter/channel_container.rb +2 -1
- data/lib/rex/post/meterpreter/channels/pool.rb +1 -0
- data/lib/rex/post/meterpreter/channels/pools/file.rb +1 -0
- data/lib/rex/post/meterpreter/channels/pools/stream_pool.rb +3 -2
- data/lib/rex/post/meterpreter/channels/stream.rb +1 -0
- data/lib/rex/post/meterpreter/client.rb +23 -1
- data/lib/rex/post/meterpreter/client_core.rb +10 -5
- data/lib/rex/post/meterpreter/dependencies.rb +2 -1
- data/lib/rex/post/meterpreter/extension.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/espia/espia.rb +7 -6
- data/lib/rex/post/meterpreter/extensions/espia/tlv.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/incognito/incognito.rb +5 -4
- data/lib/rex/post/meterpreter/extensions/incognito/tlv.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/lanattacks/lanattacks.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/lanattacks/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/networkpug/networkpug.rb +7 -6
- data/lib/rex/post/meterpreter/extensions/networkpug/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/priv/fs.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/priv/passwd.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/priv/priv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/priv/tlv.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/sniffer/sniffer.rb +28 -11
- data/lib/rex/post/meterpreter/extensions/sniffer/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/constants.rb +6 -5
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +3 -2
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/io.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb +39 -5
- data/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb +75 -18
- data/lib/rex/post/meterpreter/extensions/stdapi/net/route.rb +18 -6
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/udp_channel.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun.rb.ts.rb +4 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_advapi32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_crypt32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_iphlpapi.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_kernel32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_netapi32.rb +12 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ntdll.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_shell32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_user32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_wlanapi.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ws2_32.rb +7 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_wrapper.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_wrapper.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/mock_magic.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/multicall.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/platform_util.rb +23 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/platform_util.rb.ut.rb +29 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb +10 -5
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb.ut.rb +9 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/type/pointer_util.rb +106 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/type/pointer_util.rb.ut.rb +128 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/util.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb +27 -6
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb +21 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/config.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log_subsystem/event_record.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/power.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process.rb +43 -4
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/image.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/io.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/memory.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/thread.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_value.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/remote_registry_key.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/thread.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/tlv.rb +7 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/ui.rb +14 -13
- data/lib/rex/post/meterpreter/extensions/stdapi/webcam/webcam.rb +1 -0
- data/lib/rex/post/meterpreter/inbound_packet_handler.rb +2 -1
- data/lib/rex/post/meterpreter/object_aliases.rb +6 -5
- data/lib/rex/post/meterpreter/packet.rb +26 -6
- data/lib/rex/post/meterpreter/packet_dispatcher.rb +1 -0
- data/lib/rex/post/meterpreter/packet_parser.rb +1 -0
- data/lib/rex/post/meterpreter/packet_response_waiter.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +103 -28
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/espia.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/incognito.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/networkpug.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv.rb +3 -2
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/elevate.rb +12 -11
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/passwd.rb +2 -1
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/timestomp.rb +2 -1
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/sniffer.rb +53 -36
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi.rb +3 -2
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/fs.rb +87 -44
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb +80 -18
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb +77 -48
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/ui.rb +72 -41
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/webcam.rb +24 -5
- data/lib/rex/post/meterpreter/ui/console/interactive_channel.rb +2 -1
- data/lib/rex/post/permission.rb +2 -1
- data/lib/rex/post/process.rb +2 -1
- data/lib/rex/post/thread.rb +2 -1
- data/lib/rex/post/ui.rb +2 -1
- data/lib/rex/proto.rb +1 -0
- data/lib/rex/proto.rb.ts.rb +2 -1
- data/lib/rex/proto/dcerpc.rb +2 -1
- data/lib/rex/proto/dcerpc.rb.ts.rb +2 -1
- data/lib/rex/proto/dcerpc/client.rb +1 -0
- data/lib/rex/proto/dcerpc/client.rb.ut.rb +1 -0
- data/lib/rex/proto/dcerpc/exceptions.rb +2 -1
- data/lib/rex/proto/dcerpc/handle.rb +1 -0
- data/lib/rex/proto/dcerpc/handle.rb.ut.rb +2 -1
- data/lib/rex/proto/dcerpc/ndr.rb +2 -1
- data/lib/rex/proto/dcerpc/ndr.rb.ut.rb +2 -1
- data/lib/rex/proto/dcerpc/packet.rb +52 -45
- data/lib/rex/proto/dcerpc/packet.rb.ut.rb +12 -11
- data/lib/rex/proto/dcerpc/response.rb +1 -0
- data/lib/rex/proto/dcerpc/response.rb.ut.rb +2 -1
- data/lib/rex/proto/dcerpc/uuid.rb +13 -12
- data/lib/rex/proto/dcerpc/uuid.rb.ut.rb +2 -1
- data/lib/rex/proto/dhcp.rb +2 -1
- data/lib/rex/proto/dhcp/constants.rb +2 -1
- data/lib/rex/proto/dhcp/server.rb +4 -3
- data/lib/rex/proto/drda.rb +1 -0
- data/lib/rex/proto/drda.rb.ts.rb +1 -0
- data/lib/rex/proto/drda/constants.rb +1 -0
- data/lib/rex/proto/drda/constants.rb.ut.rb +1 -0
- data/lib/rex/proto/drda/packet.rb +11 -10
- data/lib/rex/proto/drda/packet.rb.ut.rb +5 -4
- data/lib/rex/proto/drda/utils.rb +4 -3
- data/lib/rex/proto/drda/utils.rb.ut.rb +3 -2
- data/lib/rex/proto/http.rb +2 -1
- data/lib/rex/proto/http.rb.ts.rb +2 -1
- data/lib/rex/proto/http/client.rb +29 -5
- data/lib/rex/proto/http/client.rb.ut.rb +1 -0
- data/lib/rex/proto/http/handler.rb +2 -1
- data/lib/rex/proto/http/handler/erb.rb +5 -4
- data/lib/rex/proto/http/handler/erb.rb.ut.rb +2 -1
- data/lib/rex/proto/http/handler/proc.rb +1 -0
- data/lib/rex/proto/http/handler/proc.rb.ut.rb +2 -1
- data/lib/rex/proto/http/header.rb +3 -3
- data/lib/rex/proto/http/header.rb.ut.rb +2 -1
- data/lib/rex/proto/http/packet.rb +1 -0
- data/lib/rex/proto/http/packet.rb.ut.rb +15 -14
- data/lib/rex/proto/http/request.rb +23 -22
- data/lib/rex/proto/http/request.rb.ut.rb +2 -1
- data/lib/rex/proto/http/response.rb +6 -5
- data/lib/rex/proto/http/response.rb.ut.rb +7 -6
- data/lib/rex/proto/http/server.rb +1 -0
- data/lib/rex/proto/http/server.rb.ut.rb +6 -5
- data/lib/rex/proto/iax2.rb +1 -0
- data/lib/rex/proto/iax2/call.rb +48 -47
- data/lib/rex/proto/iax2/client.rb +23 -22
- data/lib/rex/proto/iax2/codecs.rb +1 -0
- data/lib/rex/proto/iax2/codecs/alaw.rb +1 -0
- data/lib/rex/proto/iax2/codecs/g711.rb +4 -3
- data/lib/rex/proto/iax2/codecs/mulaw.rb +1 -0
- data/lib/rex/proto/iax2/constants.rb +1 -0
- data/lib/rex/proto/natpmp.rb +11 -0
- data/lib/rex/proto/natpmp/constants.rb +19 -0
- data/lib/rex/proto/natpmp/packet.rb +45 -0
- data/lib/rex/proto/ntlm.rb +1 -0
- data/lib/rex/proto/ntlm.rb.ut.rb +1 -0
- data/lib/rex/proto/ntlm/base.rb +38 -37
- data/lib/rex/proto/ntlm/constants.rb +1 -0
- data/lib/rex/proto/ntlm/crypt.rb +45 -44
- data/lib/rex/proto/ntlm/exceptions.rb +1 -0
- data/lib/rex/proto/ntlm/message.rb +30 -29
- data/lib/rex/proto/ntlm/utils.rb +116 -115
- data/lib/rex/proto/proxy/socks4a.rb +1 -0
- data/lib/rex/proto/rfb.rb +1 -0
- data/lib/rex/proto/rfb.rb.ut.rb +1 -0
- data/lib/rex/proto/rfb/cipher.rb +1 -0
- data/lib/rex/proto/rfb/client.rb +1 -0
- data/lib/rex/proto/rfb/constants.rb +1 -0
- data/lib/rex/proto/smb.rb +2 -1
- data/lib/rex/proto/smb.rb.ts.rb +2 -1
- data/lib/rex/proto/smb/client.rb +23 -22
- data/lib/rex/proto/smb/client.rb.ut.rb +1 -0
- data/lib/rex/proto/smb/constants.rb +1 -0
- data/lib/rex/proto/smb/constants.rb.ut.rb +2 -1
- data/lib/rex/proto/smb/crypt.rb +3 -2
- data/lib/rex/proto/smb/evasions.rb +1 -0
- data/lib/rex/proto/smb/exceptions.rb +6 -5
- data/lib/rex/proto/smb/simpleclient.rb +1 -0
- data/lib/rex/proto/smb/simpleclient.rb.ut.rb +1 -0
- data/lib/rex/proto/smb/utils.rb +1 -0
- data/lib/rex/proto/smb/utils.rb.ut.rb +2 -1
- data/lib/rex/proto/sunrpc.rb +1 -0
- data/lib/rex/proto/sunrpc/client.rb +1 -0
- data/lib/rex/proto/tftp.rb +3 -1
- data/lib/rex/proto/tftp/client.rb +344 -0
- data/lib/rex/proto/tftp/constants.rb +2 -1
- data/lib/rex/proto/tftp/server.rb +2 -1
- data/lib/rex/proto/tftp/server.rb.ut.rb +3 -2
- data/lib/rex/registry.rb +14 -0
- data/lib/rex/registry/hive.rb +132 -0
- data/lib/rex/registry/lfkey.rb +51 -0
- data/lib/rex/registry/nodekey.rb +54 -0
- data/lib/rex/registry/regf.rb +25 -0
- data/lib/rex/registry/valuekey.rb +67 -0
- data/lib/rex/registry/valuelist.rb +29 -0
- data/lib/rex/ropbuilder.rb +2 -1
- data/lib/rex/ropbuilder/rop.rb +3 -2
- data/lib/rex/script.rb +1 -0
- data/lib/rex/script/base.rb +1 -0
- data/lib/rex/script/meterpreter.rb +1 -0
- data/lib/rex/script/shell.rb +1 -0
- data/lib/rex/service.rb +2 -1
- data/lib/rex/service_manager.rb +6 -5
- data/lib/rex/service_manager.rb.ut.rb +2 -1
- data/lib/rex/services/local_relay.rb +1 -0
- data/lib/rex/socket.rb +72 -36
- data/lib/rex/socket.rb.ut.rb +1 -0
- data/lib/rex/socket/comm.rb +1 -0
- data/lib/rex/socket/comm/local.rb +60 -13
- data/lib/rex/socket/comm/local.rb.ut.rb +2 -1
- data/lib/rex/socket/ip.rb +1 -0
- data/lib/rex/socket/parameters.rb +15 -14
- data/lib/rex/socket/parameters.rb.ut.rb +2 -1
- data/lib/rex/socket/range_walker.rb +71 -26
- data/lib/rex/socket/range_walker.rb.ut.rb +2 -1
- data/lib/rex/socket/ssl_tcp.rb +1 -0
- data/lib/rex/socket/ssl_tcp.rb.ut.rb +2 -1
- data/lib/rex/socket/ssl_tcp_server.rb +1 -0
- data/lib/rex/socket/ssl_tcp_server.rb.ut.rb +1 -0
- data/lib/rex/socket/subnet_walker.rb +1 -0
- data/lib/rex/socket/subnet_walker.rb.ut.rb +2 -1
- data/lib/rex/socket/switch_board.rb +1 -0
- data/lib/rex/socket/switch_board.rb.ut.rb +2 -1
- data/lib/rex/socket/tcp.rb +4 -3
- data/lib/rex/socket/tcp.rb.ut.rb +2 -1
- data/lib/rex/socket/tcp_server.rb +1 -0
- data/lib/rex/socket/tcp_server.rb.ut.rb +2 -1
- data/lib/rex/socket/udp.rb +2 -1
- data/lib/rex/socket/udp.rb.ut.rb +2 -1
- data/lib/rex/struct2.rb +2 -1
- data/lib/rex/struct2/c_struct.rb +2 -1
- data/lib/rex/struct2/c_struct_template.rb +2 -1
- data/lib/rex/struct2/constant.rb +2 -1
- data/lib/rex/struct2/element.rb +2 -1
- data/lib/rex/struct2/generic.rb +1 -0
- data/lib/rex/struct2/restraint.rb +2 -1
- data/lib/rex/struct2/s_string.rb +1 -0
- data/lib/rex/struct2/s_struct.rb +1 -0
- data/lib/rex/sync.rb +2 -1
- data/lib/rex/sync/event.rb +1 -0
- data/lib/rex/sync/read_write_lock.rb +1 -0
- data/lib/rex/sync/ref.rb +2 -1
- data/lib/rex/sync/thread_safe.rb +2 -1
- data/lib/rex/test.rb +2 -1
- data/lib/rex/text.rb +136 -19
- data/lib/rex/text.rb.ut.rb +1 -0
- data/lib/rex/thread_factory.rb +5 -4
- data/lib/rex/time.rb +2 -1
- data/lib/rex/transformer.rb +1 -0
- data/lib/rex/transformer.rb.ut.rb +2 -1
- data/lib/rex/ui.rb +2 -1
- data/lib/rex/ui/interactive.rb +10 -9
- data/lib/rex/ui/output.rb +1 -0
- data/lib/rex/ui/output/none.rb +2 -1
- data/lib/rex/ui/progress_tracker.rb +2 -1
- data/lib/rex/ui/subscriber.rb +9 -8
- data/lib/rex/ui/text/color.rb +1 -0
- data/lib/rex/ui/text/color.rb.ut.rb +1 -0
- data/lib/rex/ui/text/dispatcher_shell.rb +63 -23
- data/lib/rex/ui/text/input.rb +1 -0
- data/lib/rex/ui/text/input/buffer.rb +7 -6
- data/lib/rex/ui/text/input/readline.rb +14 -13
- data/lib/rex/ui/text/input/socket.rb +1 -0
- data/lib/rex/ui/text/input/stdio.rb +2 -1
- data/lib/rex/ui/text/irb_shell.rb +1 -0
- data/lib/rex/ui/text/output.rb +1 -0
- data/lib/rex/ui/text/output/buffer.rb +1 -0
- data/lib/rex/ui/text/output/file.rb +1 -0
- data/lib/rex/ui/text/output/socket.rb +1 -0
- data/lib/rex/ui/text/output/stdio.rb +1 -0
- data/lib/rex/ui/text/output/tee.rb +1 -0
- data/lib/rex/ui/text/progress_tracker.rb +2 -1
- data/lib/rex/ui/text/progress_tracker.rb.ut.rb +2 -1
- data/lib/rex/ui/text/shell.rb +1 -0
- data/lib/rex/ui/text/table.rb +20 -14
- data/lib/rex/ui/text/table.rb.ut.rb +3 -2
- data/lib/rex/zip.rb +1 -0
- data/lib/rex/zip/archive.rb +2 -1
- data/lib/rex/zip/blocks.rb +3 -2
- data/lib/rex/zip/entry.rb +6 -7
- data/lib/rex/zip/jar.rb +4 -3
- data/lib/rex/zip/samples/comment.rb +1 -0
- data/lib/rex/zip/samples/mkwar.rb +1 -0
- data/lib/rex/zip/samples/mkzip.rb +1 -0
- data/lib/rex/zip/samples/recursive.rb +1 -0
- metadata +433 -435
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: binary -*-
|
2
3
|
|
3
4
|
require 'rex/post/ui'
|
4
5
|
|
@@ -10,7 +11,7 @@ module Stdapi
|
|
10
11
|
|
11
12
|
###
|
12
13
|
#
|
13
|
-
# Allows for interacting with the user interface on the remote machine,
|
14
|
+
# Allows for interacting with the user interface on the remote machine,
|
14
15
|
# such as by disabling the keyboard and mouse.
|
15
16
|
#
|
16
17
|
# WARNING:
|
@@ -46,7 +47,7 @@ class UI < Rex::Post::UI
|
|
46
47
|
# Disable keyboard input on the remote machine.
|
47
48
|
#
|
48
49
|
def disable_keyboard
|
49
|
-
return enable_keyboard(false)
|
50
|
+
return enable_keyboard(false)
|
50
51
|
end
|
51
52
|
|
52
53
|
#
|
@@ -112,7 +113,7 @@ class UI < Rex::Post::UI
|
|
112
113
|
end
|
113
114
|
return desktopz
|
114
115
|
end
|
115
|
-
|
116
|
+
|
116
117
|
#
|
117
118
|
# Get the current desktop meterpreter is using.
|
118
119
|
#
|
@@ -129,10 +130,10 @@ class UI < Rex::Post::UI
|
|
129
130
|
end
|
130
131
|
return desktop
|
131
132
|
end
|
132
|
-
|
133
|
+
|
133
134
|
#
|
134
|
-
# Change the meterpreters current desktop. The switch param sets this
|
135
|
-
# new desktop as the interactive one (The local users visible desktop
|
135
|
+
# Change the meterpreters current desktop. The switch param sets this
|
136
|
+
# new desktop as the interactive one (The local users visible desktop
|
136
137
|
# with screen/keyboard/mouse control).
|
137
138
|
#
|
138
139
|
def set_desktop( session=-1, station='WinSta0', name='Default', switch=false )
|
@@ -147,12 +148,12 @@ class UI < Rex::Post::UI
|
|
147
148
|
end
|
148
149
|
return false
|
149
150
|
end
|
150
|
-
|
151
|
+
|
151
152
|
#
|
152
153
|
# Grab a screenshot of the interactive desktop
|
153
154
|
#
|
154
155
|
def screenshot( quality=50 )
|
155
|
-
request = Packet.create_request( 'stdapi_ui_desktop_screenshot' )
|
156
|
+
request = Packet.create_request( 'stdapi_ui_desktop_screenshot' )
|
156
157
|
request.add_tlv( TLV_TYPE_DESKTOP_SCREENSHOT_QUALITY, quality )
|
157
158
|
# include the x64 screenshot dll if the host OS is x64
|
158
159
|
if( client.sys.config.sysinfo['Architecture'] =~ /^\S*x64\S*/ )
|
@@ -191,7 +192,7 @@ class UI < Rex::Post::UI
|
|
191
192
|
response = client.send_request(request)
|
192
193
|
return true
|
193
194
|
end
|
194
|
-
|
195
|
+
|
195
196
|
#
|
196
197
|
# Start the keyboard sniffer
|
197
198
|
#
|
@@ -218,7 +219,7 @@ class UI < Rex::Post::UI
|
|
218
219
|
response = client.send_request(request)
|
219
220
|
return response.get_tlv_value(TLV_TYPE_KEYS_DUMP);
|
220
221
|
end
|
221
|
-
|
222
|
+
|
222
223
|
#
|
223
224
|
# Extract the keystroke from the buffer data
|
224
225
|
#
|
@@ -228,11 +229,11 @@ class UI < Rex::Post::UI
|
|
228
229
|
fl = (inp & 0xff00) >> 8
|
229
230
|
vk = (inp & 0xff)
|
230
231
|
kc = VirtualKeyCodes[vk]
|
231
|
-
|
232
|
+
|
232
233
|
f_shift = fl & (1<<1)
|
233
234
|
f_ctrl = fl & (1<<2)
|
234
235
|
f_alt = fl & (1<<3)
|
235
|
-
|
236
|
+
|
236
237
|
if(kc)
|
237
238
|
name = ((f_shift != 0 and kc.length > 1) ? kc[1] : kc[0])
|
238
239
|
case name
|
@@ -250,7 +251,7 @@ class UI < Rex::Post::UI
|
|
250
251
|
end
|
251
252
|
return outp
|
252
253
|
end
|
253
|
-
|
254
|
+
|
254
255
|
protected
|
255
256
|
attr_accessor :client # :nodoc:
|
256
257
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: binary -*-
|
2
3
|
|
3
4
|
module Rex
|
4
5
|
module Post
|
@@ -44,7 +45,7 @@ module ObjectAliasesContainer
|
|
44
45
|
|
45
46
|
items << current_path
|
46
47
|
|
47
|
-
items.concat(dump_alias_tree(current_path,
|
48
|
+
items.concat(dump_alias_tree(current_path,
|
48
49
|
current.aliases[x]))
|
49
50
|
}
|
50
51
|
end
|
@@ -60,19 +61,19 @@ end
|
|
60
61
|
|
61
62
|
###
|
62
63
|
#
|
63
|
-
# Generic object aliases from a class instance referenced symbol to an
|
64
|
+
# Generic object aliases from a class instance referenced symbol to an
|
64
65
|
# associated object of an arbitrary type
|
65
66
|
#
|
66
67
|
###
|
67
68
|
class ObjectAliases
|
68
69
|
include Rex::Post::Meterpreter::ObjectAliasesContainer
|
69
|
-
|
70
|
+
|
70
71
|
##
|
71
72
|
#
|
72
73
|
# Constructor
|
73
74
|
#
|
74
75
|
##
|
75
|
-
|
76
|
+
|
76
77
|
# An instance
|
77
78
|
def initialize(aliases = {})
|
78
79
|
initialize_aliases(aliases)
|
@@ -80,4 +81,4 @@ class ObjectAliases
|
|
80
81
|
end
|
81
82
|
|
82
83
|
|
83
|
-
end; end; end
|
84
|
+
end; end; end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: binary -*-
|
2
3
|
|
3
4
|
module Rex
|
4
5
|
module Post
|
@@ -54,6 +55,7 @@ TLV_TYPE_REQUEST_ID = TLV_META_TYPE_STRING | 2
|
|
54
55
|
TLV_TYPE_EXCEPTION = TLV_META_TYPE_GROUP | 3
|
55
56
|
TLV_TYPE_RESULT = TLV_META_TYPE_UINT | 4
|
56
57
|
|
58
|
+
|
57
59
|
TLV_TYPE_STRING = TLV_META_TYPE_STRING | 10
|
58
60
|
TLV_TYPE_UINT = TLV_META_TYPE_UINT | 11
|
59
61
|
TLV_TYPE_BOOL = TLV_META_TYPE_BOOL | 12
|
@@ -129,13 +131,14 @@ class Tlv
|
|
129
131
|
|
130
132
|
def inspect
|
131
133
|
utype = type ^ TLV_META_TYPE_COMPRESSED
|
134
|
+
group = false
|
132
135
|
meta = case (utype & TLV_META_MASK)
|
133
136
|
when TLV_META_TYPE_STRING; "STRING"
|
134
137
|
when TLV_META_TYPE_UINT; "INT"
|
135
138
|
when TLV_META_TYPE_RAW; "RAW"
|
136
139
|
when TLV_META_TYPE_BOOL; "BOOL"
|
137
140
|
when TLV_META_TYPE_QWORD; "QWORD"
|
138
|
-
when TLV_META_TYPE_GROUP; "GROUP"
|
141
|
+
when TLV_META_TYPE_GROUP; group=true; "GROUP"
|
139
142
|
when TLV_META_TYPE_COMPLEX; "COMPLEX"
|
140
143
|
else; 'unknown-meta-type'
|
141
144
|
end
|
@@ -175,16 +178,33 @@ class Tlv
|
|
175
178
|
when TLV_TYPE_MIGRATE_PAYLOAD; "MIGRATE-PAYLOAD"
|
176
179
|
when TLV_TYPE_MIGRATE_ARCH; "MIGRATE-ARCH"
|
177
180
|
|
178
|
-
#
|
179
|
-
#
|
180
|
-
#when Extensions::Stdapi::
|
181
|
+
#when Extensions::Stdapi::TLV_TYPE_NETWORK_INTERFACE; 'network-interface'
|
182
|
+
#when Extensions::Stdapi::TLV_TYPE_IP; 'ip-address'
|
183
|
+
#when Extensions::Stdapi::TLV_TYPE_NETMASK; 'netmask'
|
184
|
+
#when Extensions::Stdapi::TLV_TYPE_MAC_ADDRESS; 'mac-address'
|
185
|
+
#when Extensions::Stdapi::TLV_TYPE_MAC_NAME; 'interface-name'
|
186
|
+
#when Extensions::Stdapi::TLV_TYPE_IP6_SCOPE; 'address-scope'
|
187
|
+
#when Extensions::Stdapi::TLV_TYPE_INTERFACE_MTU; 'interface-mtu'
|
188
|
+
#when Extensions::Stdapi::TLV_TYPE_INTERFACE_FLAGS; 'interface-flags'
|
189
|
+
#when Extensions::Stdapi::TLV_TYPE_INTERFACE_INDEX; 'interface-index'
|
190
|
+
|
181
191
|
else; "unknown-#{type}"
|
182
192
|
end
|
183
193
|
val = value.inspect
|
184
194
|
if val.length > 50
|
185
195
|
val = val[0,50] + ' ..."'
|
186
196
|
end
|
187
|
-
|
197
|
+
group ||= (self.class.to_s =~ /Packet/)
|
198
|
+
if group
|
199
|
+
tlvs_inspect = "tlvs=[\n"
|
200
|
+
@tlvs.each { |t|
|
201
|
+
tlvs_inspect << " #{t.inspect}\n"
|
202
|
+
}
|
203
|
+
tlvs_inspect << "]"
|
204
|
+
else
|
205
|
+
tlvs_inspect = "meta=#{meta.ljust 10} value=#{val}"
|
206
|
+
end
|
207
|
+
"#<#{self.class} type=#{stype.ljust 15} #{tlvs_inspect}>"
|
188
208
|
end
|
189
209
|
|
190
210
|
##
|
@@ -366,7 +386,7 @@ class GroupTlv < Tlv
|
|
366
386
|
# Synonym for each.
|
367
387
|
#
|
368
388
|
def each_tlv(type = TLV_TYPE_ANY, &block)
|
369
|
-
each(type, block)
|
389
|
+
each(type, &block)
|
370
390
|
end
|
371
391
|
|
372
392
|
#
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- coding: binary -*-
|
1
2
|
require 'rex/post/meterpreter'
|
2
3
|
require 'rex/parser/arguments'
|
3
4
|
|
@@ -43,11 +44,9 @@ class Console::CommandDispatcher::Core
|
|
43
44
|
"close" => "Closes a channel",
|
44
45
|
"channel" => "Displays information about active channels",
|
45
46
|
"exit" => "Terminate the meterpreter session",
|
46
|
-
"detach" => "Detach the meterpreter session (for http/https)",
|
47
47
|
"help" => "Help menu",
|
48
48
|
"interact" => "Interacts with a channel",
|
49
49
|
"irb" => "Drop into irb scripting mode",
|
50
|
-
"migrate" => "Migrate the server to another process",
|
51
50
|
"use" => "Deprecated alias for 'load'",
|
52
51
|
"load" => "Load one or more meterpreter extensions",
|
53
52
|
"quit" => "Terminate the meterpreter session",
|
@@ -61,6 +60,18 @@ class Console::CommandDispatcher::Core
|
|
61
60
|
"enable_unicode_encoding" => "Enables encoding of unicode strings",
|
62
61
|
"disable_unicode_encoding" => "Disables encoding of unicode strings"
|
63
62
|
}
|
63
|
+
|
64
|
+
if client.passive_service
|
65
|
+
c["detach"] = "Detach the meterpreter session (for http/https)"
|
66
|
+
end
|
67
|
+
# The only meterp that implements this right now is native Windows and for
|
68
|
+
# whatever reason it is not adding core_migrate to its list of commands.
|
69
|
+
# Use a dumb platform til it gets sorted.
|
70
|
+
#if client.commands.include? "core_migrate"
|
71
|
+
if client.platform =~ /win/
|
72
|
+
c["migrate"] = "Migrate the server to another process"
|
73
|
+
end
|
74
|
+
|
64
75
|
if (msf_loaded?)
|
65
76
|
c["info"] = "Displays information about a Post module"
|
66
77
|
end
|
@@ -83,6 +94,7 @@ class Console::CommandDispatcher::Core
|
|
83
94
|
end
|
84
95
|
|
85
96
|
def cmd_background
|
97
|
+
print_status "Backgrounding session #{client.name}..."
|
86
98
|
client.interacting = false
|
87
99
|
end
|
88
100
|
|
@@ -91,6 +103,7 @@ class Console::CommandDispatcher::Core
|
|
91
103
|
#
|
92
104
|
@@channel_opts = Rex::Parser::Arguments.new(
|
93
105
|
"-c" => [ true, "Close the given channel." ],
|
106
|
+
"-k" => [ true, "Close the given channel." ],
|
94
107
|
"-i" => [ true, "Interact with the given channel." ],
|
95
108
|
"-l" => [ false, "List active channels." ],
|
96
109
|
"-r" => [ true, "Read from the given channel." ],
|
@@ -108,7 +121,7 @@ class Console::CommandDispatcher::Core
|
|
108
121
|
# Performs operations on the supplied channel.
|
109
122
|
#
|
110
123
|
def cmd_channel(*args)
|
111
|
-
if args.include?("-h") or args.include?("--help")
|
124
|
+
if args.empty? or args.include?("-h") or args.include?("--help")
|
112
125
|
cmd_channel_help
|
113
126
|
return
|
114
127
|
end
|
@@ -122,7 +135,7 @@ class Console::CommandDispatcher::Core
|
|
122
135
|
case opt
|
123
136
|
when "-l"
|
124
137
|
mode = :list
|
125
|
-
when "-c"
|
138
|
+
when "-c", "-k"
|
126
139
|
mode = :close
|
127
140
|
chan = val
|
128
141
|
when "-i"
|
@@ -179,14 +192,35 @@ class Console::CommandDispatcher::Core
|
|
179
192
|
end
|
180
193
|
end
|
181
194
|
|
195
|
+
def cmd_channel_tabs(str, words)
|
196
|
+
case words.length
|
197
|
+
when 1
|
198
|
+
@@channel_opts.fmt.keys
|
199
|
+
when 2
|
200
|
+
case words[1]
|
201
|
+
when "-k", "-c", "-i", "-r", "-w"
|
202
|
+
tab_complete_channels
|
203
|
+
else
|
204
|
+
[]
|
205
|
+
end
|
206
|
+
else
|
207
|
+
[]
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
def cmd_close_help
|
212
|
+
print_line "Usage: close <channel_id>"
|
213
|
+
print_line
|
214
|
+
print_line "Closes the supplied channel."
|
215
|
+
print_line
|
216
|
+
end
|
217
|
+
|
182
218
|
#
|
183
219
|
# Closes a supplied channel.
|
184
220
|
#
|
185
221
|
def cmd_close(*args)
|
186
222
|
if (args.length == 0)
|
187
|
-
|
188
|
-
"Usage: close channel_id\n\n" +
|
189
|
-
"Closes the supplied channel.")
|
223
|
+
cmd_close_help
|
190
224
|
return true
|
191
225
|
end
|
192
226
|
|
@@ -203,6 +237,12 @@ class Console::CommandDispatcher::Core
|
|
203
237
|
end
|
204
238
|
end
|
205
239
|
|
240
|
+
def cmd_close_tabs(str, words)
|
241
|
+
return [] if words.length > 1
|
242
|
+
|
243
|
+
return tab_complete_channels
|
244
|
+
end
|
245
|
+
|
206
246
|
#
|
207
247
|
# Terminates the meterpreter session.
|
208
248
|
#
|
@@ -215,6 +255,17 @@ class Console::CommandDispatcher::Core
|
|
215
255
|
|
216
256
|
alias cmd_quit cmd_exit
|
217
257
|
|
258
|
+
def cmd_detach_help
|
259
|
+
print_line "Detach from the victim. Only possible for non-stream sessions (http/https)"
|
260
|
+
print_line
|
261
|
+
print_line "The victim will continue to attempt to call back to the handler until it"
|
262
|
+
print_line "successfully connects (which may happen immediately if you have a handler"
|
263
|
+
print_line "running in the background), or reaches its expiration."
|
264
|
+
print_line
|
265
|
+
print_line "This session may #{client.passive_service ? "" : "NOT"} be detached."
|
266
|
+
print_line
|
267
|
+
end
|
268
|
+
|
218
269
|
#
|
219
270
|
# Disconnects the session
|
220
271
|
#
|
@@ -227,14 +278,19 @@ class Console::CommandDispatcher::Core
|
|
227
278
|
shell.stop
|
228
279
|
end
|
229
280
|
|
281
|
+
def cmd_interact_help
|
282
|
+
print_line "Usage: interact <channel_id>"
|
283
|
+
print_line
|
284
|
+
print_line "Interacts with the supplied channel."
|
285
|
+
print_line
|
286
|
+
end
|
287
|
+
|
230
288
|
#
|
231
289
|
# Interacts with a channel.
|
232
290
|
#
|
233
291
|
def cmd_interact(*args)
|
234
292
|
if (args.length == 0)
|
235
|
-
|
236
|
-
"Usage: interact channel_id\n\n" +
|
237
|
-
"Interacts with the supplied channel.")
|
293
|
+
cmd_info_help
|
238
294
|
return true
|
239
295
|
end
|
240
296
|
|
@@ -250,6 +306,8 @@ class Console::CommandDispatcher::Core
|
|
250
306
|
end
|
251
307
|
end
|
252
308
|
|
309
|
+
alias cmd_interact_tabs cmd_close_tabs
|
310
|
+
|
253
311
|
#
|
254
312
|
# Runs the IRB scripting shell
|
255
313
|
#
|
@@ -260,15 +318,20 @@ class Console::CommandDispatcher::Core
|
|
260
318
|
Rex::Ui::Text::IrbShell.new(binding).run
|
261
319
|
end
|
262
320
|
|
321
|
+
def cmd_migrate_help
|
322
|
+
print_line "Usage: migrate <pid>"
|
323
|
+
print_line
|
324
|
+
print_line "Migrates the server instance to another process."
|
325
|
+
print_line "NOTE: Any open channels or other dynamic state will be lost."
|
326
|
+
print_line
|
327
|
+
end
|
328
|
+
|
263
329
|
#
|
264
330
|
# Migrates the server to the supplied process identifier.
|
265
331
|
#
|
266
332
|
def cmd_migrate(*args)
|
267
333
|
if (args.length == 0)
|
268
|
-
|
269
|
-
"Usage: migrate pid\n\n" +
|
270
|
-
"Migrates the server instance to another process.\n" +
|
271
|
-
"Note: Any open channels or other dynamic state will be lost.")
|
334
|
+
cmd_migrate_help
|
272
335
|
return true
|
273
336
|
end
|
274
337
|
|
@@ -370,14 +433,19 @@ class Console::CommandDispatcher::Core
|
|
370
433
|
alias cmd_use_help cmd_load_help
|
371
434
|
alias cmd_use_tabs cmd_load_tabs
|
372
435
|
|
436
|
+
def cmd_read_help
|
437
|
+
print_line "Usage: read <channel_id> [length]"
|
438
|
+
print_line
|
439
|
+
print_line "Reads data from the supplied channel."
|
440
|
+
print_line
|
441
|
+
end
|
442
|
+
|
373
443
|
#
|
374
444
|
# Reads data from a channel.
|
375
445
|
#
|
376
446
|
def cmd_read(*args)
|
377
447
|
if (args.length == 0)
|
378
|
-
|
379
|
-
"Usage: read channel_id [length]\n\n" +
|
380
|
-
"Reads data from the supplied channel.")
|
448
|
+
cmd_read_help
|
381
449
|
return true
|
382
450
|
end
|
383
451
|
|
@@ -401,6 +469,8 @@ class Console::CommandDispatcher::Core
|
|
401
469
|
return true
|
402
470
|
end
|
403
471
|
|
472
|
+
alias cmd_read_tabs cmd_close_tabs
|
473
|
+
|
404
474
|
def cmd_run_help
|
405
475
|
print_line "Usage: run <script> [arguments]"
|
406
476
|
print_line
|
@@ -668,17 +738,15 @@ class Console::CommandDispatcher::Core
|
|
668
738
|
return true
|
669
739
|
end
|
670
740
|
|
671
|
-
def
|
672
|
-
|
673
|
-
|
674
|
-
|
741
|
+
def cmd_resource_help
|
742
|
+
print_line "Usage: resource <path1> [path2 ...]"
|
743
|
+
print_line
|
744
|
+
print_line "Run the commands stored in the supplied files."
|
745
|
+
print_line
|
675
746
|
end
|
676
747
|
|
677
748
|
def cmd_resource(*args)
|
678
749
|
if args.empty?
|
679
|
-
print(
|
680
|
-
"Usage: resource path1 path2" +
|
681
|
-
"Run the commands stored in the supplied files.\n")
|
682
750
|
return false
|
683
751
|
end
|
684
752
|
args.each do |glob|
|
@@ -709,6 +777,12 @@ class Console::CommandDispatcher::Core
|
|
709
777
|
end
|
710
778
|
end
|
711
779
|
|
780
|
+
def cmd_resource_tabs(str, words)
|
781
|
+
return [] if words.length > 1
|
782
|
+
|
783
|
+
tab_complete_filenames(str, words)
|
784
|
+
end
|
785
|
+
|
712
786
|
def cmd_enable_unicode_encoding
|
713
787
|
client.encode_unicode = true
|
714
788
|
print_status("Unicode encoding is enabled")
|
@@ -782,12 +856,9 @@ protected
|
|
782
856
|
end
|
783
857
|
|
784
858
|
def tab_complete_postmods
|
785
|
-
# XXX This might get slow with a large number of post
|
786
|
-
# modules. The proper solution is probably to implement a
|
787
|
-
# Module::Post#session_compatible?(session_object_or_int) method
|
788
859
|
tabs = client.framework.modules.post.map { |name,klass|
|
789
860
|
mod = klass.new
|
790
|
-
if mod.
|
861
|
+
if mod.session_compatible?(client)
|
791
862
|
mod.fullname.dup
|
792
863
|
else
|
793
864
|
nil
|
@@ -798,6 +869,10 @@ protected
|
|
798
869
|
tabs.compact
|
799
870
|
end
|
800
871
|
|
872
|
+
def tab_complete_channels
|
873
|
+
client.channels.keys.map { |k| k.to_s }
|
874
|
+
end
|
875
|
+
|
801
876
|
end
|
802
877
|
|
803
878
|
end
|