class Object

Constants

AF_INET

Net

AF_INET6
ARCH_ALL
ARCH_ANY

Architecture constants

ARCH_ARMBE
ARCH_ARMLE
ARCH_CBEA
ARCH_CBEA64
ARCH_CMD
ARCH_DALVIK
ARCH_FIREFOX
ARCH_JAVA
ARCH_MIPS
ARCH_MIPSBE
ARCH_MIPSLE
ARCH_NODEJS
ARCH_PHP
ARCH_PPC
ARCH_PPC64
ARCH_PYTHON
ARCH_RUBY
ARCH_SPARC
ARCH_TTY
ARCH_TYPES
ARCH_X64
ARCH_X86
ARCH_X86_64
ARCH_ZARCH
CREATE_SUSPENDED

Creation flags

DELETE

Permissions

ENDIAN_BIG
ENDIAN_LITTLE

Endian constants

EVENTLOG_BACKWARDS_READ
EVENTLOG_FORWARDS_READ
EVENTLOG_SEEK_READ
EVENTLOG_SEQUENTIAL_READ

Event Log

EWX_FORCE
EWX_FORCEIFHUNG
EWX_LOGOFF

Event Log

EWX_POWEROFF
EWX_REBOOT
EWX_SHUTDOWN
ExceptionCallStack

An instance of the log dispatcher exists in the global namespace, along with stubs for many of the common logging methods. Various sources can register themselves as a log sink such that logs can be directed at various targets depending on where they're sourced from. By doing it this way, things like sessions can use the global logging stubs and still be directed at the correct log file.

GENERIC_ALL
GENERIC_EXECUTE
GENERIC_READ
GENERIC_WRITE
GEN_EXEC
GEN_NONE

Generic permissions

GEN_READ
GEN_WRITE
HKEY_CLASSES_ROOT

Registry

HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_DYN_DATA
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA
HKEY_USERS
IS_ENDIAN_BIG
IS_ENDIAN_LITTLE
KEY_ALL_ACCESS
KEY_CREATE_SUB_KEY
KEY_ENUMERATE_SUB_KEYS
KEY_EXECUTE
KEY_NOTIFY
KEY_QUERY_VALUE

Registry Permissions

KEY_READ
KEY_SET_VALUE
KEY_WOW64_32KEY
KEY_WOW64_64KEY
KEY_WRITE
LEV_0

LEV_0 - Default

This log level is the default log level if none is specified. It should be used when a log message should always be displayed when logging is enabled. Very few log messages should occur at this level aside from necessary information logging and error/warning logging. Debug logging at level zero is not advised.

LEV_1

LEV_1 - Extra

This log level should be used when extra information may be needed to understand the cause of an error or warning message or to get debugging information that might give clues as to why something is happening. This log level should be used only when information may be useful to understanding the behavior of something at a basic level. This log level should not be used in an exhaustively verbose fashion.

LEV_2

LEV_2 - Verbose

This log level should be used when verbose information may be needed to analyze the behavior of the framework. This should be the default log level for all detailed information not falling into LEV_0 or LEV_1. It is recommended that this log level be used by default if you are unsure.

LEV_3

LEV_3 - Insanity

This log level should contain very verbose information about the behavior of the framework, such as detailed information about variable states at certain phases including, but not limited to, loop iterations, function calls, and so on. This log level will rarely be displayed, but when it is the information provided should make it easy to analyze any problem.

LOG_DEBUG
LOG_ERROR

Log severities

LOG_INFO
LOG_RAW
LOG_WARN
MAXIMUM_ALLOWED
MEM_4MB_PAGES
MEM_COMMIT
MEM_DECOMMIT
MEM_FREE
MEM_IMAGE
MEM_LARGE_PAGES
MEM_MAPPED
MEM_PHYSICAL
MEM_PRIVATE
MEM_RELEASE
MEM_RESERVE
MEM_RESET
MEM_TOP_DOWN
MEM_WRITE_WATCH
PAGE_EXECUTE
PAGE_EXECUTE_READ
PAGE_EXECUTE_READWRITE
PAGE_EXECUTE_WRITECOPY
PAGE_GUARD
PAGE_NOACCESS

Page Protections

PAGE_NOCACHE
PAGE_READONLY
PAGE_READWRITE
PAGE_WRITECOMBINE
PAGE_WRITECOPY
PROCESS_ALL
PROCESS_ALL_ACCESS
PROCESS_CREATE_PROCESS
PROCESS_CREATE_THREAD
PROCESS_DUP_HANDLE
PROCESS_EXECUTE
PROCESS_QUERY_INFORMATION
PROCESS_READ

Generic process open permissions

PROCESS_SET_INFORMATION
PROCESS_SET_QUOTA
PROCESS_SET_SESSIONID
PROCESS_SUSPEND_RESUME
PROCESS_TERMINATE

Process Permissions

PROCESS_VM_OPERATION
PROCESS_VM_READ
PROCESS_VM_WRITE
PROCESS_WRITE
PROT_COW
PROT_EXEC
PROT_NONE

Generic page protection flags

PROT_READ
PROT_WRITE
READ_CONTROL
REG_BINARY
REG_DWORD
REG_DWORD_BIG_ENDIAN
REG_DWORD_LITTLE_ENDIAN
REG_EXPAND_SZ
REG_MULTI_SZ
REG_NONE
REG_SZ
SEC_COMMIT
SEC_FILE
SEC_IMAGE
SEC_NOCACHE
SEC_RESERVE
SHTDN_REASON_DEFAULT
SHTDN_REASON_FLAG_CLEAN_UI
SHTDN_REASON_FLAG_COMMENT_REQUIRED
SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED
SHTDN_REASON_FLAG_DIRTY_UI
SHTDN_REASON_FLAG_PLANNED
SHTDN_REASON_FLAG_USER_DEFINED
SHTDN_REASON_MAJOR_APPLICATION
SHTDN_REASON_MAJOR_HARDWARE
SHTDN_REASON_MAJOR_LEGACY_API
SHTDN_REASON_MAJOR_NONE
SHTDN_REASON_MAJOR_OPERATINGSYSTEM
SHTDN_REASON_MAJOR_OTHER
SHTDN_REASON_MAJOR_POWER
SHTDN_REASON_MAJOR_SOFTWARE
SHTDN_REASON_MAJOR_SYSTEM
SHTDN_REASON_MINOR_BLUESCREEN
SHTDN_REASON_MINOR_CORDUNPLUGGED
SHTDN_REASON_MINOR_DC_DEMOTION
SHTDN_REASON_MINOR_DC_PROMOTION

Shutdown Reason Codes

SHTDN_REASON_MINOR_DISK
SHTDN_REASON_MINOR_ENVIRONMENT
SHTDN_REASON_MINOR_HARDWARE_DRIVER
SHTDN_REASON_MINOR_HOTFIX
SHTDN_REASON_MINOR_HOTFIX_UNINSTALL
SHTDN_REASON_MINOR_HUNG
SHTDN_REASON_MINOR_INSTALLATION
SHTDN_REASON_MINOR_MAINTENANCE
SHTDN_REASON_MINOR_MMC
SHTDN_REASON_MINOR_NETWORKCARD
SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY
SHTDN_REASON_MINOR_NONE
SHTDN_REASON_MINOR_OTHER
SHTDN_REASON_MINOR_OTHERDRIVER
SHTDN_REASON_MINOR_POWER_SUPPLY
SHTDN_REASON_MINOR_PROCESSOR
SHTDN_REASON_MINOR_RECONFIG
SHTDN_REASON_MINOR_SECURITY
SHTDN_REASON_MINOR_SECURITYFIX
SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL
SHTDN_REASON_MINOR_SERVICEPACK
SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL
SHTDN_REASON_MINOR_SYSTEMRESTORE
SHTDN_REASON_MINOR_TERMSRV
SHTDN_REASON_MINOR_UNSTABLE
SHTDN_REASON_MINOR_UPGRADE
SHTDN_REASON_MINOR_WMI
SHTDN_REASON_VALID_BIT_MASK
SHUT_RD
SHUT_RDWR

Globalized socket constants

SHUT_WR
SPECIFIC_RIGHTS_ALL
STANDARD_RIGHTS_ALL
STANDARD_RIGHTS_EXECUTE
STANDARD_RIGHTS_READ
STANDARD_RIGHTS_REQUIRED
STANDARD_RIGHTS_WRITE
SYNCHRONIZE
THREAD_ALL
THREAD_ALL_ACCESS
THREAD_DIRECT_IMPERSONATION
THREAD_EXECUTE
THREAD_GET_CONTEXT
THREAD_IMPERSONATE
THREAD_QUERY_INFORMATION
THREAD_READ

Generic thread open permissions

THREAD_SET_CONTEXT
THREAD_SET_INFORMATION
THREAD_SET_THREAD_TOKEN
THREAD_SUSPEND_RESUME
THREAD_TERMINATE

Thread Permissions

THREAD_WRITE
VirtualKeyCodes

Keyboard Mappings

WRITE_DAC
WRITE_OWNER

Public Instance Methods

add_file(zip, path) click to toggle source
# File lib/rex/zip/samples/recursive.rb, line 15
def add_file(zip, path)
  zip.add_file(path)
end
add_files(zip, path, recursive = nil) click to toggle source

If it's a directory, Walk the directory and add each item

# File lib/rex/zip/samples/recursive.rb, line 23
def add_files(zip, path, recursive = nil)

  if (not add_file(zip, path))
    return nil
  end

  if (recursive and File.stat(path).directory?)
    begin
      dir = Dir.open(path)
    rescue
      # skip this file
      return nil
    end

    dir.each { |f|
      next if (f == '.')
      next if (f == '..')

      full_path = path + '/' + f
      st = File.stat(full_path)
      if (st.directory?)
        puts "adding dir  #{full_path}"
        add_files(zip, full_path, recursive)
      elsif (st.file?)
        puts "adding file #{full_path}"
        add_file(zip, full_path)
      end
    }
  end
end
deregister_log_source(src) click to toggle source
# File lib/rex/logging/log_dispatcher.rb, line 166
def deregister_log_source(src)
  $dispatcher.delete(src)
end
dlog(msg, src = 'core', level = 0, from = caller) click to toggle source
# File lib/rex/logging/log_dispatcher.rb, line 132
def dlog(msg, src = 'core', level = 0, from = caller)
  $dispatcher.log(LOG_DEBUG, src, level, msg, from)
end
elog(msg, src = 'core', level = 0, from = caller) click to toggle source
# File lib/rex/logging/log_dispatcher.rb, line 136
def elog(msg, src = 'core', level = 0, from = caller)
  $dispatcher.log(LOG_ERROR, src, level, msg, from)
end
get_log_level(src) click to toggle source
# File lib/rex/logging/log_dispatcher.rb, line 174
def get_log_level(src)
  $dispatcher.get_level(src)
end
ilog(msg, src = 'core', level = 0, from = caller) click to toggle source
# File lib/rex/logging/log_dispatcher.rb, line 144
def ilog(msg, src = 'core', level = 0, from = caller)
  $dispatcher.log(LOG_INFO, src, level, msg, from)
end
log_source_registered?(src) click to toggle source
# File lib/rex/logging/log_dispatcher.rb, line 156
def log_source_registered?(src)
  ($dispatcher[src] != nil)
end
rand_text_alpha(len) click to toggle source
# File lib/rex/zip/samples/mkwar.rb, line 17
def rand_text_alpha(len)
  buff = ""

  foo = []
  foo += ('A' .. 'Z').to_a
  foo += ('a' .. 'z').to_a

  # Generate a buffer from the remaining bytes
  if foo.length >= 256
    len.times { buff << Kernel.rand(256) }
  else
    len.times { buff << foo[ rand(foo.length) ] }
  end

  return buff
end
register_log_source(src, sink, level = nil) click to toggle source
# File lib/rex/logging/log_dispatcher.rb, line 160
def register_log_source(src, sink, level = nil)
  $dispatcher[src] = sink

  set_log_level(src, level) if (level)
end
rlog(msg, src = 'core', level = 0, from = caller) click to toggle source
# File lib/rex/logging/log_dispatcher.rb, line 148
def rlog(msg, src = 'core', level = 0, from = caller)
  if (msg == ExceptionCallStack)
    msg = "\nCall stack:\n" + $@.join("\n") + "\n"
  end

  $dispatcher.log(LOG_RAW, src, level, msg, from)
end
set_log_level(src, level) click to toggle source
# File lib/rex/logging/log_dispatcher.rb, line 170
def set_log_level(src, level)
  $dispatcher.set_level(src, level)
end
show_entries(ent, spaces=0) click to toggle source

recursive printer :)

# File lib/rex/ole/samples/dir.rb, line 22
def show_entries(ent, spaces=0)
  spstr = " " * spaces

  puts "%s + #{ent.name}" % spstr
  ent.each { |el|
    show_entries(el, spaces+2)
  }
end
wlog(msg, src = 'core', level = 0, from = caller) click to toggle source
# File lib/rex/logging/log_dispatcher.rb, line 140
def wlog(msg, src = 'core', level = 0, from = caller)
  $dispatcher.log(LOG_WARN, src, level, msg, from)
end