Gracefully fallback to sesion.ui.screenshot when espia is not supported

This commit is contained in:
adfoster-r7 2021-09-23 15:03:19 +01:00
parent 6072382666
commit e81f1b5687
No known key found for this signature in database
GPG Key ID: 3BD4FA3818818F04
1 changed files with 15 additions and 3 deletions

View File

@ -25,12 +25,16 @@ class MetasploitModule < Msf::Post
'Compat' => {
'Meterpreter' => {
'Commands' => %w[
espia_image_get_dev_screen
stdapi_ui_desktop_screenshot
stdapi_ui_send_keyevent
stdapi_ui_send_mouse
]
}
},
'Notes' => {
'Stability' => [CRASH_SAFE],
'Reliability' => [],
'SideEffects' => []
}
)
)
@ -56,12 +60,20 @@ class MetasploitModule < Msf::Post
end
end
def supports_espia?(session)
return false unless session.platform == 'windows'
session.core.use('espia') unless session.espia
session.espia.present?
rescue RuntimeError
false
end
# rubocop:disable Metrics/MethodLength
def on_request_uri(cli, request)
if request.uri =~ %r{/screenshot$}
data = ''
if session.platform == 'windows'
session.console.run_single('load espia') unless session.espia
if supports_espia?(session)
data = session.espia.espia_image_get_dev_screen
else
data = session.ui.screenshot(50)