librex 0.0.20 → 0.0.21
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/Rakefile +1 -0
- data/lib/rex/LICENSE +29 -0
- data/lib/rex/arch.rb +103 -0
- data/lib/rex/arch/sparc.rb +75 -0
- data/lib/rex/arch/sparc.rb.ut.rb +18 -0
- data/lib/rex/arch/x86.rb +513 -0
- data/lib/rex/arch/x86.rb.ut.rb +93 -0
- data/lib/rex/assembly/nasm.rb +104 -0
- data/lib/rex/assembly/nasm.rb.ut.rb +22 -0
- data/lib/rex/codepage.map +104 -0
- data/lib/rex/compat.rb +311 -0
- data/lib/rex/constants.rb +113 -0
- data/lib/rex/elfparsey.rb +11 -0
- data/lib/rex/elfparsey/elf.rb +123 -0
- data/lib/rex/elfparsey/elfbase.rb +258 -0
- data/lib/rex/elfparsey/exceptions.rb +27 -0
- data/lib/rex/elfscan.rb +12 -0
- data/lib/rex/elfscan/scanner.rb +207 -0
- data/lib/rex/elfscan/search.rb +46 -0
- data/lib/rex/encoder/alpha2.rb +31 -0
- data/lib/rex/encoder/alpha2/alpha_mixed.rb +68 -0
- data/lib/rex/encoder/alpha2/alpha_upper.rb +79 -0
- data/lib/rex/encoder/alpha2/generic.rb +114 -0
- data/lib/rex/encoder/alpha2/unicode_mixed.rb +117 -0
- data/lib/rex/encoder/alpha2/unicode_upper.rb +129 -0
- data/lib/rex/encoder/ndr.rb +89 -0
- data/lib/rex/encoder/ndr.rb.ut.rb +44 -0
- data/lib/rex/encoder/nonalpha.rb +61 -0
- data/lib/rex/encoder/nonupper.rb +64 -0
- data/lib/rex/encoder/xdr.rb +106 -0
- data/lib/rex/encoder/xdr.rb.ut.rb +29 -0
- data/lib/rex/encoder/xor.rb +69 -0
- data/lib/rex/encoder/xor/dword.rb +13 -0
- data/lib/rex/encoder/xor/dword_additive.rb +13 -0
- data/lib/rex/encoders/xor_dword.rb +35 -0
- data/lib/rex/encoders/xor_dword_additive.rb +53 -0
- data/lib/rex/encoders/xor_dword_additive.rb.ut.rb +12 -0
- data/lib/rex/encoding/xor.rb +20 -0
- data/lib/rex/encoding/xor.rb.ts.rb +14 -0
- data/lib/rex/encoding/xor/byte.rb +15 -0
- data/lib/rex/encoding/xor/byte.rb.ut.rb +21 -0
- data/lib/rex/encoding/xor/dword.rb +21 -0
- data/lib/rex/encoding/xor/dword.rb.ut.rb +15 -0
- data/lib/rex/encoding/xor/dword_additive.rb +92 -0
- data/lib/rex/encoding/xor/dword_additive.rb.ut.rb +15 -0
- data/lib/rex/encoding/xor/exceptions.rb +17 -0
- data/lib/rex/encoding/xor/generic.rb +146 -0
- data/lib/rex/encoding/xor/generic.rb.ut.rb +120 -0
- data/lib/rex/encoding/xor/qword.rb +15 -0
- data/lib/rex/encoding/xor/word.rb +21 -0
- data/lib/rex/encoding/xor/word.rb.ut.rb +13 -0
- data/lib/rex/exceptions.rb +275 -0
- data/lib/rex/exceptions.rb.ut.rb +44 -0
- data/lib/rex/exploitation/cmdstager.rb +9 -0
- data/lib/rex/exploitation/cmdstager/base.rb +175 -0
- data/lib/rex/exploitation/cmdstager/debug_asm.rb +142 -0
- data/lib/rex/exploitation/cmdstager/debug_write.rb +136 -0
- data/lib/rex/exploitation/cmdstager/tftp.rb +63 -0
- data/lib/rex/exploitation/cmdstager/vbs.rb +128 -0
- data/lib/rex/exploitation/egghunter.rb +277 -0
- data/lib/rex/exploitation/egghunter.rb.ut.rb +25 -0
- data/lib/rex/exploitation/encryptjs.rb +77 -0
- data/lib/rex/exploitation/heaplib.js.b64 +331 -0
- data/lib/rex/exploitation/heaplib.rb +94 -0
- data/lib/rex/exploitation/javascriptosdetect.rb +897 -0
- data/lib/rex/exploitation/obfuscatejs.rb +335 -0
- data/lib/rex/exploitation/omelet.rb +320 -0
- data/lib/rex/exploitation/omelet.rb.ut.rb +13 -0
- data/lib/rex/exploitation/opcodedb.rb +818 -0
- data/lib/rex/exploitation/opcodedb.rb.ut.rb +279 -0
- data/lib/rex/exploitation/seh.rb +92 -0
- data/lib/rex/exploitation/seh.rb.ut.rb +19 -0
- data/lib/rex/file.rb +112 -0
- data/lib/rex/file.rb.ut.rb +16 -0
- data/lib/rex/image_source.rb +12 -0
- data/lib/rex/image_source/disk.rb +60 -0
- data/lib/rex/image_source/image_source.rb +46 -0
- data/lib/rex/image_source/memory.rb +37 -0
- data/lib/rex/io/bidirectional_pipe.rb +157 -0
- data/lib/rex/io/datagram_abstraction.rb +35 -0
- data/lib/rex/io/ring_buffer.rb +364 -0
- data/lib/rex/io/stream.rb +319 -0
- data/lib/rex/io/stream_abstraction.rb +197 -0
- data/lib/rex/io/stream_server.rb +211 -0
- data/lib/rex/job_container.rb +187 -0
- data/lib/rex/logging.rb +4 -0
- data/lib/rex/logging/log_dispatcher.rb +179 -0
- data/lib/rex/logging/log_sink.rb +42 -0
- data/lib/rex/logging/sinks/flatfile.rb +55 -0
- data/lib/rex/logging/sinks/stderr.rb +43 -0
- data/lib/rex/machparsey.rb +9 -0
- data/lib/rex/machparsey/exceptions.rb +34 -0
- data/lib/rex/machparsey/mach.rb +209 -0
- data/lib/rex/machparsey/machbase.rb +408 -0
- data/lib/rex/machscan.rb +9 -0
- data/lib/rex/machscan/scanner.rb +217 -0
- data/lib/rex/mime.rb +9 -0
- data/lib/rex/mime/header.rb +77 -0
- data/lib/rex/mime/message.rb +144 -0
- data/lib/rex/mime/part.rb +20 -0
- data/lib/rex/nop/opty2.rb +108 -0
- data/lib/rex/nop/opty2.rb.ut.rb +23 -0
- data/lib/rex/nop/opty2_tables.rb +300 -0
- data/lib/rex/ole.rb +205 -0
- data/lib/rex/ole/clsid.rb +47 -0
- data/lib/rex/ole/difat.rb +141 -0
- data/lib/rex/ole/directory.rb +231 -0
- data/lib/rex/ole/direntry.rb +240 -0
- data/lib/rex/ole/docs/dependencies.txt +8 -0
- data/lib/rex/ole/docs/references.txt +1 -0
- data/lib/rex/ole/fat.rb +99 -0
- data/lib/rex/ole/header.rb +204 -0
- data/lib/rex/ole/minifat.rb +77 -0
- data/lib/rex/ole/propset.rb +144 -0
- data/lib/rex/ole/samples/create_ole.rb +27 -0
- data/lib/rex/ole/samples/dir.rb +35 -0
- data/lib/rex/ole/samples/dump_stream.rb +34 -0
- data/lib/rex/ole/samples/ole_info.rb +23 -0
- data/lib/rex/ole/storage.rb +395 -0
- data/lib/rex/ole/stream.rb +53 -0
- data/lib/rex/ole/substorage.rb +49 -0
- data/lib/rex/ole/util.rb +157 -0
- data/lib/rex/parser/arguments.rb +97 -0
- data/lib/rex/parser/arguments.rb.ut.rb +67 -0
- data/lib/rex/parser/ini.rb +185 -0
- data/lib/rex/parser/ini.rb.ut.rb +29 -0
- data/lib/rex/parser/ip360_aspl_xml.rb +102 -0
- data/lib/rex/parser/ip360_xml.rb +97 -0
- data/lib/rex/parser/nessus_xml.rb +118 -0
- data/lib/rex/parser/netsparker_xml.rb +94 -0
- data/lib/rex/parser/nexpose_xml.rb +136 -0
- data/lib/rex/parser/nmap_xml.rb +137 -0
- data/lib/rex/parser/retina_xml.rb +109 -0
- data/lib/rex/payloads.rb +1 -0
- data/lib/rex/payloads/win32.rb +2 -0
- data/lib/rex/payloads/win32/common.rb +26 -0
- data/lib/rex/payloads/win32/kernel.rb +53 -0
- data/lib/rex/payloads/win32/kernel/common.rb +54 -0
- data/lib/rex/payloads/win32/kernel/migration.rb +12 -0
- data/lib/rex/payloads/win32/kernel/recovery.rb +50 -0
- data/lib/rex/payloads/win32/kernel/stager.rb +194 -0
- data/lib/rex/peparsey.rb +12 -0
- data/lib/rex/peparsey/exceptions.rb +32 -0
- data/lib/rex/peparsey/pe.rb +212 -0
- data/lib/rex/peparsey/pe_memdump.rb +63 -0
- data/lib/rex/peparsey/pebase.rb +1680 -0
- data/lib/rex/peparsey/section.rb +136 -0
- data/lib/rex/pescan.rb +13 -0
- data/lib/rex/pescan/analyze.rb +309 -0
- data/lib/rex/pescan/scanner.rb +206 -0
- data/lib/rex/pescan/search.rb +56 -0
- data/lib/rex/platforms.rb +1 -0
- data/lib/rex/platforms/windows.rb +51 -0
- data/lib/rex/poly.rb +132 -0
- data/lib/rex/poly/block.rb +477 -0
- data/lib/rex/poly/register.rb +100 -0
- data/lib/rex/poly/register/x86.rb +40 -0
- data/lib/rex/post.rb +8 -0
- data/lib/rex/post/dir.rb +51 -0
- data/lib/rex/post/file.rb +172 -0
- data/lib/rex/post/file_stat.rb +220 -0
- data/lib/rex/post/gen.pl +13 -0
- data/lib/rex/post/io.rb +182 -0
- data/lib/rex/post/meterpreter.rb +4 -0
- data/lib/rex/post/meterpreter/channel.rb +445 -0
- data/lib/rex/post/meterpreter/channel_container.rb +54 -0
- data/lib/rex/post/meterpreter/channels/pool.rb +160 -0
- data/lib/rex/post/meterpreter/channels/pools/file.rb +62 -0
- data/lib/rex/post/meterpreter/channels/pools/stream_pool.rb +103 -0
- data/lib/rex/post/meterpreter/channels/stream.rb +87 -0
- data/lib/rex/post/meterpreter/client.rb +364 -0
- data/lib/rex/post/meterpreter/client_core.rb +274 -0
- data/lib/rex/post/meterpreter/dependencies.rb +3 -0
- data/lib/rex/post/meterpreter/extension.rb +32 -0
- data/lib/rex/post/meterpreter/extensions/espia/espia.rb +58 -0
- data/lib/rex/post/meterpreter/extensions/espia/tlv.rb +16 -0
- data/lib/rex/post/meterpreter/extensions/incognito/incognito.rb +94 -0
- data/lib/rex/post/meterpreter/extensions/incognito/tlv.rb +21 -0
- data/lib/rex/post/meterpreter/extensions/networkpug/networkpug.rb +57 -0
- data/lib/rex/post/meterpreter/extensions/networkpug/tlv.rb +15 -0
- data/lib/rex/post/meterpreter/extensions/priv/fs.rb +118 -0
- data/lib/rex/post/meterpreter/extensions/priv/passwd.rb +61 -0
- data/lib/rex/post/meterpreter/extensions/priv/priv.rb +111 -0
- data/lib/rex/post/meterpreter/extensions/priv/tlv.rb +28 -0
- data/lib/rex/post/meterpreter/extensions/sniffer/sniffer.rb +101 -0
- data/lib/rex/post/meterpreter/extensions/sniffer/tlv.rb +26 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/constants.rb +333 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb +282 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +266 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb +103 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/io.rb +48 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb +144 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb +73 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/route.rb +56 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb +137 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb +180 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb +167 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/udp_channel.rb +208 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun.rb.ts.rb +6 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb +38106 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb.ut.rb +31 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb +47 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb.ut.rb +36 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_advapi32.rb +1818 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_iphlpapi.rb +96 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_kernel32.rb +3848 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_netapi32.rb +26 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ntdll.rb +153 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_shell32.rb +21 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_user32.rb +3169 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ws2_32.rb +599 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb +318 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb +100 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb.ut.rb +42 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb +148 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb.ut.rb +127 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/multicall.rb +309 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb +204 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/tlv.rb +51 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/util.rb +630 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb +75 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb +103 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb +149 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/config.rb +97 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log.rb +192 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log_subsystem/event_record.rb +41 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/power.rb +61 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process.rb +370 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/image.rb +129 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/io.rb +55 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/memory.rb +336 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/thread.rb +141 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry.rb +279 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb +193 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_value.rb +102 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/thread.rb +180 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/tlv.rb +211 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/ui.rb +227 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/webcam/webcam.rb +63 -0
- data/lib/rex/post/meterpreter/inbound_packet_handler.rb +30 -0
- data/lib/rex/post/meterpreter/object_aliases.rb +83 -0
- data/lib/rex/post/meterpreter/packet.rb +688 -0
- data/lib/rex/post/meterpreter/packet_dispatcher.rb +431 -0
- data/lib/rex/post/meterpreter/packet_parser.rb +94 -0
- data/lib/rex/post/meterpreter/packet_response_waiter.rb +83 -0
- data/lib/rex/post/meterpreter/ui/console.rb +137 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher.rb +62 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +730 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/espia.rb +108 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/incognito.rb +241 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/networkpug.rb +231 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv.rb +61 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/elevate.rb +98 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/passwd.rb +51 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/timestomp.rb +132 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/sniffer.rb +187 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi.rb +65 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/fs.rb +442 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb +298 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb +486 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/ui.rb +315 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/webcam.rb +157 -0
- data/lib/rex/post/meterpreter/ui/console/interactive_channel.rb +95 -0
- data/lib/rex/post/permission.rb +26 -0
- data/lib/rex/post/process.rb +57 -0
- data/lib/rex/post/thread.rb +57 -0
- data/lib/rex/post/ui.rb +52 -0
- data/lib/rex/proto.rb +13 -0
- data/lib/rex/proto.rb.ts.rb +8 -0
- data/lib/rex/proto/dcerpc.rb +6 -0
- data/lib/rex/proto/dcerpc.rb.ts.rb +9 -0
- data/lib/rex/proto/dcerpc/client.rb +361 -0
- data/lib/rex/proto/dcerpc/client.rb.ut.rb +491 -0
- data/lib/rex/proto/dcerpc/exceptions.rb +150 -0
- data/lib/rex/proto/dcerpc/handle.rb +47 -0
- data/lib/rex/proto/dcerpc/handle.rb.ut.rb +85 -0
- data/lib/rex/proto/dcerpc/ndr.rb +72 -0
- data/lib/rex/proto/dcerpc/ndr.rb.ut.rb +41 -0
- data/lib/rex/proto/dcerpc/packet.rb +253 -0
- data/lib/rex/proto/dcerpc/packet.rb.ut.rb +56 -0
- data/lib/rex/proto/dcerpc/response.rb +187 -0
- data/lib/rex/proto/dcerpc/response.rb.ut.rb +15 -0
- data/lib/rex/proto/dcerpc/uuid.rb +84 -0
- data/lib/rex/proto/dcerpc/uuid.rb.ut.rb +46 -0
- data/lib/rex/proto/dhcp.rb +7 -0
- data/lib/rex/proto/dhcp/constants.rb +33 -0
- data/lib/rex/proto/dhcp/server.rb +292 -0
- data/lib/rex/proto/drda.rb +5 -0
- data/lib/rex/proto/drda.rb.ts.rb +17 -0
- data/lib/rex/proto/drda/constants.rb +49 -0
- data/lib/rex/proto/drda/constants.rb.ut.rb +23 -0
- data/lib/rex/proto/drda/packet.rb +252 -0
- data/lib/rex/proto/drda/packet.rb.ut.rb +109 -0
- data/lib/rex/proto/drda/utils.rb +123 -0
- data/lib/rex/proto/drda/utils.rb.ut.rb +84 -0
- data/lib/rex/proto/http.rb +5 -0
- data/lib/rex/proto/http.rb.ts.rb +12 -0
- data/lib/rex/proto/http/client.rb +821 -0
- data/lib/rex/proto/http/client.rb.ut.rb +95 -0
- data/lib/rex/proto/http/handler.rb +46 -0
- data/lib/rex/proto/http/handler/erb.rb +128 -0
- data/lib/rex/proto/http/handler/erb.rb.ut.rb +21 -0
- data/lib/rex/proto/http/handler/erb.rb.ut.rb.rhtml +1 -0
- data/lib/rex/proto/http/handler/proc.rb +60 -0
- data/lib/rex/proto/http/handler/proc.rb.ut.rb +24 -0
- data/lib/rex/proto/http/header.rb +161 -0
- data/lib/rex/proto/http/header.rb.ut.rb +46 -0
- data/lib/rex/proto/http/packet.rb +407 -0
- data/lib/rex/proto/http/packet.rb.ut.rb +165 -0
- data/lib/rex/proto/http/request.rb +356 -0
- data/lib/rex/proto/http/request.rb.ut.rb +214 -0
- data/lib/rex/proto/http/response.rb +90 -0
- data/lib/rex/proto/http/response.rb.ut.rb +149 -0
- data/lib/rex/proto/http/server.rb +369 -0
- data/lib/rex/proto/http/server.rb.ut.rb +79 -0
- data/lib/rex/proto/ntlm.rb +7 -0
- data/lib/rex/proto/ntlm.rb.ut.rb +177 -0
- data/lib/rex/proto/ntlm/base.rb +326 -0
- data/lib/rex/proto/ntlm/constants.rb +74 -0
- data/lib/rex/proto/ntlm/crypt.rb +415 -0
- data/lib/rex/proto/ntlm/exceptions.rb +16 -0
- data/lib/rex/proto/ntlm/message.rb +536 -0
- data/lib/rex/proto/ntlm/utils.rb +764 -0
- data/lib/rex/proto/proxy/socks4a.rb +440 -0
- data/lib/rex/proto/rfb.rb +19 -0
- data/lib/rex/proto/rfb.rb.ut.rb +37 -0
- data/lib/rex/proto/rfb/cipher.rb +84 -0
- data/lib/rex/proto/rfb/client.rb +207 -0
- data/lib/rex/proto/rfb/constants.rb +52 -0
- data/lib/rex/proto/smb.rb +7 -0
- data/lib/rex/proto/smb.rb.ts.rb +8 -0
- data/lib/rex/proto/smb/client.rb +1952 -0
- data/lib/rex/proto/smb/client.rb.ut.rb +223 -0
- data/lib/rex/proto/smb/constants.rb +1047 -0
- data/lib/rex/proto/smb/constants.rb.ut.rb +18 -0
- data/lib/rex/proto/smb/crypt.rb +36 -0
- data/lib/rex/proto/smb/evasions.rb +66 -0
- data/lib/rex/proto/smb/exceptions.rb +858 -0
- data/lib/rex/proto/smb/simpleclient.rb +306 -0
- data/lib/rex/proto/smb/simpleclient.rb.ut.rb +128 -0
- data/lib/rex/proto/smb/utils.rb +103 -0
- data/lib/rex/proto/smb/utils.rb.ut.rb +20 -0
- data/lib/rex/proto/sunrpc.rb +1 -0
- data/lib/rex/proto/sunrpc/client.rb +195 -0
- data/lib/rex/proto/tftp.rb +12 -0
- data/lib/rex/proto/tftp/constants.rb +39 -0
- data/lib/rex/proto/tftp/server.rb +497 -0
- data/lib/rex/proto/tftp/server.rb.ut.rb +28 -0
- data/lib/rex/script.rb +42 -0
- data/lib/rex/script/base.rb +59 -0
- data/lib/rex/script/meterpreter.rb +15 -0
- data/lib/rex/script/shell.rb +9 -0
- data/lib/rex/service.rb +48 -0
- data/lib/rex/service_manager.rb +141 -0
- data/lib/rex/service_manager.rb.ut.rb +32 -0
- data/lib/rex/services/local_relay.rb +423 -0
- data/lib/rex/socket.rb +684 -0
- data/lib/rex/socket.rb.ut.rb +107 -0
- data/lib/rex/socket/comm.rb +119 -0
- data/lib/rex/socket/comm/local.rb +412 -0
- data/lib/rex/socket/comm/local.rb.ut.rb +75 -0
- data/lib/rex/socket/ip.rb +130 -0
- data/lib/rex/socket/parameters.rb +345 -0
- data/lib/rex/socket/parameters.rb.ut.rb +51 -0
- data/lib/rex/socket/range_walker.rb +346 -0
- data/lib/rex/socket/range_walker.rb.ut.rb +55 -0
- data/lib/rex/socket/ssl_tcp.rb +184 -0
- data/lib/rex/socket/ssl_tcp.rb.ut.rb +39 -0
- data/lib/rex/socket/ssl_tcp_server.rb +122 -0
- data/lib/rex/socket/ssl_tcp_server.rb.ut.rb +61 -0
- data/lib/rex/socket/subnet_walker.rb +75 -0
- data/lib/rex/socket/subnet_walker.rb.ut.rb +28 -0
- data/lib/rex/socket/switch_board.rb +278 -0
- data/lib/rex/socket/switch_board.rb.ut.rb +52 -0
- data/lib/rex/socket/tcp.rb +76 -0
- data/lib/rex/socket/tcp.rb.ut.rb +64 -0
- data/lib/rex/socket/tcp_server.rb +66 -0
- data/lib/rex/socket/tcp_server.rb.ut.rb +44 -0
- data/lib/rex/socket/udp.rb +164 -0
- data/lib/rex/socket/udp.rb.ut.rb +44 -0
- data/lib/rex/struct2.rb +5 -0
- data/lib/rex/struct2/c_struct.rb +181 -0
- data/lib/rex/struct2/c_struct_template.rb +39 -0
- data/lib/rex/struct2/constant.rb +26 -0
- data/lib/rex/struct2/element.rb +44 -0
- data/lib/rex/struct2/generic.rb +73 -0
- data/lib/rex/struct2/restraint.rb +54 -0
- data/lib/rex/struct2/s_string.rb +72 -0
- data/lib/rex/struct2/s_struct.rb +111 -0
- data/lib/rex/sync.rb +6 -0
- data/lib/rex/sync/event.rb +94 -0
- data/lib/rex/sync/read_write_lock.rb +176 -0
- data/lib/rex/sync/ref.rb +57 -0
- data/lib/rex/sync/thread_safe.rb +82 -0
- data/lib/rex/test.rb +35 -0
- data/lib/rex/text.rb +1163 -0
- data/lib/rex/text.rb.ut.rb +190 -0
- data/lib/rex/thread_factory.rb +42 -0
- data/lib/rex/time.rb +65 -0
- data/lib/rex/transformer.rb +115 -0
- data/lib/rex/transformer.rb.ut.rb +38 -0
- data/lib/rex/ui.rb +21 -0
- data/lib/rex/ui/interactive.rb +298 -0
- data/lib/rex/ui/output.rb +78 -0
- data/lib/rex/ui/output/none.rb +18 -0
- data/lib/rex/ui/progress_tracker.rb +96 -0
- data/lib/rex/ui/subscriber.rb +149 -0
- data/lib/rex/ui/text/color.rb +97 -0
- data/lib/rex/ui/text/color.rb.ut.rb +18 -0
- data/lib/rex/ui/text/dispatcher_shell.rb +467 -0
- data/lib/rex/ui/text/input.rb +117 -0
- data/lib/rex/ui/text/input/buffer.rb +75 -0
- data/lib/rex/ui/text/input/readline.rb +129 -0
- data/lib/rex/ui/text/input/socket.rb +95 -0
- data/lib/rex/ui/text/input/stdio.rb +45 -0
- data/lib/rex/ui/text/irb_shell.rb +57 -0
- data/lib/rex/ui/text/output.rb +80 -0
- data/lib/rex/ui/text/output/buffer.rb +61 -0
- data/lib/rex/ui/text/output/file.rb +43 -0
- data/lib/rex/ui/text/output/socket.rb +43 -0
- data/lib/rex/ui/text/output/stdio.rb +40 -0
- data/lib/rex/ui/text/progress_tracker.rb +56 -0
- data/lib/rex/ui/text/progress_tracker.rb.ut.rb +34 -0
- data/lib/rex/ui/text/shell.rb +328 -0
- data/lib/rex/ui/text/table.rb +279 -0
- data/lib/rex/ui/text/table.rb.ut.rb +55 -0
- data/lib/rex/zip.rb +93 -0
- data/lib/rex/zip/archive.rb +184 -0
- data/lib/rex/zip/blocks.rb +182 -0
- data/lib/rex/zip/entry.rb +104 -0
- data/lib/rex/zip/samples/comment.rb +32 -0
- data/lib/rex/zip/samples/mkwar.rb +138 -0
- data/lib/rex/zip/samples/mkzip.rb +19 -0
- data/lib/rex/zip/samples/recursive.rb +58 -0
- metadata +434 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
$:.unshift(File.join(File.dirname(__FILE__), '..', '..', '..'))
|
|
4
|
+
|
|
5
|
+
require 'test/unit'
|
|
6
|
+
require 'rex/exceptions'
|
|
7
|
+
require 'rex/socket/parameters'
|
|
8
|
+
require 'rex/socket/comm/local'
|
|
9
|
+
|
|
10
|
+
class Rex::Socket::Comm::Local::UnitTest < Test::Unit::TestCase
|
|
11
|
+
|
|
12
|
+
def test_create_tcp
|
|
13
|
+
test_port = 64432
|
|
14
|
+
test_server = TCPServer.new('127.0.0.1', test_port)
|
|
15
|
+
|
|
16
|
+
# Create a stream connection to the stub listener
|
|
17
|
+
stream = nil
|
|
18
|
+
|
|
19
|
+
assert_nothing_raised {
|
|
20
|
+
stream = Rex::Socket::Comm::Local.create(
|
|
21
|
+
Rex::Socket::Parameters.from_hash(
|
|
22
|
+
'PeerHost' => '127.0.0.1',
|
|
23
|
+
'PeerPort' => test_port,
|
|
24
|
+
'Proto' => 'tcp'))
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
assert_kind_of(Rex::IO::Stream, stream, "valid Stream instance")
|
|
28
|
+
assert_kind_of(Rex::Socket::Tcp, stream, "valid Tcp instance")
|
|
29
|
+
stream.close
|
|
30
|
+
|
|
31
|
+
# Now create a bare connection to the listener
|
|
32
|
+
stream = nil
|
|
33
|
+
|
|
34
|
+
assert_nothing_raised {
|
|
35
|
+
stream = Rex::Socket::Comm::Local.create(
|
|
36
|
+
Rex::Socket::Parameters.from_hash(
|
|
37
|
+
'PeerHost' => '127.0.0.1',
|
|
38
|
+
'PeerPort' => test_port,
|
|
39
|
+
'Proto' => 'tcp',
|
|
40
|
+
'Bare' => true))
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
assert_kind_of(Socket, stream, "valid Socket instance")
|
|
44
|
+
|
|
45
|
+
assert_raise(Rex::ConnectionRefused, "connection refused failed") {
|
|
46
|
+
Rex::Socket::Comm::Local.create(
|
|
47
|
+
Rex::Socket::Parameters.from_hash(
|
|
48
|
+
'PeerHost' => '127.0.0.1',
|
|
49
|
+
'PeerPort' => 1,
|
|
50
|
+
'Proto' => 'tcp',
|
|
51
|
+
'Bare' => true))
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
stream.close
|
|
55
|
+
|
|
56
|
+
test_server.close
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_create_tcp_server
|
|
60
|
+
# TODO
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_create_udp
|
|
64
|
+
# TODO
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_create_invalid
|
|
68
|
+
assert_raise(Rex::UnsupportedProtocol, "invalid protocol check failed") {
|
|
69
|
+
Rex::Socket::Comm::Local.create(
|
|
70
|
+
Rex::Socket::Parameters.from_hash(
|
|
71
|
+
'Proto' => 'invalid'))
|
|
72
|
+
}
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
end
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
require 'rex/socket'
|
|
2
|
+
|
|
3
|
+
###
|
|
4
|
+
#
|
|
5
|
+
# This class provides methods for interacting with a IP socket.
|
|
6
|
+
#
|
|
7
|
+
###
|
|
8
|
+
module Rex::Socket::Ip
|
|
9
|
+
|
|
10
|
+
include Rex::Socket
|
|
11
|
+
|
|
12
|
+
##
|
|
13
|
+
#
|
|
14
|
+
# Factory
|
|
15
|
+
#
|
|
16
|
+
##
|
|
17
|
+
|
|
18
|
+
#
|
|
19
|
+
# Creates the client using the supplied hash.
|
|
20
|
+
#
|
|
21
|
+
def self.create(hash = {})
|
|
22
|
+
hash['Proto'] = 'ip'
|
|
23
|
+
self.create_param(Rex::Socket::Parameters.from_hash(hash))
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
#
|
|
27
|
+
# Wrapper around the base socket class' creation method that automatically
|
|
28
|
+
# sets the parameter's protocol to IP.
|
|
29
|
+
#
|
|
30
|
+
def self.create_param(param)
|
|
31
|
+
param.proto = 'ip'
|
|
32
|
+
Rex::Socket.create_param(param)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
##
|
|
36
|
+
#
|
|
37
|
+
# IP connected state methods
|
|
38
|
+
#
|
|
39
|
+
##
|
|
40
|
+
|
|
41
|
+
#
|
|
42
|
+
# Write the supplied datagram to the connected IP socket.
|
|
43
|
+
#
|
|
44
|
+
def write(gram)
|
|
45
|
+
raise RuntimeError, "IP sockets must use sendto(), not write()"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
alias put write
|
|
49
|
+
|
|
50
|
+
#
|
|
51
|
+
# Read a datagram from the IP socket.
|
|
52
|
+
#
|
|
53
|
+
def read(length = 65535)
|
|
54
|
+
raise RuntimeError, "IP sockets must use recvfrom(), not read()"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
##
|
|
58
|
+
#
|
|
59
|
+
# IP non-connected state methods
|
|
60
|
+
#
|
|
61
|
+
##
|
|
62
|
+
|
|
63
|
+
#
|
|
64
|
+
# Sends a datagram to the supplied host:port with optional flags.
|
|
65
|
+
#
|
|
66
|
+
def sendto(gram, peerhost, flags = 0)
|
|
67
|
+
dest = ::Socket.pack_sockaddr_in(0, peerhost)
|
|
68
|
+
|
|
69
|
+
# Some BSDs require byteswap for len and offset
|
|
70
|
+
if(
|
|
71
|
+
Rex::Compat.is_freebsd or
|
|
72
|
+
Rex::Compat.is_netbsd or
|
|
73
|
+
Rex::Compat.is_bsdi or
|
|
74
|
+
Rex::Compat.is_macosx
|
|
75
|
+
)
|
|
76
|
+
gram=gram.dup
|
|
77
|
+
gram[2,2]=gram[2,2].unpack("n").pack("s")
|
|
78
|
+
gram[6,2]=gram[6,2].unpack("n").pack("s")
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
begin
|
|
82
|
+
send(gram, flags, dest)
|
|
83
|
+
rescue ::Errno::EHOSTUNREACH,::Errno::ENETDOWN,::Errno::ENETUNREACH,::Errno::ENETRESET,::Errno::EHOSTDOWN,::Errno::EACCES,::Errno::EINVAL,::Errno::EADDRNOTAVAIL
|
|
84
|
+
return nil
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
#
|
|
90
|
+
# Receives a datagram and returns the data and host of the requestor
|
|
91
|
+
# as [ data, host ].
|
|
92
|
+
#
|
|
93
|
+
def recvfrom(length = 65535, timeout=def_read_timeout)
|
|
94
|
+
begin
|
|
95
|
+
if ((rv = ::IO.select([ fd ], nil, nil, timeout)) and
|
|
96
|
+
(rv[0]) and (rv[0][0] == fd)
|
|
97
|
+
)
|
|
98
|
+
data, saddr = super(length)
|
|
99
|
+
af, host = Rex::Socket.from_sockaddr(saddr)
|
|
100
|
+
|
|
101
|
+
return [ data, host ]
|
|
102
|
+
else
|
|
103
|
+
return [ '', nil ]
|
|
104
|
+
end
|
|
105
|
+
rescue Exception
|
|
106
|
+
return [ '', nil ]
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
#
|
|
111
|
+
# Calls recvfrom and only returns the data
|
|
112
|
+
#
|
|
113
|
+
def get(timeout=nil)
|
|
114
|
+
data, saddr = recvfrom(65535, timeout)
|
|
115
|
+
return data
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
#
|
|
119
|
+
# The default number of seconds to wait for a read operation to timeout.
|
|
120
|
+
#
|
|
121
|
+
def def_read_timeout
|
|
122
|
+
10
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def type?
|
|
126
|
+
return 'ip'
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
end
|
|
130
|
+
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
require 'rex/socket'
|
|
2
|
+
|
|
3
|
+
###
|
|
4
|
+
#
|
|
5
|
+
# This class represents the set of parameters that are used to create
|
|
6
|
+
# a socket, whether it be a server or client socket.
|
|
7
|
+
#
|
|
8
|
+
###
|
|
9
|
+
class Rex::Socket::Parameters
|
|
10
|
+
|
|
11
|
+
##
|
|
12
|
+
#
|
|
13
|
+
# Factory
|
|
14
|
+
#
|
|
15
|
+
##
|
|
16
|
+
|
|
17
|
+
#
|
|
18
|
+
# Creates an instance of the Parameters class using the supplied hash.
|
|
19
|
+
#
|
|
20
|
+
def self.from_hash(hash)
|
|
21
|
+
return self.new(hash)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
##
|
|
25
|
+
#
|
|
26
|
+
# Constructor
|
|
27
|
+
#
|
|
28
|
+
##
|
|
29
|
+
|
|
30
|
+
#
|
|
31
|
+
# Initializes the attributes from the supplied hash. The following hash
|
|
32
|
+
# keys can be specified.
|
|
33
|
+
#
|
|
34
|
+
# PeerHost / PeerAddr
|
|
35
|
+
#
|
|
36
|
+
# The remote host to connect to.
|
|
37
|
+
#
|
|
38
|
+
# PeerPort
|
|
39
|
+
#
|
|
40
|
+
# The remote port to connect to.
|
|
41
|
+
#
|
|
42
|
+
# LocalHost / LocalAddr
|
|
43
|
+
#
|
|
44
|
+
# The local host to communicate from, if any.
|
|
45
|
+
#
|
|
46
|
+
# LocalPort
|
|
47
|
+
#
|
|
48
|
+
# The local port to communicate from, if any.
|
|
49
|
+
#
|
|
50
|
+
# Bare
|
|
51
|
+
#
|
|
52
|
+
# Create a bare socket.
|
|
53
|
+
#
|
|
54
|
+
# Server
|
|
55
|
+
#
|
|
56
|
+
# Whether or not this should be a server.
|
|
57
|
+
#
|
|
58
|
+
# SSL
|
|
59
|
+
#
|
|
60
|
+
# Whether or not SSL should be used.
|
|
61
|
+
#
|
|
62
|
+
# SSLVersion
|
|
63
|
+
#
|
|
64
|
+
# Specify SSL2, SSL3, or TLS1 (SSL3 is default)
|
|
65
|
+
#
|
|
66
|
+
# Proxies
|
|
67
|
+
#
|
|
68
|
+
# List of proxies to use.
|
|
69
|
+
#
|
|
70
|
+
# Proto
|
|
71
|
+
#
|
|
72
|
+
# The underlying protocol to use.
|
|
73
|
+
#
|
|
74
|
+
# IPv6
|
|
75
|
+
#
|
|
76
|
+
# Force the use of IPv6.
|
|
77
|
+
#
|
|
78
|
+
# Comm
|
|
79
|
+
#
|
|
80
|
+
# The underlying Comm class to use to create the socket for this parameter
|
|
81
|
+
# set.
|
|
82
|
+
#
|
|
83
|
+
# Context
|
|
84
|
+
#
|
|
85
|
+
# A context hash that can allow users of this parameter class instance to
|
|
86
|
+
# determine who is responsible for requesting that a socket be created.
|
|
87
|
+
#
|
|
88
|
+
# Retries
|
|
89
|
+
#
|
|
90
|
+
# The number of times a connection should be retried.
|
|
91
|
+
#
|
|
92
|
+
# Timeout
|
|
93
|
+
#
|
|
94
|
+
# The number of seconds before a connection should time out
|
|
95
|
+
#
|
|
96
|
+
|
|
97
|
+
def initialize(hash)
|
|
98
|
+
if (hash['PeerHost'])
|
|
99
|
+
self.peerhost = hash['PeerHost']
|
|
100
|
+
elsif (hash['PeerAddr'])
|
|
101
|
+
self.peerhost = hash['PeerAddr']
|
|
102
|
+
else
|
|
103
|
+
self.peerhost = nil
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
if (hash['LocalHost'])
|
|
107
|
+
self.localhost = hash['LocalHost']
|
|
108
|
+
elsif (hash['LocalAddr'])
|
|
109
|
+
self.localhost = hash['LocalAddr']
|
|
110
|
+
else
|
|
111
|
+
self.localhost = '0.0.0.0'
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
if (hash['PeerPort'])
|
|
115
|
+
self.peerport = hash['PeerPort'].to_i
|
|
116
|
+
else
|
|
117
|
+
self.peerport = 0
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
if (hash['LocalPort'])
|
|
121
|
+
self.localport = hash['LocalPort'].to_i
|
|
122
|
+
else
|
|
123
|
+
self.localport = 0
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
if (hash['Bare'])
|
|
127
|
+
self.bare = hash['Bare']
|
|
128
|
+
else
|
|
129
|
+
self.bare = false
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
if (hash['SSL'] and hash['SSL'].to_s =~ /^(t|y|1)/i)
|
|
133
|
+
self.ssl = true
|
|
134
|
+
else
|
|
135
|
+
self.ssl = false
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
if (hash['SSLVersion'] and hash['SSLVersion'].to_s =~ /^(SSL2|SSL3|TLS1)$/i)
|
|
139
|
+
self.ssl_version = hash['SSLVersion']
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
if hash['Proxies']
|
|
143
|
+
self.proxies = hash['Proxies'].split('-').map{|a| a.strip}.map{|a| a.split(':').map{|b| b.strip}}
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# The protocol this socket will be using
|
|
147
|
+
if (hash['Proto'])
|
|
148
|
+
self.proto = hash['Proto'].downcase
|
|
149
|
+
else
|
|
150
|
+
self.proto = 'tcp'
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
# Whether or not the socket should be a server
|
|
154
|
+
self.server = hash['Server'] || false
|
|
155
|
+
|
|
156
|
+
# The communication subsystem to use to create the socket
|
|
157
|
+
self.comm = hash['Comm']
|
|
158
|
+
|
|
159
|
+
# The context that was passed in, if any.
|
|
160
|
+
self.context = hash['Context'] || {}
|
|
161
|
+
|
|
162
|
+
# If no comm was supplied, try to use the comm that is best fit to
|
|
163
|
+
# handle the provided host based on the current routing table.
|
|
164
|
+
if( self.server )
|
|
165
|
+
if (self.comm == nil and self.localhost)
|
|
166
|
+
self.comm = Rex::Socket::SwitchBoard.best_comm(self.localhost)
|
|
167
|
+
end
|
|
168
|
+
else
|
|
169
|
+
if (self.comm == nil and self.peerhost)
|
|
170
|
+
self.comm = Rex::Socket::SwitchBoard.best_comm(self.peerhost)
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
# If we still haven't found a comm, we default to the local comm.
|
|
175
|
+
self.comm = Rex::Socket::Comm::Local if (self.comm == nil)
|
|
176
|
+
|
|
177
|
+
# If we are a UDP server, turn off the server flag as it was only set when
|
|
178
|
+
# creating the UDP socket in order to avail of the switch board above.
|
|
179
|
+
if( self.server and self.proto == 'udp' )
|
|
180
|
+
self.server = false
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# The number of connection retries to make (client only)
|
|
184
|
+
if hash['Retries']
|
|
185
|
+
self.retries = hash['Retries'].to_i
|
|
186
|
+
else
|
|
187
|
+
self.retries = 0
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# The number of seconds before a connect attempt times out (client only)
|
|
191
|
+
if hash['Timeout']
|
|
192
|
+
self.timeout = hash['Timeout'].to_i
|
|
193
|
+
else
|
|
194
|
+
self.timeout = 5
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# Whether to force IPv6 addressing
|
|
198
|
+
self.v6 = hash['IPv6'] || false
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
##
|
|
202
|
+
#
|
|
203
|
+
# Conditionals
|
|
204
|
+
#
|
|
205
|
+
##
|
|
206
|
+
|
|
207
|
+
#
|
|
208
|
+
# Returns true if this represents parameters for a server.
|
|
209
|
+
#
|
|
210
|
+
def server?
|
|
211
|
+
return (server == true)
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
#
|
|
215
|
+
# Returns true if this represents parameters for a client.
|
|
216
|
+
#
|
|
217
|
+
def client?
|
|
218
|
+
return (server == false)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
#
|
|
222
|
+
# Returns true if the protocol for the parameters is TCP.
|
|
223
|
+
#
|
|
224
|
+
def tcp?
|
|
225
|
+
return (proto == 'tcp')
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
#
|
|
229
|
+
# Returns true if the protocol for the parameters is UDP.
|
|
230
|
+
#
|
|
231
|
+
def udp?
|
|
232
|
+
return (proto == 'udp')
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
#
|
|
236
|
+
# Returns true if the protocol for the parameters is IP.
|
|
237
|
+
#
|
|
238
|
+
def ip?
|
|
239
|
+
return (proto == 'ip')
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
#
|
|
243
|
+
# Returns true if the socket is a bare socket that does not inherit from
|
|
244
|
+
# any extended Rex classes.
|
|
245
|
+
#
|
|
246
|
+
def bare?
|
|
247
|
+
return (bare == true)
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
#
|
|
251
|
+
# Returns true if SSL has been requested.
|
|
252
|
+
#
|
|
253
|
+
def ssl?
|
|
254
|
+
return ssl
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
#
|
|
258
|
+
# Returns true if IPv6 has been enabled
|
|
259
|
+
#
|
|
260
|
+
def v6?
|
|
261
|
+
return v6
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
##
|
|
266
|
+
#
|
|
267
|
+
# Attributes
|
|
268
|
+
#
|
|
269
|
+
##
|
|
270
|
+
|
|
271
|
+
#
|
|
272
|
+
# The remote host information, equivalent to the PeerHost parameter hash
|
|
273
|
+
# key.
|
|
274
|
+
#
|
|
275
|
+
attr_accessor :peerhost
|
|
276
|
+
#
|
|
277
|
+
# The remote port. Equivalent to the PeerPort parameter hash key.
|
|
278
|
+
#
|
|
279
|
+
attr_accessor :peerport
|
|
280
|
+
#
|
|
281
|
+
# The local host. Equivalent to the LocalHost parameter hash key.
|
|
282
|
+
#
|
|
283
|
+
attr_accessor :localhost
|
|
284
|
+
#
|
|
285
|
+
# The local port. Equivalent to the LocalPort parameter hash key.
|
|
286
|
+
#
|
|
287
|
+
attr_accessor :localport
|
|
288
|
+
#
|
|
289
|
+
# The protocol to to use, such as TCP. Equivalent to the Proto parameter
|
|
290
|
+
# hash key.
|
|
291
|
+
#
|
|
292
|
+
attr_accessor :proto
|
|
293
|
+
#
|
|
294
|
+
# Whether or not this is a server. Equivalent to the Server parameter hash
|
|
295
|
+
# key.
|
|
296
|
+
#
|
|
297
|
+
attr_accessor :server
|
|
298
|
+
#
|
|
299
|
+
# The Comm class that should be used to create the underlying socket.
|
|
300
|
+
#
|
|
301
|
+
attr_accessor :comm
|
|
302
|
+
#
|
|
303
|
+
# The context hash that was passed in to the structure.
|
|
304
|
+
#
|
|
305
|
+
attr_accessor :context
|
|
306
|
+
#
|
|
307
|
+
# The number of attempts that should be made.
|
|
308
|
+
#
|
|
309
|
+
attr_accessor :retries
|
|
310
|
+
#
|
|
311
|
+
# The number of seconds before a connection attempt should time out.
|
|
312
|
+
#
|
|
313
|
+
attr_accessor :timeout
|
|
314
|
+
#
|
|
315
|
+
# Whether or not this is a bare (non-extended) socket instance that should
|
|
316
|
+
# be created.
|
|
317
|
+
#
|
|
318
|
+
attr_accessor :bare
|
|
319
|
+
#
|
|
320
|
+
# Whether or not SSL should be used to wrap the connection.
|
|
321
|
+
#
|
|
322
|
+
attr_accessor :ssl
|
|
323
|
+
#
|
|
324
|
+
# What version of SSL to use (SSL2, SSL3, TLS1)
|
|
325
|
+
#
|
|
326
|
+
attr_accessor :ssl_version
|
|
327
|
+
#
|
|
328
|
+
# Whether we should use IPv6
|
|
329
|
+
#
|
|
330
|
+
attr_accessor :v6
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
attr_accessor :proxies
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
##
|
|
337
|
+
#
|
|
338
|
+
# Synonyms
|
|
339
|
+
#
|
|
340
|
+
##
|
|
341
|
+
|
|
342
|
+
alias peeraddr peerhost
|
|
343
|
+
alias localaddr localhost
|
|
344
|
+
|
|
345
|
+
end
|