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