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
|
data/lib/rex/proto/drda.rb
CHANGED
|
File without changes
|
data/lib/rex/proto/drda.rb.ts.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/lib/rex/proto/drda/utils.rb
CHANGED
|
File without changes
|
|
File without changes
|
data/lib/rex/proto/http.rb
CHANGED
|
File without changes
|
data/lib/rex/proto/http.rb.ts.rb
CHANGED
|
File without changes
|
|
@@ -366,7 +366,7 @@ class Client
|
|
|
366
366
|
tries = 0
|
|
367
367
|
begin
|
|
368
368
|
# XXX This doesn't deal with chunked encoding or "Content-type: text/html; charset=..."
|
|
369
|
-
while tries <
|
|
369
|
+
while tries < 1000 and resp.headers["Content-Type"]== "text/html" and rblob !~ /<\/html>/i
|
|
370
370
|
buff = conn.get_once(-1, 0.05)
|
|
371
371
|
break if not buff
|
|
372
372
|
rblob += buff
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/lib/rex/proto/smb.rb
CHANGED
|
File without changes
|
data/lib/rex/proto/smb.rb.ts.rb
CHANGED
|
File without changes
|
data/lib/rex/proto/smb/client.rb
CHANGED
|
@@ -43,8 +43,8 @@ EVADE = Rex::Proto::SMB::Evasions
|
|
|
43
43
|
|
|
44
44
|
# Read a SMB packet from the socket
|
|
45
45
|
def smb_recv
|
|
46
|
-
data = socket.get_once(-1, self.read_timeout)
|
|
47
46
|
|
|
47
|
+
data = socket.timed_read(4, self.read_timeout)
|
|
48
48
|
if (data.nil? or data.length < 4)
|
|
49
49
|
raise XCEPT::NoReply
|
|
50
50
|
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/lib/rex/proto/smb/crypt.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
@@ -11,55 +11,56 @@ EVASION_HIGH = 2
|
|
|
11
11
|
EVASION_MAX = 3
|
|
12
12
|
|
|
13
13
|
# Add bogus filler at the end of the SMB packet and before the data
|
|
14
|
-
def self.make_offset_filler(level, max_size = 60000, min_size = 512)
|
|
14
|
+
def self.make_offset_filler(level, max_size = 60000, min_size = 512)
|
|
15
15
|
|
|
16
16
|
if (max_size < 0)
|
|
17
17
|
max_size = 4096
|
|
18
18
|
end
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
if (min_size < max_size)
|
|
21
21
|
min_size = max_size - 1
|
|
22
22
|
end
|
|
23
|
-
|
|
24
|
-
case level
|
|
25
|
-
when nil, EVASION_NONE
|
|
26
|
-
return ''
|
|
23
|
+
|
|
24
|
+
case level.to_i
|
|
27
25
|
when EVASION_LOW
|
|
28
26
|
Rex::Text.rand_text(32)
|
|
29
27
|
when EVASION_HIGH
|
|
30
28
|
Rex::Text.rand_text( rand(max_size - min_size) + min_size )
|
|
31
29
|
when EVASION_MAX
|
|
32
30
|
Rex::Text.rand_text( rand(max_size) )
|
|
31
|
+
else EVASION_NONE
|
|
32
|
+
return ''
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
# Obscures a named pipe pathname via leading and trailing slashes
|
|
37
37
|
def self.make_named_pipe_path(level, pipe)
|
|
38
|
-
case level
|
|
39
|
-
when nil, EVASION_NONE
|
|
40
|
-
return '\\' + pipe
|
|
38
|
+
case level.to_i
|
|
41
39
|
when EVASION_LOW
|
|
42
40
|
return ('\\' * (1024 + rand(512))) + pipe
|
|
43
41
|
when EVASION_HIGH, EVASION_MAX
|
|
44
42
|
return ('\\' * (1024 + rand(512))) + pipe + ('\\' * (1024 + rand(512)))
|
|
45
|
-
|
|
43
|
+
else
|
|
44
|
+
return '\\' + pipe
|
|
45
|
+
end
|
|
46
46
|
end
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
# Obscures the TransactNamedPipe \PIPE\ string
|
|
49
49
|
def self.make_trans_named_pipe_name(level)
|
|
50
|
-
case level
|
|
51
|
-
when nil, EVASION_NONE
|
|
52
|
-
return '\\PIPE\\'
|
|
50
|
+
case level.to_i
|
|
53
51
|
when EVASION_LOW
|
|
54
52
|
return ('\\' * (256 - rand(64)) + 'PIPE\\')
|
|
55
53
|
when EVASION_HIGH
|
|
56
54
|
return Rex::Text.rand_text(512 - rand(128))
|
|
57
55
|
when EVASION_MAX
|
|
58
56
|
return Rex::Text.rand_text(1024 - rand(256))
|
|
57
|
+
else
|
|
58
|
+
return '\\PIPE\\'
|
|
59
59
|
end
|
|
60
|
-
end
|
|
60
|
+
end
|
|
61
61
|
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
end
|
|
65
|
-
end
|
|
65
|
+
end
|
|
66
|
+
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/lib/rex/proto/smb/utils.rb
CHANGED
|
File without changes
|
|
File without changes
|
data/lib/rex/proto/sunrpc.rb
CHANGED
|
File without changes
|
|
File without changes
|
data/lib/rex/proto/tftp.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# $Id: server.rb
|
|
1
|
+
# $Id: server.rb 9742 2010-07-08 23:34:29Z jduck $
|
|
2
2
|
require 'rex/socket'
|
|
3
3
|
require 'rex/proto/tftp'
|
|
4
4
|
|
|
@@ -30,8 +30,11 @@ class Server
|
|
|
30
30
|
self.context = context
|
|
31
31
|
self.sock = nil
|
|
32
32
|
@shutting_down = false
|
|
33
|
+
@output_dir = nil
|
|
34
|
+
@tftproot = nil
|
|
33
35
|
|
|
34
36
|
self.files = []
|
|
37
|
+
self.uploaded = []
|
|
35
38
|
self.transfers = []
|
|
36
39
|
end
|
|
37
40
|
|
|
@@ -75,14 +78,31 @@ class Server
|
|
|
75
78
|
#
|
|
76
79
|
# Register a filename and content for a client to request
|
|
77
80
|
#
|
|
78
|
-
def register_file(fn, content)
|
|
81
|
+
def register_file(fn, content, once = false)
|
|
79
82
|
self.files << {
|
|
80
83
|
:name => fn,
|
|
81
|
-
:data => content
|
|
84
|
+
:data => content,
|
|
85
|
+
:once => once
|
|
82
86
|
}
|
|
83
87
|
end
|
|
84
88
|
|
|
85
89
|
|
|
90
|
+
#
|
|
91
|
+
# Register an entire directory to serve files from
|
|
92
|
+
#
|
|
93
|
+
def set_tftproot(rootdir)
|
|
94
|
+
@tftproot = rootdir if File.directory?(rootdir)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
#
|
|
99
|
+
# Register a directory to write uploaded files to
|
|
100
|
+
#
|
|
101
|
+
def set_output_dir(outdir)
|
|
102
|
+
@output_dir = outdir if File.directory?(outdir)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
|
|
86
106
|
#
|
|
87
107
|
# Send an error packet w/the specified code and string
|
|
88
108
|
#
|
|
@@ -110,22 +130,94 @@ class Server
|
|
|
110
130
|
# Find the hash entry for a file that may be offered
|
|
111
131
|
#
|
|
112
132
|
def find_file(fname)
|
|
133
|
+
# Files served via register_file() take precedence.
|
|
113
134
|
self.files.each do |f|
|
|
114
135
|
if (fname == f[:name])
|
|
115
136
|
return f
|
|
116
137
|
end
|
|
117
138
|
end
|
|
139
|
+
|
|
140
|
+
# Now, if we have a tftproot, see if it can serve from it
|
|
141
|
+
if @tftproot
|
|
142
|
+
return find_file_in_root(fname)
|
|
143
|
+
end
|
|
144
|
+
|
|
118
145
|
nil
|
|
119
146
|
end
|
|
120
147
|
|
|
121
148
|
|
|
149
|
+
#
|
|
150
|
+
# Find the file in the specified tftp root and add a temporary
|
|
151
|
+
# entry to the files hash.
|
|
152
|
+
#
|
|
153
|
+
def find_file_in_root(fname)
|
|
154
|
+
fn = File.expand_path(File.join(@tftproot, fname))
|
|
155
|
+
|
|
156
|
+
# Don't allow directory traversal
|
|
157
|
+
return nil if fn.index(@tftproot) != 0
|
|
158
|
+
|
|
159
|
+
return nil if not File.file?(fn) or not File.readable?(fn)
|
|
160
|
+
|
|
161
|
+
# Read the file contents, and register it as being served once
|
|
162
|
+
data = data = File.open(fn, "rb") { |fd| fd.read(fd.stat.size) }
|
|
163
|
+
register_file(fname, data, true)
|
|
164
|
+
|
|
165
|
+
# Return the last file in the array
|
|
166
|
+
return self.files[-1]
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
|
|
122
170
|
attr_accessor :listen_host, :listen_port, :context
|
|
123
|
-
attr_accessor :sock, :files, :transfers
|
|
171
|
+
attr_accessor :sock, :files, :transfers, :uploaded
|
|
124
172
|
attr_accessor :thread
|
|
125
173
|
|
|
126
174
|
|
|
127
175
|
protected
|
|
128
176
|
|
|
177
|
+
def find_transfer(type, from, block)
|
|
178
|
+
self.transfers.each do |tr|
|
|
179
|
+
if (tr[:type] == type and tr[:from] == from and tr[:block] == block)
|
|
180
|
+
return tr
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
nil
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
def save_output(tr)
|
|
188
|
+
self.uploaded << tr[:file]
|
|
189
|
+
if @output_dir
|
|
190
|
+
fn = tr[:file][:name].split(File::SEPARATOR)[-1]
|
|
191
|
+
if fn
|
|
192
|
+
fn = File.join(@output_dir, fn)
|
|
193
|
+
File.open(fn, "wb") { |fd|
|
|
194
|
+
fd.write(tr[:file][:data])
|
|
195
|
+
}
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def check_retransmission(tr)
|
|
202
|
+
elapsed = Time.now - tr[:last_sent]
|
|
203
|
+
if (elapsed >= 3)
|
|
204
|
+
# max retries reached?
|
|
205
|
+
if (tr[:retries] < 3)
|
|
206
|
+
#if (tr[:type] == OpRead)
|
|
207
|
+
# puts "[-] ack timed out, resending block"
|
|
208
|
+
#else
|
|
209
|
+
# puts "[-] block timed out, resending ack"
|
|
210
|
+
#end
|
|
211
|
+
tr[:last_sent] = nil
|
|
212
|
+
tr[:retries] += 1
|
|
213
|
+
else
|
|
214
|
+
#puts "[-] maximum tries reached, terminating transfer"
|
|
215
|
+
self.transfers.delete(tr)
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
|
|
129
221
|
#
|
|
130
222
|
# See if there is anything to do.. If so, dispatch it.
|
|
131
223
|
#
|
|
@@ -154,31 +246,48 @@ protected
|
|
|
154
246
|
# Check to see if transfers need maintenance
|
|
155
247
|
#
|
|
156
248
|
self.transfers.each do |tr|
|
|
157
|
-
#
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
249
|
+
# We handle RRQ and WRQ separately
|
|
250
|
+
#
|
|
251
|
+
if (tr[:type] == OpRead)
|
|
252
|
+
# Are we awaiting an ack?
|
|
253
|
+
if (tr[:last_sent])
|
|
254
|
+
check_retransmission(tr)
|
|
255
|
+
elsif (w != nil and w[0] == self.sock)
|
|
256
|
+
# No ack waiting, send next block..
|
|
257
|
+
chunk = tr[:file][:data].slice(tr[:offset], 512)
|
|
258
|
+
if (chunk and chunk.length >= 0)
|
|
259
|
+
pkt = [OpData, tr[:block]].pack('nn')
|
|
260
|
+
pkt << chunk
|
|
261
|
+
|
|
262
|
+
send_packet(tr[:from], pkt)
|
|
263
|
+
tr[:last_sent] = Time.now
|
|
264
|
+
|
|
265
|
+
# If the file is a one-serve, mark it as started
|
|
266
|
+
tr[:file][:started] = true if (tr[:file][:once])
|
|
166
267
|
else
|
|
167
|
-
#
|
|
168
|
-
|
|
268
|
+
# No more chunks.. transfer is most likely done.
|
|
269
|
+
# However, we can only delete it once the last chunk has been
|
|
270
|
+
# acked.
|
|
169
271
|
end
|
|
170
272
|
end
|
|
171
|
-
|
|
172
|
-
#
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
273
|
+
else
|
|
274
|
+
# Are we awaiting data?
|
|
275
|
+
if (tr[:last_sent])
|
|
276
|
+
check_retransmission(tr)
|
|
277
|
+
elsif (w != nil and w[0] == self.sock)
|
|
278
|
+
# Not waiting for data, send an ack..
|
|
279
|
+
#puts "[*] sending ack for block %d" % [tr[:block]]
|
|
280
|
+
pkt = [OpAck, tr[:block]].pack('nn')
|
|
281
|
+
|
|
177
282
|
send_packet(tr[:from], pkt)
|
|
178
283
|
tr[:last_sent] = Time.now
|
|
179
|
-
|
|
180
|
-
#
|
|
181
|
-
|
|
284
|
+
|
|
285
|
+
# If we had a 0-511 byte chunk, we're done.
|
|
286
|
+
if (tr[:last_size] and tr[:last_size] < 512)
|
|
287
|
+
#puts "[*] Transfer complete, saving output"
|
|
288
|
+
save_output(tr)
|
|
289
|
+
self.transfers.delete(tr)
|
|
290
|
+
end
|
|
182
291
|
end
|
|
183
292
|
end
|
|
184
293
|
end
|
|
@@ -186,6 +295,13 @@ protected
|
|
|
186
295
|
end
|
|
187
296
|
|
|
188
297
|
|
|
298
|
+
def next_block(tr)
|
|
299
|
+
tr[:block] += 1
|
|
300
|
+
tr[:last_sent] = nil
|
|
301
|
+
tr[:retries] = 0
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
|
|
189
305
|
#
|
|
190
306
|
# Dispatch a packet that we received
|
|
191
307
|
#
|
|
@@ -194,6 +310,7 @@ protected
|
|
|
194
310
|
op = buf.unpack('n')[0]
|
|
195
311
|
buf.slice!(0,2)
|
|
196
312
|
|
|
313
|
+
#XXX: todo - create call backs for status
|
|
197
314
|
#start = "[*] TFTP - %s:%u - %s" % [from[0], from[1], OPCODES[op]]
|
|
198
315
|
|
|
199
316
|
case op
|
|
@@ -205,34 +322,93 @@ protected
|
|
|
205
322
|
#puts "%s %s %s" % [start, fn, mode]
|
|
206
323
|
|
|
207
324
|
if (not @shutting_down) and (file = self.find_file(fn))
|
|
325
|
+
if (file[:once] and file[:started])
|
|
326
|
+
send_error(from, ErrFileNotFound)
|
|
327
|
+
else
|
|
328
|
+
self.transfers << {
|
|
329
|
+
:type => OpRead,
|
|
330
|
+
:from => from,
|
|
331
|
+
:file => file,
|
|
332
|
+
:block => 1,
|
|
333
|
+
:offset => 0,
|
|
334
|
+
:last_sent => nil,
|
|
335
|
+
:retries => 0
|
|
336
|
+
}
|
|
337
|
+
end
|
|
338
|
+
else
|
|
339
|
+
#puts "[-] file not found!"
|
|
340
|
+
send_error(from, ErrFileNotFound)
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
when OpWrite
|
|
344
|
+
# Process WRQ packets
|
|
345
|
+
fn = TFTP::get_string(buf)
|
|
346
|
+
mode = TFTP::get_string(buf).downcase
|
|
347
|
+
|
|
348
|
+
#puts "%s %s %s" % [start, fn, mode]
|
|
349
|
+
|
|
350
|
+
if (not @shutting_down) and (@output_dir)
|
|
208
351
|
self.transfers << {
|
|
352
|
+
:type => OpWrite,
|
|
209
353
|
:from => from,
|
|
210
|
-
:file =>
|
|
211
|
-
:block =>
|
|
212
|
-
:offset => 0,
|
|
354
|
+
:file => { :name => fn, :data => '' },
|
|
355
|
+
:block => 0, # WRQ starts at 0
|
|
213
356
|
:last_sent => nil,
|
|
214
357
|
:retries => 0
|
|
215
358
|
}
|
|
216
359
|
else
|
|
217
|
-
|
|
218
|
-
send_error(from, ErrFileNotFound)
|
|
360
|
+
send_error(from, ErrIllegalOperation)
|
|
219
361
|
end
|
|
220
362
|
|
|
221
363
|
when OpAck
|
|
222
364
|
# Process ACK packets
|
|
223
365
|
block = buf.unpack('n')[0]
|
|
366
|
+
|
|
224
367
|
#puts "%s %d" % [start, block]
|
|
225
368
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
369
|
+
tr = find_transfer(OpRead, from, block)
|
|
370
|
+
if not tr
|
|
371
|
+
# If we didn't find it, send an error.
|
|
372
|
+
send_error(from, ErrUnknownTransferId)
|
|
373
|
+
else
|
|
374
|
+
# acked! send the next block
|
|
375
|
+
tr[:offset] += 512
|
|
376
|
+
next_block(tr)
|
|
377
|
+
|
|
378
|
+
# If the transfer is finished, delete it
|
|
379
|
+
if (tr[:offset] > tr[:file][:data].length)
|
|
380
|
+
#puts "[*] Transfer complete"
|
|
381
|
+
self.transfers.delete(tr)
|
|
382
|
+
|
|
383
|
+
# if the file is a one-serve, delete it from the files array
|
|
384
|
+
if tr[:file][:once]
|
|
385
|
+
#puts "[*] Removed one-serve file: #{tr[:file][:name]}"
|
|
386
|
+
self.files.delete(tr[:file])
|
|
387
|
+
end
|
|
233
388
|
end
|
|
234
389
|
end
|
|
235
390
|
|
|
391
|
+
when OpData
|
|
392
|
+
# Process Data packets
|
|
393
|
+
block = buf.unpack('n')[0]
|
|
394
|
+
data = buf.slice(2, buf.length)
|
|
395
|
+
|
|
396
|
+
#puts "%s %d %d bytes" % [start, block, data.length]
|
|
397
|
+
|
|
398
|
+
tr = find_transfer(OpWrite, from, (block-1))
|
|
399
|
+
if not tr
|
|
400
|
+
# If we didn't find it, send an error.
|
|
401
|
+
send_error(from, ErrUnknownTransferId)
|
|
402
|
+
else
|
|
403
|
+
tr[:file][:data] << data
|
|
404
|
+
tr[:last_size] = data.length
|
|
405
|
+
next_block(tr)
|
|
406
|
+
|
|
407
|
+
# Similar to RRQ transfers, we cannot detect that the
|
|
408
|
+
# transfer finished here. We must do so after transmitting
|
|
409
|
+
# the final ACK.
|
|
410
|
+
end
|
|
411
|
+
|
|
236
412
|
else
|
|
237
413
|
# Other packets are unsupported
|
|
238
414
|
#puts start
|
|
@@ -246,4 +422,3 @@ end
|
|
|
246
422
|
end
|
|
247
423
|
end
|
|
248
424
|
end
|
|
249
|
-
|