librex 0.0.65 → 0.0.66
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.markdown +1 -1
- data/lib/rex/arch.rb +1 -0
- data/lib/rex/arch/sparc.rb +16 -15
- data/lib/rex/arch/sparc.rb.ut.rb +2 -1
- data/lib/rex/arch/x86.rb +1 -0
- data/lib/rex/arch/x86.rb.ut.rb +2 -1
- data/lib/rex/assembly/nasm.rb +1 -0
- data/lib/rex/assembly/nasm.rb.ut.rb +2 -1
- data/lib/rex/compat.rb +13 -0
- data/lib/rex/constants.rb +5 -4
- data/lib/rex/elfparsey.rb +3 -2
- data/lib/rex/elfparsey/elf.rb +2 -1
- data/lib/rex/elfparsey/elfbase.rb +8 -7
- data/lib/rex/elfparsey/exceptions.rb +3 -2
- data/lib/rex/elfscan.rb +3 -2
- data/lib/rex/elfscan/scanner.rb +2 -1
- data/lib/rex/elfscan/search.rb +2 -1
- data/lib/rex/encoder/alpha2.rb +2 -1
- data/lib/rex/encoder/alpha2/alpha_mixed.rb +3 -2
- data/lib/rex/encoder/alpha2/alpha_upper.rb +5 -4
- data/lib/rex/encoder/alpha2/generic.rb +37 -60
- data/lib/rex/encoder/alpha2/unicode_mixed.rb +4 -9
- data/lib/rex/encoder/alpha2/unicode_upper.rb +4 -9
- data/lib/rex/encoder/ndr.rb +1 -0
- data/lib/rex/encoder/ndr.rb.ut.rb +2 -1
- data/lib/rex/encoder/nonalpha.rb +1 -0
- data/lib/rex/encoder/nonupper.rb +1 -0
- data/lib/rex/encoder/xdr.rb +9 -8
- data/lib/rex/encoder/xdr.rb.ut.rb +2 -1
- data/lib/rex/encoder/xor.rb +1 -0
- data/lib/rex/encoder/xor/dword.rb +2 -1
- data/lib/rex/encoder/xor/dword_additive.rb +2 -1
- data/lib/rex/encoders/xor_dword.rb +1 -0
- data/lib/rex/encoders/xor_dword_additive.rb +2 -1
- data/lib/rex/encoders/xor_dword_additive.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor.rb +2 -1
- data/lib/rex/encoding/xor.rb.ts.rb +2 -1
- data/lib/rex/encoding/xor/byte.rb +2 -1
- data/lib/rex/encoding/xor/byte.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/dword.rb +2 -1
- data/lib/rex/encoding/xor/dword.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/dword_additive.rb +1 -0
- data/lib/rex/encoding/xor/dword_additive.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/exceptions.rb +1 -0
- data/lib/rex/encoding/xor/generic.rb +1 -0
- data/lib/rex/encoding/xor/generic.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/qword.rb +2 -1
- data/lib/rex/encoding/xor/word.rb +2 -1
- data/lib/rex/encoding/xor/word.rb.ut.rb +2 -1
- data/lib/rex/exceptions.rb +1 -0
- data/lib/rex/exceptions.rb.ut.rb +2 -1
- data/lib/rex/exploitation/cmdstager.rb +2 -1
- data/lib/rex/exploitation/cmdstager/base.rb +1 -0
- data/lib/rex/exploitation/cmdstager/debug_asm.rb +2 -1
- data/lib/rex/exploitation/cmdstager/debug_write.rb +2 -1
- data/lib/rex/exploitation/cmdstager/tftp.rb +2 -1
- data/lib/rex/exploitation/cmdstager/vbs.rb +2 -1
- data/lib/rex/exploitation/egghunter.rb +12 -11
- data/lib/rex/exploitation/egghunter.rb.ut.rb +2 -1
- data/lib/rex/exploitation/encryptjs.rb +1 -0
- data/lib/rex/exploitation/heaplib.rb +1 -0
- data/lib/rex/exploitation/javascriptosdetect.js +1014 -0
- data/lib/rex/exploitation/javascriptosdetect.rb +4 -857
- data/lib/rex/exploitation/jsobfu.rb +2 -1
- data/lib/rex/exploitation/obfuscatejs.rb +1 -0
- data/lib/rex/exploitation/omelet.rb +1 -0
- data/lib/rex/exploitation/omelet.rb.ut.rb +1 -0
- data/lib/rex/exploitation/opcodedb.rb +12 -11
- data/lib/rex/exploitation/opcodedb.rb.ut.rb +2 -1
- data/lib/rex/exploitation/seh.rb +3 -2
- data/lib/rex/exploitation/seh.rb.ut.rb +2 -1
- data/lib/rex/file.rb +4 -3
- data/lib/rex/file.rb.ut.rb +2 -1
- data/lib/rex/image_source.rb +3 -2
- data/lib/rex/image_source/disk.rb +3 -2
- data/lib/rex/image_source/image_source.rb +3 -2
- data/lib/rex/image_source/memory.rb +3 -2
- data/lib/rex/io/bidirectional_pipe.rb +1 -0
- data/lib/rex/io/datagram_abstraction.rb +2 -1
- data/lib/rex/io/ring_buffer.rb +49 -44
- data/lib/rex/io/ring_buffer.rb.ut.rb +4 -3
- data/lib/rex/io/stream.rb +1 -0
- data/lib/rex/io/stream_abstraction.rb +1 -0
- data/lib/rex/io/stream_server.rb +1 -0
- data/lib/rex/job_container.rb +1 -0
- data/lib/rex/logging.rb +2 -1
- data/lib/rex/logging/log_dispatcher.rb +5 -4
- data/lib/rex/logging/log_sink.rb +2 -1
- data/lib/rex/logging/sinks/flatfile.rb +4 -3
- data/lib/rex/logging/sinks/stderr.rb +2 -1
- data/lib/rex/machparsey.rb +2 -1
- data/lib/rex/machparsey/exceptions.rb +2 -1
- data/lib/rex/machparsey/mach.rb +20 -19
- data/lib/rex/machparsey/machbase.rb +27 -26
- data/lib/rex/machscan.rb +2 -1
- data/lib/rex/machscan/scanner.rb +1 -0
- data/lib/rex/mime.rb +2 -1
- data/lib/rex/mime/header.rb +1 -0
- data/lib/rex/mime/message.rb +4 -1
- data/lib/rex/mime/part.rb +2 -1
- data/lib/rex/nop/opty2.rb +2 -1
- data/lib/rex/nop/opty2.rb.ut.rb +2 -1
- data/lib/rex/nop/opty2_tables.rb +1 -0
- data/lib/rex/ole.rb +3 -2
- data/lib/rex/ole/clsid.rb +3 -2
- data/lib/rex/ole/difat.rb +3 -2
- data/lib/rex/ole/directory.rb +3 -2
- data/lib/rex/ole/direntry.rb +3 -2
- data/lib/rex/ole/fat.rb +3 -2
- data/lib/rex/ole/header.rb +3 -2
- data/lib/rex/ole/minifat.rb +3 -2
- data/lib/rex/ole/propset.rb +4 -3
- data/lib/rex/ole/samples/create_ole.rb +1 -0
- data/lib/rex/ole/samples/dir.rb +1 -0
- data/lib/rex/ole/samples/dump_stream.rb +1 -0
- data/lib/rex/ole/samples/ole_info.rb +1 -0
- data/lib/rex/ole/storage.rb +3 -2
- data/lib/rex/ole/stream.rb +3 -2
- data/lib/rex/ole/substorage.rb +3 -2
- data/lib/rex/ole/util.rb +3 -2
- data/lib/rex/parser/acunetix_nokogiri.rb +13 -12
- data/lib/rex/parser/apple_backup_manifestdb.rb +20 -19
- data/lib/rex/parser/appscan_nokogiri.rb +17 -16
- data/lib/rex/parser/arguments.rb +2 -1
- data/lib/rex/parser/arguments.rb.ut.rb +2 -1
- data/lib/rex/parser/burp_session_nokogiri.rb +8 -7
- data/lib/rex/parser/ci_nokogiri.rb +4 -3
- data/lib/rex/parser/foundstone_nokogiri.rb +18 -17
- data/lib/rex/parser/fusionvm_nokogiri.rb +109 -0
- data/lib/rex/parser/ini.rb +1 -0
- data/lib/rex/parser/ini.rb.ut.rb +2 -1
- data/lib/rex/parser/ip360_aspl_xml.rb +1 -0
- data/lib/rex/parser/ip360_xml.rb +4 -3
- data/lib/rex/parser/mbsa_nokogiri.rb +8 -7
- data/lib/rex/parser/nessus_xml.rb +3 -2
- data/lib/rex/parser/netsparker_xml.rb +10 -9
- data/lib/rex/parser/nexpose_raw_nokogiri.rb +372 -52
- data/lib/rex/parser/nexpose_simple_nokogiri.rb +8 -7
- data/lib/rex/parser/nexpose_xml.rb +1 -0
- data/lib/rex/parser/nmap_nokogiri.rb +63 -33
- data/lib/rex/parser/nmap_xml.rb +1 -0
- data/lib/rex/parser/nokogiri_doc_mixin.rb +35 -15
- data/lib/rex/parser/openvas_nokogiri.rb +172 -0
- data/lib/rex/parser/retina_xml.rb +1 -0
- data/lib/rex/parser/wapiti_nokogiri.rb +105 -0
- data/lib/rex/payloads.rb +2 -1
- data/lib/rex/payloads/win32.rb +2 -1
- data/lib/rex/payloads/win32/common.rb +2 -1
- data/lib/rex/payloads/win32/kernel.rb +2 -1
- data/lib/rex/payloads/win32/kernel/common.rb +4 -3
- data/lib/rex/payloads/win32/kernel/migration.rb +2 -1
- data/lib/rex/payloads/win32/kernel/recovery.rb +2 -1
- data/lib/rex/payloads/win32/kernel/stager.rb +21 -20
- data/lib/rex/peparsey.rb +3 -2
- data/lib/rex/peparsey/exceptions.rb +2 -1
- data/lib/rex/peparsey/pe.rb +3 -2
- data/lib/rex/peparsey/pe_memdump.rb +2 -1
- data/lib/rex/peparsey/pebase.rb +2 -1
- data/lib/rex/peparsey/section.rb +2 -1
- data/lib/rex/pescan.rb +3 -2
- data/lib/rex/pescan/analyze.rb +1 -0
- data/lib/rex/pescan/scanner.rb +1 -0
- data/lib/rex/pescan/search.rb +1 -0
- data/lib/rex/platforms.rb +2 -1
- data/lib/rex/platforms/windows.rb +2 -1
- data/lib/rex/poly.rb +2 -1
- data/lib/rex/poly/block.rb +16 -15
- data/lib/rex/poly/register.rb +2 -1
- data/lib/rex/poly/register/x86.rb +2 -1
- data/lib/rex/post.rb +2 -2
- data/lib/rex/post/dir.rb +2 -1
- data/lib/rex/post/file.rb +1 -0
- data/lib/rex/post/file_stat.rb +1 -0
- data/lib/rex/post/io.rb +2 -1
- data/lib/rex/post/meterpreter.rb +2 -1
- data/lib/rex/post/meterpreter/channel.rb +1 -0
- data/lib/rex/post/meterpreter/channel_container.rb +2 -1
- data/lib/rex/post/meterpreter/channels/pool.rb +1 -0
- data/lib/rex/post/meterpreter/channels/pools/file.rb +1 -0
- data/lib/rex/post/meterpreter/channels/pools/stream_pool.rb +3 -2
- data/lib/rex/post/meterpreter/channels/stream.rb +1 -0
- data/lib/rex/post/meterpreter/client.rb +23 -1
- data/lib/rex/post/meterpreter/client_core.rb +10 -5
- data/lib/rex/post/meterpreter/dependencies.rb +2 -1
- data/lib/rex/post/meterpreter/extension.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/espia/espia.rb +7 -6
- data/lib/rex/post/meterpreter/extensions/espia/tlv.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/incognito/incognito.rb +5 -4
- data/lib/rex/post/meterpreter/extensions/incognito/tlv.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/lanattacks/lanattacks.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/lanattacks/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/networkpug/networkpug.rb +7 -6
- data/lib/rex/post/meterpreter/extensions/networkpug/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/priv/fs.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/priv/passwd.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/priv/priv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/priv/tlv.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/sniffer/sniffer.rb +28 -11
- data/lib/rex/post/meterpreter/extensions/sniffer/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/constants.rb +6 -5
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +3 -2
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/io.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb +39 -5
- data/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb +75 -18
- data/lib/rex/post/meterpreter/extensions/stdapi/net/route.rb +18 -6
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/udp_channel.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun.rb.ts.rb +4 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_advapi32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_crypt32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_iphlpapi.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_kernel32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_netapi32.rb +12 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ntdll.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_shell32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_user32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_wlanapi.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ws2_32.rb +7 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_wrapper.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_wrapper.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/mock_magic.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/multicall.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/platform_util.rb +23 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/platform_util.rb.ut.rb +29 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb +10 -5
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb.ut.rb +9 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/type/pointer_util.rb +106 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/type/pointer_util.rb.ut.rb +128 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/util.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb +27 -6
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb +21 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/config.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log_subsystem/event_record.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/power.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process.rb +43 -4
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/image.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/io.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/memory.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/thread.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_value.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/remote_registry_key.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/thread.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/tlv.rb +7 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/ui.rb +14 -13
- data/lib/rex/post/meterpreter/extensions/stdapi/webcam/webcam.rb +1 -0
- data/lib/rex/post/meterpreter/inbound_packet_handler.rb +2 -1
- data/lib/rex/post/meterpreter/object_aliases.rb +6 -5
- data/lib/rex/post/meterpreter/packet.rb +26 -6
- data/lib/rex/post/meterpreter/packet_dispatcher.rb +1 -0
- data/lib/rex/post/meterpreter/packet_parser.rb +1 -0
- data/lib/rex/post/meterpreter/packet_response_waiter.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +103 -28
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/espia.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/incognito.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/networkpug.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv.rb +3 -2
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/elevate.rb +12 -11
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/passwd.rb +2 -1
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/timestomp.rb +2 -1
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/sniffer.rb +53 -36
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi.rb +3 -2
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/fs.rb +87 -44
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb +80 -18
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb +77 -48
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/ui.rb +72 -41
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/webcam.rb +24 -5
- data/lib/rex/post/meterpreter/ui/console/interactive_channel.rb +2 -1
- data/lib/rex/post/permission.rb +2 -1
- data/lib/rex/post/process.rb +2 -1
- data/lib/rex/post/thread.rb +2 -1
- data/lib/rex/post/ui.rb +2 -1
- data/lib/rex/proto.rb +1 -0
- data/lib/rex/proto.rb.ts.rb +2 -1
- data/lib/rex/proto/dcerpc.rb +2 -1
- data/lib/rex/proto/dcerpc.rb.ts.rb +2 -1
- data/lib/rex/proto/dcerpc/client.rb +1 -0
- data/lib/rex/proto/dcerpc/client.rb.ut.rb +1 -0
- data/lib/rex/proto/dcerpc/exceptions.rb +2 -1
- data/lib/rex/proto/dcerpc/handle.rb +1 -0
- data/lib/rex/proto/dcerpc/handle.rb.ut.rb +2 -1
- data/lib/rex/proto/dcerpc/ndr.rb +2 -1
- data/lib/rex/proto/dcerpc/ndr.rb.ut.rb +2 -1
- data/lib/rex/proto/dcerpc/packet.rb +52 -45
- data/lib/rex/proto/dcerpc/packet.rb.ut.rb +12 -11
- data/lib/rex/proto/dcerpc/response.rb +1 -0
- data/lib/rex/proto/dcerpc/response.rb.ut.rb +2 -1
- data/lib/rex/proto/dcerpc/uuid.rb +13 -12
- data/lib/rex/proto/dcerpc/uuid.rb.ut.rb +2 -1
- data/lib/rex/proto/dhcp.rb +2 -1
- data/lib/rex/proto/dhcp/constants.rb +2 -1
- data/lib/rex/proto/dhcp/server.rb +4 -3
- data/lib/rex/proto/drda.rb +1 -0
- data/lib/rex/proto/drda.rb.ts.rb +1 -0
- data/lib/rex/proto/drda/constants.rb +1 -0
- data/lib/rex/proto/drda/constants.rb.ut.rb +1 -0
- data/lib/rex/proto/drda/packet.rb +11 -10
- data/lib/rex/proto/drda/packet.rb.ut.rb +5 -4
- data/lib/rex/proto/drda/utils.rb +4 -3
- data/lib/rex/proto/drda/utils.rb.ut.rb +3 -2
- data/lib/rex/proto/http.rb +2 -1
- data/lib/rex/proto/http.rb.ts.rb +2 -1
- data/lib/rex/proto/http/client.rb +29 -5
- data/lib/rex/proto/http/client.rb.ut.rb +1 -0
- data/lib/rex/proto/http/handler.rb +2 -1
- data/lib/rex/proto/http/handler/erb.rb +5 -4
- data/lib/rex/proto/http/handler/erb.rb.ut.rb +2 -1
- data/lib/rex/proto/http/handler/proc.rb +1 -0
- data/lib/rex/proto/http/handler/proc.rb.ut.rb +2 -1
- data/lib/rex/proto/http/header.rb +3 -3
- data/lib/rex/proto/http/header.rb.ut.rb +2 -1
- data/lib/rex/proto/http/packet.rb +1 -0
- data/lib/rex/proto/http/packet.rb.ut.rb +15 -14
- data/lib/rex/proto/http/request.rb +23 -22
- data/lib/rex/proto/http/request.rb.ut.rb +2 -1
- data/lib/rex/proto/http/response.rb +6 -5
- data/lib/rex/proto/http/response.rb.ut.rb +7 -6
- data/lib/rex/proto/http/server.rb +1 -0
- data/lib/rex/proto/http/server.rb.ut.rb +6 -5
- data/lib/rex/proto/iax2.rb +1 -0
- data/lib/rex/proto/iax2/call.rb +48 -47
- data/lib/rex/proto/iax2/client.rb +23 -22
- data/lib/rex/proto/iax2/codecs.rb +1 -0
- data/lib/rex/proto/iax2/codecs/alaw.rb +1 -0
- data/lib/rex/proto/iax2/codecs/g711.rb +4 -3
- data/lib/rex/proto/iax2/codecs/mulaw.rb +1 -0
- data/lib/rex/proto/iax2/constants.rb +1 -0
- data/lib/rex/proto/natpmp.rb +11 -0
- data/lib/rex/proto/natpmp/constants.rb +19 -0
- data/lib/rex/proto/natpmp/packet.rb +45 -0
- data/lib/rex/proto/ntlm.rb +1 -0
- data/lib/rex/proto/ntlm.rb.ut.rb +1 -0
- data/lib/rex/proto/ntlm/base.rb +38 -37
- data/lib/rex/proto/ntlm/constants.rb +1 -0
- data/lib/rex/proto/ntlm/crypt.rb +45 -44
- data/lib/rex/proto/ntlm/exceptions.rb +1 -0
- data/lib/rex/proto/ntlm/message.rb +30 -29
- data/lib/rex/proto/ntlm/utils.rb +116 -115
- data/lib/rex/proto/proxy/socks4a.rb +1 -0
- data/lib/rex/proto/rfb.rb +1 -0
- data/lib/rex/proto/rfb.rb.ut.rb +1 -0
- data/lib/rex/proto/rfb/cipher.rb +1 -0
- data/lib/rex/proto/rfb/client.rb +1 -0
- data/lib/rex/proto/rfb/constants.rb +1 -0
- data/lib/rex/proto/smb.rb +2 -1
- data/lib/rex/proto/smb.rb.ts.rb +2 -1
- data/lib/rex/proto/smb/client.rb +23 -22
- data/lib/rex/proto/smb/client.rb.ut.rb +1 -0
- data/lib/rex/proto/smb/constants.rb +1 -0
- data/lib/rex/proto/smb/constants.rb.ut.rb +2 -1
- data/lib/rex/proto/smb/crypt.rb +3 -2
- data/lib/rex/proto/smb/evasions.rb +1 -0
- data/lib/rex/proto/smb/exceptions.rb +6 -5
- data/lib/rex/proto/smb/simpleclient.rb +1 -0
- data/lib/rex/proto/smb/simpleclient.rb.ut.rb +1 -0
- data/lib/rex/proto/smb/utils.rb +1 -0
- data/lib/rex/proto/smb/utils.rb.ut.rb +2 -1
- data/lib/rex/proto/sunrpc.rb +1 -0
- data/lib/rex/proto/sunrpc/client.rb +1 -0
- data/lib/rex/proto/tftp.rb +3 -1
- data/lib/rex/proto/tftp/client.rb +344 -0
- data/lib/rex/proto/tftp/constants.rb +2 -1
- data/lib/rex/proto/tftp/server.rb +2 -1
- data/lib/rex/proto/tftp/server.rb.ut.rb +3 -2
- data/lib/rex/registry.rb +14 -0
- data/lib/rex/registry/hive.rb +132 -0
- data/lib/rex/registry/lfkey.rb +51 -0
- data/lib/rex/registry/nodekey.rb +54 -0
- data/lib/rex/registry/regf.rb +25 -0
- data/lib/rex/registry/valuekey.rb +67 -0
- data/lib/rex/registry/valuelist.rb +29 -0
- data/lib/rex/ropbuilder.rb +2 -1
- data/lib/rex/ropbuilder/rop.rb +3 -2
- data/lib/rex/script.rb +1 -0
- data/lib/rex/script/base.rb +1 -0
- data/lib/rex/script/meterpreter.rb +1 -0
- data/lib/rex/script/shell.rb +1 -0
- data/lib/rex/service.rb +2 -1
- data/lib/rex/service_manager.rb +6 -5
- data/lib/rex/service_manager.rb.ut.rb +2 -1
- data/lib/rex/services/local_relay.rb +1 -0
- data/lib/rex/socket.rb +72 -36
- data/lib/rex/socket.rb.ut.rb +1 -0
- data/lib/rex/socket/comm.rb +1 -0
- data/lib/rex/socket/comm/local.rb +60 -13
- data/lib/rex/socket/comm/local.rb.ut.rb +2 -1
- data/lib/rex/socket/ip.rb +1 -0
- data/lib/rex/socket/parameters.rb +15 -14
- data/lib/rex/socket/parameters.rb.ut.rb +2 -1
- data/lib/rex/socket/range_walker.rb +71 -26
- data/lib/rex/socket/range_walker.rb.ut.rb +2 -1
- data/lib/rex/socket/ssl_tcp.rb +1 -0
- data/lib/rex/socket/ssl_tcp.rb.ut.rb +2 -1
- data/lib/rex/socket/ssl_tcp_server.rb +1 -0
- data/lib/rex/socket/ssl_tcp_server.rb.ut.rb +1 -0
- data/lib/rex/socket/subnet_walker.rb +1 -0
- data/lib/rex/socket/subnet_walker.rb.ut.rb +2 -1
- data/lib/rex/socket/switch_board.rb +1 -0
- data/lib/rex/socket/switch_board.rb.ut.rb +2 -1
- data/lib/rex/socket/tcp.rb +4 -3
- data/lib/rex/socket/tcp.rb.ut.rb +2 -1
- data/lib/rex/socket/tcp_server.rb +1 -0
- data/lib/rex/socket/tcp_server.rb.ut.rb +2 -1
- data/lib/rex/socket/udp.rb +2 -1
- data/lib/rex/socket/udp.rb.ut.rb +2 -1
- data/lib/rex/struct2.rb +2 -1
- data/lib/rex/struct2/c_struct.rb +2 -1
- data/lib/rex/struct2/c_struct_template.rb +2 -1
- data/lib/rex/struct2/constant.rb +2 -1
- data/lib/rex/struct2/element.rb +2 -1
- data/lib/rex/struct2/generic.rb +1 -0
- data/lib/rex/struct2/restraint.rb +2 -1
- data/lib/rex/struct2/s_string.rb +1 -0
- data/lib/rex/struct2/s_struct.rb +1 -0
- data/lib/rex/sync.rb +2 -1
- data/lib/rex/sync/event.rb +1 -0
- data/lib/rex/sync/read_write_lock.rb +1 -0
- data/lib/rex/sync/ref.rb +2 -1
- data/lib/rex/sync/thread_safe.rb +2 -1
- data/lib/rex/test.rb +2 -1
- data/lib/rex/text.rb +136 -19
- data/lib/rex/text.rb.ut.rb +1 -0
- data/lib/rex/thread_factory.rb +5 -4
- data/lib/rex/time.rb +2 -1
- data/lib/rex/transformer.rb +1 -0
- data/lib/rex/transformer.rb.ut.rb +2 -1
- data/lib/rex/ui.rb +2 -1
- data/lib/rex/ui/interactive.rb +10 -9
- data/lib/rex/ui/output.rb +1 -0
- data/lib/rex/ui/output/none.rb +2 -1
- data/lib/rex/ui/progress_tracker.rb +2 -1
- data/lib/rex/ui/subscriber.rb +9 -8
- data/lib/rex/ui/text/color.rb +1 -0
- data/lib/rex/ui/text/color.rb.ut.rb +1 -0
- data/lib/rex/ui/text/dispatcher_shell.rb +63 -23
- data/lib/rex/ui/text/input.rb +1 -0
- data/lib/rex/ui/text/input/buffer.rb +7 -6
- data/lib/rex/ui/text/input/readline.rb +14 -13
- data/lib/rex/ui/text/input/socket.rb +1 -0
- data/lib/rex/ui/text/input/stdio.rb +2 -1
- data/lib/rex/ui/text/irb_shell.rb +1 -0
- data/lib/rex/ui/text/output.rb +1 -0
- data/lib/rex/ui/text/output/buffer.rb +1 -0
- data/lib/rex/ui/text/output/file.rb +1 -0
- data/lib/rex/ui/text/output/socket.rb +1 -0
- data/lib/rex/ui/text/output/stdio.rb +1 -0
- data/lib/rex/ui/text/output/tee.rb +1 -0
- data/lib/rex/ui/text/progress_tracker.rb +2 -1
- data/lib/rex/ui/text/progress_tracker.rb.ut.rb +2 -1
- data/lib/rex/ui/text/shell.rb +1 -0
- data/lib/rex/ui/text/table.rb +20 -14
- data/lib/rex/ui/text/table.rb.ut.rb +3 -2
- data/lib/rex/zip.rb +1 -0
- data/lib/rex/zip/archive.rb +2 -1
- data/lib/rex/zip/blocks.rb +3 -2
- data/lib/rex/zip/entry.rb +6 -7
- data/lib/rex/zip/jar.rb +4 -3
- data/lib/rex/zip/samples/comment.rb +1 -0
- data/lib/rex/zip/samples/mkwar.rb +1 -0
- data/lib/rex/zip/samples/mkzip.rb +1 -0
- data/lib/rex/zip/samples/recursive.rb +1 -0
- metadata +433 -435
data/lib/rex/socket/ip.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# -*- coding: binary -*-
|
|
1
2
|
require 'rex/socket'
|
|
2
3
|
|
|
3
4
|
###
|
|
@@ -62,7 +63,7 @@ class Rex::Socket::Parameters
|
|
|
62
63
|
# SSLVersion
|
|
63
64
|
#
|
|
64
65
|
# Specify SSL2, SSL3, or TLS1 (SSL3 is default)
|
|
65
|
-
#
|
|
66
|
+
#
|
|
66
67
|
# SSLCert
|
|
67
68
|
#
|
|
68
69
|
# A file containing an SSL certificate (for server sockets)
|
|
@@ -97,7 +98,7 @@ class Rex::Socket::Parameters
|
|
|
97
98
|
#
|
|
98
99
|
# The number of seconds before a connection should time out
|
|
99
100
|
#
|
|
100
|
-
|
|
101
|
+
|
|
101
102
|
def initialize(hash)
|
|
102
103
|
if (hash['PeerHost'])
|
|
103
104
|
self.peerhost = hash['PeerHost']
|
|
@@ -138,11 +139,11 @@ class Rex::Socket::Parameters
|
|
|
138
139
|
else
|
|
139
140
|
self.ssl = false
|
|
140
141
|
end
|
|
141
|
-
|
|
142
|
+
|
|
142
143
|
if (hash['SSLVersion'] and hash['SSLVersion'].to_s =~ /^(SSL2|SSL3|TLS1)$/i)
|
|
143
144
|
self.ssl_version = hash['SSLVersion']
|
|
144
145
|
end
|
|
145
|
-
|
|
146
|
+
|
|
146
147
|
if (hash['SSLCert'] and ::File.file?(hash['SSLCert']))
|
|
147
148
|
begin
|
|
148
149
|
self.ssl_cert = ::File.read(hash['SSLCert'])
|
|
@@ -150,11 +151,11 @@ class Rex::Socket::Parameters
|
|
|
150
151
|
elog("Failed to read cert: #{e.class}: #{e}", LogSource)
|
|
151
152
|
end
|
|
152
153
|
end
|
|
153
|
-
|
|
154
|
-
if hash['Proxies']
|
|
154
|
+
|
|
155
|
+
if hash['Proxies']
|
|
155
156
|
self.proxies = hash['Proxies'].split('-').map{|a| a.strip}.map{|a| a.split(':').map{|b| b.strip}}
|
|
156
157
|
end
|
|
157
|
-
|
|
158
|
+
|
|
158
159
|
# The protocol this socket will be using
|
|
159
160
|
if (hash['Proto'])
|
|
160
161
|
self.proto = hash['Proto'].downcase
|
|
@@ -170,7 +171,7 @@ class Rex::Socket::Parameters
|
|
|
170
171
|
|
|
171
172
|
# The context that was passed in, if any.
|
|
172
173
|
self.context = hash['Context'] || {}
|
|
173
|
-
|
|
174
|
+
|
|
174
175
|
# If no comm was supplied, try to use the comm that is best fit to
|
|
175
176
|
# handle the provided host based on the current routing table.
|
|
176
177
|
if( self.server )
|
|
@@ -185,13 +186,13 @@ class Rex::Socket::Parameters
|
|
|
185
186
|
|
|
186
187
|
# If we still haven't found a comm, we default to the local comm.
|
|
187
188
|
self.comm = Rex::Socket::Comm::Local if (self.comm == nil)
|
|
188
|
-
|
|
189
|
-
# If we are a UDP server, turn off the server flag as it was only set when
|
|
189
|
+
|
|
190
|
+
# If we are a UDP server, turn off the server flag as it was only set when
|
|
190
191
|
# creating the UDP socket in order to avail of the switch board above.
|
|
191
192
|
if( self.server and self.proto == 'udp' )
|
|
192
193
|
self.server = false
|
|
193
194
|
end
|
|
194
|
-
|
|
195
|
+
|
|
195
196
|
# The number of connection retries to make (client only)
|
|
196
197
|
if hash['Retries']
|
|
197
198
|
self.retries = hash['Retries'].to_i
|
|
@@ -205,7 +206,7 @@ class Rex::Socket::Parameters
|
|
|
205
206
|
else
|
|
206
207
|
self.timeout = 5
|
|
207
208
|
end
|
|
208
|
-
|
|
209
|
+
|
|
209
210
|
# Whether to force IPv6 addressing
|
|
210
211
|
self.v6 = hash['IPv6'] || false
|
|
211
212
|
end
|
|
@@ -250,7 +251,7 @@ class Rex::Socket::Parameters
|
|
|
250
251
|
def ip?
|
|
251
252
|
return (proto == 'ip')
|
|
252
253
|
end
|
|
253
|
-
|
|
254
|
+
|
|
254
255
|
#
|
|
255
256
|
# Returns true if the socket is a bare socket that does not inherit from
|
|
256
257
|
# any extended Rex classes.
|
|
@@ -354,7 +355,7 @@ class Rex::Socket::Parameters
|
|
|
354
355
|
# Synonyms
|
|
355
356
|
#
|
|
356
357
|
##
|
|
357
|
-
|
|
358
|
+
|
|
358
359
|
alias peeraddr peerhost
|
|
359
360
|
alias localaddr localhost
|
|
360
361
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# -*- coding: binary -*-
|
|
2
3
|
|
|
3
4
|
$:.unshift(File.join(File.dirname(__FILE__), '..', '..'))
|
|
4
5
|
|
|
@@ -48,4 +49,4 @@ class Rex::Socket::Parameters::UnitTest < Test::Unit::TestCase
|
|
|
48
49
|
assert_equal(false, p.ssl, "default false ssl")
|
|
49
50
|
end
|
|
50
51
|
|
|
51
|
-
end
|
|
52
|
+
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# -*- coding: binary -*-
|
|
1
2
|
require 'rex/socket'
|
|
2
3
|
|
|
3
4
|
module Rex
|
|
@@ -53,7 +54,40 @@ class RangeWalker
|
|
|
53
54
|
return nil if not parseme
|
|
54
55
|
ranges = []
|
|
55
56
|
parseme.split(', ').map{ |a| a.split(' ') }.flatten.each { |arg|
|
|
56
|
-
|
|
57
|
+
opts = {}
|
|
58
|
+
|
|
59
|
+
# Handle IPv6 first (support ranges, but not CIDR)
|
|
60
|
+
if arg.include?(":")
|
|
61
|
+
addrs = arg.split('-', 2)
|
|
62
|
+
|
|
63
|
+
# Handle a single address
|
|
64
|
+
if addrs.length == 1
|
|
65
|
+
addr, scope_id = addrs[0].split('%')
|
|
66
|
+
opts[:scope_id] = scope_id if scope_id
|
|
67
|
+
|
|
68
|
+
return false unless Rex::Socket.is_ipv6?(addr)
|
|
69
|
+
addr = Rex::Socket.addr_atoi(addr)
|
|
70
|
+
ranges.push [addr, addr, true, opts]
|
|
71
|
+
next
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
addr1, scope_id = addrs[0].split('%')
|
|
75
|
+
opts[:scope_id] = scope_id if scope_id
|
|
76
|
+
|
|
77
|
+
addr2, scope_id = addrs[0].split('%')
|
|
78
|
+
( opts[:scope_id] ||= scope_id ) if scope_id
|
|
79
|
+
|
|
80
|
+
return false if not (Rex::Socket.is_ipv6?(addr1) and Rex::Socket.is_ipv6?(addr2))
|
|
81
|
+
|
|
82
|
+
# Handle IPv6 ranges in the form of 2001::1-2001::10
|
|
83
|
+
addr1 = Rex::Socket.addr_atoi(addr1)
|
|
84
|
+
addr2 = Rex::Socket.addr_atoi(addr2)
|
|
85
|
+
|
|
86
|
+
ranges.push [addr1, addr2, true, opts]
|
|
87
|
+
next
|
|
88
|
+
|
|
89
|
+
# Handle IPv4 CIDR
|
|
90
|
+
elsif arg.include?("/")
|
|
57
91
|
# Then it's CIDR notation and needs special case
|
|
58
92
|
return false if arg =~ /[,-]/ # Improper CIDR notation (can't mix with 1,3 or 1-3 style IP ranges)
|
|
59
93
|
return false if arg.scan("/").size > 1 # ..but there are too many slashes
|
|
@@ -69,40 +103,40 @@ class RangeWalker
|
|
|
69
103
|
|
|
70
104
|
expanded = expand_cidr(arg)
|
|
71
105
|
if expanded
|
|
72
|
-
ranges
|
|
106
|
+
ranges.push(expanded)
|
|
73
107
|
else
|
|
74
108
|
return false
|
|
75
109
|
end
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
# Can't really do much with IPv6 right now, just return it and
|
|
79
|
-
# hope for the best
|
|
80
|
-
addr = Rex::Socket.addr_atoi(arg)
|
|
81
|
-
ranges.push [addr, addr, true]
|
|
110
|
+
|
|
111
|
+
# Handle hostnames
|
|
82
112
|
elsif arg =~ /[^-0-9,.*]/
|
|
83
113
|
# Then it's a domain name and we should send it on to addr_atoi
|
|
84
114
|
# unmolested to force a DNS lookup.
|
|
85
|
-
Rex::Socket.addr_atoi_list(arg).each { |addr| ranges.push [addr, addr] }
|
|
115
|
+
Rex::Socket.addr_atoi_list(arg).each { |addr| ranges.push [addr, addr, false, opts] }
|
|
116
|
+
|
|
117
|
+
# Handle IPv4 ranges
|
|
86
118
|
elsif arg =~ /^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})-([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$/
|
|
87
119
|
# Then it's in the format of 1.2.3.4-5.6.7.8
|
|
88
120
|
# Note, this will /not/ deal with DNS names, or the fancy/obscure 10...1-10...2
|
|
89
|
-
begin
|
|
121
|
+
begin
|
|
90
122
|
addrs = [Rex::Socket.addr_atoi($1), Rex::Socket.addr_atoi($2)]
|
|
91
123
|
return false if addrs[0] > addrs[1] # The end is greater than the beginning.
|
|
92
|
-
ranges.push [addrs[0], addrs[1]]
|
|
124
|
+
ranges.push [addrs[0], addrs[1], false, opts]
|
|
93
125
|
rescue Resolv::ResolvError # Something's broken, forget it.
|
|
94
126
|
return false
|
|
95
127
|
end
|
|
96
128
|
else
|
|
129
|
+
# Returns an array of ranges
|
|
97
130
|
expanded = expand_nmap(arg)
|
|
98
131
|
if expanded
|
|
99
|
-
ranges
|
|
100
|
-
else
|
|
101
|
-
return false
|
|
132
|
+
expanded.each { |r| ranges.push(r) }
|
|
102
133
|
end
|
|
103
134
|
end
|
|
104
135
|
}
|
|
105
136
|
|
|
137
|
+
# Remove any duplicate ranges
|
|
138
|
+
ranges = ranges.uniq
|
|
139
|
+
|
|
106
140
|
return ranges
|
|
107
141
|
end
|
|
108
142
|
|
|
@@ -113,7 +147,6 @@ class RangeWalker
|
|
|
113
147
|
return false if not valid?
|
|
114
148
|
@curr_range = 0
|
|
115
149
|
@curr_addr = @ranges[0][0]
|
|
116
|
-
|
|
117
150
|
@length = 0
|
|
118
151
|
@ranges.each { |r| @length += r[1] - r[0] + 1 }
|
|
119
152
|
end
|
|
@@ -131,6 +164,11 @@ class RangeWalker
|
|
|
131
164
|
@curr_addr = @ranges[@curr_range][0]
|
|
132
165
|
end
|
|
133
166
|
addr = Rex::Socket.addr_itoa(@curr_addr, @ranges[@curr_range][2])
|
|
167
|
+
|
|
168
|
+
if @ranges[@curr_range][3][:scope_id]
|
|
169
|
+
addr = addr + '%' + @ranges[@curr_range][3][:scope_id]
|
|
170
|
+
end
|
|
171
|
+
|
|
134
172
|
@curr_addr += 1
|
|
135
173
|
return addr
|
|
136
174
|
end
|
|
@@ -139,7 +177,7 @@ class RangeWalker
|
|
|
139
177
|
(@ranges and not @ranges.empty?)
|
|
140
178
|
end
|
|
141
179
|
|
|
142
|
-
#
|
|
180
|
+
#
|
|
143
181
|
# Returns true if the argument is an ip address that falls within any of
|
|
144
182
|
# the stored ranges.
|
|
145
183
|
#
|
|
@@ -148,7 +186,7 @@ class RangeWalker
|
|
|
148
186
|
if (addr.is_a? String)
|
|
149
187
|
addr = Rex::Socket.addr_atoi(addr)
|
|
150
188
|
end
|
|
151
|
-
@ranges.map { |r|
|
|
189
|
+
@ranges.map { |r|
|
|
152
190
|
if r[0] <= addr and addr <= r[1]
|
|
153
191
|
return true
|
|
154
192
|
end
|
|
@@ -158,7 +196,7 @@ class RangeWalker
|
|
|
158
196
|
|
|
159
197
|
#
|
|
160
198
|
# Returns true if this RangeWalker includes all of the addresses in the
|
|
161
|
-
# given RangeWalker
|
|
199
|
+
# given RangeWalker
|
|
162
200
|
#
|
|
163
201
|
def include_range?(range_walker)
|
|
164
202
|
return false if ((not @ranges) or @ranges.empty?)
|
|
@@ -172,7 +210,7 @@ class RangeWalker
|
|
|
172
210
|
end
|
|
173
211
|
end
|
|
174
212
|
|
|
175
|
-
#
|
|
213
|
+
#
|
|
176
214
|
# Calls the given block with each address. This is basically a wrapper for
|
|
177
215
|
# #next_ip
|
|
178
216
|
#
|
|
@@ -195,8 +233,9 @@ class RangeWalker
|
|
|
195
233
|
range.start = Rex::Socket.addr_atoi(start)
|
|
196
234
|
range.stop = Rex::Socket.addr_atoi(stop)
|
|
197
235
|
range.ipv6 = (arg.include?(":"))
|
|
236
|
+
range.options = {}
|
|
198
237
|
|
|
199
|
-
return
|
|
238
|
+
return range
|
|
200
239
|
end
|
|
201
240
|
|
|
202
241
|
#
|
|
@@ -209,7 +248,7 @@ class RangeWalker
|
|
|
209
248
|
# ensuring that n is never greater than m.
|
|
210
249
|
#
|
|
211
250
|
# non-unique elements will be removed
|
|
212
|
-
# e.g.:
|
|
251
|
+
# e.g.:
|
|
213
252
|
# 10.1.1.1-3,2-2,2 => ["10.1.1.1", "10.1.1.2", "10.1.1.3"]
|
|
214
253
|
# 10.1.1.1-3,7 => ["10.1.1.1", "10.1.1.2", "10.1.1.3", "10.1.1.7"]
|
|
215
254
|
#
|
|
@@ -249,7 +288,7 @@ class RangeWalker
|
|
|
249
288
|
# "1-3,5-7" => ["1-3", "5-7"]
|
|
250
289
|
ranges = section.split(',', -1)
|
|
251
290
|
sets = []
|
|
252
|
-
ranges.each { |r|
|
|
291
|
+
ranges.each { |r|
|
|
253
292
|
bounds = []
|
|
254
293
|
if r.include?('-')
|
|
255
294
|
# Then it's an actual range, break it down into start,stop
|
|
@@ -272,7 +311,7 @@ class RangeWalker
|
|
|
272
311
|
return false if bounds[0] > 255 or (bounds[1] and bounds[1] > 255)
|
|
273
312
|
return false if bounds[1] and bounds[0] > bounds[1]
|
|
274
313
|
if bounds[1]
|
|
275
|
-
bounds[0].upto(bounds[1]) do |i|
|
|
314
|
+
bounds[0].upto(bounds[1]) do |i|
|
|
276
315
|
sets.push(i)
|
|
277
316
|
end
|
|
278
317
|
elsif bounds[0]
|
|
@@ -286,9 +325,9 @@ class RangeWalker
|
|
|
286
325
|
# Combinitorically squish all of the quads together into a big list of
|
|
287
326
|
# ip addresses, stored as ints
|
|
288
327
|
#
|
|
289
|
-
# e.g.:
|
|
290
|
-
# [[1],[1],[1,2],[1,2]]
|
|
291
|
-
# =>
|
|
328
|
+
# e.g.:
|
|
329
|
+
# [[1],[1],[1,2],[1,2]]
|
|
330
|
+
# =>
|
|
292
331
|
# [atoi("1.1.1.1"),atoi("1.1.1.2"),atoi("1.1.2.1"),atoi("1.1.2.2")]
|
|
293
332
|
addrs = []
|
|
294
333
|
for a in bytes[0]
|
|
@@ -304,8 +343,12 @@ class RangeWalker
|
|
|
304
343
|
|
|
305
344
|
addrs.sort!
|
|
306
345
|
addrs.uniq!
|
|
346
|
+
|
|
307
347
|
rng = Range.new
|
|
348
|
+
rng.ipv6 = false
|
|
349
|
+
rng.options = {}
|
|
308
350
|
rng.start = addrs[0]
|
|
351
|
+
|
|
309
352
|
ranges = []
|
|
310
353
|
1.upto(addrs.length - 1) do |idx|
|
|
311
354
|
if addrs[idx - 1] + 1 == addrs[idx]
|
|
@@ -339,9 +382,11 @@ class Range < Array # :nodoc: all
|
|
|
339
382
|
def start; self[0]; end
|
|
340
383
|
def stop; self[1]; end
|
|
341
384
|
def ipv6; self[2]; end
|
|
385
|
+
def options; self[3]; end
|
|
342
386
|
def start=(val); self[0] = val; end
|
|
343
387
|
def stop=(val); self[1] = val; end
|
|
344
388
|
def ipv6=(val); self[2] = val; end
|
|
389
|
+
def options=(val); self[3] = val; end
|
|
345
390
|
end
|
|
346
391
|
|
|
347
392
|
end
|
data/lib/rex/socket/ssl_tcp.rb
CHANGED
data/lib/rex/socket/tcp.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# -*- coding: binary -*-
|
|
1
2
|
require 'rex/socket'
|
|
2
3
|
require 'rex/io/stream'
|
|
3
4
|
|
|
@@ -10,7 +11,7 @@ module Rex::Socket::Tcp
|
|
|
10
11
|
|
|
11
12
|
include Rex::Socket
|
|
12
13
|
include Rex::IO::Stream
|
|
13
|
-
|
|
14
|
+
|
|
14
15
|
##
|
|
15
16
|
#
|
|
16
17
|
# Factory
|
|
@@ -21,7 +22,7 @@ module Rex::Socket::Tcp
|
|
|
21
22
|
# Creates the client using the supplied hash.
|
|
22
23
|
#
|
|
23
24
|
def self.create(hash = {})
|
|
24
|
-
hash['Proto'] = 'tcp'
|
|
25
|
+
hash['Proto'] = 'tcp'
|
|
25
26
|
self.create_param(Rex::Socket::Parameters.from_hash(hash))
|
|
26
27
|
end
|
|
27
28
|
|
|
@@ -73,4 +74,4 @@ module Rex::Socket::Tcp
|
|
|
73
74
|
return 'tcp'
|
|
74
75
|
end
|
|
75
76
|
|
|
76
|
-
end
|
|
77
|
+
end
|