librex 0.0.65 → 0.0.66
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +1 -1
- data/lib/rex/arch.rb +1 -0
- data/lib/rex/arch/sparc.rb +16 -15
- data/lib/rex/arch/sparc.rb.ut.rb +2 -1
- data/lib/rex/arch/x86.rb +1 -0
- data/lib/rex/arch/x86.rb.ut.rb +2 -1
- data/lib/rex/assembly/nasm.rb +1 -0
- data/lib/rex/assembly/nasm.rb.ut.rb +2 -1
- data/lib/rex/compat.rb +13 -0
- data/lib/rex/constants.rb +5 -4
- data/lib/rex/elfparsey.rb +3 -2
- data/lib/rex/elfparsey/elf.rb +2 -1
- data/lib/rex/elfparsey/elfbase.rb +8 -7
- data/lib/rex/elfparsey/exceptions.rb +3 -2
- data/lib/rex/elfscan.rb +3 -2
- data/lib/rex/elfscan/scanner.rb +2 -1
- data/lib/rex/elfscan/search.rb +2 -1
- data/lib/rex/encoder/alpha2.rb +2 -1
- data/lib/rex/encoder/alpha2/alpha_mixed.rb +3 -2
- data/lib/rex/encoder/alpha2/alpha_upper.rb +5 -4
- data/lib/rex/encoder/alpha2/generic.rb +37 -60
- data/lib/rex/encoder/alpha2/unicode_mixed.rb +4 -9
- data/lib/rex/encoder/alpha2/unicode_upper.rb +4 -9
- data/lib/rex/encoder/ndr.rb +1 -0
- data/lib/rex/encoder/ndr.rb.ut.rb +2 -1
- data/lib/rex/encoder/nonalpha.rb +1 -0
- data/lib/rex/encoder/nonupper.rb +1 -0
- data/lib/rex/encoder/xdr.rb +9 -8
- data/lib/rex/encoder/xdr.rb.ut.rb +2 -1
- data/lib/rex/encoder/xor.rb +1 -0
- data/lib/rex/encoder/xor/dword.rb +2 -1
- data/lib/rex/encoder/xor/dword_additive.rb +2 -1
- data/lib/rex/encoders/xor_dword.rb +1 -0
- data/lib/rex/encoders/xor_dword_additive.rb +2 -1
- data/lib/rex/encoders/xor_dword_additive.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor.rb +2 -1
- data/lib/rex/encoding/xor.rb.ts.rb +2 -1
- data/lib/rex/encoding/xor/byte.rb +2 -1
- data/lib/rex/encoding/xor/byte.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/dword.rb +2 -1
- data/lib/rex/encoding/xor/dword.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/dword_additive.rb +1 -0
- data/lib/rex/encoding/xor/dword_additive.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/exceptions.rb +1 -0
- data/lib/rex/encoding/xor/generic.rb +1 -0
- data/lib/rex/encoding/xor/generic.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/qword.rb +2 -1
- data/lib/rex/encoding/xor/word.rb +2 -1
- data/lib/rex/encoding/xor/word.rb.ut.rb +2 -1
- data/lib/rex/exceptions.rb +1 -0
- data/lib/rex/exceptions.rb.ut.rb +2 -1
- data/lib/rex/exploitation/cmdstager.rb +2 -1
- data/lib/rex/exploitation/cmdstager/base.rb +1 -0
- data/lib/rex/exploitation/cmdstager/debug_asm.rb +2 -1
- data/lib/rex/exploitation/cmdstager/debug_write.rb +2 -1
- data/lib/rex/exploitation/cmdstager/tftp.rb +2 -1
- data/lib/rex/exploitation/cmdstager/vbs.rb +2 -1
- data/lib/rex/exploitation/egghunter.rb +12 -11
- data/lib/rex/exploitation/egghunter.rb.ut.rb +2 -1
- data/lib/rex/exploitation/encryptjs.rb +1 -0
- data/lib/rex/exploitation/heaplib.rb +1 -0
- data/lib/rex/exploitation/javascriptosdetect.js +1014 -0
- data/lib/rex/exploitation/javascriptosdetect.rb +4 -857
- data/lib/rex/exploitation/jsobfu.rb +2 -1
- data/lib/rex/exploitation/obfuscatejs.rb +1 -0
- data/lib/rex/exploitation/omelet.rb +1 -0
- data/lib/rex/exploitation/omelet.rb.ut.rb +1 -0
- data/lib/rex/exploitation/opcodedb.rb +12 -11
- data/lib/rex/exploitation/opcodedb.rb.ut.rb +2 -1
- data/lib/rex/exploitation/seh.rb +3 -2
- data/lib/rex/exploitation/seh.rb.ut.rb +2 -1
- data/lib/rex/file.rb +4 -3
- data/lib/rex/file.rb.ut.rb +2 -1
- data/lib/rex/image_source.rb +3 -2
- data/lib/rex/image_source/disk.rb +3 -2
- data/lib/rex/image_source/image_source.rb +3 -2
- data/lib/rex/image_source/memory.rb +3 -2
- data/lib/rex/io/bidirectional_pipe.rb +1 -0
- data/lib/rex/io/datagram_abstraction.rb +2 -1
- data/lib/rex/io/ring_buffer.rb +49 -44
- data/lib/rex/io/ring_buffer.rb.ut.rb +4 -3
- data/lib/rex/io/stream.rb +1 -0
- data/lib/rex/io/stream_abstraction.rb +1 -0
- data/lib/rex/io/stream_server.rb +1 -0
- data/lib/rex/job_container.rb +1 -0
- data/lib/rex/logging.rb +2 -1
- data/lib/rex/logging/log_dispatcher.rb +5 -4
- data/lib/rex/logging/log_sink.rb +2 -1
- data/lib/rex/logging/sinks/flatfile.rb +4 -3
- data/lib/rex/logging/sinks/stderr.rb +2 -1
- data/lib/rex/machparsey.rb +2 -1
- data/lib/rex/machparsey/exceptions.rb +2 -1
- data/lib/rex/machparsey/mach.rb +20 -19
- data/lib/rex/machparsey/machbase.rb +27 -26
- data/lib/rex/machscan.rb +2 -1
- data/lib/rex/machscan/scanner.rb +1 -0
- data/lib/rex/mime.rb +2 -1
- data/lib/rex/mime/header.rb +1 -0
- data/lib/rex/mime/message.rb +4 -1
- data/lib/rex/mime/part.rb +2 -1
- data/lib/rex/nop/opty2.rb +2 -1
- data/lib/rex/nop/opty2.rb.ut.rb +2 -1
- data/lib/rex/nop/opty2_tables.rb +1 -0
- data/lib/rex/ole.rb +3 -2
- data/lib/rex/ole/clsid.rb +3 -2
- data/lib/rex/ole/difat.rb +3 -2
- data/lib/rex/ole/directory.rb +3 -2
- data/lib/rex/ole/direntry.rb +3 -2
- data/lib/rex/ole/fat.rb +3 -2
- data/lib/rex/ole/header.rb +3 -2
- data/lib/rex/ole/minifat.rb +3 -2
- data/lib/rex/ole/propset.rb +4 -3
- data/lib/rex/ole/samples/create_ole.rb +1 -0
- data/lib/rex/ole/samples/dir.rb +1 -0
- data/lib/rex/ole/samples/dump_stream.rb +1 -0
- data/lib/rex/ole/samples/ole_info.rb +1 -0
- data/lib/rex/ole/storage.rb +3 -2
- data/lib/rex/ole/stream.rb +3 -2
- data/lib/rex/ole/substorage.rb +3 -2
- data/lib/rex/ole/util.rb +3 -2
- data/lib/rex/parser/acunetix_nokogiri.rb +13 -12
- data/lib/rex/parser/apple_backup_manifestdb.rb +20 -19
- data/lib/rex/parser/appscan_nokogiri.rb +17 -16
- data/lib/rex/parser/arguments.rb +2 -1
- data/lib/rex/parser/arguments.rb.ut.rb +2 -1
- data/lib/rex/parser/burp_session_nokogiri.rb +8 -7
- data/lib/rex/parser/ci_nokogiri.rb +4 -3
- data/lib/rex/parser/foundstone_nokogiri.rb +18 -17
- data/lib/rex/parser/fusionvm_nokogiri.rb +109 -0
- data/lib/rex/parser/ini.rb +1 -0
- data/lib/rex/parser/ini.rb.ut.rb +2 -1
- data/lib/rex/parser/ip360_aspl_xml.rb +1 -0
- data/lib/rex/parser/ip360_xml.rb +4 -3
- data/lib/rex/parser/mbsa_nokogiri.rb +8 -7
- data/lib/rex/parser/nessus_xml.rb +3 -2
- data/lib/rex/parser/netsparker_xml.rb +10 -9
- data/lib/rex/parser/nexpose_raw_nokogiri.rb +372 -52
- data/lib/rex/parser/nexpose_simple_nokogiri.rb +8 -7
- data/lib/rex/parser/nexpose_xml.rb +1 -0
- data/lib/rex/parser/nmap_nokogiri.rb +63 -33
- data/lib/rex/parser/nmap_xml.rb +1 -0
- data/lib/rex/parser/nokogiri_doc_mixin.rb +35 -15
- data/lib/rex/parser/openvas_nokogiri.rb +172 -0
- data/lib/rex/parser/retina_xml.rb +1 -0
- data/lib/rex/parser/wapiti_nokogiri.rb +105 -0
- data/lib/rex/payloads.rb +2 -1
- data/lib/rex/payloads/win32.rb +2 -1
- data/lib/rex/payloads/win32/common.rb +2 -1
- data/lib/rex/payloads/win32/kernel.rb +2 -1
- data/lib/rex/payloads/win32/kernel/common.rb +4 -3
- data/lib/rex/payloads/win32/kernel/migration.rb +2 -1
- data/lib/rex/payloads/win32/kernel/recovery.rb +2 -1
- data/lib/rex/payloads/win32/kernel/stager.rb +21 -20
- data/lib/rex/peparsey.rb +3 -2
- data/lib/rex/peparsey/exceptions.rb +2 -1
- data/lib/rex/peparsey/pe.rb +3 -2
- data/lib/rex/peparsey/pe_memdump.rb +2 -1
- data/lib/rex/peparsey/pebase.rb +2 -1
- data/lib/rex/peparsey/section.rb +2 -1
- data/lib/rex/pescan.rb +3 -2
- data/lib/rex/pescan/analyze.rb +1 -0
- data/lib/rex/pescan/scanner.rb +1 -0
- data/lib/rex/pescan/search.rb +1 -0
- data/lib/rex/platforms.rb +2 -1
- data/lib/rex/platforms/windows.rb +2 -1
- data/lib/rex/poly.rb +2 -1
- data/lib/rex/poly/block.rb +16 -15
- data/lib/rex/poly/register.rb +2 -1
- data/lib/rex/poly/register/x86.rb +2 -1
- data/lib/rex/post.rb +2 -2
- data/lib/rex/post/dir.rb +2 -1
- data/lib/rex/post/file.rb +1 -0
- data/lib/rex/post/file_stat.rb +1 -0
- data/lib/rex/post/io.rb +2 -1
- data/lib/rex/post/meterpreter.rb +2 -1
- data/lib/rex/post/meterpreter/channel.rb +1 -0
- data/lib/rex/post/meterpreter/channel_container.rb +2 -1
- data/lib/rex/post/meterpreter/channels/pool.rb +1 -0
- data/lib/rex/post/meterpreter/channels/pools/file.rb +1 -0
- data/lib/rex/post/meterpreter/channels/pools/stream_pool.rb +3 -2
- data/lib/rex/post/meterpreter/channels/stream.rb +1 -0
- data/lib/rex/post/meterpreter/client.rb +23 -1
- data/lib/rex/post/meterpreter/client_core.rb +10 -5
- data/lib/rex/post/meterpreter/dependencies.rb +2 -1
- data/lib/rex/post/meterpreter/extension.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/espia/espia.rb +7 -6
- data/lib/rex/post/meterpreter/extensions/espia/tlv.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/incognito/incognito.rb +5 -4
- data/lib/rex/post/meterpreter/extensions/incognito/tlv.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/lanattacks/lanattacks.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/lanattacks/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/networkpug/networkpug.rb +7 -6
- data/lib/rex/post/meterpreter/extensions/networkpug/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/priv/fs.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/priv/passwd.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/priv/priv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/priv/tlv.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/sniffer/sniffer.rb +28 -11
- data/lib/rex/post/meterpreter/extensions/sniffer/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/constants.rb +6 -5
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +3 -2
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/io.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb +39 -5
- data/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb +75 -18
- data/lib/rex/post/meterpreter/extensions/stdapi/net/route.rb +18 -6
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/udp_channel.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun.rb.ts.rb +4 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_advapi32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_crypt32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_iphlpapi.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_kernel32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_netapi32.rb +12 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ntdll.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_shell32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_user32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_wlanapi.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ws2_32.rb +7 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_wrapper.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_wrapper.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/mock_magic.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/multicall.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/platform_util.rb +23 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/platform_util.rb.ut.rb +29 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb +10 -5
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb.ut.rb +9 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/type/pointer_util.rb +106 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/type/pointer_util.rb.ut.rb +128 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/util.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb +27 -6
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb +21 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/config.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log_subsystem/event_record.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/power.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process.rb +43 -4
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/image.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/io.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/memory.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/thread.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_value.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/remote_registry_key.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/thread.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/tlv.rb +7 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/ui.rb +14 -13
- data/lib/rex/post/meterpreter/extensions/stdapi/webcam/webcam.rb +1 -0
- data/lib/rex/post/meterpreter/inbound_packet_handler.rb +2 -1
- data/lib/rex/post/meterpreter/object_aliases.rb +6 -5
- data/lib/rex/post/meterpreter/packet.rb +26 -6
- data/lib/rex/post/meterpreter/packet_dispatcher.rb +1 -0
- data/lib/rex/post/meterpreter/packet_parser.rb +1 -0
- data/lib/rex/post/meterpreter/packet_response_waiter.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +103 -28
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/espia.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/incognito.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/networkpug.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv.rb +3 -2
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/elevate.rb +12 -11
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/passwd.rb +2 -1
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/timestomp.rb +2 -1
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/sniffer.rb +53 -36
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi.rb +3 -2
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/fs.rb +87 -44
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb +80 -18
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb +77 -48
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/ui.rb +72 -41
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/webcam.rb +24 -5
- data/lib/rex/post/meterpreter/ui/console/interactive_channel.rb +2 -1
- data/lib/rex/post/permission.rb +2 -1
- data/lib/rex/post/process.rb +2 -1
- data/lib/rex/post/thread.rb +2 -1
- data/lib/rex/post/ui.rb +2 -1
- data/lib/rex/proto.rb +1 -0
- data/lib/rex/proto.rb.ts.rb +2 -1
- data/lib/rex/proto/dcerpc.rb +2 -1
- data/lib/rex/proto/dcerpc.rb.ts.rb +2 -1
- data/lib/rex/proto/dcerpc/client.rb +1 -0
- data/lib/rex/proto/dcerpc/client.rb.ut.rb +1 -0
- data/lib/rex/proto/dcerpc/exceptions.rb +2 -1
- data/lib/rex/proto/dcerpc/handle.rb +1 -0
- data/lib/rex/proto/dcerpc/handle.rb.ut.rb +2 -1
- data/lib/rex/proto/dcerpc/ndr.rb +2 -1
- data/lib/rex/proto/dcerpc/ndr.rb.ut.rb +2 -1
- data/lib/rex/proto/dcerpc/packet.rb +52 -45
- data/lib/rex/proto/dcerpc/packet.rb.ut.rb +12 -11
- data/lib/rex/proto/dcerpc/response.rb +1 -0
- data/lib/rex/proto/dcerpc/response.rb.ut.rb +2 -1
- data/lib/rex/proto/dcerpc/uuid.rb +13 -12
- data/lib/rex/proto/dcerpc/uuid.rb.ut.rb +2 -1
- data/lib/rex/proto/dhcp.rb +2 -1
- data/lib/rex/proto/dhcp/constants.rb +2 -1
- data/lib/rex/proto/dhcp/server.rb +4 -3
- data/lib/rex/proto/drda.rb +1 -0
- data/lib/rex/proto/drda.rb.ts.rb +1 -0
- data/lib/rex/proto/drda/constants.rb +1 -0
- data/lib/rex/proto/drda/constants.rb.ut.rb +1 -0
- data/lib/rex/proto/drda/packet.rb +11 -10
- data/lib/rex/proto/drda/packet.rb.ut.rb +5 -4
- data/lib/rex/proto/drda/utils.rb +4 -3
- data/lib/rex/proto/drda/utils.rb.ut.rb +3 -2
- data/lib/rex/proto/http.rb +2 -1
- data/lib/rex/proto/http.rb.ts.rb +2 -1
- data/lib/rex/proto/http/client.rb +29 -5
- data/lib/rex/proto/http/client.rb.ut.rb +1 -0
- data/lib/rex/proto/http/handler.rb +2 -1
- data/lib/rex/proto/http/handler/erb.rb +5 -4
- data/lib/rex/proto/http/handler/erb.rb.ut.rb +2 -1
- data/lib/rex/proto/http/handler/proc.rb +1 -0
- data/lib/rex/proto/http/handler/proc.rb.ut.rb +2 -1
- data/lib/rex/proto/http/header.rb +3 -3
- data/lib/rex/proto/http/header.rb.ut.rb +2 -1
- data/lib/rex/proto/http/packet.rb +1 -0
- data/lib/rex/proto/http/packet.rb.ut.rb +15 -14
- data/lib/rex/proto/http/request.rb +23 -22
- data/lib/rex/proto/http/request.rb.ut.rb +2 -1
- data/lib/rex/proto/http/response.rb +6 -5
- data/lib/rex/proto/http/response.rb.ut.rb +7 -6
- data/lib/rex/proto/http/server.rb +1 -0
- data/lib/rex/proto/http/server.rb.ut.rb +6 -5
- data/lib/rex/proto/iax2.rb +1 -0
- data/lib/rex/proto/iax2/call.rb +48 -47
- data/lib/rex/proto/iax2/client.rb +23 -22
- data/lib/rex/proto/iax2/codecs.rb +1 -0
- data/lib/rex/proto/iax2/codecs/alaw.rb +1 -0
- data/lib/rex/proto/iax2/codecs/g711.rb +4 -3
- data/lib/rex/proto/iax2/codecs/mulaw.rb +1 -0
- data/lib/rex/proto/iax2/constants.rb +1 -0
- data/lib/rex/proto/natpmp.rb +11 -0
- data/lib/rex/proto/natpmp/constants.rb +19 -0
- data/lib/rex/proto/natpmp/packet.rb +45 -0
- data/lib/rex/proto/ntlm.rb +1 -0
- data/lib/rex/proto/ntlm.rb.ut.rb +1 -0
- data/lib/rex/proto/ntlm/base.rb +38 -37
- data/lib/rex/proto/ntlm/constants.rb +1 -0
- data/lib/rex/proto/ntlm/crypt.rb +45 -44
- data/lib/rex/proto/ntlm/exceptions.rb +1 -0
- data/lib/rex/proto/ntlm/message.rb +30 -29
- data/lib/rex/proto/ntlm/utils.rb +116 -115
- data/lib/rex/proto/proxy/socks4a.rb +1 -0
- data/lib/rex/proto/rfb.rb +1 -0
- data/lib/rex/proto/rfb.rb.ut.rb +1 -0
- data/lib/rex/proto/rfb/cipher.rb +1 -0
- data/lib/rex/proto/rfb/client.rb +1 -0
- data/lib/rex/proto/rfb/constants.rb +1 -0
- data/lib/rex/proto/smb.rb +2 -1
- data/lib/rex/proto/smb.rb.ts.rb +2 -1
- data/lib/rex/proto/smb/client.rb +23 -22
- data/lib/rex/proto/smb/client.rb.ut.rb +1 -0
- data/lib/rex/proto/smb/constants.rb +1 -0
- data/lib/rex/proto/smb/constants.rb.ut.rb +2 -1
- data/lib/rex/proto/smb/crypt.rb +3 -2
- data/lib/rex/proto/smb/evasions.rb +1 -0
- data/lib/rex/proto/smb/exceptions.rb +6 -5
- data/lib/rex/proto/smb/simpleclient.rb +1 -0
- data/lib/rex/proto/smb/simpleclient.rb.ut.rb +1 -0
- data/lib/rex/proto/smb/utils.rb +1 -0
- data/lib/rex/proto/smb/utils.rb.ut.rb +2 -1
- data/lib/rex/proto/sunrpc.rb +1 -0
- data/lib/rex/proto/sunrpc/client.rb +1 -0
- data/lib/rex/proto/tftp.rb +3 -1
- data/lib/rex/proto/tftp/client.rb +344 -0
- data/lib/rex/proto/tftp/constants.rb +2 -1
- data/lib/rex/proto/tftp/server.rb +2 -1
- data/lib/rex/proto/tftp/server.rb.ut.rb +3 -2
- data/lib/rex/registry.rb +14 -0
- data/lib/rex/registry/hive.rb +132 -0
- data/lib/rex/registry/lfkey.rb +51 -0
- data/lib/rex/registry/nodekey.rb +54 -0
- data/lib/rex/registry/regf.rb +25 -0
- data/lib/rex/registry/valuekey.rb +67 -0
- data/lib/rex/registry/valuelist.rb +29 -0
- data/lib/rex/ropbuilder.rb +2 -1
- data/lib/rex/ropbuilder/rop.rb +3 -2
- data/lib/rex/script.rb +1 -0
- data/lib/rex/script/base.rb +1 -0
- data/lib/rex/script/meterpreter.rb +1 -0
- data/lib/rex/script/shell.rb +1 -0
- data/lib/rex/service.rb +2 -1
- data/lib/rex/service_manager.rb +6 -5
- data/lib/rex/service_manager.rb.ut.rb +2 -1
- data/lib/rex/services/local_relay.rb +1 -0
- data/lib/rex/socket.rb +72 -36
- data/lib/rex/socket.rb.ut.rb +1 -0
- data/lib/rex/socket/comm.rb +1 -0
- data/lib/rex/socket/comm/local.rb +60 -13
- data/lib/rex/socket/comm/local.rb.ut.rb +2 -1
- data/lib/rex/socket/ip.rb +1 -0
- data/lib/rex/socket/parameters.rb +15 -14
- data/lib/rex/socket/parameters.rb.ut.rb +2 -1
- data/lib/rex/socket/range_walker.rb +71 -26
- data/lib/rex/socket/range_walker.rb.ut.rb +2 -1
- data/lib/rex/socket/ssl_tcp.rb +1 -0
- data/lib/rex/socket/ssl_tcp.rb.ut.rb +2 -1
- data/lib/rex/socket/ssl_tcp_server.rb +1 -0
- data/lib/rex/socket/ssl_tcp_server.rb.ut.rb +1 -0
- data/lib/rex/socket/subnet_walker.rb +1 -0
- data/lib/rex/socket/subnet_walker.rb.ut.rb +2 -1
- data/lib/rex/socket/switch_board.rb +1 -0
- data/lib/rex/socket/switch_board.rb.ut.rb +2 -1
- data/lib/rex/socket/tcp.rb +4 -3
- data/lib/rex/socket/tcp.rb.ut.rb +2 -1
- data/lib/rex/socket/tcp_server.rb +1 -0
- data/lib/rex/socket/tcp_server.rb.ut.rb +2 -1
- data/lib/rex/socket/udp.rb +2 -1
- data/lib/rex/socket/udp.rb.ut.rb +2 -1
- data/lib/rex/struct2.rb +2 -1
- data/lib/rex/struct2/c_struct.rb +2 -1
- data/lib/rex/struct2/c_struct_template.rb +2 -1
- data/lib/rex/struct2/constant.rb +2 -1
- data/lib/rex/struct2/element.rb +2 -1
- data/lib/rex/struct2/generic.rb +1 -0
- data/lib/rex/struct2/restraint.rb +2 -1
- data/lib/rex/struct2/s_string.rb +1 -0
- data/lib/rex/struct2/s_struct.rb +1 -0
- data/lib/rex/sync.rb +2 -1
- data/lib/rex/sync/event.rb +1 -0
- data/lib/rex/sync/read_write_lock.rb +1 -0
- data/lib/rex/sync/ref.rb +2 -1
- data/lib/rex/sync/thread_safe.rb +2 -1
- data/lib/rex/test.rb +2 -1
- data/lib/rex/text.rb +136 -19
- data/lib/rex/text.rb.ut.rb +1 -0
- data/lib/rex/thread_factory.rb +5 -4
- data/lib/rex/time.rb +2 -1
- data/lib/rex/transformer.rb +1 -0
- data/lib/rex/transformer.rb.ut.rb +2 -1
- data/lib/rex/ui.rb +2 -1
- data/lib/rex/ui/interactive.rb +10 -9
- data/lib/rex/ui/output.rb +1 -0
- data/lib/rex/ui/output/none.rb +2 -1
- data/lib/rex/ui/progress_tracker.rb +2 -1
- data/lib/rex/ui/subscriber.rb +9 -8
- data/lib/rex/ui/text/color.rb +1 -0
- data/lib/rex/ui/text/color.rb.ut.rb +1 -0
- data/lib/rex/ui/text/dispatcher_shell.rb +63 -23
- data/lib/rex/ui/text/input.rb +1 -0
- data/lib/rex/ui/text/input/buffer.rb +7 -6
- data/lib/rex/ui/text/input/readline.rb +14 -13
- data/lib/rex/ui/text/input/socket.rb +1 -0
- data/lib/rex/ui/text/input/stdio.rb +2 -1
- data/lib/rex/ui/text/irb_shell.rb +1 -0
- data/lib/rex/ui/text/output.rb +1 -0
- data/lib/rex/ui/text/output/buffer.rb +1 -0
- data/lib/rex/ui/text/output/file.rb +1 -0
- data/lib/rex/ui/text/output/socket.rb +1 -0
- data/lib/rex/ui/text/output/stdio.rb +1 -0
- data/lib/rex/ui/text/output/tee.rb +1 -0
- data/lib/rex/ui/text/progress_tracker.rb +2 -1
- data/lib/rex/ui/text/progress_tracker.rb.ut.rb +2 -1
- data/lib/rex/ui/text/shell.rb +1 -0
- data/lib/rex/ui/text/table.rb +20 -14
- data/lib/rex/ui/text/table.rb.ut.rb +3 -2
- data/lib/rex/zip.rb +1 -0
- data/lib/rex/zip/archive.rb +2 -1
- data/lib/rex/zip/blocks.rb +3 -2
- data/lib/rex/zip/entry.rb +6 -7
- data/lib/rex/zip/jar.rb +4 -3
- data/lib/rex/zip/samples/comment.rb +1 -0
- data/lib/rex/zip/samples/mkwar.rb +1 -0
- data/lib/rex/zip/samples/mkzip.rb +1 -0
- data/lib/rex/zip/samples/recursive.rb +1 -0
- metadata +433 -435
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
|