Class: Rex::Post::HWBridge::Ui::Console::CommandDispatcher::Zigbee

Inherits:
Object
  • Object
show all
Includes:
Msf::Auxiliary::Report, Rex::Post::HWBridge::Ui::Console::CommandDispatcher
Defined in:
lib/rex/post/hwbridge/ui/console/command_dispatcher/zigbee.rb

Overview

Zigbee extension - set of commands to be executed on Zigbee compatible devices

Instance Attribute Summary collapse

Attributes included from Ui::Text::DispatcherShell::CommandDispatcher

#shell, #tab_complete_items

Instance Method Summary collapse

Methods included from Msf::Auxiliary::Report

#active_db?, #create_cracked_credential, #create_credential, #create_credential_and_login, #create_credential_login, #db, #db_warning_given?, #get_client, #get_host, #inside_workspace_boundary?, #invalidate_login, #mytask, #myworkspace, #myworkspace_id, #report_auth_info, #report_client, #report_exploit, #report_host, #report_loot, #report_note, #report_service, #report_vuln, #report_web_form, #report_web_page, #report_web_site, #report_web_vuln, #store_cred, #store_local, #store_loot

Methods included from Metasploit::Framework::Require

optionally, optionally_active_record_railtie, optionally_include_metasploit_credential_creation, #optionally_include_metasploit_credential_creation, optionally_require_metasploit_db_gem_engines

Methods included from Rex::Post::HWBridge::Ui::Console::CommandDispatcher

check_hash, #client, #initialize, #log_error, #msf_loaded?, set_hash

Methods included from Ui::Text::DispatcherShell::CommandDispatcher

#cmd_help, #cmd_help_help, #cmd_help_tabs, #deprecated_cmd, #deprecated_commands, #deprecated_help, #docs_dir, #help_to_s, #initialize, #print, #print_error, #print_good, #print_line, #print_status, #print_warning, #tab_complete_directory, #tab_complete_filenames, #tab_complete_generic, #tab_complete_source_address, #update_prompt

Instance Attribute Details

#target_deviceObject

Returns the value of attribute target_device


118
119
120
# File 'lib/rex/post/hwbridge/ui/console/command_dispatcher/zigbee.rb', line 118

def target_device
  @target_device
end

Instance Method Details

#cmd_channel(*args) ⇒ Object

Sets the channel


83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/rex/post/hwbridge/ui/console/command_dispatcher/zigbee.rb', line 83

def cmd_channel(*args)
  chan = 11
  dev = self.target_device if self.target_device
  xopts = Rex::Parser::Arguments.new(
    '-h' => [ false, 'Help banner' ],
    '-d' => [ true, 'ZigBee device' ],
    '-c' => [ true, 'Channel number' ]
  )
  xopts.parse(args) do |opt, _idx, val|
    case opt
    when '-h'
      print_line("Usage: channel -c <channel number>\n")
      print_line(xopts.usage)
      return
    when '-d'
      dev = val
    when '-c'
      chan = val.to_i
    end
  end
  unless dev
    print_line("You must specify or set a target device")
    return
  end
  client.zigbee.set_channel(dev, chan)
  print_line("Device #{dev} channel set to #{chan}")
end

#cmd_supported_devicesObject

Lists all thesupported devices


40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/rex/post/hwbridge/ui/console/command_dispatcher/zigbee.rb', line 40

def cmd_supported_devices
  devices = client.zigbee.supported_devices
  if !devices or !devices.has_key? "devices"
    print_line("error retrieving list of devices")
    return
  end
  devices = devices["devices"]
  unless devices.size > 0
    print_line("none")
    return
  end
  set_target_device(devices[0]) if devices.size == 1
  str = "Supported Devices: "
  str << devices.join(', ')
  str << "\nUse device name to set your desired device, default is: #{self.target_device}"
  print_line(str)
end

#cmd_target(*args) ⇒ Object

Sets the default target device


61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/rex/post/hwbridge/ui/console/command_dispatcher/zigbee.rb', line 61

def cmd_target(*args)
  self.target_device = ""
  device_opts = Rex::Parser::Arguments.new(
    '-h' => [ false, 'Help banner' ],
    '-d' => [ true, 'Device ID' ]
  )
  device_opts.parse(args) do |opt, _idx, val|
    case opt
    when '-h'
      print_line("Usage: target -d <device id>\n")
      print_line(device_opts.usage)
      return
    when '-d'
      set_target_device val
    end
  end
  print_line("set target device to #{self.target_device}")
end

#commandsObject

List of supported commands.


20
21
22
23
24
25
26
27
28
# File 'lib/rex/post/hwbridge/ui/console/command_dispatcher/zigbee.rb', line 20

def commands
  all = {
    'supported_devices'   => 'Get supported ZigBee devices',
    'target' => 'Set the target device id',
    'channel' => 'Set the channel'
  }

  all
end

#nameObject

Name for this dispatcher


114
115
116
# File 'lib/rex/post/hwbridge/ui/console/command_dispatcher/zigbee.rb', line 114

def name
  'Zigbee'
end

#set_target_device(device) ⇒ Object

Sets the target device both in the UI class and in the base API

Parameters:

  • device (String)

    Device ID


32
33
34
35
# File 'lib/rex/post/hwbridge/ui/console/command_dispatcher/zigbee.rb', line 32

def set_target_device(device)
  self.target_device = device
  client.zigbee.set_target_device device
end